diff --git a/.htaccess b/.htaccess index 55ece0e6..c5bdef18 100644 --- a/.htaccess +++ b/.htaccess @@ -1,12 +1,4 @@ DefaultLanguage ru -AddDefaultCharset windows-1251 - -php_value session.use_trans_sid 0 -php_value register_globals 1 - - php_admin_value open_basedir none - - #Options +FollowSymLinks -MultiViews @@ -24,15 +16,6 @@ RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR] RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$ RewriteRule (.+) https://new-combats.com/proxy/ -#RewriteCond %{HTTP_HOST} ^new-combats\.ru [NC] -#RewriteCond %{SERVER_PORT} 80 -#RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L] - -#RewriteCond %{HTTP_HOST} ^demonscity\.ru [NC] -#RewriteCond %{SERVER_PORT} 80 -#RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L] - -#RewriteCond %{HTTP_HOST} ^new-combats\.com [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L] @@ -59,9 +42,6 @@ RewriteRule ^rating_pers/(.*)/?$ /reting_pers.php?$1 [L] RewriteRule ^rating_clans/?$ /reting_clans.php [L] RewriteRule ^rating_clans/(.*)/?$ /reting_clans.php?$1 [L] -#RewriteRule ^support/(.*)/?$ /support/index.php?$1 [L] -#RewriteRule ^support/?$ /support/index.php [L] - RewriteRule ^clan/(.*)/?$ /clans_inf.php?$1 [L] RewriteRule ^clan/?$ /clans_inf.php [L] @@ -70,18 +50,12 @@ RewriteRule ^ruins/?$ /ruins.php [L] RewriteRule ^exp/(.*)/?$ /exp.php?$1 [L] RewriteRule ^exp/?$ /exp.php [L] -# -# + RewriteRule ^news/(.*)/?$ /n/$1 [R=301,L] RewriteRule ^news/?$ /n [R=301,L] RewriteRule ^n/(.*)/?$ /news_script/index.php?$1 [L] RewriteRule ^n/?$ /news_script/index.php [L] -# -# - -#RewriteRule ^news/(.*)/?$ /news_script/index.php?$1 [L] -#RewriteRule ^news/?$ /news_script/index.php [L] RewriteRule ^forum/(.*)/?$ /forum_script/index.php?$1 [L] RewriteRule ^forum/?$ /forum_script/index.php [L] @@ -101,10 +75,7 @@ RewriteRule ^rating/?$ /rating_script/index.php [L] RewriteRule ^item/(.*)/?$ /items_info.php?$1 [L] RewriteRule ^item/?$ /items_info.php [L] RewriteRule ^repass/?$ /repass.php [L] -# -# -# -# + RewriteRule ^mail/(.*)/?$ /mailconf.php?$1 [L] RewriteRule ^register/?$ /register.php [L] @@ -126,4 +97,3 @@ RewriteRule . /index.php [L] Order Allow,Deny Allow from all - diff --git a/1 b/1 deleted file mode 100644 index 73b314ff..00000000 --- a/1 +++ /dev/null @@ -1 +0,0 @@ ---- \ No newline at end of file diff --git a/AI.php b/AI.php index c33903a7..83ab1d3b 100644 --- a/AI.php +++ b/AI.php @@ -2,15 +2,15 @@ /* - . - , , , , , + Ядро для обработки данных. + Обработка поединков, обработка заявок, обработка ботов, обработка пещер, обработка турниров, обработка временных генераций */ if (isset($_GET['m1'])) { define('GAME', true); - setlocale(LC_CTYPE, "ru_RU.CP1251"); + include_once '_incl_data/__config.php'; include_once '_incl_data/class/__db_connect.php'; @@ -22,13 +22,13 @@ if (isset($_GET['m1'])) { } elseif (isset($_GET['bk1'])) { define('GAME', true); - setlocale(LC_CTYPE, "ru_RU.CP1251"); + include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); $u = User::start(); - $ins = ' -1:
'; + $ins = 'Вещи БК-1:
'; $sp = mysql_query('SELECT * FROM `items_main` WHERE `geni` = 1'); while ($pl = mysql_fetch_array($sp)) { @@ -149,7 +149,7 @@ if (!isset($_GET['robot']) && UserIp::get() != $_SERVER['SERVER_ADDR'] && UserIp const GAME = true; -setlocale(LC_CTYPE, "ru_RU.CP1251"); + include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); @@ -216,7 +216,7 @@ while ($pl = mysql_fetch_array($sp)) { echo '*'; } echo '+'; - echo '[' . $pl['login'] . '] -> : ' . $pl['ipreg'] . ' , : ' . ($pl['timeMain'] - time( - )) . ' ., : ' . $pl['zv'] . ', : ' . $pl['battle'] . ''; + echo '[' . $pl['login'] . '] -> Действие: ' . $pl['ipreg'] . ' , ожидаем: ' . ($pl['timeMain'] - time( + )) . ' сек., заявка: ' . $pl['zv'] . ', поединок: ' . $pl['battle'] . ''; echo '
'; } diff --git a/_incl_data/__config.php b/_incl_data/__config.php index 6db1234a..065cadeb 100644 --- a/_incl_data/__config.php +++ b/_incl_data/__config.php @@ -5,7 +5,6 @@ use Insallah\Tournaments\Tournament; error_reporting(E_ALL ^ E_NOTICE); ini_set('display_errors', 'Off'); -setlocale(LC_CTYPE, "ru_RU.CP1251"); date_default_timezone_set('Europe/Moscow'); header('Cache-Control: no-cache, no-store, must-revalidate'); diff --git a/_incl_data/autoload.php b/_incl_data/autoload.php index a6f92bb5..4c68d220 100644 --- a/_incl_data/autoload.php +++ b/_incl_data/autoload.php @@ -26,6 +26,7 @@ spl_autoload_register(function (string $classname) { $classMap = [ 'NewCombats' => __DIR__ . '/class/', 'Insallah' => __DIR__ . '/class/Insallah/', + 'DarksLight2' => __DIR__ . '/class/DarksLight2/', ]; $parts = explode('\\', $classname); $namespace = array_shift($parts); diff --git a/_incl_data/class/Battle.php b/_incl_data/class/Battle.php index 347784d4..e9cf9b52 100644 --- a/_incl_data/class/Battle.php +++ b/_incl_data/class/Battle.php @@ -11,34 +11,34 @@ class Battle public function maginfoattack($u1, $u2, $type): string { /* - 1 - , - 2 - , - 3 - , - 4 - + 1 - огонь, + 2 - воздух, + 3 - вода, + 4 - земля */ $v_l = str_replace(' ', ' ', $this->users[$this->uids[$u1]]['login']); - $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; // + $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; //защита цели $v_p = 0 + round( ($this->stats[$this->uids[$u1]]['pzm' . $type] + $this->stats[$this->uids[$u1]]['pzm']) * 0.4 - ); // - $v_m = 0 + $this->stats[$this->uids[$u1]]['pm' . $type]; // + ); //подавление защиты от магии + $v_m = 0 + $this->stats[$this->uids[$u1]]['pm' . $type]; //мощность мага // return ' magelogin=' . $v_l . ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); '; } public function typeBattle(int $x): array { - $r = [0, 0, ' ', ' ']; + $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; if ($x >= 50000 && $x < 100000) { - $r = [25, 50, ' ', ' ']; + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; } elseif ($x < 500000) { - $r = [50, 75, ' ', ' ']; + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; } elseif ($x < 1000000) { - $r = [75, 100, ' ', ' ']; + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; } elseif ($x < 2500000) { - $r = [100, 125, ' ', ' ']; + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; } elseif ($x >= 5000000) { - $r = [150, 150, ' ', ' ']; + $r = [150, 150, 'Судный День', 'Судный День']; } return $r; } @@ -51,7 +51,7 @@ class Battle 5 => '006699', 6 => '006699', 7 => '006699', - ]; // + ]; //не крит public array $mcolor = [ 1 => 'A00000', 2 => '008080', @@ -60,250 +60,250 @@ class Battle 5 => '006699', 6 => '006699', 7 => '006699', - ]; // + ]; //не крит public array $mname = [ - '' => 1, - '' => 2, - '' => 3, - '' => 4, - '' => 5, - '' => 6, - '' => 7, + 'огонь' => 1, + 'воздух' => 2, + 'вода' => 3, + 'земля' => 4, + 'свет' => 5, + 'тьма' => 6, + 'серая' => 7, ]; public array $prm = [ /* - act: 1 - - 2 - - type_of: 1 - - 2 - - 3 - - 4 - - 5 - + act: 1 - когда персонаж получает повреждение + 2 - когда персонаж наносит удар + type_of: 1 - уворот + 2 - крит + 3 - атака + 4 - защита + 5 - прочее */ - 1 => ['name' => '', 'act' => 1, 'type_of' => 5], - 2 => ['name' => '', 'act' => 2, 'type_of' => 3], - 4 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 7 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 290 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - // - 294 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 295 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 296 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], - 297 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 298 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 141 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 147 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 148 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 149 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 150 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 142 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 144 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 146 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 145 => ['name' => ' ', 'act' => 2, 'type_of' => 4], - 8 => ['name' => ' ', 'act' => 1, 'type_of' => 1], - 9 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 10 => ['name' => '', 'act' => 1, 'type_of' => 1], - 11 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 45 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 47 => ['name' => ' ', 'act' => 2, 'type_of' => 2], - 48 => ['name' => ' ', 'act' => 1, 'type_of' => 1], - 49 => ['name' => ' ', 'act' => 1, 'type_of' => 1], - 138 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 140 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 193 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 204 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 211 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 213 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 215 => ['name' => ' ', 'act' => 1, 'type_of' => 1], - 216 => ['name' => ' ', 'act' => 2, 'type_of' => 2], - 217 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 219 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 220 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 222 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 225 => ['name' => ' ', 'act' => 1, 'type_of' => 4], - 226 => ['name' => '', 'act' => 1, 'type_of' => 4], - 231 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 3], - 234 => ['name' => '', 'act' => 2, 'type_of' => 4], - 235 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 342 => ['name' => ' ', 'act' => 0, 'type_of' => 0], - 343 => ['name' => '', 'act' => 0, 'type_of' => 0], - 237 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 239 => ['name' => ' ', 'act' => 2, 'type_of' => 3], - 240 => ['name' => ' ', 'act' => 2, 'type_of' => 5] + 1 => ['name' => 'Прикрыться', 'act' => 1, 'type_of' => 5], + 2 => ['name' => 'Вломить', 'act' => 2, 'type_of' => 3], + 4 => ['name' => 'Сильный удар', 'act' => 2, 'type_of' => 3], + 7 => ['name' => 'Активная защита', 'act' => 1, 'type_of' => 4], + 290 => ['name' => 'Вытягивание души', 'act' => 1, 'type_of' => 4], + //Канализация + 294 => ['name' => 'Зловонная Вода', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 295 => ['name' => 'Проткнуть', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 296 => ['name' => 'Гнилая Кровь', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 297 => ['name' => 'Собраться', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 298 => ['name' => 'Приказ Слабости', 'act' => 2, 'type_of' => 3], + 141 => ['name' => 'Призрачная защита', 'act' => 2, 'type_of' => 4], + 147 => ['name' => 'Призрачный кинжал', 'act' => 2, 'type_of' => 4], + 148 => ['name' => 'Призрачный топор', 'act' => 2, 'type_of' => 4], + 149 => ['name' => 'Призрачный удар', 'act' => 2, 'type_of' => 4], + 150 => ['name' => 'Призрачное лезвие', 'act' => 2, 'type_of' => 4], + 142 => ['name' => 'Призрачный огонь', 'act' => 2, 'type_of' => 4], + 144 => ['name' => 'Призрачный воздух', 'act' => 2, 'type_of' => 4], + 146 => ['name' => 'Призрачная земля', 'act' => 2, 'type_of' => 4], + 145 => ['name' => 'Призрачная вода', 'act' => 2, 'type_of' => 4], + 8 => ['name' => 'Танец ветра', 'act' => 1, 'type_of' => 1], + 9 => ['name' => 'Дикая удача', 'act' => 2, 'type_of' => 3], + 10 => ['name' => 'Предвидение', 'act' => 1, 'type_of' => 1], + 11 => ['name' => 'Удачный удар', 'act' => 2, 'type_of' => 3], + 45 => ['name' => 'Полная защита', 'act' => 1, 'type_of' => 4], + 47 => ['name' => 'Слепая удача', 'act' => 2, 'type_of' => 2], + 48 => ['name' => 'Танец лезвий', 'act' => 1, 'type_of' => 1], + 49 => ['name' => 'Второе дыхание', 'act' => 1, 'type_of' => 1], + 138 => ['name' => 'Сокрушающий удар', 'act' => 2, 'type_of' => 3], + 140 => ['name' => 'Абсолютная защита', 'act' => 1, 'type_of' => 4], + 193 => ['name' => 'Усиленные удары', 'act' => 2, 'type_of' => 3], + 204 => ['name' => 'Обречённость', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 211 => ['name' => 'Агрессивная защита', 'act' => 1, 'type_of' => 4], + 213 => ['name' => 'Коварный Уход', 'act' => 1, 'type_of' => 4], + 215 => ['name' => 'Скрытая ловкость', 'act' => 1, 'type_of' => 1], + 216 => ['name' => 'Скрытая сила', 'act' => 2, 'type_of' => 2], + 217 => ['name' => 'Разгадать тактику', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 219 => ['name' => 'Точный удар', 'act' => 2, 'type_of' => 3], + 220 => ['name' => 'Ставка на опережение', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 222 => ['name' => 'Последний удар', 'act' => 2, 'type_of' => 3], + 225 => ['name' => 'Магическая защита', 'act' => 1, 'type_of' => 4], + 226 => ['name' => 'Возмездие', 'act' => 1, 'type_of' => 4], + 231 => ['name' => 'Глухая защита', 'act' => 2, 'type_of' => 0, 'moment' => 3], + 234 => ['name' => 'Осторожность', 'act' => 2, 'type_of' => 4], + 235 => ['name' => 'Шокирующий удар', 'act' => 2, 'type_of' => 3], + 342 => ['name' => 'Круговая Защита', 'act' => 0, 'type_of' => 0], + 343 => ['name' => 'Натиск', 'act' => 0, 'type_of' => 0], + 237 => ['name' => 'Разведка боем', 'act' => 2, 'type_of' => 3], + 239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3], + 240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5] , - 21 => ['name' => ' [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 73 => ['name' => ' [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 74 => ['name' => ' [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 75 => ['name' => ' [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 76 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 77 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 78 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 79 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 22 => ['name' => ' [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 80 => ['name' => ' [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 81 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 82 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 83 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 84 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 36 => ['name' => ' [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 85 => ['name' => ' [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 86 => ['name' => ' [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 87 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 88 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 89 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 90 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 23 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 70 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 71 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 72 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 269 => ['name' => ' [8]', 'act' => 2, 'type_of' => 9] + 269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9] , - 276 => ['name' => ' [9]', 'act' => 2, 'type_of' => 9] + 276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9] , - 277 => ['name' => ' [10]', 'act' => 2, 'type_of' => 9] + 277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9] , - 270 => ['name' => ' ', 'act' => 2, 'type_of' => 5, 'type_sec' => 5] + 270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5] , - 280 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 281 => ['name' => ' ', 'act' => 2, 'type_of' => 5] + 281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5] , - 282 => ['name' => ' ', 'act' => 2, 'type_of' => 5], - 24 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 3] + 282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5], + 24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3] , - 210 => ['name' => ' [4]', 'act' => 2, 'type_of' => 8] + 210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8] , - 209 => ['name' => ' [7]', 'act' => 2, 'type_of' => 8] + 209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] , - 208 => ['name' => ' [8]', 'act' => 2, 'type_of' => 8] + 208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] , - 207 => ['name' => ' [9]', 'act' => 2, 'type_of' => 8] + 207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] , - 206 => ['name' => ' [10]', 'act' => 2, 'type_of' => 8] + 206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] , - 284 => ['name' => ' [11]', 'act' => 2, 'type_of' => 8] + 284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] , - 175 => ['name' => ' [7]', 'act' => 2, 'type_of' => 8] + 175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8] , - 176 => ['name' => ' [8]', 'act' => 2, 'type_of' => 8] + 176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8] , - 177 => ['name' => ' [9]', 'act' => 2, 'type_of' => 8] + 177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8] , - 178 => ['name' => ' [10]', 'act' => 2, 'type_of' => 8] + 178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8] , - 179 => ['name' => ' [11]', 'act' => 2, 'type_of' => 8] + 179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8] , - 42 => ['name' => ' [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 121 => ['name' => ' [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 122 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 123 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 124 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 125 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 249 => ['name' => ' ', 'act' => 2, 'type_of' => 4] + 249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4] , - 248 => ['name' => ' ', 'act' => 2, 'type_of' => 4] + 248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4] , - 251 => ['name' => ': ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 252 => ['name' => ': ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 273 => ['name' => ' [10]', 'act' => 1, 'type_of' => 4] + 273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4] , - 286 => ['name' => ' [9]', 'act' => 1, 'type_of' => 4] + 286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4] , - 287 => ['name' => ' [8]', 'act' => 1, 'type_of' => 4] + 287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4] , - 288 => ['name' => ' [7]', 'act' => 1, 'type_of' => 4] + 288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4] , - 255 => ['name' => ' ', 'act' => 2, 'type_of' => 8] + 255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8] , - 337 => ['name' => ' ', 'act' => 2, 'type_of' => 5] + 337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5] , - 33 => ['name' => ' [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 56 => ['name' => ' [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 57 => ['name' => ' [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 58 => ['name' => ' [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 59 => ['name' => ' [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 60 => ['name' => ' [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 245 => ['name' => ' ', 'act' => 2, 'type_of' => 9] + 245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9] , - 327 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 3] + 327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3] , - 328 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 329 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 330 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 331 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 332 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 333 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 3] + 333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3] , - 334 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , 335 => [ - 'name' => ' ', + 'name' => 'Эликсир Безумного Критовика', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3, ] , - 299 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 300 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 301 => ['name' => ' ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 302 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 303 => ['name' => ' ', 'act' => 2, 'type_of' => 4] + 303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4] , - 304 => ['name' => ' !', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] + 304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3] , - 305 => ['name' => '', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], + 305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], ]; - // + //Сохраняем лог в архик public function saveLogs($id, $type) { if ($type == 'all') { @@ -326,12 +326,12 @@ class Battle { global $u; if (!isset($this->stats[$this->uids[$uid]])) { - echo 'WARNING! ! !'; + echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; } else { $hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']); $hpall = $this->stats[$this->uids[$uid]]['hpAll']; if ($hp > 0) { - // + //Хиляем if ($hpnow + $hp > $hpall) { $hpli = $hpnow + $hp - $hpall; $hp -= $hpli; @@ -341,7 +341,7 @@ class Battle } else { $hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']); } - // + //Отнимаем тактику if (!$false_t7) { if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) { $hp = 0; @@ -369,7 +369,7 @@ class Battle } } } elseif ($hp < 0) { - // + //Отнимаемф if ($hpnow + $hp < 0) { $hpli = $hpnow + $hp; $hp += -($hpli); @@ -396,7 +396,7 @@ class Battle { if ($id > 0) { if (!mysql_query('DELETE FROM `eff_users` WHERE `id` = ' . $id . ' AND `v1` = "priem" AND `v2` != 0')) { - echo '[* [' . $id . ',' . $pid . ',' . $uid . ']]'; + echo '[*Ошибка удаления прием[' . $id . ',' . $pid . ',' . $uid . ']]'; } } else { mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $uid . ' AND `v1` = "priem" AND `v2` = ' . $pid); @@ -404,78 +404,78 @@ class Battle } - public $cached = false; // - public $expCoef = 0; # % - public $aBexp = 0; // - public $mainStatus = 1; // (1 - , 2 - , 3 - . ) - public $info = []; // - public $users = []; // - public $stats = []; // - public $uids = []; // id stats users id = 555 , $uids[555] users \ stats - public $atacks = []; // () - public $ga = []; // uid $ga[ {id } ][ {id } ] - public $ag = []; // uid $ga[ {id } ][ {id } ] - public $na = 1; // - public $np = 1; // - public $nm = 1; // + public $cached = false; //Кэширование данных + public $expCoef = 0; # % опыта в бою + public $aBexp = 0; //Добавочный опыт в боях + public $mainStatus = 1; //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка) + public $info = []; //Информация о поединке + public $users = []; //Информация о пользователях в этом бою + public $stats = []; //Информация о статах пользователей в этом бою + public $uids = []; //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats + public $atacks = []; //Список ударов в этом бою (действующих) + public $ga = []; //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ] + public $ag = []; //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ] + public $na = 1; //возможность использовать удар + public $np = 1; //возможность использовать приемы + public $nm = 1; //возможность использовать заклятия public $hodID = 0; public $stnZbVs = 0; - public $bots = []; // ID - public $iBots = []; // i + public $bots = []; // ID ботов + public $iBots = []; // i бота public $stnZb = []; public array $uAtc = [ 'id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0, - ]; // + ]; //Если игрок нанес удар public array $lg_itm = [ 0 => [ - '', - ' ', - '', - '', - '', - ' ', - ' ', - '', + 'грудью', + 'ребром руки', + 'лбом', + 'кулаком', + 'ногой', + 'левой ногой', + 'правой ногой', + 'коленом', ], - 1 => ['', ' ', ' ', ' '], - 2 => [' ', '', ' ', '', ' '], - 3 => ['', '', ' ', '', ' ', ' '], + 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], + 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], + 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], 4 => [ - '', - '', - '', - ' ', - ' ', - ' ', - ' ', - ' ', + 'ножнами', + 'гардой', + 'мечом', + 'лезвием меча', + 'рукоятью меча', + 'тупым лезвием', + 'острой стороной меча', + 'огромным мечом', ], - 5 => [' ', '', ' ', ' ', ' '], - 22 => [''], - ]; // + 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], + 22 => ['костылем'], + ]; // Чем лупили public array $lg_zon = [ 1 => [ - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', + 'в нос', + 'в глаз', + 'в челюсть', + 'по переносице', + 'в кадык', + 'по затылку', + 'в правый глаз', + 'в левый глаз', + 'в скулу', ], - 2 => [' ', ' ', ' ', ' ', ' '], - 3 => [' ', ' ', ' ', ' '], - 4 => [' < >', ' ', ' ', ' ', ' '], - 5 => [' ', ' ', ' ', ' ', ' '], - ]; // - public $e; // () + 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], + 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], + 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], + 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], + ]; // Куда лупили + public $e; //Ошибка (текст) public $is = []; public $items = []; - // ... + //Очистка кэша для ... public $uclearc = []; public $ucleari = []; @@ -498,22 +498,22 @@ class Battle } } - // + //Проверка урон приемов над защитными public function testYronPriemAttack($pid, $u1, $u2, $hp) { - // 1 2 pid hp . + //Игрок 1 бьет по Игроку 2 при помощи приема № pid на hp ед. здоровья /* - + Полная защита */ - // + //Получаем приемы и смотрим когда какой действует $eff = $this->stats[$this->uids[$u2]]['effects']; $j = 0; while ($j <= count($eff)) { if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - // id $eff[$j]['v2'] + // id прием $eff[$j]['v2'] if ($eff[$j]['v2'] == 140 || $eff[$j]['v2'] == 211 || $eff[$j]['v2'] == 45) { //|| $eff[$j]['v2'] == 45 - // = 1 , 0 + //Приемы от которых урон = 1 , то есть выдаем 0 $hp['y'] = -1; $hp['r'] = 1; $hp['k'] = 2; @@ -528,24 +528,24 @@ class Battle return $hp; } - // . + //Расчет маг.крита public function magKrit($l2, $t) { $r = 0; $r = $l2 * 2 - 7; if ($r > $t) { - // ( , 2 ) 6% - //250 . 1% - //$r = -1; , -- + //магический промах (серый удар, в 2 раза меньше) 6% + //250 ед. защиты от магии дает 1% шанса увернуться от магии + //$r = -1; , промах -- $r = 0; } else { - // 3% + //каждая владелка дает 3% шанс крита $r = ceil($t * 0.75); if ($r > 30) { $r = 30; } if (rand(0, 10000) < $r * 100) { - // + //крит удар $r = 1; } else { $r = 0; @@ -555,13 +555,13 @@ class Battle } - // + //Расчет опыта public function testExp($y, $s1, $s2, $id1, $id2) { global $u, $c; - // - $oplevel = [ // . + //ТУТ таблица умножения оыта + $oplevel = [ // Максимум для каждого уровня. 0 => 1, 1 => 1, 2 => 1, @@ -638,7 +638,7 @@ class Battle return $addExp; } - // \ + //Добавляем опыт \ нанесенный урон public function takeExp($id, $y, $id1, $id2, $mgregen = false, $nobattle_uron = false) { global $u; @@ -653,7 +653,7 @@ class Battle if ((int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1) { - $dun_limitForLevel = [ // . + $dun_limitForLevel = [ // Максимум для каждого уровня. 4 => 750, 5 => 1500, 6 => 3500, @@ -666,7 +666,7 @@ class Battle 13 => 500000, 14 => 750000, ]; - $dun_expFactor = [ // . + $dun_expFactor = [ // Максимум для каждого уровня. 4 => 5, 5 => 5, 6 => 5, @@ -683,8 +683,8 @@ class Battle if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) { $e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']]; } - if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // - $dun_exp = []; // . + if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. $rep = mysql_fetch_array( mysql_query( 'SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$this->uids[$id1]]['id'] . '" LIMIT 1' @@ -695,26 +695,26 @@ class Battle $val = explode('=', $val); if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { $dun_exp[(int)$val[0]] = (int)$val[1]; - } // + } // текущий лимит опыта в подземке } unset($rep); if (!isset($dun_exp[$this->info['dungeon']])) { $dun_exp[$this->info['dungeon']] = 0; } - if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // , . + if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // Если лимит не задан, опыт не даем. $e = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ) { // , . + ) { // Если лимит уже достигнут, опыт не даем. $e = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > $dun_exp[$this->info['dungeon']] - ) { // . + ) { // Если текущая репутация не достигла лимита. if (($dun_exp[$this->info['dungeon']] + $e) > $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]) { - // , . + // Если опыта набрано достаточно, для достижения лимита. $e = abs( $e - abs( $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ($e + $dun_exp[$this->info['dungeon']]) @@ -722,17 +722,17 @@ class Battle ); $dun_exp[$this->info['dungeon']] += $e; } elseif ($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > ($dun_exp[$this->info['dungeon']] + $e)) { - // , . + // Если опыта недостаточно, для достижения лимита. $e = $e; $dun_exp[$this->info['dungeon']] += $e; } else { $e = 0; } - } else { // . + } else { // В любой непонятной ситуцаии. $e = 0; } } - // . + // Опыт в пещерах. if ($this->info['dungeon'] == 102) { $e = floor($e * 0.002); } @@ -769,7 +769,7 @@ class Battle 'UPDATE `stats` SET `last_hp` = "' . $this->users[$this->uids[$id1]]['last_hp'] . '",`tactic6` = "' . $this->users[$this->uids[$id1]]['tactic6'] . '",`battle_yron` = "' . $this->users[$this->uids[$id1]]['battle_yron'] . '",`battle_exp` = "' . $this->users[$this->uids[$id1]]['battle_exp'] . '" WHERE `id` = "' . ((int)$id1) . '" LIMIT 1' ); if (!$upd) { - echo '[ ]'; + echo '[не удача при использовании приема]'; } else { $this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; $this->clear_cache($id1); @@ -787,7 +787,7 @@ class Battle } } - // + //Добавляем нанесенный урон public function takeYronNow($uid, $y) { global $u; @@ -804,13 +804,13 @@ class Battle mysql_query("UPDATE stats SET battle_yron = battle_yron + $y WHERE id = " . $uid); } - //JS + //JS информация о игроке public function myInfo($id, $t) { global $c, $u; if (isset($this->users[$this->uids[$id]]) || $u->info['id'] == $id) { if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { - // + //Всегда обновляем $this->users[$this->uids[$id]] = mysql_fetch_array( mysql_query( 'SELECT @@ -839,7 +839,7 @@ class Battle $ef = ''; $i = 0; if ($u->info['seff'] < 1) { - $ef .= '
\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + $ef .= '
Свернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; while ($i != -1) { $nseef = 0; @@ -864,23 +864,23 @@ class Battle $ei .= ' x' . $eff[$i]['x'] . ' '; } if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) { - $ei .= ' ()'; + $ei .= ' (Эликсир)'; } elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) { - $ei .= ' ()'; + $ei .= ' (Заклятие)'; } elseif ($eff[$i]['type1'] == 14) { - $ei .= ' ()'; + $ei .= ' (Прием)'; } elseif ($eff[$i]['type1'] == 15) { - $ei .= ' ()'; + $ei .= ' (Изучение)'; } elseif ($eff[$i]['type1'] == 17) { - $ei .= ' ()'; + $ei .= ' (Проклятие)'; } elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) { - $ei .= ' ()'; + $ei .= ' (Травма)'; } elseif ($eff[$i]['type1'] == 20) { - $ei .= ' ()'; + $ei .= ' (Пристрастие)'; } elseif ($eff[$i]['type1'] == 22) { - $ei .= ' ()'; + $ei .= ' (Ожидание)'; } else { - $ei .= ' ()'; + $ei .= ' (Эффект)'; } $ei .= '
'; @@ -893,26 +893,26 @@ class Battle if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) { if ($eff[$i]['type1'] != 13) { - $ei .= ': ' . $u->timeOut($time_still) . ''; + $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; } } else { if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) { - $ei .= ': ' . $u->timeOut($time_still) . ''; - //$ei .= ': '.$out.'
'; + $ei .= 'Осталось: ' . $u->timeOut($time_still) . ''; + //$ei .= 'Зарядов: '.$out.'
'; } elseif ($eff[$i]['hod'] >= 0) { - $ei .= ': ' . $eff[$i]['hod'] . ''; + $ei .= 'Зарядов: ' . $eff[$i]['hod'] . ''; } } if ($eff[$i]['user_use'] != '') { if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') { - $ei .= '
: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; } elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') { - $ei .= '
: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; + $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; } } - // + //Действие эффекта $tr = ''; $ti = $u->items['add']; $x = 0; @@ -931,46 +931,46 @@ class Battle if ($ed['add_mib1'] != 0) { if ($ed['add_mab1'] != 0) { - $tr .= '
: ' . $ed['add_mib1'] . '-' . $ed['add_mab1'] . ''; + $tr .= '
Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1'] . ''; } else { $m1l = $ed['add_mib1']; if ($m1l > 0) { $m1l = '+' . $m1l; } - $tr .= '
: ' . $m1l . ''; + $tr .= '
Броня головы: ' . $m1l . ''; } } if ($ed['add_mib2'] != 0) { if ($ed['add_mab2'] != 0) { - $tr .= '
: ' . $ed['add_mib2'] . '-' . $ed['add_mab2'] . ''; + $tr .= '
Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2'] . ''; } else { $m1l = $ed['add_mib2']; if ($m1l > 0) { $m1l = '+' . $m1l; } - $tr .= '
: ' . $m1l . ''; + $tr .= '
Броня корпуса: ' . $m1l . ''; } } if ($ed['add_mib3'] != 0) { if ($ed['add_mab3'] != 0) { - $tr .= '
: ' . $ed['add_mib3'] . '-' . $ed['add_mab3'] . ''; + $tr .= '
Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3'] . ''; } else { $m1l = $ed['add_mib3']; if ($m1l > 0) { $m1l = '+' . $m1l; } - $tr .= '
: ' . $m1l . ''; + $tr .= '
Броня пояса: ' . $m1l . ''; } } if ($ed['add_mib4'] != 0) { if ($ed['add_mab4'] != 0) { - $tr .= '
: ' . $ed['add_mib4'] . '-' . $ed['add_mab4'] . ''; + $tr .= '
Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4'] . ''; } else { $m1l = $ed['add_mib4']; if ($m1l > 0) { $m1l = '+' . $m1l; } - $tr .= '
: ' . $m1l . ''; + $tr .= '
Броня ног: ' . $m1l . ''; } } @@ -979,17 +979,17 @@ class Battle $efix = $ed['add_pog2']; } if (isset($ed['add_pog'])) { - $tr .= '
' . $ed['add_pog'] . ' . '; + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog'] . ' ед. урона'; } if (isset($ed['add_pog2'])) { - $tr .= '
' . $ed['add_pog2'] . ' . (' . $ed['add_pog2p'] . '%)'; + $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog2'] . ' ед. урона (' . $ed['add_pog2p'] . '%)'; } if ($tr != '') { $ei .= $tr; } if ($eff[$i]['info'] != '') { - $ei .= '
:
' . $eff[$i]['info']; + $ei .= '
Информация:
' . $eff[$i]['info']; } $ef .= '
'; @@ -1001,7 +1001,7 @@ class Battle $i++; } } else { - $ef .= '
\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; + $ef .= '
Развернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; } $ca = ''; @@ -1024,18 +1024,18 @@ class Battle $st['mpNow'] = $st['mpAll']; } $stsua = '' . $ur['login2'] . ''; - $stsua .= '
: ' . $st['s1']; - $stsua .= '
: ' . $st['s2']; - $stsua .= '
: ' . $st['s3']; - $stsua .= '
: ' . $st['s4']; + $stsua .= '
Сила: ' . $st['s1']; + $stsua .= '
Ловкость: ' . $st['s2']; + $stsua .= '
Интуиция: ' . $st['s3']; + $stsua .= '
Выносливость: ' . $st['s4']; if ($st['s5'] != 0) { - $stsua .= '
: ' . $st['s5']; + $stsua .= '
Интелект: ' . $st['s5']; } if ($st['s6'] != 0) { - $stsua .= '
: ' . $st['s6']; + $stsua .= '
Мудрость: ' . $st['s6']; } if ($st['s7'] != 0) { - $stsua .= '
: ' . $st['s7']; + $stsua .= '
Духовность: ' . $st['s7']; } if ($u->info['admin'] > 0) { $align = $ur['align']; @@ -1053,10 +1053,10 @@ class Battle 10 => 13, 9 => 14, 8 => 15, - 11 => 17, // 2 - 12 => 18, // 3 + 11 => 17, //кольцо 2 + 12 => 18, //кольцо 3 ]; - $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor( + $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor( $st['hpNow'] ) . ',' . floor($st['hpAll']) . ',' . floor($st['mpNow']) . ',' . floor( $st['mpAll'] @@ -1068,54 +1068,54 @@ class Battle if (isset($st['items_img'][$tp_img[$itm[$i]['inOdet']]])) { $itm[$i]['img'] = $st['items_img'][$tp_img[$itm[$i]['inOdet']]]; } - // + //генерируем предметы $ttl = '' . $itm[$i]['name'] . ''; $td = $u->lookStats($itm[$i]['data']); $lvar = ''; if ($td['add_hpAll'] > 0) { $td['add_hpAll'] = '+' . $td['add_hpAll']; - $lvar .= '
: ' . $td['add_hpAll'] . ''; + $lvar .= '
Уровень жизни: ' . $td['add_hpAll'] . ''; } if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { - $lvar .= '
: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']) . ''; + $lvar .= '
Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']) . ''; } if ($td['add_mab1'] > 0) { if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) { $m1l = '+'; - $lvar .= '
: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; + $lvar .= '
Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . ''; } else { - $lvar .= '
: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; + $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . ''; } } if ($td['add_mab2'] > 0) { if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) { $m1l = '+'; - $lvar .= '
: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; + $lvar .= '
Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . ''; } else { - $lvar .= '
: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; + $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . ''; } } if ($td['add_mab3'] > 0) { if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) { $m1l = '+'; - $lvar .= '
: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; + $lvar .= '
Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . ''; } else { - $lvar .= '
: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; + $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . ''; } } if ($td['add_mab4'] > 0) { if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) { $m1l = '+'; - $lvar .= '
: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; + $lvar .= '
Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . ''; } else { - $lvar .= '
: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; + $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . ''; } } if ($itm[$i]['iznosMAX'] > 0) { if ($itm[$i]['iznosMAXi'] == 999999999) { - $lvar .= '
: '; + $lvar .= '
Долговечность: неразрушимо'; } else { - $lvar .= '
: ' . floor($itm[$i]['iznosNOW']) . '/' . floor( + $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor( $itm[$i]['iznosMAX'] ); } @@ -1149,7 +1149,7 @@ class Battle } } - // + //Проверка на выживших public function testUsersLive(): bool { $r = false; @@ -1176,7 +1176,7 @@ class Battle return $r; } - // + //Мини лог public function miniLogAdd($user, $text) { $txt = $text; @@ -1198,7 +1198,7 @@ class Battle $this->add_log($mas1); } - // + //Проверяем завершение боя public function testFinish() { global $u; @@ -1232,7 +1232,7 @@ class Battle } if ($tl <= 1) { - //. + //Доп.проверка $tmHpNow = []; $tmNow = []; $sp = mysql_query( @@ -1264,12 +1264,12 @@ class Battle } if ($gdj > 1) { $tl = $gdj; - echo ' ... ( )'; + echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)'; } } if ($tl <= 1) { - // , - , + //завершаем поединок, кто-то один победил, либо ничья $i = 0; $tmwin = 0; @@ -1285,7 +1285,7 @@ class Battle $ts = []; $tsi = 0; if ($this->info['id'] > 0) { - // + //данные о игроках в бою unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots); $trl = mysql_query( 'SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC' @@ -1298,7 +1298,7 @@ class Battle $this->bots = null; $this->iBots = null; while ($pl = mysql_fetch_array($trl)) { - // + //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } @@ -1309,7 +1309,7 @@ class Battle $this->iBots[$pl['id']] = $bi; $bi++; } - // + //записываем статы $this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true); $ir++; } @@ -1319,12 +1319,12 @@ class Battle $ts = []; $tsi = 0; if ($this->info['id'] > 0) { - // + //данные о игроках в бою $trl = mysql_query( 'SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1' ); $pl = mysql_fetch_array($trl); - // + //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } @@ -1334,14 +1334,14 @@ class Battle $this->bots[] = $pl['id']; $this->iBots[$pl['id']] = $bi; } - // + //записываем статы $this->stats[] = $u->getStats($pl, 0, 0, false, false, true); } } if ($this->info['izlom'] > 0 && $tmwin == 1) { - // + // выкидываем ботов из боя $i = 0; $dlt = ''; $dlt2 = ''; @@ -1371,21 +1371,21 @@ class Battle $k = 0; $obr = 0; - // , + //Это излом, добавляем еще ботов if ($this->get_chanse(20)) { - // + //Уникальные монстры if ($this->info['izlomLvl'] == 8) { $bots = [ - ' ', - ' ', - '', - ' ', - ' ', + 'Валентайский Охотник', + 'Шипокрыл Хаоса', + 'Шипокрыл', + 'Лик Хаоса', + 'Фанатик Хаоса', ]; } $logins_bot = []; // - echo '
...
'; + echo '
Приближается нечто...
'; // $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array( @@ -1408,9 +1408,9 @@ class Battle } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd( [ @@ -1432,16 +1432,16 @@ class Battle $j++; } } else { - // + //Обычные монстры if ($this->info['izlomLvl'] == 8) { $bots = [ - '', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', + 'Литейщик', + 'Проклятие Глубин', + 'Пустынник Маньяк', + 'Пустынник Убийца', + 'Рабочий Мглы', + 'Смотритель Мглы', + 'Сторож Мглы', ]; } $logins_bot = []; @@ -1467,9 +1467,9 @@ class Battle } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd( [ @@ -1508,9 +1508,9 @@ class Battle } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd( [ @@ -1553,9 +1553,9 @@ class Battle } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd( [ @@ -1576,7 +1576,7 @@ class Battle $j++; } } - // 10 = +1 + //Каждые 10 вол = +1 монстр $irb = floor($this->info['izlomRoundSee'] / 10); while ($irb > 0) { // @@ -1602,9 +1602,9 @@ class Battle } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd( [ @@ -1634,7 +1634,7 @@ class Battle unset($logins_bot); if ($j == 0) { - // + //конец излома $this->finishBattle($tml, $tmv, null, $tl); $fin1 = mysql_query( 'INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time( @@ -1663,11 +1663,11 @@ class Battle if ($u->info['sex'] == 1) { $mas['text'] = '' . date( 'H:i' - ) . ' ' . $u->info['login'] . ' "".'; + ) . ' ' . $u->info['login'] . ' воспользовалась приемом "Передышка".'; } else { $mas['text'] = '' . date( 'H:i' - ) . ' ' . $u->info['login'] . ' "".'; + ) . ' ' . $u->info['login'] . ' воспользовался приемом "Передышка".'; } if ($u->stats['hpNow'] < $u->stats['hpAll']) { $hpSks = floor(($u->stats['hpAll'] * ((rand(15, 25)) / 100))); @@ -1690,7 +1690,7 @@ class Battle ); } } else { - // + //завершаем бой $this->finishBattle($tml, $tmv, null, $tl); if ($this->info['izlom'] > 0) { $fin1 = mysql_query( @@ -1701,11 +1701,11 @@ class Battle } if (isset($fin1)) { mysql_query( - 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '"," ","nofastfinisheff=1","' . time( + 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time( ) . '")' ); mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "',' ""x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','Вы создали предмет "Образец"x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time( ) . "','6','0')" ); $i01 = 1; @@ -1734,7 +1734,7 @@ class Battle } } - // + //завершение поединка public function finishBattle($t, $v, $nl, $tl) { global $magic, $u, $q, $c; @@ -1764,14 +1764,14 @@ class Battle } } - // + //данные о игроках в бою $t = mysql_query( 'SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"' ); $i = 0; $bi = 0; while ($pl = mysql_fetch_array($t)) { - // + //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } @@ -1782,7 +1782,7 @@ class Battle $this->iBots[$pl['id']] = $bi; $bi++; } - // + //записываем статы $this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true); $i++; } @@ -1804,7 +1804,7 @@ class Battle mysql_query( 'UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"' ); - // + //Заносим данные о завершении боя $i = 0; $vl = ''; $vtvl = ''; @@ -1820,7 +1820,7 @@ class Battle $this->info['players_c'] = mysql_fetch_array( mysql_query( - 'SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1' + 'SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1' ) ); $this->info['players_c'] = $this->info['players_c'][0]; @@ -1846,7 +1846,7 @@ class Battle 'zonb2' => '', 'type' => '1', ]; - $vtvl = ' , ' . $vtvl . '.'; + $vtvl = 'Бой закончен, победа за ' . $vtvl . '.'; } else { $this->info['players_cc'] = mysql_fetch_array( mysql_query( @@ -1875,7 +1875,7 @@ class Battle 'zonb2' => '', 'type' => '1', ]; - $vtvl = ' , .'; + $vtvl = 'Бой закончен, ничья.'; } $ins = mysql_query( 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")' @@ -1897,17 +1897,17 @@ class Battle 'zonb2' => '', 'type' => '1', ]; - $vtvl = ' ...'; + $vtvl = 'И победители стали калечить проигравших...'; $ins = mysql_query( 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")' ); $i = 0; $vtvl = ''; $tr_nm = [ - 1 => '', - 2 => '', - 3 => '', - 4 => '', + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', ]; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->info['team_win']) { @@ -1926,9 +1926,9 @@ class Battle $tr_tp = rand(($tr_pl['v1'] + 1), 3); } if ($this->users[$i]['sex'] == 1) { - $vtvl = '' . $this->users[$i]['login'] . ' : ' . $tr_nm[$tr_tp] . ' .
' . $vtvl; + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } else { - $vtvl = '' . $this->users[$i]['login'] . ' : ' . $tr_nm[$tr_tp] . ' .
' . $vtvl; + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); } @@ -1969,10 +1969,10 @@ class Battle $i = 0; $vtvl = ''; $tr_nm = [ - 1 => '', - 2 => '', - 3 => '', - 4 => '', + 1 => 'легкую', + 2 => 'среднюю', + 3 => 'тяжелую', + 4 => 'неизлечимую', ]; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) { @@ -1993,9 +1993,9 @@ class Battle $tr_tp = rand(($tr_pl['v1'] + 1), 3); } if ($this->users[$i]['sex'] == 1) { - $vtvl = '' . $this->users[$i]['login'] . ' (, : ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' .
' . $vtvl; + $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } else { - $vtvl = '' . $this->users[$i]['login'] . ' (, : ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' .
' . $vtvl; + $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); } @@ -2005,7 +2005,7 @@ class Battle } if ($vtvl != '') { if ($this->info['type'] != 99) { - $vtvl2 = ' ...'; + $vtvl2 = 'И победители стали калечить проигравших...'; $ins = mysql_query( 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")' ); @@ -2015,7 +2015,7 @@ class Battle ); } - // + //Турнир БС if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) { $bs = mysql_fetch_array( mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1') @@ -2024,13 +2024,13 @@ class Battle $j = 0; while ($i < count($this->users)) { if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) { - // + //Добавляем в лог БС if ($this->users[$i]['sex'] == 0) { - $text .= '{u1} '; + $text .= '{u1} повержен и выбывает из турнира'; } else { - $text .= '{u1} '; + $text .= '{u1} повержена и выбывает из турнира'; } - // + //Выкидываем предметы с персонажа $spik = mysql_query( 'SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"' ); @@ -2063,7 +2063,7 @@ class Battle } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $usrreal, $text); mysql_query( @@ -2074,18 +2074,18 @@ class Battle )' ); // - // + //Удаление клона mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); - // + //Обновление персонажа mysql_query( 'UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); - // + //Обновляем заявку mysql_query( 'UPDATE `bs_zv` SET `off` = "' . time( ) . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1' @@ -2110,9 +2110,9 @@ class Battle unset($bs, $j); } - // + //Награда за события if ($this->info['type'] == 500 && isset($tststrt['id'])) { - // + //Предметы которые выпадают в центр $i = 0; while ($i < count($this->users)) { @@ -2124,12 +2124,12 @@ class Battle ); if (isset($mon['id'])) { if ($this->info['team_win'] == 0) { - // + //Ничья mysql_query( 'UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); mysql_query( - 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("! ' . mysql_real_escape_string( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string( str_replace( '{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', @@ -2138,7 +2138,7 @@ class Battle ) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")' ); } elseif ($this->info['team_win'] != $this->users[$i]['team']) { - // + //Выиграли $j = 0; $usrwin = ''; while ($j < count($this->users)) { @@ -2159,7 +2159,7 @@ class Battle if ($usrwin != '') { $usrwin = ltrim($usrwin, ', '); } else { - $usrwin = ' '; + $usrwin = 'Команда героев'; } mysql_query( @@ -2172,7 +2172,7 @@ class Battle 'UPDATE `stats` SET `res_x` = "' . $truptimelast . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); mysql_query( - 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("! ' . mysql_real_escape_string( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string( str_replace( '{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', @@ -2185,7 +2185,7 @@ class Battle ); unset($usrwin); } else { - // + //Проиграли if ($mon['win_back'] == 1) { mysql_query( 'UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' @@ -2195,7 +2195,7 @@ class Battle 'UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); mysql_query( - 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("! ' . mysql_real_escape_string( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string( str_replace( '{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', @@ -2211,12 +2211,12 @@ class Battle } } - // + // выкидываем ботов из боя $i = 0; $botsi = 0; if (isset($tststrt['id'])) { while ($i < count($this->users)) { - // + //Тут выкидываем юзеров из Призавого хаота if ($this->info['type'] == 33) { $plde = mysql_fetch_array( mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1') @@ -2235,7 +2235,7 @@ class Battle $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); - $pld['battle_text'] .= ' (x5). '; + $pld['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; mysql_query( 'UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1' ); @@ -2243,11 +2243,11 @@ class Battle if ($this->users[$i]['team'] == $this->info['team_win']) { if (rand(1, 100) <= 5) { $u->addItem(10020, $pld['id'], ''); - $pld['battle_text'] .= ' . '; + $pld['battle_text'] .= ' и Жетон Успеха. '; } } } else { - $pld['battle_text'] .= ' . 500 .'; + $pld['battle_text'] .= ' Вы ничего не получили. Нужно набить больше 500 урона урона .'; } mysql_query( @@ -2305,7 +2305,7 @@ class Battle mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); } if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) { - // + //Добавляем что клон побежден if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) { $u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']); } elseif ($this->info['team_win'] == 0) { @@ -2314,7 +2314,7 @@ class Battle $u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']); } } elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) { - // + //Добавляем что бота победили $j = 0; while ($j < count($this->users)) { if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) { @@ -2352,7 +2352,7 @@ class Battle $botss = []; - // + //Из бота падают предметы if ($nl != 10 && $this->info['dungeon'] > 0) { if ($this->info['team_win'] == $u->info['team'] && $this->info['dungeon'] == 102) { $j1 = mysql_fetch_array( @@ -2362,7 +2362,7 @@ class Battle ); if (isset($j1['id'])) { mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $j1['id'] . '" LIMIT 1'); - // + //Выпадает шмотка mysql_query( 'INSERT INTO `laba_obj` (`use`,`lib`,`time`,`type`,`x`,`y`,`vars`) VALUES ( "0","' . $j1['lib'] . '","' . time( @@ -2371,7 +2371,7 @@ class Battle ); } } elseif ($this->info['team_win'] == $u->info['team']) { - // , + //выйграли люди, выкидываем предметы из мобов $j1 = mysql_query( 'SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `delete` = "0" AND `y`= "' . $this->info['y'] . '" LIMIT 100' ); @@ -2397,16 +2397,16 @@ class Battle ) ); } - if (isset($questDrop['id'])) { // , + if (isset($questDrop['id'])) { // Если квест есть, предмет имеет шанс выпасть } elseif (isset($itmz[2]) && $itmz[2] != '') { $itmz[1] = 0; - } // , , 0 + } // Если предмет квестовый, а квеста у игрока нет, то предмет выпадет с вероятностью 0 unset($questDrop); - // + //Добавляем этот предмет в зону Х и У if ($itmz[1] * 100000 >= rand(1, 10000000)) { - $tou = 0; // - /* */ + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ $itmnm = mysql_fetch_array( mysql_query( 'SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1' @@ -2414,7 +2414,7 @@ class Battle ); $itmnm = $itmnm['name']; - $rtxt = ' ' . $tbot2['login'] . ' "' . $itmnm . '" '; + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query( "INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time( ) . "','6','0','1','1')" @@ -2430,7 +2430,7 @@ class Battle "' . $this->info['y'] . '")' ); if (!isset($questDrop['id'])) { - $testdrop = 1; // drop-drop //quest + $testdrop = 1; //ТУТ drop-drop //quest } } } @@ -2440,13 +2440,13 @@ class Battle $j2++; } // - // 1-15 , + //Квест 1-15 сентября, if (date('m') == 9 && date('d') < 15) { if ($this->get_chanse(99) == true) { - // + //Не выпало } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 101) { - $tou = 0; // - /* */ + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ $itmz = [ rand(4745, 4751), 100, @@ -2459,7 +2459,7 @@ class Battle ); $itmnm = $itmnm['name']; - $rtxt = ' ' . $tbot2['login'] . ' "' . $itmnm . '" '; + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query( "INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time( ) . "','6','0','1','1')" @@ -2477,16 +2477,16 @@ class Battle } } // - // , + //Странички саныча, if (rand(1, 100) <= 99) { - // + //Не выпало } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 || $this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 || $this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 || $this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) { - $tou = 0; // - // + $tou = 0; //какому юзеру предназначено + // выделяем случайного юзера из команды $itmz = rand(3143, 3192); // $itmnm = mysql_fetch_array( @@ -2494,7 +2494,7 @@ class Battle ); $itmnm = $itmnm['name']; - $rtxt = ' ' . $tbot2['login'] . ' "' . $itmnm . '" '; + $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query( "INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time( ) . "','6','0','1','1')" @@ -2516,7 +2516,7 @@ class Battle ) . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" ' ); } else { - // RESTART + //выкидываем всех игроков в клетку RESTART $dnr = 1; if ($this->info['dungeon'] != 102) { mysql_query( @@ -2531,26 +2531,26 @@ class Battle $bm = []; $bms = []; - // - // + //Квестовый раздел + //Квестовый раздел - // + //завершаем поединок $i = $this->uids[$u->info['id']]; if ($this->info['team_win'] >= 0) { if ($this->stats[$i]['pbe'] > 0) { - // + //Бонус покупателя $this->expCoef += $this->stats[$i]['pbe']; } if ($this->info['razdel'] == 5) { if ($c['m'] >= 6 && $c['m'] <= 8) { - // + //Летний период $this->expCoef += 5; } elseif ($c['w'] == 0 || $c['w'] == 6) { - // + //Выходные дни $this->expCoef += 5; } } @@ -2570,7 +2570,7 @@ class Battle ); if ($this->info['type'] == 564) { - // + //Бой с копией $this->users[$i]['battle_exp'] = 0; } @@ -2590,10 +2590,10 @@ class Battle 13 => 100000, 14 => 100000, ]; - // . + // Максимум для каждого уровня. if ($this->users[$i]['battle_exp'] > 0) { - $dun_exp = []; // . + $dun_exp = []; // Текущий лимит опыта игрока в подземельях. $rep = mysql_fetch_array( mysql_query( 'SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' @@ -2601,7 +2601,7 @@ class Battle ); $rep = explode(',', $rep['dungeonexp']); foreach ($rep as $key => $val) { - $val = explode('=', $val); // + $val = explode('=', $val); // текущий лимит опыта в подземке if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { $dun_exp[(int)$val[0]] = (int)$val[1]; } @@ -2613,19 +2613,19 @@ class Battle $dun_exp[$this->info['dungeon']] = 0; } - if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // , . + if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем. $this->users[$i]['battle_exp'] = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']] - ) { // , . + ) { // Если лимит уже достигнут, опыт не даем. $this->users[$i]['battle_exp'] = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']] - ) { // . + ) { // Если текущая репутация не достигла лимита. if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) { - // , . + // Если опыта набрано достаточно, для достижения лимита. $this->users[$i]['battle_exp'] = abs( $this->users[$i]['battle_exp'] - abs( $dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']]) @@ -2633,12 +2633,12 @@ class Battle ); $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; } elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) { - // , . + // Если опыта недостаточно, для достижения лимита. $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; } else { $this->users[$i]['battle_exp'] = 0; } - } else { // . + } else { // В любой непонятной ситуцаии. $this->users[$i]['battle_exp'] = 0; } @@ -2646,7 +2646,7 @@ class Battle if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) { $dunexp = []; foreach ($dun_exp as $key => $val) { - $dunexp[$key] = $key . '=' . $val; // + $dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке } $dun_exp = implode(",", $dunexp); mysql_query( @@ -2696,12 +2696,12 @@ class Battle ); $act01 = 2; } - // - ( .) + //Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.) if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) { $mn = [ - 'l' => 0, // - 'w' => 0, // - 'm' => 0, // () + 'l' => 0, //сколько проигравших игроков + 'w' => 0, //сколько выигрывших игроков + 'm' => 0, //сумма выигрыша (общая) ]; if ($act01 == 1) { $mn['l'] = mysql_fetch_array( @@ -2720,20 +2720,20 @@ class Battle $gms[$i] = round(($mn['m'] / $mn['w']), 2); } } - // - // + //заносим данные в БД + //Поломка предметов if ($act01 == 1) { - // + //победа if ($this->users[$i]['dnow'] == 0) { if ($this->users[$i]['hpNow'] < 1) { $lom = 0.05; } } } elseif ($act01 == 2) { - // + //поражение $lom = 0.55; } else { - // + //ничья $lom = 0.05; } $nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)]; @@ -2762,7 +2762,7 @@ class Battle 'SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1' ) ); - //33% , + //33% от опыта переходит зверю, но не более максимума $aexp = (round($this->users[$i]['battle_exp'] / 100 * 33)); if ($aexp > $a004['max_exp']) { $aexp = $a004['max_exp']; @@ -2773,7 +2773,7 @@ class Battle "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat` ) VALUES ( '1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "' - ,' "" . $a004['name'] . "" : " . $aexp . "','-1','6','0')" + ,'Ваш питомец "" . $a004['name'] . "" получил опыт: " . $aexp . "','-1','6','0')" ); // $upd = mysql_query( @@ -2794,7 +2794,7 @@ class Battle $btlstatus = $this->typeBattle($prsusers[0]); if ($this->info['smert'] == 1) { - $btlstatus = [150, 150, ' ', ' ']; + $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; } // if ($this->stats[$i]['clanpos'] > 0 && ($this->stats[$i]['clanpos'] == 1 || $this->stats[$i]['clanpos'] == 2 || $this->stats[$i]['clanpos'] == 3)) { @@ -2802,7 +2802,7 @@ class Battle } unset($r1); - // + //Статусная битва if ($btlstatus[0] > 0) { if ($this->info['type'] == 99) { $this->info['addExp'] += $btlstatus[1]; @@ -2819,18 +2819,18 @@ class Battle } if ($this->info['money'] > 0) { if (isset($gm[$i])) { - $prc .= ' ' . $gm[$i] . ' . .'; + $prc .= ' Вы выйграли ' . $gm[$i] . ' кр. за этот бой.'; $u->addDelo( 4, $this->users[$i]['id'], - '"System.battle": ' . $gm[$i] . ' . ( ' . $this->info['id'] . ').', + '"System.battle": Персонаж выйграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0 ); $this->users[$i]['money'] += $gm[$i]; } elseif (isset($bm[$i])) { - $prc .= ' ' . $bm[$i] . ' . .'; + $prc .= ' Вы заплатили ' . $bm[$i] . ' кр. за этот бой.'; $u->addDelo( 4, $this->users[$i]['id'], - '"System.battle": ' . $gm[$i] . ' . ( ' . $this->info['id'] . ').', + '"System.battle": Персонаж проиграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0 ); $this->users[$i]['money'] -= $bm[$i]; @@ -2838,7 +2838,7 @@ class Battle } if ($c['money_haot'] && $this->users[$i]['exp'] <= 200000000) { if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) { - // + //Сколько нужно опыта набить $trexp = [ 8 => 1200, 9 => 3000, @@ -2857,7 +2857,7 @@ class Battle ]; $trexp = $trexp[$this->users[$i]['level']]; - // + //Какая цена фулла должна быть $trmn = [ 8 => 1000, 9 => 3000, @@ -2876,7 +2876,7 @@ class Battle ]; $trmn = $trmn[$this->users[$i]['level']]; - // + //Сколько екр дается $admn = [ 8 => 0.05, //0.05 9 => 0.065, //0.065 @@ -2896,24 +2896,24 @@ class Battle $admn = $admn[$this->users[$i]['level']]; if ($c['m'] >= 6 && $c['m'] <= 8) { - // + //Летний период if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { - // + //Выходные дни $admn = $admn * 2; } } elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { - // + //Выходные дни $admn = $admn * 2; } if ($this->users[$i]['battle_exp'] < $trexp) { - $prc .= ', 0 ( ).'; + $prc .= ', Награда 0 ЕКР за этот бой (Мало опыта набили).'; } elseif ($admn > 0) { if ($this->info['type'] != 33) { - $prc .= ', ' . $admn . ' .'; + $prc .= ', Награда ' . $admn . ' ЕКР за этот бой.'; } $u->addDelo( 4, $this->users[$i]['id'], - '"System.battle": ' . $admn . ' ( ' . $this->info['id'] . ').', + '"System.battle": Персонаж получил ' . $admn . ' ЕКР (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0 ); $this->users[$i]['money2'] += $admn; @@ -2922,10 +2922,10 @@ class Battle } if ($this->info['money3'] > 0) { if (isset($gms[$i])) { - $prc .= ' ' . $gms[$i] . ' $. .'; + $prc .= ' Вы выйграли ' . $gms[$i] . ' $. за этот бой.'; $u->addDelo( 4, $this->users[$i]['id'], - '"System.battle": ' . $gms[$i] . ' $. ( ' . $this->info['id'] . ').', + '"System.battle": Персонаж выйграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0 ); $this->users[$i]['money3'] += $gms[$i]; @@ -2933,10 +2933,10 @@ class Battle 'UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); } elseif (isset($bms[$i])) { - $prc .= ' ' . $bms[$i] . ' $. .'; + $prc .= ' Вы заплатили ' . $bms[$i] . ' $. за этот бой.'; $u->addDelo( 4, $this->users[$i]['id'], - '"System.battle": ' . $gms[$i] . ' $. ( ' . $this->info['id'] . ').', + '"System.battle": Персонаж проиграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0 ); $this->users[$i]['money3'] -= $bms[$i]; @@ -2993,7 +2993,7 @@ class Battle } if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) { - // + //канализация лимит $rep = mysql_fetch_array( mysql_query( 'SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' @@ -3033,7 +3033,7 @@ class Battle $sinf = ' ( ' . $sinf . ' )'; } - //-------------- 8-9-------------- + //--------------Лимит 8-9-------------- if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) { $this->users[$i]['battle_exp'] = 23000; }; @@ -3049,12 +3049,12 @@ class Battle //------------------------------------- if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] = ' . : ' . floor( + $this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: ' . floor( $this->users[$i]['battle_yron'] - ) . ' HP. : ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats + ) . ' HP. Получено опыта: ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats } - /* */ + /*Выпадение зубов в конце боя */ if ($c['nolevel']) { $rex95 = substr($this->users[$i]['exp'], -1); if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) { @@ -3085,7 +3085,7 @@ class Battle if ($this->users[$i]['battle_exp'] > 9) { if ($this->users[$i]['level'] > 1) { - // + //Нормальный зуб if ($this->get_chanse(25 / 100 * $chzbs)) { $rzb += 10; } @@ -3103,19 +3103,19 @@ class Battle } if ($this->users[$i]['team'] == $this->info['team_win']) { - // + //выиграли if ($this->users[$i]['level'] < 8) { $rzb += 1; } } elseif ($this->users[$i]['team'] == 0) { - // + //ничья if ($this->get_chanse(25 / 100 * $chzbs) && $this->users[$i]['battle_exp'] > 2) { $rzb = rand(0, 1); } else { $rzb = 0; } } else { - // + //проиграли if ($this->users[$i]['level'] >= 1) { $rzb = 0; } else { @@ -3152,26 +3152,26 @@ class Battle mysql_query( 'UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); - $this->users[$i]['battle_text'] .= ' ' . $u->zuby( + $this->users[$i]['battle_text'] .= ' Вы получили ' . $u->zuby( $rzb, 1 - ) . ' .'; + ) . ' за этот бой.'; } } } if ($this->info['priz'] > 0) { - // + //Призовой хаот /* [4754] - 2-3 = 1 - 4-5 = 1 - 6-7 = 2 - 8-9 = 3 - (3) + 2-3 лвл = 1 жетон + 4-5 лвл = 1 жетона + 6-7 лвл = 2 жетонов + 8-9 лвл = 3 жетонов + В случаи победы (х3) */ - if ($this->info['type'] != 33)// + if ($this->info['type'] != 33)//ТУТ приз хаот дроп { $tmon = [ 2 => 1, @@ -3195,7 +3195,7 @@ class Battle ); $tmonc = $tmonc[0]; if ($this->users[$i]['team'] == $this->info['team_win']) { - // + //При выигрыше увеличиваем if ($tmonc < 1) { $tmonc = 1; } elseif ($tmonc > 96) { @@ -3208,16 +3208,16 @@ class Battle $u->addItem(4754, $this->users[$i]['id'], ''); // $tmoni++; } - $this->users[$i]['battle_text'] .= ' (x' . floor( + $this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете Призовой Жетон (x' . floor( $tmon / 2 - ) . '). ( , ! ' . ($tmonc) . '/96 )'; + ) . '). (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )'; unset($tmon, $tmoni); } } - // + //Снижение времени Право на подвиг Титул за победу в хаоте if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) { - //2 - $u->repexp_add($this->users[$i]['id'], 2); // +2 + //ТУТ2 + $u->repexp_add($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2 $check = mysql_fetch_array( mysql_query( 'SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;' @@ -3239,7 +3239,7 @@ class Battle mysql_query( 'UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1' ); - $this->users[$i]['battle_text'] .= ' ' . $urcheck . ' -5 . !'; + $this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в ' . $urcheck . ' и более вы получаете -5 мин. к праву на подвиг!'; } } mysql_query( @@ -3247,23 +3247,23 @@ class Battle ); // } - // + //Награда за клан вар if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) { mysql_query( 'UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); if (date('w') == 0 || date('w') == 6 || date('w') == 4) { - $u->repexp_add($this->users[$i]['id'], 25); // () 25 + $u->repexp_add($this->users[$i]['id'], 25); //Клановые войны(победа) 25 } } - // + //Награда за клан вар if ($this->info['dungeon'] == 0 && $this->info['type'] == 99 && $this->users[$i]['team'] == $this->info['team_win']) { if (date('w') == 0 || date('w') == 6 || date('w') == 5) { - $u->repexp_add($this->users[$i]['id'], 10); // () 10 + $u->repexp_add($this->users[$i]['id'], 10); //Кровавые войны(победа) 10 } } - // + //Новая выдача на трупожора if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) { if ($this->users[$i]['level'] > 9) { $mid = 903093; @@ -3317,7 +3317,7 @@ class Battle } if ($this->users[$i]['battle_yron'] > 0) { mysql_query( - 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '"," ","pravonapodvig=1","' . time( + 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time( ) . '")' ); } @@ -3326,7 +3326,7 @@ class Battle ) - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")' ); mysql_query( - 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '"," ","zashitatk=1","' . time( + 'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time( ) . '")' ); $ritem = rand(1, 1000); @@ -3343,9 +3343,9 @@ class Battle if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $u->info['battle_yron'] >= 2000) //$u->info['battle_yron'] { - // ang_g + //Реликвия Ангела ang_g if ($this->users[$i]['team'] == $this->info['team_win']) { - // + //При выигрыше увеличиваем $tmoni = 2; } else { $tmoni = 1; @@ -3376,7 +3376,7 @@ class Battle } if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] .= ' (' . $tmon . '). [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] . '; + $this->users[$i]['battle_text'] .= ' За хаот вы получаете Реликвия Ангела (' . $tmon . '). Всего [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] в день. '; } unset($tmon, $tmoni, $effblago, $limitg); } @@ -3384,14 +3384,14 @@ class Battle if ($this->info['razdel'] == 5 || $this->info['razdel'] == 4) { if (date('d.m') == '31.10' || (date('m') == 11 && date('d') < 7)) { - // 4504 - $this->users[$i]['battle_text'] .= ' (x1).'; + //Хэллоуин 4504 + $this->users[$i]['battle_text'] .= ' Вы получаете Тыква (x1).'; $u->addItem(4504, $this->users[$i]['id'], '|sudba=1'); } } - // + //Добавляем воинственность if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 /*($this->users[$i]['exp'] < 12499 || $this->users[$i]['exp'] > 12500)*/ ) { if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) { @@ -3425,7 +3425,7 @@ class Battle if ($this->info['type'] != 33) { - $this->users[$i]['battle_text'] .= ' ' . $rzbvo . ' .'; + $this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.'; } mysql_query( 'UPDATE `rep` SET `rep3` = `rep3` + "' . $rzbvo . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' @@ -3469,7 +3469,7 @@ class Battle $this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users - // ( ) + //Добавляем клан опыт (Все кроме пещер) if ($this->users[$i]['clan'] > 0) { $cpr = 1; @@ -3496,11 +3496,11 @@ class Battle ); } - // + //репутация $this->users[$i]['bn_demonscity'] = 0; $this->users[$i]['bn_capitalcity'] = 0; $this->users[$i]['bn_suncity'] = 0; - // + //завершение эффектов с финишем $spe = mysql_query( 'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30' ); @@ -3509,7 +3509,7 @@ class Battle require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php'); } } - // + //обновляем данные mysql_query( 'DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50' ); @@ -3549,7 +3549,7 @@ class Battle ) ); if (isset($tshbn['id'])) { - // + //выбрасываем шайбу mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1'); // mysql_query( @@ -3557,13 +3557,13 @@ class Battle `name`,`dn`,`x`,`y`,`img`,`delete`,`action`,`for_dn`, `type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date` ) VALUES ( - "","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0", + "Шайба","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0", "0","120","220","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt1:69,rl1:-47,rt2:74,rl2:126,rt3:76,rl3:140,rt4:80,rl4:150}" )' ); // } - // ( 00) + //телепортируем в рестарт (координата 0х0) $this->users[$i]['x'] = $this->users[$i]['res_x']; $this->users[$i]['y'] = $this->users[$i]['res_y']; $this->users[$i]['s'] = $this->users[$i]['res_s']; @@ -3574,15 +3574,15 @@ class Battle ); if ($this->users[$i]['room'] == 370) { if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' '; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в начале лабиринта'; } else { - $rtxt = '' . $this->users[$i]['login'] . ' '; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в начале лабиринта'; } } else { if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' "' . $r_n['name'] . '"'; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в комнате "' . $r_n['name'] . '"'; } else { - $rtxt = '' . $this->users[$i]['login'] . ' "' . $r_n['name'] . '"'; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в комнате "' . $r_n['name'] . '"'; } } } elseif ($this->info['dungeon'] == 102) { @@ -3593,7 +3593,7 @@ class Battle ) ); if ($lab['users'] < 2) { - // + //Удаляем подземелье mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); @@ -3611,16 +3611,16 @@ class Battle mysql_query( 'UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); - // + //удаляем все предметы которые пропадают после выхода из пещеры mysql_query( 'UPDATE `items_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")' ); if ($this->users[$i]['login'] != '') { if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' ' . $nld; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; } else { - $rtxt = '' . $this->users[$i]['login'] . ' ' . $nld; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; } } } else { @@ -3642,22 +3642,22 @@ class Battle 'SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1' ) ); - $nld .= ', "' . $tinf['login'] . '"'; + $nld .= ', новым лидером становится "' . $tinf['login'] . '"'; mysql_query( 'UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1' ); } } $rooms = [ - 374 => 372, // ( ) - 189 => 188, // ( ) - 392 => 393, // ( ) + 374 => 372, //ПТП (Кэпитал сити) + 189 => 188, //Водосток (Кэпитал сити) + 392 => 393, //Шахты (Кэпитал сити) - 398 => 397, // ( ) - 243 => 395, // ( ) - 360 => 242, // ( ) + 398 => 397, //Шахты (Ангелс сити) + 243 => 395, //Водосток (Ангелс сити) + 360 => 242, //Бездна (Ангелс сити) - 19 => 293, // + 19 => 293, //Катакомбы ]; // $n_rm = $rooms[$this->users[$i]['room']]; mysql_query( @@ -3666,7 +3666,7 @@ class Battle mysql_query( 'UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); - // + //удаляем все предметы которые пропадают после выхода из пещеры mysql_query( 'UPDATE `items_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000' @@ -3676,9 +3676,9 @@ class Battle ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000' ); if ($this->users[$i]['sex'] == 0) { - $rtxt = '' . $this->users[$i]['login'] . ' ' . $nld; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; } else { - $rtxt = '' . $this->users[$i]['login'] . ' ' . $nld; + $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; } } if ($rtxt != '') { @@ -3703,7 +3703,7 @@ class Battle ) . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1' ); if ($this->info['turnir'] == 0) { - // + //пишем в чат mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "','" . $this->users[$i]['battle_text'] . "','-1','6','0')" ); @@ -3712,14 +3712,14 @@ class Battle 'UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1' ); } - // + //завершаем сам бой $upd3 = mysql_query( 'UPDATE `battle` SET `time_over` = "' . time( ) . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1' ); - // + // Жрать хочет if ($this->users[$i]['animal'] > 0) { $a = mysql_fetch_array( mysql_query( @@ -3730,7 +3730,7 @@ class Battle if ($a['eda'] < 1) { $u->send( '', $this->users[$i]['room'], $this->users[$i]['city'], '', - $this->users[$i]['login'], '' . $a['name'] . ' ...', + $this->users[$i]['login'], '' . $a['name'] . ' нуждается в еде...', time(), 6, 0, 0, 0, 1 ); } @@ -3760,9 +3760,9 @@ class Battle { global $u; // - // + //Выпадение дропа на ЦП if ($bid == 1008) { - // + //Старый Новый Год $jit = 0; $iit = mysql_fetch_array( mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '') @@ -3926,7 +3926,7 @@ class Battle } unset($svtk); } elseif ($bid == 1007) { - //, CAPITAL CITY + //Хэллоуин, Тыквоголовый CAPITAL CITY $jit = 0; $iit = mysql_fetch_array( mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '') @@ -3951,7 +3951,7 @@ class Battle $jit++; } } elseif ($bid == 1006) { - // CAPITAL CITY + //Трупожор CAPITAL CITY if (rand(0, 100) < 10) { mysql_query( 'INSERT INTO `items_local` @@ -3967,7 +3967,7 @@ class Battle ); } } elseif ($bid == 1000) { - // CAPITAL CITY + //Трупожор CAPITAL CITY mysql_query( 'INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES @@ -3981,7 +3981,7 @@ class Battle )' ); } elseif ($bid == 1001) { - // CAPITAL CITY + //Трупожор CAPITAL CITY mysql_query( 'INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES @@ -3995,7 +3995,7 @@ class Battle )' ); } elseif ($bid == 1002) { - // CAPITAL CITY + //Трупожор CAPITAL CITY mysql_query( 'INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES @@ -4009,7 +4009,7 @@ class Battle )' ); } elseif ($bid == 1003) { - // CAPITAL CITY + //Трупожор CAPITAL CITY mysql_query( 'INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES @@ -4023,7 +4023,7 @@ class Battle )' ); } elseif ($bid == 1004) { - // CAPITAL CITY + //Трупожор CAPITAL CITY mysql_query( 'INSERT INTO `items_local` ( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES @@ -4056,9 +4056,9 @@ class Battle ) . ') WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1' ); mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "',' : " . mysql_real_escape_string( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили кредиты: " . mysql_real_escape_string( $cr - ) . " .','-1','6','0')" + ) . " кр.','-1','6','0')" ); } // @@ -4071,38 +4071,38 @@ class Battle ); if (!$resulttp) { mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "',' !!!','-1','6','0')" + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Трупожор был пуст!!!','-1','6','0')" ); $u->addDelo( 4, $this->users[$this->uids[$uid]]['id'], - '"System.battle": ( ), !!! ', time(), + '"System.battle": (В бою трупожор), ПУСТ!!! ', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0 ); } else { mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "',' -: " . mysql_real_escape_string( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили Евро-кредиты: " . mysql_real_escape_string( $ecr - ) . " .','-1','6','0')" + ) . " екр.','-1','6','0')" ); $u->addDelo( 4, $this->users[$this->uids[$uid]]['id'], - '"System.battle": ' . $ecr . ' ( ), : ' . $this->users[$this->uids[$uid]]['money2'] . ' ', + '"System.battle": Персонаж получил ' . $ecr . ' ЕКР (В бою трупожор), сейчас: ' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0 ); } } if ($ico != '') { /* - 0(, 1 - , 2 - )@ - 1( )@ - 2( )@ - 3()@ - 4( 0 1, -1)@ - 5( % 0.001)@ - 6( : add_s1=5|add_hpAll=50)@ - 7( , )@ - 8( 0 1)@ - 9( 0 or 1) + 0(тип, 1 - значок, 2 - подвиг)@ + 1(время в минутах)@ + 2(название картинки)@ + 3(название)@ + 4(требует остаться в живых 0 или 1, либо игрок умер -1)@ + 5(требует набить с ботам урона в % Например 0.001)@ + 6(действия например: add_s1=5|add_hpAll=50)@ + 7(Требует другой значок, название картинки)@ + 8(плюсует значок 0 или 1)@ + 9(удаляем прошлый значок 0 or 1) */ $i = 0; $txt = ''; @@ -4140,7 +4140,7 @@ class Battle $ins = true; } else { if ($old_ico['id'] > 0) { - $txt .= ', "' . $ico_e[3] . ' ()"'; + $txt .= ', "' . $ico_e[3] . ' (Обновление)"'; mysql_query( 'UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = "' . mysql_real_escape_string( time() + $ico_e[1] * 60 @@ -4180,7 +4180,7 @@ class Battle if ($txt != '') { $txt = ltrim($txt, ', '); mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "',' : " . mysql_real_escape_string( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы совершили подвиг: " . mysql_real_escape_string( $txt ) . "','-1','6','0')" ); @@ -4208,7 +4208,7 @@ class Battle ); } if (isset($this->ainm[$itm_e[0]]['id'])) { - // + //Добавляем текст о добавлении предмета $txt .= ', ' . $this->ainm[$itm_e[0]]['name'] . ''; if ($itm_e[1] > 1) { $txt .= ' (x' . $itm_e[1] . ')'; @@ -4220,7 +4220,7 @@ class Battle if ($txt != '') { $txt = ltrim($txt, ', '); mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "',' : " . mysql_real_escape_string( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили предметы: " . mysql_real_escape_string( $txt ) . "','-1','6','0')" ); @@ -4229,7 +4229,7 @@ class Battle // } - // + //Проводим удар public function addNewAtack() { global $u; @@ -4252,11 +4252,11 @@ class Battle } if ($no == 0) { - // + //наносим удар if ($u->info['enemy'] > 0) { if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) { if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { - // + //наносим новый удар $a = $this->uAtc['a'][1] . $this->uAtc['a'][2] . $this->uAtc['a'][3] . $this->uAtc['a'][4] . $this->uAtc['a'][5]; $b = $this->uAtc['b']; mysql_query( @@ -4267,13 +4267,13 @@ class Battle ) . '","' . $u->info['id'] . '","' . $u->info['enemy'] . '","' . $a . '","' . $b . '")' ); if (!$d) { - $this->e = ' ...'; + $this->e = 'Не удалось нанести удар по противнику...'; } else { $this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id(); } } } else { - // + //отвечаем на удар противника if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1 && isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) { $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5]; $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b']; @@ -4282,15 +4282,15 @@ class Battle } } } else { - $this->e = ' '; + $this->e = 'Выберите зоны удара и блока'; } } else { - $this->e = ' , ...'; + $this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...'; } } } - // , - + //Запускаем магические предметы, если в них что-то встроено public function magicItems($uid1, $uid2, $end) { global $u, $priem, $c, $code; @@ -4319,7 +4319,7 @@ class Battle unset($itm); } - // + //Поглощение урона public function testPog($uid, $yr) { $yr2 = $yr; @@ -4338,7 +4338,7 @@ class Battle if (isset($dt3['add_pog2mp'])) { $priem->minMana($uid, round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])); } - $j['y'] -= $yr2; // + $j['y'] -= $yr2; // осталось для поглощения if (isset($dt3['add_pog2p'])) { $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); } @@ -4346,7 +4346,7 @@ class Battle if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { - // + //удаляем прием $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array( mysql_query( 'SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1' @@ -4379,7 +4379,7 @@ class Battle public $rehodeff = []; - // + //Поглощение урона public $poglast = []; public function testPogB($uid, $yr, $pliid, $test = 0) @@ -4391,7 +4391,7 @@ class Battle AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288) AND `delete` =0 LIMIT 1' ) - ); // + ); //проверка на туманный образ if ($yr > 0 && !isset($checktuman['id'])) { $testmana = false; global $u, $priem; @@ -4415,11 +4415,11 @@ class Battle if ((round( round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'] )) > $this->stats[$this->uids[$uid]]['mpNow']) { - // , % + //не хватило маны, считаем сколько хватит % от поглощенного урона $j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round( round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'] )) * 100; - $j['yhj'] = floor($j['yhj']); // % + $j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить $dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']); } if ($test == 1) { @@ -4431,7 +4431,7 @@ class Battle } $this->poglast[$uid] += $yr2; if ($test == 1) { - //$j['y'] -= $this->poglast[$uid]; // + //$j['y'] -= $this->poglast[$uid]; // осталось для поглощения $j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']); $priem->minMana( $uid, @@ -4444,8 +4444,8 @@ class Battle if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { $dt2 = $u->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { - // - // + //удаляем прием + //Добавляем в лог $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array( mysql_query( 'SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1' @@ -4484,7 +4484,7 @@ class Battle } - // . + //Тестируем удары и т.д public function newRazmen($id, $at = null) { $uid1 = $this->atacks[$id]['uid1']; @@ -4504,7 +4504,7 @@ class Battle return $at; } - //1 2 + //Игрок1 наносит удар Игрок2 public function usersTestAtack($id, $uid1, $uid2): array { $r = []; @@ -4517,7 +4517,7 @@ class Battle 0, ]; - // + //Проверка блоков $i = 1; if ($uid1 == $this->atacks[$id]['uid1']) { $a = 2; @@ -4552,7 +4552,7 @@ class Battle $i++; } } - // + //Проверка ударов $i = 1; while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { if (!isset($atack[$i]) || $atack[$i] == 0) { @@ -4560,12 +4560,12 @@ class Battle } if ($atack[$i] > 0) { if ($block[$atack[$i]] == 1) { - // - // , + //удар был заблокирован + // КУДА БИЛ , ТИП УДАРА $r['atack'][] = [$atack[$i], 3, 0]; } else { - // - // , + //Удар прошел + // КУДА БИЛ , ТИП УДАРА $r['atack'][] = [$atack[$i], 1, 0]; } } @@ -4574,11 +4574,11 @@ class Battle return $r; } - // + //Проверка зоны и блока public function testRazmenblock1($id, $uid1, $uid2, $atack): bool { $r = false; - // + //Проверка блоков $i = 1; if ($uid1 == $this->atacks[$id]['uid1']) { $j = $this->atacks[$id]['b2']; @@ -4595,23 +4595,23 @@ class Battle $i++; } } - // + //Проверка ударов if ($atack > 0) { $r = $block[$atack] == 1; } return $r; } - // + //Проверка ухода удара в игрока public function yhod_user($uid1, $uid2, $type) { - // 1 - . 2 - . - // + // 1 - кто бьет . 2 - в кого бьют . тип + //Удал летит прямо в противника if ($this->import_user == 0) { $r = $uid1; $rand_user = false; if ($type == 2) { - // ( ) + //Случайный персонаж из своей команды (в том числе игрок) $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) { @@ -4620,7 +4620,7 @@ class Battle $i++; } } elseif ($type == 4) { - // , + //Случайный персонаж, любой $i = 0; while ($i < count($this->users)) { //if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) { @@ -4629,7 +4629,7 @@ class Battle $i++; } } elseif ($type == 5) { - // , ( ) + //Случайный персонаж, любой (кроме игрока) $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) { @@ -4638,7 +4638,7 @@ class Battle $i++; } } elseif ($type == 6) { - // + //Случайный персонаж из команды противника $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) { @@ -4647,7 +4647,7 @@ class Battle $i++; } } elseif ($type > 100) { - // + //Удар идет в конкретного игрока if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) { $r = $uid2; } else { @@ -4664,7 +4664,7 @@ class Battle return $r; } - // + //Расчет уворота игроков public function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) { global $u; @@ -4705,7 +4705,7 @@ class Battle $u2 = ${'uid1'}; } - // (u2) (u1) + //Расчет уворота Цели (u2) от Атакующего (u1) $j = 0; $wp01 = 3; $k01 = 0; @@ -4714,13 +4714,13 @@ class Battle } if (is_array($at[$a]['atack'])) { while ($j < count($at[$a]['atack']) && $j < 8) { - // , + // КУДА БИЛ , ТИП УДАРА if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - // + //Левая рука $wp01 = 3; $k01 = 1; } else { - // + //Правая рука if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { $wp01 = 14; } else { @@ -4744,7 +4744,7 @@ class Battle ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level'] ); if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { - //, :) + //увернулся, гад :) $this->stats[$this->uids[$u1]]['nopryh'] = floor( 0 + (int)$this->stats[$this->uids[$u1]]['nopryh'] ); @@ -4770,7 +4770,7 @@ class Battle return $at; } - // + //Расчет крита игроков public function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0) { global $u; @@ -4810,7 +4810,7 @@ class Battle $u2 = ${'uid1'}; } - // (u1) (u2) + //Расчет крита Атакующего (u1) по Цели (u2) $j = 0; $wp01 = 0; $k01 = 0; @@ -4820,13 +4820,13 @@ class Battle if (is_array($at[$a]['atack'])) { while ($j < count($at[$a]['atack']) && $j <= 8) { - // , + // КУДА БИЛ , ТИП УДАРА if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - // + //Левая рука $wp01 = 3; $k01 = 1; } else { - // + //Правая рука if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { $wp01 = 14; } else { @@ -4848,12 +4848,12 @@ class Battle 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level'] ) == 1) { - //, :) + //кританул, гад :) if ($at[$a]['atack'][$j][1] == 3) { - // - $at[$a]['atack'][$j][1] = 4; // + //в блок + $at[$a]['atack'][$j][1] = 4; //Тут тест } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { - // + //обычный крит $at[$a]['atack'][$j][1] = 5; } else { $at[$a]['atack'][$j][1] = 1; @@ -4874,7 +4874,7 @@ class Battle return $at; } - // + //Расчет парирования игроков public function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) { if ($pat) { @@ -4913,7 +4913,7 @@ class Battle $u2 = ${'uid1'}; } - // (u2) (u1) + //Расчет парирования Цели (u2) от Атакующего (u1) $j = 0; if ($rjd > 0) { $j = $rjd - 1; @@ -4921,7 +4921,7 @@ class Battle if (is_array($at[$a]['atack'])) { while ($j < count($at[$a]['atack']) && $j < 8) { - // , + // КУДА БИЛ , ТИП УДАРА if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { if ($this->mfs( 3, [ @@ -4932,7 +4932,7 @@ class Battle ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level'] ) == 1 && $this->atacks[$id]['out' . $b] == 0) { - //, :) + //Парировал, гад :) $this->stats[$this->uids[$u1]]['nopryh'] = floor( 0 + (int)$this->stats[$this->uids[$u1]]['nopryh'] ); @@ -4957,7 +4957,7 @@ class Battle return $at; } - // + //Расчет блока щитом игроков public function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0) { if ($pat) { @@ -4996,10 +4996,10 @@ class Battle $u2 = ${'uid1'}; } if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { - // (u2) (u1) + //Расчет блока щитом Цели (u2) от Атакующего (u1) $j = 0; while ($j < count($at[$a]['atack']) && $j < 8) { - // , + // КУДА БИЛ , ТИП УДАРА if ($at[$a]['atack'][$j][2] == $v) { if ($this->mfs( 5, @@ -5007,7 +5007,7 @@ class Battle $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level'] ) == 1 && $this->atacks[$id]['out' . $b] == 0) { - // , :) + //блокировал щитом, гад :) $at[$a]['atack'][$j][1] = 7; } } @@ -5025,7 +5025,7 @@ class Battle return $at; } - // + //Расчет контрудара игроков public function mf5Razmen($id, $at, $v, $rjd = 0) { global $u; @@ -5059,13 +5059,13 @@ class Battle $u2 = ${'uid1'}; } - // (u2) (u1) + //Расчет контрудара Цели (u2) по Атакующему (u1) $j = 0; if ($rjd > 0) { $j = $rjd - 1; } while ($j < count($at[$a]['atack']) && $j < 8) { - // , + // КУДА БИЛ , ТИП УДАРА if ($at[$a]['atack'][$j][2] == $v) { if ($at[$a]['atack'][$j][1] == 2) { if ($this->mfs( @@ -5076,7 +5076,7 @@ class Battle 'b' => $this->stats[$this->uids[$u1]]['m6'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level'] ) == 1) { - //, :) + //контрудар, гад :) $at[$a]['atack'][$j][1] = 8; $rnd_a = rand(1, 5); $rjd = count($at[$b]['atack']); @@ -5096,7 +5096,7 @@ class Battle return $at; } - // + //Выделение из лог текста public function addlt($a, $id, $s, $rnd = null): string { global $log_text; @@ -5106,7 +5106,7 @@ class Battle return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; } - // + //Добавляем статистику public function addNewStat($stat) { if (isset($stat[1])) { @@ -5157,7 +5157,7 @@ class Battle public $prlog = []; - // + //Добавляем статистику ударов public function asr($u1, $u2, $type) { mysql_query( @@ -5170,7 +5170,7 @@ class Battle ); } - // + //Добавляем размены в лог public function addlogRazmen($id, $at): bool { global $u; @@ -5187,7 +5187,7 @@ class Battle 2 => 0, ]; - // + //массив для статистики $stat = [ 1 => [ 'uid1' => 0, @@ -5266,9 +5266,9 @@ class Battle 'type' => 1, ]; - if (!isset($at[$a]['atack'])) { // + if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска if ($this->atacks[$id]['tpo' . $a] == 2) { - $mas['text'] .= '{u1} .'; + $mas['text'] .= '{u1} потратил свой ход на магию.'; } else { // if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { @@ -5280,8 +5280,8 @@ class Battle } // if (isset($u1)) { - $mas['text'] .= '{u1} .'; - // + $mas['text'] .= '{u1} пропустил свой ход.'; + //Проверка сброс туманок mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $u1 . '" AND `delete` = 0 AND `v1` = "priem" AND (`v2`=288 OR `v2`=287 OR `v2`=286 OR `v2`=273) LIMIT 1' @@ -5323,7 +5323,7 @@ class Battle $this->asr($u1, $u2, $at[$a]['atack'][$j][1]); // if ($at[$a]['atack'][$j][1] == 1) { - //u1 u2 + //u1 ударил обычным ударом u2 $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt( $b, 2, $s2, null @@ -5338,7 +5338,7 @@ class Battle $at[$a]['atack'][$j]['yron']['t'] ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 2) { - //u2 u1 + //u2 увернулся от u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt( $a, 9, $s1, null @@ -5347,7 +5347,7 @@ class Battle null ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 3) { - //u2 u1 + //u2 заблокировал удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt( $a, 9, $s1, null @@ -5359,7 +5359,7 @@ class Battle $at[$a]['atack'][$j]['yron']['t'] ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 4) { - //u1 u2 + //u1 пробил блок u2 критом if (isset($at[$a]['atack'][$j]['yron']['t'])) { $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt( $b, 1, $s2, @@ -5370,7 +5370,7 @@ class Battle ) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt( $a, 5, $s1, null - ) . ', , ' . $this->addlt( + ) . ', пробив блок, ' . $this->addlt( $a, 6, $s1, null ) . ' ' . $this->addlt( @@ -5379,7 +5379,7 @@ class Battle ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 u2 + //u1 ударил критическим ударом u2 $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt( $b, 2, $s2, null @@ -5394,23 +5394,23 @@ class Battle $at[$a]['atack'][$j]['yron']['t'] ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 6) { - //u2 u1 + //u2 парировал удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt( $a, 9, $s1, null - ) . ' {u2} ' . $this->addlt( + ) . ' {u2} неожиданно парировал ' . $this->addlt( 1, 7, 0, $s1, $at[$a]['atack'][$j]['yron']['t'] ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 u1 + //u2 блокировал щитом удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt( $a, 9, $s1, null - ) . ' {u2}, , ' . $this->addlt( + ) . ' {u2}, воспользовавшись своим щитом, ' . $this->addlt( $b, 10, $s2, null ) . ' ' . $this->addlt( @@ -5418,14 +5418,14 @@ class Battle $at[$a]['atack'][$j]['yron']['t'] ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 8) { - //u2 u1 + //u2 увернулся от удара u1 и нанес по нему контрудар $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt( $a, 9, $s1, null ) . ' {u2} ' . $this->addlt( $b, 11, $s2, null - ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' . '; + ) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; } $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1] . ''; @@ -5444,41 +5444,41 @@ class Battle } $tr_pl2 = mysql_fetch_array( mysql_query( - 'SELECT `id` FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `delete` = "0" AND `name` LIKE "% %" LIMIT 1' + 'SELECT `id` FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `delete` = "0" AND `name` LIKE "%Защита от травм%" LIMIT 1' ) ); if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { $mas['text'] = rtrim($mas['text'], '. '); - $mas['text'] .= ', '; + $mas['text'] .= ', нанеся противнику '; if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) { - $mas['text'] .= ''; + $mas['text'] .= 'Легкую'; $this->addTravm($u2, 1, rand(3, 5)); } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 2) { - $mas['text'] .= ''; + $mas['text'] .= 'Среднюю'; $this->addTravm($u2, 2, rand(3, 5)); } elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 3) { - $mas['text'] .= ''; + $mas['text'] .= 'Тяжелую'; $this->addTravm($u2, 3, rand(3, 5)); } - $mas['text'] .= ' . '; + $mas['text'] .= ' травму. '; } } unset($tr_pl); } if ($at[$a]['atack'][$j]['yron']['pb'] == 1 && isset($at[$a]['atack'][$j]['yron']['hp'])) { $mas['text'] = rtrim($mas['text'], '. '); - $mas['text'] .= ' . '; + $mas['text'] .= ' пробив броню. '; } if ($at[$a]['atack'][$j][3] == 1) { - $mas['text'] .= '() '; + $mas['text'] .= '(контрудар) '; } if (isset($at[$a]['atack'][$j]['yron'])) { if ($at[$a]['atack'][$j]['yron']['w'] == 3) { - $mas['textWP'] = '( )'; + $mas['textWP'] = '(правая рука)'; } elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) { - $mas['textWP'] = '( )'; + $mas['textWP'] = '(левая рука)'; } else { - $mas['textWP'] = '( )'; + $mas['textWP'] = '(непонятно чем)'; } if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) { if ($at[$a]['atack'][$j]['yron']['y'] < 1) { @@ -5522,10 +5522,10 @@ class Battle $i++; } - // + _ + //Добавляем статистику + записываем в баттл_юзерс НР игроков $this->addNewStat($stat); - // + //Вывод в лог смерти персонажа if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { $dies[1] = 1; } @@ -5553,76 +5553,76 @@ class Battle if ($this->info['typeBattle'] == 99) { if ($btlstatus[0] == 0) { - // + //Кровавые бои обычные $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; if ($this->info['razdel'] == 5) { - // + //не хаот $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } else { - // + //хаот $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } } elseif ($btlstatus[0] == 25) { - // + //Кровавая битва $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 50) { - // + //Кровавая резня $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 75) { - // + //Кровавая сеча $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 100) { - // + //Кровавое побоище $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 150) { - // + //Судный день $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } } else { if ($btlstatus[0] == 0) { - // + //Обычный поединок $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; if ($this->info['razdel'] == 5) { - // + //не хаот $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; } else { - // + //хаот $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } } elseif ($btlstatus[0] == 25) { - // + //великая битва $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 50) { - // + //величайшая битва $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 75) { - // + //историческая битва сеча $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 100) { - // + //эпохальная битва $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 150) { - // + //судный день $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } } if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { - // , + //Пещерные бои не считаются и Изломы тоже, ну и Турниры $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { - // + //Клановая война $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; } @@ -5633,7 +5633,7 @@ class Battle $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; } - // 1 2 + //Персонаж 1 погиб от рук персонаж 2 $this->spaCheck($this->users[$this->uids[$u1]]['id']); } if ($dies[2] == 1) { @@ -5641,10 +5641,10 @@ class Battle $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; } - // 2 1 + //Персонаж 2 погиб от рук персонаж 1 $this->spaCheck($this->stats[$this->uids[$u2]]['id']); } - // + //Записываем рейтинг // if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { // @@ -5669,7 +5669,7 @@ class Battle return true; } - // + //Добавляем в лог действия приема public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0) { $time = time(); @@ -5706,7 +5706,7 @@ class Battle $this->add_log($mas); } - // ( ) + //Добавляем в лог действия приема (без атаки) public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm) { $vLog = 'prm=' . $prm . '||time1=' . $tm . '||time2=' . $tm . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; @@ -5722,52 +5722,52 @@ class Battle $this->add_log($mas); } - // + //Считаем контру public function contrRestart($id, $at, $v, $rjd = 0) { - // + //уворот $at = $this->mf1Razmen($id, $at, $v, true, $rjd); - // + //парирование $at = $this->mf3Razmen($id, $at, $v, true, $rjd); - // + //контрудар //$at = $this->mf5Razmen($id,$at,$v,true,$rjd); - // ( , ) + //блок щитом (если есть щит, конечно) $at = $this->mf4Razmen($id, $at, $v, true, $rjd); - // + //Проверяем урон //$at = $this->yronRazmen($id,$at); - // + //крит $at = $this->mf2Razmen($id, $at, $v, true, $rjd); $at = $this->yronRazmen($id, $at, true, $rjd); return $at; } - // + //Расчитываем статы для конкретной зоны атаки public function yronGetrazmenStats($s, $z) { global $u; /* - 1 - - 2 - - 3 - ( ) - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10-12 - - 13 - - 14 - / ( ) - 16 - - 17 - + 1 - шлем + 2 - наручи + 3 - оружие (правая рука) + 4 - рубаха + 5 - броня + 6 - плащ + 7 - пояс + 8 - серьги + 9 - амулет + 10-12 - кольца + 13 - перчатки + 14 - оружие / щит (левая рука) + 16 - поножи + 17 - ботинки */ - $zi = [ // - 1 => [1, 8, 9, 52], // - 2 => [4, 5, 6], // - 3 => [2, 4, 5, 6, 13], // - 4 => [7, 16, 10, 11, 12], // - 5 => [17], // + $zi = [ //Предметы влияющие на зоны + 1 => [1, 8, 9, 52], //голова + 2 => [4, 5, 6], //грудь + 3 => [2, 4, 5, 6, 13], //живот + 4 => [7, 16, 10, 11, 12], //пояс + 5 => [17], //ноги ]; $zi = $zi[$z]; $i = 0; @@ -5812,7 +5812,7 @@ class Battle return $s; } - // . + //Расчитываем ед. урона public function yronGetrazmen($uid1, $uid2, $wp, $zona): array { global $u; @@ -5821,12 +5821,12 @@ class Battle 'y' => 0, 'r' => '--', ]; - // + //Определяем тип урона /* - - - - + Колющий + Рубящий + Режущий + Дробящий */ $witm = 0; $witm_type = 0; @@ -5842,13 +5842,13 @@ class Battle $witm_type2 = $witm_type; } $r['t'] = $witm_type2; - // + //Расчет брони /* - - - - - + голова + грудь + живот + пояс + ноги */ $bron = [ 1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']], @@ -5858,7 +5858,7 @@ class Battle 5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']], ]; // - // + //Увеличиваем параметры от текущего оружия которым бьем $iii = 1; while ($iii <= 7) { if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) { @@ -5909,13 +5909,13 @@ class Battle $iii++; } // - // + + //мощность + подавление мощности противником $wAp = 0; $w3p = 0; $w14p = 0; if ($witm_type == 12) { - // + //удар кулаком $wAp += $this->stats[$this->uids[$uid1]]['m10']; if ($this->users[$this->uids[$uid1]]['align'] == 7) { $wAp += 15; @@ -5929,10 +5929,10 @@ class Battle $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4) . '']; } - // + //Владение данным оружием $vladenie = 0; - // + //Пробой брони $proboi = 0; $witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9']; if (rand(1, 100) < floor($witm_data['m9'] / 2)) { @@ -5948,18 +5948,18 @@ class Battle $this->users[$this->uids[$uid1]]['level'], $this->users[$this->uids[$uid2]]['level'], $witm_type, - $this->stats[$this->uids[$uid1]]['minAtack'], //. () - $this->stats[$this->uids[$uid1]]['maxAtack'], //. - $bron[$zona][0], // . - $bron[$zona][1], // - $vladenie, // - (($wAp /*+ $w3p + $w14p*/)), // - (round($this->stats[$this->uids[$uid1]]['m3'])), // + $this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный) + $this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон + $bron[$zona][0], //броня мин. + $bron[$zona][1], //броня макс + $vladenie, //владения + (($wAp /*+ $w3p + $w14p*/)), //мощность урона + (round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита (($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']), - // - $this->stats[$this->uids[$uid1]]['ozash'], // - $proboi, // - 0, // + //защита от урона + $this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты + $proboi, //пробой брони + 0, //хз ($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']), ($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']), $this->stats[$this->uids[$uid2]]['zaproc'], @@ -5967,8 +5967,8 @@ class Battle (($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round( $this->stats[$this->uids[$uid1]]['pzm'] * 0.8 )), - // - $this->stats[$this->uids[$uid1]]['omzash'], // + //защита от урона + $this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты $witm['type'], $witm ); @@ -5983,11 +5983,11 @@ class Battle $r['w_type'] = $witm_type; - // - 50% + //Если второе оружие - урон ниже на 50% $wp1 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp3id']]; $wp2 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp14id']]; - // + //тип от оружия if ($witm['type'] == 18) { $tp = 1; } elseif ($witm['type'] == 19) { @@ -6000,7 +6000,7 @@ class Battle $tp = 0; } - if ($tp != $witm_type && $wp > 0) // + if ($tp != $witm_type && $wp > 0) // ТУТ { (int)$r['y'] = round((int)$r['y'] / 3); $r['r'] = round($r['r'] / 3); @@ -6038,7 +6038,7 @@ class Battle return $r; } - // + //Считаем урон public function yronRazmen($id, $at, $pat = false, $rjd = 0) { if ($pat) { @@ -6081,18 +6081,18 @@ class Battle if (is_array($at[$a]['atack'])) { while ($j < count($at[$a]['atack']) && $j < 8) { if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - // + //Левая рука $wp = 3; $k = 1; } else { - // + //Правая рука if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { $wp = 14; } else { if (isset($this->stats[$this->uids[$u1]]['wp3id'])) { $wp = 3; } else { - // + //нет оружия $wp = 3; } } @@ -6157,7 +6157,7 @@ class Battle return $at; } - // + //Обновление здоровья public function updateHealth($id, $at): array { $uid1 = $this->atacks[$id]['uid1']; @@ -6189,81 +6189,81 @@ class Battle $u2 = ${'uid1'}; } - // + //Рассчет дополнительных тактик if ($this->atacks[$id]['out' . $b] > 0) { - // ${'u'.$a} , + //Игрок ${'u'.$a} получает тактики, возможно if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20)) { - // + //выдаем тактику контрудара if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic3']++; } } if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20)) { - // + //выдаем тактику щита if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic4']++; } } } - // (u2) (u1) + //Расчет удара Цели (u2) по Атакующему (u1) $j = 0; $k = 0; $wp = 3; while ($j < count($at[$a]['atack']) && $j < 8) { - // + //Добавляем тактики if ($at[$a]['atack'][$j][1] == 1) { - //u1 u2 + //u1 ударил обычным ударом u2 if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic1']++; } - // + //Двуручка if ($at[$a]['atack'][$j]['yron']['2h'] == 1 && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic1'] += 2; } } elseif ($at[$a]['atack'][$j][1] != 2) { if ($at[$a]['atack'][$j][1] == 3) { - //u2 u1 + //u2 заблокировал удар u1 if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic4']++; } } elseif ($at[$a]['atack'][$j][1] == 4) { - //u1 u2 + //u1 пробил блок u2 критом if (!isset($at[$a]['atack'][$j]['notactic2'])) { if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic2']++; } } - $this->users[$this->uids[$u2]]['tactic4']++; // + $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 u2 + //u1 ударил критическим ударом u2 if (!isset($at[$a]['atack'][$j]['notactic2'])) { if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic2'] += 2; } - // + //Двуручка if ($at[$a]['atack'][$j]['yron']['2h'] == 1 && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic2'] += 1; } } } elseif ($at[$a]['atack'][$j][1] == 6) { - //u2 u1 + //u2 парировал удар u1 if (!isset($at[$a]['atack'][$j]['notactic5']) && $this->stats[$this->uids[$u1]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic5']++; } } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 u1 // + //u2 блокировал щитом удар u1 //ТУТ ЩИТ if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic4']++; } } elseif ($at[$a]['atack'][$j][1] == 8) { - //u2 u1 + //u2 увернулся от удара u1 и нанес по нему контрудар if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic3']++; } } } - // , + // КУДА БИЛ , ТИП УДАРА if (isset($at[$a]['atack'][$j]['yron']) && ( $at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 4 || @@ -6288,9 +6288,9 @@ class Battle $at[$a]['atack'][$j]['yron']['k'] = 0; } - // + //Добавляем нанесенный урон и опыт $this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2); - // + //Отнимаем НР $this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y']; $this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y']; $at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow']; @@ -6301,7 +6301,7 @@ class Battle if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) { $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; } - // + //Травмирование if (rand(0, 100) <= 50) { if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { if (!isset($at[$a]['atack'][$j]['yron']['travma']) && rand( @@ -6312,7 +6312,7 @@ class Battle if ($trvm_chns > 3 || $trvm_chns < 1) { $trvm_chns = 0; } - $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, ' ']; + $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; unset($trvm_chns); } } @@ -6325,7 +6325,7 @@ class Battle return $at; } - // + //Добавляем новую статистику игрока public function addstatuser($id) { if ($id > 0) { @@ -6351,7 +6351,7 @@ class Battle } } - // + //Проверяем приемы public function priemsRazmen($id, $at) { if ($at == 'fast') { @@ -6375,7 +6375,7 @@ class Battle $u2 = ${'uid1'}; } - // + //Получаем приемы и смотрим когда какой действует $eff = $this->stats[$this->uids[$u1]]['effects']; $this->stats[$this->uids[$u1]]['u_priem'] = []; $j = 0; @@ -6398,7 +6398,7 @@ class Battle } } - // + //Приемы которые используются моментально public function priemsRazmenMoment($id, $at) { $uid1 = $this->atacks[$id]['uid1']; @@ -6421,7 +6421,7 @@ class Battle $at['p'] = $at; $at['p']['p_cast'] = true; } - // + //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { @@ -6440,7 +6440,7 @@ class Battle $j++; } } - // + //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { @@ -6456,7 +6456,7 @@ class Battle } $j++; } - // + //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { @@ -6474,7 +6474,7 @@ class Battle } $j++; } - // + //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { @@ -6494,7 +6494,7 @@ class Battle } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { @@ -6515,7 +6515,7 @@ class Battle return $at; } - // ( ) + //Приемы которые используются моментально (в конце хода) public function priemsRazmenMomentEnd($id, $at) { $uid1 = $this->atacks[$id]['uid1']; @@ -6538,7 +6538,7 @@ class Battle $at['p'] = $at; $at['p']['p_cast'] = true; } - // + //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { @@ -6557,7 +6557,7 @@ class Battle $j++; } } - // + //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { @@ -6573,7 +6573,7 @@ class Battle } $j++; } - // + //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { @@ -6591,7 +6591,7 @@ class Battle } $j++; } - // + //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { @@ -6610,7 +6610,7 @@ class Battle } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { @@ -6631,7 +6631,7 @@ class Battle return $at; } - // + //Используем приемы public function priemsTestRazmen($id, $at) { $uid1 = $this->atacks[$id]['uid1']; @@ -6656,7 +6656,7 @@ class Battle $at['p']['p_cast'] = true; } - // + //ставка $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { @@ -6675,7 +6675,7 @@ class Battle $j++; } - // + //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { @@ -6693,7 +6693,7 @@ class Battle $j++; } } - // + //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { @@ -6709,7 +6709,7 @@ class Battle $j++; } - // + //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { @@ -6727,7 +6727,7 @@ class Battle $j++; } - // + //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { @@ -6749,7 +6749,7 @@ class Battle $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { @@ -6788,7 +6788,7 @@ class Battle $at['p']['p_cast'] = true; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { @@ -6804,7 +6804,7 @@ class Battle $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { @@ -6824,23 +6824,23 @@ class Battle return $at; } - // + //Повторная проверка приемов public function priemsRestartRazmen($id, $at) { if (isset($at['p'])) { - // + //Проверка $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; /* - , , : - 1. - 2 1. - : - 1. - 2 1. - 3. - 4 3. - .. + Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: + Цикл 1. Проверяем пользователя + Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал + Придется сделать: + Цикл 1. Проверяем пользователя + Цикл 2 внутри Цикла 1. Проверяем приемы уворота + Цикл 3. Проверяем пользователя + Цикл 4 внутри Цикла 3. Проверяем приемы крита + и т.д. */ $i = 1; while ($i <= 2) { @@ -6861,7 +6861,7 @@ class Battle $at['p']['p_cast'] = true; } - // + //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { @@ -6879,7 +6879,7 @@ class Battle $j++; } } - // + //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { @@ -6894,7 +6894,7 @@ class Battle } $j++; } - // + //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { @@ -6913,7 +6913,7 @@ class Battle } $j++; } - // + //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { @@ -6928,7 +6928,7 @@ class Battle } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { @@ -6943,7 +6943,7 @@ class Battle } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { @@ -6958,7 +6958,7 @@ class Battle } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { @@ -6982,7 +6982,7 @@ class Battle return $at; } - // + //Проверка действия приема /** * @param $i @@ -7000,12 +7000,12 @@ class Battle return true; } - // + //Проверка урона приемов public $um_priem = []; /** - * . - - * . + * Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге + * и рассчитывает урон учитывая и эти приёмы тоже. * @param $uid1 * @param $uid2 * @param $priem @@ -7020,22 +7020,22 @@ class Battle { /* profil = { - -1 - - -2 - - 0 - - 1-4 - - 5-12 - + -1 - урон оружием + -2 - урон магией + 0 - неизвестно + 1-4 - профильный оружия + 5-12 - профильный магия } - stabil - . + stabil - урон не подвержен мощностям и т.д */ - // + //Проверка $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; - // $u1 $u2 - // + //Проверяем приемы защиты игрока $u1 на урон игрока $u2 + //Получаем приемы и смотрим когда какой действует if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { $eff = $this->stats[$this->uids[$u2]]['effects']; $j = 0; @@ -7054,7 +7054,7 @@ class Battle } unset($eff); } - // + //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { @@ -7070,7 +7070,7 @@ class Battle $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { @@ -7088,7 +7088,7 @@ class Battle $j++; } - // ( ) + //Прочие приемы (влияет на урон от моментальных приемов) $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { @@ -7104,14 +7104,14 @@ class Battle } } if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 180) { - // ( 10%). . + // Переохлаждение (снижает урон на 10%). Пан или пропал. $x = mysql_fetch_row(mysql_query('select x from eff_users where v2 = 180 and uid = ' . $u1)); $yron = 0.1 * $x[0]; } $j++; } - // + //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { @@ -7150,10 +7150,10 @@ class Battle return $yron; } - // + \ + //Опыт + набитый урон за удар приемом\магией public function priemYronSave($u1, $u2, $yron, $type) { - //$type 0 - , 1 - + //$type 0 - урон , 1 - хил $this->testUserInfoBattle($u1); $this->testUserInfoBattle($u2); @@ -7232,7 +7232,7 @@ class Battle ); } - // + //Наносим удар между игроками public $restart_stats_data = []; public $import_atack = []; @@ -7250,7 +7250,7 @@ class Battle ]; if (isset($this->atacks[$id]) && $this->atacks[$id]['lock'] == 0) { - // + //Прием разгадать тактику $i = 1; $j = 2; $k = 0; @@ -7284,7 +7284,7 @@ class Battle AND `a`.`v2` != 87 AND `a`.`v2` != 88 AND `a`.`v2` != 89 AND `a`.`v2` != 90 AND `a`.`v2` != 269 AND `a`.`v2` != 276 AND `a`.`v2` != 277 AND `a`.`v2` != 270 AND `a`.`v2` != 174 AND `a`.`v2` != 324 AND `a`.`v2` != 217 - AND `name` NOT LIKE "%%" + AND `name` NOT LIKE "%Иммунитет%" LIMIT 30' ); while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) { @@ -7300,7 +7300,7 @@ class Battle $i++; } - // 1% + //Восстановление манны 1% за ход if ($this->atacks[$id]['out1'] == 0) { if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) { $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor( @@ -7327,7 +7327,7 @@ class Battle $this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; } - // + //Антистаты if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) { $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round( $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] @@ -7344,40 +7344,40 @@ class Battle 2 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'], ]; - // + //Расчет количества блоков и противников $this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); - // + //Запускаем магию предметов $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); - // + // Получаем приемы игроков $this->priemsRazmen($id, $at); $this->priemsRazmenMoment($id, $at); $this->priemsRazmen($id, $at); $at = $this->newRazmen($id); - // - // , , , , - // ( , ) + // Тестируем какие еще могут быть варианты при ударе + // Уворот, парирование, крит, пробить блок, блок щитом + // Блок щитом (если есть щит, конечно) - $at = $this->mf2Razmen($id, $at, $v); // - $at = $this->mf3Razmen($id, $at, $v); // - $at = $this->mf4Razmen($id, $at, $v); // + $at = $this->mf2Razmen($id, $at, $v); //крит + $at = $this->mf3Razmen($id, $at, $v); //парирование + $at = $this->mf4Razmen($id, $at, $v); //блок щитом - $at = $this->mf1Razmen($id, $at, $v); // - $at = $this->mf5Razmen($id, $at, $v); // + $at = $this->mf1Razmen($id, $at, $v); //уворот + $at = $this->mf5Razmen($id, $at, $v); //контрудар - $at = $this->yronRazmen($id, $at); // + $at = $this->yronRazmen($id, $at); //расчет урона - // - // + // Проверяем приемы + // Получаем приемы игроков $at = $this->priemsTestRazmen($id, $at); - // ( .) - $at = $this->priemsRestartRazmen($id, $at); // ( ) + // Собираем размен (пересчитываем и расчитываем урон и т.д) + $at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется) - // + //Минусуем поглощенный урон if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) { $this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1); } @@ -7385,19 +7385,19 @@ class Battle $this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1); } - // + // Обновляем НР и добавляем тактики $at = $this->updateHealth($id, $at); - // + + // Заносим в логи + записываем статистику боя $this->addlogRazmen($id, $at); - // + //Запускаем магию предметов $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); - // + //Возращаем зоны блока $this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); - // + //обновляем задержки приемов $zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']); $zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']); $zd1id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems']); @@ -7407,13 +7407,13 @@ class Battle while ($i5 < 51) { if (isset($zd1[$i5]) && $zd1[$i5] > 0) { - // + //Если приемы не требуют ход $zd1[$i5] -= 1; } else { $zd1[$i5] = 0; } if (isset($zd2[$i5]) && $zd2[$i5] > 0) { - // + //Если приемы не требуют ход $zd2[$i5] -= 1; } else { $zd2[$i5] = 0; @@ -7437,7 +7437,7 @@ class Battle } elseif ($this->atacks[$id]['uid2'] == $u->info['id']) { $u->info['priems_z'] = implode('|', $zd2); } - // + //Проверяем тактики $i = 1; while ($i <= 6) { if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) { @@ -7452,7 +7452,7 @@ class Battle } $i++; } - // + //Обновляем задержки предметов mysql_query( 'UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100' ); @@ -7460,7 +7460,7 @@ class Battle 'UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2' ); - // + //Обновляем задержки пирожков mysql_query( 'UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")' ); @@ -7468,17 +7468,17 @@ class Battle 'UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")' ); - // + //Тактики mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - // + //Обновляем задержки пирожков mysql_query( 'UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")' ); mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); - // battle_users + //Обновляем данные в battle_users mysql_query( 'UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1' @@ -7487,7 +7487,7 @@ class Battle 'UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1' ); - // 25% + //Восстановление манны 25% от мудрости за ход $last_yrn = [ 1 => $last_yrn[1], @@ -7557,7 +7557,7 @@ class Battle WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1' ); $this->priemsRazmenMomentEnd($id, $at); - // \ + //Минусуем заряд приема \ эффекта $j = 1; $jn = 1; while ($j <= 2) { @@ -7571,7 +7571,7 @@ class Battle mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1') ); if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { - // + //Отнимаем ману у того кто кастовал $priem->minMana( $eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) @@ -7617,7 +7617,7 @@ class Battle $pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow']; if ($pvr['mpTr'] > 0) { - // + //Требуется хилл if ($pvr['mpTr'] < $pvr['mp']) { $pvr['mp'] = $pvr['mpTr']; } @@ -7640,7 +7640,7 @@ class Battle ); $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex'], null); - $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] ()'; + $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; $this->priemAddLog( $id, 1, 2, $pvr['uid'], 0, '' . $pvr['x'] . '', @@ -7659,7 +7659,7 @@ class Battle 'UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1' ); } else { - // + //удаляем прием if ($eff[$i]['v2'] > 0) { if ($j == 1) { $jn = 2; @@ -7684,7 +7684,7 @@ class Battle if (isset($eff[$i]['priem']['minmana']) && round( $eff[$i]['priem']['minmana'] * $eff[$i]['x'] ) != 0) { - // + //Отнимаем ману у того кто кастовал $priem->minMana( $eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) @@ -7718,7 +7718,7 @@ class Battle 'UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1' ); } else { - // + //удаляем прием if ($eff[$i]['v2'] > 0) { if ($j == 1) { $jn = 2; @@ -7739,7 +7739,7 @@ class Battle } $j++; } - // + //Проверяем if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { $cn1 = mysql_fetch_array( mysql_query( @@ -7752,7 +7752,7 @@ class Battle ) ); if ($cn1[0] > 3) { - $pvr['text2'] = '{tm1} {u1} - .'; + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; $this->priemAddLog( $id, 1, 2, $this->atacks[$id]['uid1'], 0, '', $pvr['text2'], @@ -7764,7 +7764,7 @@ class Battle ); } if ($cn2[0] > $c['propsk_die']) { - $pvr['text2'] = '{tm1} {u1} - .'; + $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; $this->priemAddLog( $id, 1, 2, $this->atacks[$id]['uid2'], 0, '', $pvr['text2'], @@ -7777,14 +7777,14 @@ class Battle } } // - // + //Обновляем текущего противника if ($u->info['id'] == $this->atacks[$id]['uid1']) { $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; } if ($u->info['id'] == $this->atacks[$id]['uid2']) { $u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; } - // // + //Удаляем размен из базы //ТУТ возможен лаг удаления mysql_query( 'DELETE FROM `battle_act` WHERE ( `uid1` = "' . $this->atacks[$id]['uid1'] . '" AND `uid2` = "' . $this->atacks[$id]['uid2'] . '" ) OR ( `uid2` = "' . $this->atacks[$id]['uid1'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" )' @@ -7798,7 +7798,7 @@ class Battle } } - // + //Сохранение данные public function save_stats($uid) { mysql_query( @@ -7824,7 +7824,7 @@ class Battle ); } - // + //Отображение НР public function hpSee($now, $all, $type = 1): string { $r = '[' . $now . '/' . $all . ']'; @@ -7839,7 +7839,7 @@ class Battle } - // + //Выводим лог боя public function lookLog(): string { global $c, $u, $log_text; @@ -7929,7 +7929,7 @@ class Battle return $js; } - // + //Новый лог Мой Лог public function lookmLog(): string { global $c, $u, $log_text; @@ -8016,7 +8016,7 @@ class Battle } //====================== - // + //Добавляем в лог public function add_log($mass) { if (empty($mass['text'])) { @@ -8030,136 +8030,136 @@ class Battle } } - /// + ///Комментатор public function get_comment() { $boycom = [ - ' .', - ' , ?', - ' ?', - ', -, ? ! !', - ' .', - ' . ', - ' ...', - ' ...', - ' ?', - ' , !?', - ' ?', - ' -, :', - ' - ?', - ' , ', - ' ?!', - ' . ?', - ' ...', - ' !', - ' !', - ' , !', - ' .', - ' 5 , , 20- ...', - '. .', - ' , - ?', - ' , ?', - ' ... : ...', - ' , ?', - ' , ', - ' . ... , , ', - ' !', - ' ? , .', - ' ! !', - ' !', - ', , ` ` ', - ' ?!', - ' ! .', - ' . ? .', - ' !', - ', ... !.. , .', - ' , !', - ' -, ...', - ' - , :)', - ' .', - ' - !!!', - '! ! ! !', - ' !', - ' ? . , .', - ' . .', - ' ...', - ' ...', - ' !!!', - '!? ?!', - ' ?', - ', ...', - ' .', - ' !', - ' , - .', - ', , , .', - ' !', - ', - ???', - ' , .', - ' ? !', - ', !', - ' , ...', - ' . !', - '! ! ... , .', - ', , ?', - ', !', - ' !', - ' , ... , ... ?!', - ' ?', - ' . .', - ', ..? . , .', - '... .', - '!!!.... ...', - '! .', - '! , !', - ' ???', - ' ... - .', - ', ...', - ' !', - '-, - .', - ' , .', - ' , ?', - ' - .', - ', .', - ' !', - ' , .', - ' ... , !', - ' ...', - ' !', - ' !', - ' ', - ' , .', - ' , .', - ' - .', - ' !', - ' ', - ' ...', - ' , !', - '!! , ...', - ' ! .', - ', !', - ', , ?', - ', , .', - ' !', - ' !', - '-!', - ' ?! !', - ' , ', - ' - ...', - ' , ! !', - ' , .', - ' ', - ' `` ?', - ' - ...', - ' , - .', - ' . :)', - ' , , , . ? - ?!', - ' , ...', - '( ) ... !', - '< > < > < > < >', - '< > ', + 'А танцуешь ты лучше.', + 'А мы что, в прятки тут играем?', + 'А вы разве пингвинов никогда не видели?', + 'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!', + 'А потом еще труп пинать будут.', + 'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались', + 'А ведь вы живых людей дубасите...', + 'А вот я вчера в зоопарке был...', + 'А вы в стройбате не служили?', + 'А вы видели, чтобы так на улице делали!?', + 'А вы знали что ёжики размножаются в интернете?', + 'А жить-то, как хочется:', + 'А из-за чего вы собственно дерётесь?', + 'А чего ржёте, вы ещё остальных не видели', + 'А что произойдёт если ты испугаешся до полусмерти дважды?!', + 'Больше так не делай. Ты же не садист?', + 'Без комментариев...', + 'Больно ведь!', + 'Быстро ты за монитор спрятался!', + 'Все хотят попасть в рай, но никто не хочет умирать!', + 'Вчера с такой девчонкой познакомился.', + 'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...', + 'Все. Я так больше не могу.', + 'В конце концов, кто-то победит?', + 'Вы чего, с дерева упали?', + 'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...', + 'Вот видишь, как полезно чистить зубы на ночь?', + 'Вот вы все руками махаете, а за вами уже очередь', + 'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете', + 'Вы бы лучше пошли потренировались!', + 'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.', + 'Вы же бойцы! Имейте совесть!', + 'Гаси недоумка!', + 'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ', + 'Да куда они бьют?!', + 'Давайте быстрее! За вами уже очередь образовалась.', + 'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.', + 'Дерутся как девчонки!', + 'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.', + 'Если так будет продолжаться, то скоро мы заснем!', + 'Если бы у меня было кресло-качалка, я бы в нём качался...', + 'Если вы что-то сказать хотите, то лучше молчите :)', + 'Жестокость не порок.', + 'Жизнь вне нашего клуба - это пустая трата кислорода!!!', + 'Жми! Дави! Кусай! Царапай!', + 'За такие бои надо в хаос отправлять!', + 'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.', + 'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.', + 'И пролитая кровь еще пульсирует...', + 'Инвалидов развелось...', + 'Какой бой!!!', + 'Кто!? Кто здесь?!', + 'Кто вас этому научил?', + 'Кузнечик, блин...', + 'Куплю импортный проигрыватель грампластинок.', + 'Лошадью ходи!', + 'Лучше враг, чем друг - враг.', + 'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.', + 'Мне ваш балет уже надоел!', + 'Может, начнется-таки настоящий бой???', + 'Мысли лезут в голову изнутри, а удары снаружи.', + 'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!', + 'Ну, нельзя же так наотмашь лупить!', + 'Надо раньше было думать, теперь смертельно поздно...', + 'На такое зрелище билеты продавать можно. Народ ухохочется!', + 'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.', + 'Нет, ну должен быть повод, должен же быть повод?', + 'Нет, я отказываюсь это комментировать!', + 'Не таких обламывали!', + 'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!', + 'Ну и кто за этот погром платить будет?', + 'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.', + 'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.', + 'Ничего... Блок тоже удар.', + 'Обернись!!!.... Поздно...', + 'Ого! Научите меня так не делать.', + 'Осторожно! Сделаешь дырочку, уже не запломбируешь!', + 'Оно вам надо???', + 'Обычное дело...там что-то отклеилось.', + 'Ой, и заболтался я с вами...', + 'Он же не промахнётся если ты не отойдёшь!', + 'По-моему, кому-то светит инвалидность.', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прав был кот Леопольд, давайте жить дружно?', + 'При ударе в живот нарушается кислотно-щелочной баланс.', + 'Проверь, не торчит ли у тебя нож из живота.', + 'Перестаньте мне орать!', + 'Подкинь ему грабли, на которые он еще не наступал.', + 'Прыгают тут как блохи... Все, я пошел за дихлофосом!', + 'Разбудите меня когда эта порнография закончится...', + 'Ребенок сильнее ударил бы!', + 'Славно вмазал!', + 'Славно они веселятся', + 'Смотрю вот на вас, и слезы наворачиваются.', + 'Сначала учатся ходить, а потом только в драку лезут.', + 'Так они друг другу что-нибудь сломают.', + 'Так ты ему все кости переломаешь!', + 'У меня в подъезде точно так же соседа отмудохали', + 'Убогих развелось...', + 'Ух ты, какой прыткий!', + 'Фашист!! Надо ж, так по больному месту врезать...', + 'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.', + 'Хулиганы, прекратите немедленно!', + 'Хочешь, подскажу, куда он ударит?', + 'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.', + 'Хороший бой!', + 'Хороший удар!', + 'Хиляк-разрядник!', + 'Что ты его за волосы схватил?! Отпусти немедленно!', + 'Щас я вас настигну, вот тогда мы и похохочем', + 'Это была какая-то неизвестная мне техника...', + 'Это же противник, а не глина! Хватит мяться!', + 'Это не бой, это издевательское избиение.', + 'Это поубавит спеси', + 'Это и был твой план `Б` ?', + 'Это была какая-то неизвестная мне техника...', + 'Я же предупреждал, - будет больно.', + 'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)', + 'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!', + 'Я тоже умею драться, но не буду...', + '(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!', + '<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>', + '<вырезано цензурой> каратисты фиговы', ]; if (rand(1, 12) === 1) { - $txt = '{tm1} : ' . $boycom[rand(0, count($boycom) - 1)] . ''; + $txt = '{tm1} Комментатор: ' . $boycom[rand(0, count($boycom) - 1)] . ''; $vLog = 'time1=' . time() . ''; $mas1 = [ @@ -8182,7 +8182,7 @@ class Battle return true; } - // + //Расчет типа удара от оружия public function weaponTx($item) { global $u; @@ -8197,37 +8197,37 @@ class Battle $itm = $u->lookStats($item['data']); $t[0]['z'] = 0; $t[0]['t'] = 0; - // + //колящий урон $t[1]['z'] = round(0 + $itm['tya1']); $t[1]['t'] = 1; - // + //рубящий урон $t[2]['z'] = round(0 + $itm['tya2']); $t[2]['t'] = 2; - // + //дробящий урон $t[3]['z'] = round(0 + $itm['tya3']); $t[3]['t'] = 3; - // + //режущий урон $t[4]['z'] = round(0 + $itm['tya4']); $t[4]['t'] = 4; - // + //урон огня $t[5]['z'] = round(0 + $itm['tym1']); $t[5]['t'] = 5; - // + //урон воздуха $t[6]['z'] = round(0 + $itm['tym2']); $t[6]['t'] = 6; - // + //урон воды $t[7]['z'] = round(0 + $itm['tym3']); $t[7]['t'] = 7; - // + //урон земли $t[8]['z'] = round(0 + $itm['tym4']); $t[8]['t'] = 8; - // + //урон света $t[9]['z'] = round(0 + $itm['tym5']); $t[9]['t'] = 9; - // + //урон тьмы $t[10]['z'] = round(0 + $itm['tym6']); $t[10]['t'] = 10; - // + //урон серой магией $t[11]['z'] = round(0 + $itm['tym7']); $t[11]['t'] = 11; @@ -8268,50 +8268,50 @@ class Battle } - // + //Расчет урона от оружия public function weaponAt($item, $st, $x): int { $tp = 0; $tp20 = 0; if (isset($item['id'])) { $itm = $this->lookStats($item['data']); - // + //начинаем расчет урона $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; if ($x != 0) { /* - - 60% 40% . - - 70% 20% 20% . - - 100% . - - 60% 40% . + Колющий - 60% Силы и 40% Ловкости. + Рубящий - 70% Силы 20% Ловкости и 20% Интуиции. + Дробящий - 100% Силы. + Режущий - 60% Силы и 40% Интуиции. */ - // : 0 - , 1 - , 2 - , 3 - , 4 - , 5 - , 6 - , 7 - , 8 - , 9 - , 10 - , 11 - + //Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая if ($x == 1) { - // + //колющий $wst = $st['s2'] * 1; $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; $tp20 = 1; } elseif ($x == 2) { - // + //рубящий $wst = $st['s1'] * 0.75; $min += 5 + (ceil($wst * 1.4) / 1) + $st['minAtack']; $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; $tp20 = 2; } elseif ($x == 3) { - // + //дробящий $wst = $st['s4'] * 1.5; $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; $tp20 = 3; } elseif ($x == 4) { - // + //режущий $wst = $st['s3'] * 1; $min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack']; $max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack']; $tp20 = 4; } elseif ($x >= 5 && $x <= 22) { - // + //урон магии и магии стихий $wst = $st['s1'] * 0.01 + $st['s2'] * 0.01 + $st['s3'] * 0.01 + $st['s5'] * 0.06; $min += 3 + (ceil($wst * 1.4) / 2.25) + $st['minAtack']; $max += 5 + (ceil(0.4 + $min / 0.9) / 2.25) + $st['maxAtack']; @@ -8329,14 +8329,14 @@ class Battle return $tp; } - // + //Расчет урона от оружия public function weaponAt22($item, $st): array { $min = 0; $max = 0; if (isset($item['id'])) { $itm = $this->lookStats($item['data']); - // + //начинаем расчет урона $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; } @@ -8344,7 +8344,7 @@ class Battle } - // + //Расчет защиты public function zago($v): float { if ($v > 1700) { @@ -8353,7 +8353,7 @@ class Battle return round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2); } - // () + //Расчет защиты (магия) public function zmgo($v) { return (1 - (pow(0.5, ($v / 250)))) * 100; @@ -8383,14 +8383,14 @@ class Battle $weapom_max, $za_proc = null, $zm_proc = null, - $zashitam = null, // pzm ! + $zashitam = null, // pzm тут! $ozashitam = null, $wp_type, $witm ): array { global $u; - // + //Поправка if ($zashita < 1) { $zashita = 1; } @@ -8407,31 +8407,31 @@ class Battle $type = 12; } - // + //Параметры для возврвата $r = ['min' => 0, 'max' => 0, 'type' => $type]; $p = [ 'Y' => 0, 'B' => [0 => 0, 1 => 0, 'rnd' => false], 'L' => $level, - 'W' => [$weapom_min, $weapom_max, 'rnd' => false], // // - 'U' => $vladenie, // - 'M' => $power_yron, // - 'K' => $power_krit, // - 'S' => 0, // . - 'T' => 1, //. - 'iT' => 1, // . . + 'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный + 'U' => $vladenie, //владение оружием + 'M' => $power_yron, //мощность урона + 'K' => $power_krit, //мощность крита + 'S' => 0, //влияние статов на проф.урон + 'T' => 1, //Кф. оружия + 'iT' => 1, //Итоговый доп. Кф. оружия /* - (S) - - : S = * 0,3 + * 0,7 - : S = * 0,5 + * 0,25 + * 0,25 - : S = * 1 - : S = * 0,3 + * 0,7 + (S) - влияние наших статов на профильный урон + Колющий: S = Сила * 0,3 + Ловкость * 0,7 + Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25 + Дробящий: S = Сила * 1 + Режущий: S = Сила * 0,3 + Интуиция * 0,7 */ ]; $witmdata = $this->lookStats($witm['data']); - // + //Расчет типа урона if ($wp_type == 18) { $r['type'] = 1; @@ -8444,38 +8444,38 @@ class Battle } else { $r['type'] = 0; } - // - // + //ТУТ Профильный урон + //колющий if ($r['type'] == 1) { $p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75; - $p['U'] = $st1['a1'] * 1.00; // - // + $p['U'] = $st1['a1'] * 1.00; //кинжалы + //рубящий } elseif ($r['type'] == 2) { $p['S'] = $st1['s1'] * 1.20; - $p['U'] = $st1['a2'] * 1.00; // - // + $p['U'] = $st1['a2'] * 1.00; //топоры + //дробящий } elseif ($r['type'] == 3) { $p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00; - $p['U'] = $st1['a3'] * 1.00; // - // + $p['U'] = $st1['a3'] * 1.00; //дубины + //режущий } elseif ($r['type'] == 4) { $p['S'] = $st1['s3'] * 1.00; - $p['U'] = $st1['a4'] * 1.00; // - // + $p['U'] = $st1['a4'] * 1.00; //мечи + //Магиечески } else { $p['S'] = 0; - $p['U'] = 0; // ( + $p['U'] = 0; // для кулака(нужно переписывать } $r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]); - // () + //Остальные расчеты (коэфицент) $p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5); $p['B'][1] = $p['B'][0] + 3; $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); - // + //Обычный урон if ($r['type'] == 12) { $r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100); $r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100); @@ -8488,8 +8488,8 @@ class Battle $r['Kmin'] = ceil((2 + (0 + $p['K'] / 100)) * $r['min']); $r['Kmax'] = ceil((2 + (0 + $p['K'] / 100)) * $r['max']); - // - // + //Расчет брони + //для обычного if ($r['type'] < 5 || $r['type'] == 12) { $r['min_abron'] = round($r['min'] * 0.05); $r['max_abron'] = round($r['max'] * 0.05); @@ -8497,13 +8497,13 @@ class Battle $r['bron']['rndold'] = $r['bron']['rnd']; $r['bron']['rnd'] = 0; } - $r['Kmin'] -= $r['bron']['rnd'] * 2; // 2 - $r['Kmax'] -= $r['bron']['rnd'] * 2; // 2 - $r['min'] -= $r['bron']['rnd']; // . - $r['max'] -= $r['bron']['rnd']; // . + $r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2 + $r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2 + $r['min'] -= $r['bron']['rnd']; //не было деления ни на чо. + $r['max'] -= $r['bron']['rnd']; //не было деления ни на чо. } - // ( 80%) + //Расчет защиты (не более 80%) if ($r['type'] < 5 || $r['type'] == 12) { $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); @@ -8601,7 +8601,7 @@ class Battle $u1, $t = 1, $u2 = false, - $rznm = ' ', + $rznm = 'Очиститься Кровью', $k2nm = null, $yrn = null, $yrnt = null @@ -8614,7 +8614,7 @@ class Battle $pl['name'] = $pl['name'] . ' x' . $pl['x'] . ''; } if ($pl['timeUse'] == 77) { - // + //завершаем прием mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . ''; @@ -8648,18 +8648,18 @@ class Battle require('priems/' . $pl['priem']['file3'] . '.php'); } } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} "' . $pl['name'] . '".'; + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; $this->del_val['eff'][$pl['priem']['id']] = true; } } elseif ($t == 2) { - $mas1['text'] = '{tm1} {u1} "' . $pl['name'] . '".'; + $mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии "' . $pl['name'] . '".'; } elseif ($t == 99) { - $mas1['text'] = '{u1} "' . $pl['name'] . '" ' . $rznm . ' .'; + $mas1['text'] = '{u1} Снял эфект "' . $pl['name'] . '" с помощью ' . $rznm . ' .'; } else { if ($t == 100) { $mas1['id_hod']++; } - $mas1['text'] = '{tm1} "' . $pl['name'] . '" {u1}.'; + $mas1['text'] = '{tm1} Закончилось действие эффекта "' . $pl['name'] . '" для {u1}.'; } if ($pl['priem']['id'] != 24) { $this->add_log($mas1); @@ -8667,7 +8667,7 @@ class Battle $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); } - // + //Разбираем массив со статами public function lookStats($m): array { $ist = []; @@ -8682,7 +8682,7 @@ class Battle return $ist; } - // . () + //Расчет мф. (новая) public function form_mf($u, $au): float { $v = $u * 5.1 - $au * 5.1; @@ -8693,13 +8693,13 @@ class Battle return round($r); } - // + //Расчет МФ public function mfs($type, $mf, $lvl1, $lvl2): int { $rval = 0; switch ($type) { case 1: - // + //Крит if ($mf['amf'] < 0) { $mf['amf'] = 0; } @@ -8787,16 +8787,16 @@ class Battle if ($mf > 100) { $mf = 100; } - $rval = min($mf, 100); // + $rval = min($mf, 100); //пробой брони break; case 5: if ($mf < 1) { $mf = 0; } - $rval = min($mf, 85); // + $rval = min($mf, 85); //блок щитом break; case 6: - // + //Контрудар if ($mf['a'] > 0) { if ($mf['b'] > 0) { $rval = round($mf['a'] - ($mf['b'] / 2)); @@ -8818,7 +8818,7 @@ class Battle public function dodge($a, $b): bool { $i = 0; - $arr = []; // + $arr = []; //массив для записи уникальных случайных чисел while ($i < ($b - $a)) { while (in_array($rand, $arr)) { $rand = mt_rand(1, 100); @@ -8840,7 +8840,7 @@ class Battle return $this->dodge(1, $percent); } - // + //Смена противника public function smena($uid, $auto = false, $lastdie = false) { global $u; @@ -8849,7 +8849,7 @@ class Battle if (isset($this->uids[$uid]) && $uid != $u->info['id'] && $this->users[$this->uids[$uid]]['team'] != $this->users[$this->uids[$u->info['id']]]['team']) { if (!isset($this->ga[$u->info['id']][$uid]) || $lastdie) { if (ceil($this->stats[$this->uids[$uid]]['hpNow']) >= 1) { - // + //меняем противника if (!$auto) { $u->info['smena']--; } @@ -8861,23 +8861,23 @@ class Battle $this->users[$this->uids[$u->info['id']]]['enemy'] = $uid; return 1; } else { - return ' , '; + return 'Нельзя сменить, противник уже мертв'; } } else { - return ' !'; + return 'Нельзя сменить на выбранную цель!'; } } else { - return ' []'; + return 'Нельзя сменить на выбранную цель []'; } } else { - return ' , ...'; + return 'Для вас поединок закончен, ожидайте пока завершат другие...'; } } else { - return ' '; + return 'У вас закончились смены противника'; } } - //- // + //авто-смена противника //ТУТ баг выбора public function autoSmena() { global $u; @@ -8942,7 +8942,7 @@ class Battle } } - // () + //Действия бота (атака) public function botAtack($uid, $pl, $tp) { $test_atack = mysql_fetch_array( @@ -8971,7 +8971,7 @@ class Battle ); } } elseif ($tp == 2) { - // + //бот отвечает на удар $test_uid = mysql_fetch_array( mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1') ); @@ -8997,7 +8997,7 @@ class Battle $i++; } $na['b'] = rand(1, 5); - // + //Проводим удар $this->atacks[$pl['id']]['a2'] = $a222; $this->atacks[$pl['id']]['b2'] = $na['b']; @@ -9006,10 +9006,10 @@ class Battle } } - // , , , + //Проверяем удары, приемы, свитки, зверей public function testActions() { - // + //проверяем удары $m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id` ASC'); $i = 0; $botA = []; @@ -9027,50 +9027,50 @@ class Battle if (isset($pluids['hpNow'])) { mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } elseif ($pl['time'] + $this->info['timeout'] > time()) { - // , + //удар не пропущен по тайму, просто заносим данные $this->atacks[$pl['id']] = $pl; $this->ga[$pl['uid1']][$pl['uid2']] = $pl['id']; $this->ag[$pl['uid2']][$pl['uid1']] = $pl['id']; if (isset($this->iBots[$pl['uid1']])) { - // + //ударил бот и нет ответа $botA[$pl['uid1']] = $pl['id']; } elseif (isset($this->iBots[$pl['uid2']])) { - // + //ударили бота и он не ответил $botR[$pl['uid2']] = $pl['id']; if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) { $this->botAtack($pl['uid1'], $pl, 2); } } } else { - // + //пропуск по тайму $pl['time'] = time(); if ($pl['a1'] == 0 && $pl['a2'] == 0) { - // 1 + //игрок 1 пропустил по тайму $pl['out1'] = time(); $pl['tout1'] = 1; - // 2 + //игрок 2 пропустил по тайму $pl['out2'] = time(); $pl['tout2'] = 1; } elseif ($pl['a1'] == 0) { - // 1 + //игрок 1 пропустил по тайму $pl['out1'] = time(); $pl['tout1'] = 1; } elseif ($pl['a2'] == 0) { - // 2 + //игрок 2 пропустил по тайму $pl['out2'] = time(); $pl['tout2'] = 1; } - // + //наносим удар по пропуску $this->atacks[$pl['id']] = $pl; $this->startAtack($pl['id']); mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '"'); } } } - // + //тест удара if ($this->uAtc['id'] > 0 && $this->na == 1) { if ($pl['out1'] == 0 && $pl['out2'] == 0) { - // + //Может разменяться только тот кто бил if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) { $this->addNewAtack(); } @@ -9078,10 +9078,10 @@ class Battle $this->addNewAtack(); } } - //, + //тест, бот делает удары while ($i < count($this->bots)) { $bot = $this->bots[$i]; - if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') { // saintlucia + if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') { //Тут проверка на бота saintlucia $j = 0; while ($j < count($this->users)) { if ($this->info['razdel'] == 0) { @@ -9117,7 +9117,7 @@ class Battle } } } else { - // + //Удары между ботами if ($this->users[$j]['timeGo'] < time( ) && $this->users[$this->uids[$bot]]['timeGo'] < time( ) && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { @@ -9153,7 +9153,7 @@ class Battle if ($this->users[$j]['timeGo'] < time( ) && $this->users[$this->uids[$bot]]['timeGo'] < time()) { $tnbot = time() + rand(3, 7); - if ($this->info['type'] == 329) { // + if ($this->info['type'] == 329) { // тестовый бой $tnbot = time() - 1; } $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); @@ -9167,7 +9167,7 @@ class Battle ) && $this->users[$j]['timeGo'] < time()) { $this->startAtack($this->ag[$bot][$this->users[$j]['id']]); $tnbot = time() + rand(3, 7); - if ($this->info['type'] == 329) { // + if ($this->info['type'] == 329) { // тестовый бой $tnbot = time() - 1; } $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; @@ -9188,7 +9188,7 @@ class Battle } } - // + //Действия бота public function botAct($uid): bool { $r = false; @@ -9204,7 +9204,7 @@ class Battle return $r; } - // + //получаем данные о поединке public function battleInfo($id) { $b = mysql_fetch_array( @@ -9223,7 +9223,7 @@ class Battle } } - // + //наносим удар противнику public function addAtack() { global $js; @@ -9252,11 +9252,11 @@ class Battle $this->uAtc = $na; $js .= 'testClearZone();'; } else { - $this->e = ' '; + $this->e = 'Выберите зоны удара и блока'; } } - // + //выделяем пользователей public function teamsTake() { global $u; @@ -9264,7 +9264,7 @@ class Battle $ts = []; $tsi = 0; if ($this->info['id'] > 0) { - // + //данные о игроках в бою $nxtlg = []; $t = mysql_query( 'SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"' @@ -9288,7 +9288,7 @@ class Battle } } while ($pl = mysql_fetch_array($t)) { - // + //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } @@ -9307,9 +9307,9 @@ class Battle $this->iBots[$pl['id']] = $bi; $bi++; } - // + //записываем статы $this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true); - // + //Заносим старт if ($this->info['start2'] == 0) { if (!isset($ts[$this->users[$i]['team']])) { $tsi++; @@ -9336,12 +9336,12 @@ class Battle mysql_query( " INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '" . $this->stats[$i]['id'] . "', '', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, '', 0, 0, '', 0, 0, 0, 1, 0); + ( 22, '" . $this->stats[$i]['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); " ); } - // animal_bonus + // Бафф Зверя animal_bonus if ($this->users[$i]['animal'] > 0) { $a = mysql_fetch_array( mysql_query( @@ -9367,22 +9367,22 @@ class Battle 7 => 'dragon', ]; $tpa2 = [ - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '', - 6 => '', - 7 => '', + 1 => 'Кота', + 2 => 'Совы', + 3 => 'Светляка', + 4 => 'Чертяки', + 5 => 'Пса', + 6 => 'Свина', + 7 => 'Дракона', ]; $tpa3 = [ - 1 => ' ', - 2 => ' ', - 3 => ' ', - 4 => ' ', - 5 => '', - 6 => ' ', - 7 => '', + 1 => 'Кошачья Ловкость', + 2 => 'Интуиция Совы', + 3 => 'Сила Стихий', + 4 => 'Демоническая Сила', + 5 => 'Друг', + 6 => 'Полная Броня', + 7 => 'Инферно', ]; mysql_query( @@ -9393,7 +9393,7 @@ class Battle 'INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")' ); - // + //добавление духа от дракона if ($a['type'] == 7) { if ($a['level'] == 10) { $this->users[$i]['tactic7'] = floor( @@ -9414,7 +9414,7 @@ class Battle $vLog = 'time1=' . time( ) . '||s1=' . $this->users[$i]['sex'] . '||t1=' . $this->users[$i]['team'] . '||login1=' . $this->users[$i]['login'] . ''; - $vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' ( ' . $this->users[$i]['login'] . ')'; + $vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')'; $mas1 = [ 'time' => time(), @@ -9435,13 +9435,13 @@ class Battle if (isset($anl['add_' . $u->items['add'][$i6]])) { if ($anl['add_' . $u->items['add'][$i6]] > 0) { if ($u->items['add'][$i6] == 'mib1') { - $ba .= ' : +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + $ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib2') { - $ba .= ' : +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + $ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib3') { - $ba .= ' : +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + $ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib4') { - $ba .= ' : +' . $anl['add_' . $u->items['add'][$i6]] . ', '; + $ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mab1' || $u->items['add'][$i6] == 'mab2' || $u->items['add'][$i6] == 'mab3' || $u->items['add'][$i6] == 'mab4') { } else { $ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', '; @@ -9452,10 +9452,10 @@ class Battle } $ba = trim($ba, ', '); if ($ba == '') { - $ba = ' '; + $ba = 'Эффект отсутсвует'; } - $mas1['text'] = '{tm1} {u2} , "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" {u1}. (' . $ba . ')'; + $mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" на {u1}. (' . $ba . ')'; $nxtlg[count($nxtlg)] = $mas1; mysql_query( 'UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1' @@ -9473,7 +9473,7 @@ class Battle ) . ', '; } $up .= '`uid` = "' . $pl['id'] . '" OR'; - //battle-user (, ) + //battle-user (статистика, начальная) $mybu = mysql_fetch_array( mysql_query( 'SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string( @@ -9482,7 +9482,7 @@ class Battle ) ); if (!isset($mybu['id'])) { - // + //Пустое значение статистики для данного персонажа за текущий бой $this->addstatuser($pl['id']); } $i++; @@ -9490,7 +9490,7 @@ class Battle $up = rtrim($up, ' OR'); - // + //Заносим в лог начало поединка if ($this->info['start1'] == 0) { $tststrt = mysql_fetch_array( @@ -9508,11 +9508,11 @@ class Battle $r = ''; while ($i <= $tsi) { if (isset($rs[$i]) && $rs[$i] != '') { - $r .= rtrim($rs[$i], ', ') . ' '; + $r .= rtrim($rs[$i], ', ') . ' и '; } $i++; } - $r = rtrim($r, ' '); + $r = rtrim($r, ' и '); $r = str_replace('"', '\\\\\"', $r); $this->hodID++; $vLog = 'time1=' . time() . '||'; @@ -9528,10 +9528,10 @@ class Battle 'zonb2' => '', 'type' => '1', ]; - $r = ' ' . date( + $r = 'Часы показывали ' . date( 'd.m.Y H:i', $this->info['time_start'] - ) . ', ' . $r . ' .'; + ) . ', когда ' . $r . ' бросили вызов друг другу.'; $ins = mysql_query( 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")' ); @@ -9553,7 +9553,7 @@ class Battle } } - // + //Возращаем зоны блока по умолчанию public function restZonb($uid1, $uid2) { if ($this->stnZbVs[$uid1] > 0) { @@ -9564,7 +9564,7 @@ class Battle } } - // () + //проверка блока (Визуальная) public function testZonbVis() { global $u; @@ -9595,7 +9595,7 @@ class Battle return $zb; } - // + //проверка блока public function testZonb($uid, $uid2) { $zba = []; @@ -9624,7 +9624,7 @@ class Battle $zba[2] = 3; } - // 1 + //Блоки игрока 1 if ( ( $this->stats[$this->uids[$uid2]]['weapon1'] == 1 || @@ -9636,7 +9636,7 @@ class Battle $zba[1] -= 1; } - // 2 + //Блоки игрока 2 if ( ( $this->stats[$this->uids[$uid]]['weapon1'] == 1 || @@ -9671,13 +9671,13 @@ class Battle } } - // + //генерируем команды public function genTeams($you): string { global $u; $ret = ''; $teams = []; - // + //выделяем пользователей $i = 0; $j = 1; $tms = []; @@ -9728,7 +9728,7 @@ class Battle } $ldr = ''; if ($this->users[$i]['lider'] == $this->info['id']) { - $ldr = 'users[$i]['team'] . '.gif \>'; + $ldr = 'users[$i]['team'] . '.gif \>'; } $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor( $this->stats[$i]['hpNow'] @@ -9737,7 +9737,7 @@ class Battle $i++; } - // + //генерируем команды $i = 0; while ($i < count($tms)) { $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); @@ -9745,7 +9745,7 @@ class Battle $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; $ret .= $teams[$tms[$i]]; if (count($tms) > $i + 1) { - $ret .= '     '; + $ret .= '   против   '; } } $i++; @@ -9759,30 +9759,30 @@ class Battle global $u; $t = $type; if ($t == 1) { - $name = ' '; - $stat = rand(1, 3); // - $timeEnd = rand(1, 3);// 1.30 6 + $name = 'Легкая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов $data = 'add_s' . $stat . '=-' . $lvl; $img = 'eff_travma1.gif'; $v1 = 1; } elseif ($t == 2) { - $name = ' '; - $stat = rand(1, 3); // - $timeEnd = rand(3, 5);// 6 12 + $name = 'Средняя травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(3, 5);// время травмы от 6 до 12 часов $data = 'add_s' . $stat . '=-' . ($lvl * 2); $v1 = 2; $img = 'eff_travma2.gif'; } elseif ($t == 3) { - $name = ' '; - $stat = rand(1, 3); // - $timeEnd = rand(5, 7);// 12 6 + $name = 'Тяжелая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов $data = 'add_s' . $stat . '=-' . ($lvl * 3); $v1 = 3; $img = 'eff_travma3.gif'; } elseif ($t == 4) { - $name = ' '; - $stat = rand(1, 3); // - $timeEnd = 24;// 24 + $name = 'Неизлечимая травма'; + $stat = rand(1, 3); // пока без духовности + $timeEnd = 24;// время травмы от 24 часа $data = 'add_s' . $stat . '=-' . ($lvl * 50); $v1 = 4; $img = 'eff_travma4.gif'; @@ -9794,7 +9794,7 @@ class Battle ); $ins = mysql_query( 'INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time( - ) . '","-1",": ","add_notravma=1","' . $uid . '", "263", "cure1.gif","21600", "")' + ) . '","-1","Иммунитет: Защита от травм","add_notravma=1","' . $uid . '", "263", "cure1.gif","21600", "")' ); } @@ -9802,7 +9802,7 @@ class Battle { global $u; if (!isset($this->uids[$uid])) { - // ( ) + //Заносим данные об игроке снова (видимо он погиб и его стерло с инфо) if (!isset($this->uids[$uid])) { $this->uids[$uid] = count($this->users); } @@ -9824,37 +9824,37 @@ class Battle } } - ///---- + ///----Спасение функция public function spaCheck($u1) { if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"'); if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) { - // + //Свиток спасения if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { - // + //Даем призрачку mysql_query( "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - (22, '" . $u1 . "', ' ', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" + (22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5); } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { - // + //Абсолютная защита mysql_query( "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - (22, '" . $u1 . "', ' ', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" + (22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75); } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { - // x2 + //Абсолютная защита x2 mysql_query( "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - (22, '" . $u1 . "', ' ', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);" + (22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); @@ -9879,7 +9879,7 @@ class Battle mysql_query( 'UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$u1]]['hpNow'] . '",`mpNow` = "' . $this->stats[$this->uids[$u1]]['mpNow'] . '", `tactic7` = `tactic7` - 25 WHERE `id` = "' . $u1 . '" LIMIT 1' ); - $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' ...' . $this->stats[$this->uids[$u1]]['login'] . ' . '; + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; $this->priemAddLog( $id, 1, 2, $u->info['id'], $u1, ' ', @@ -9891,13 +9891,13 @@ class Battle mysql_query('UPDATE `stats` SET `hpNow` = "0",`mpNow` = "0" WHERE `id` = "' . $u1 . '" LIMIT 1'); $this->stats[$this->uids[$u1]]['hpNow'] = 0; $this->users[$this->uids[$u1]]['hpNow'] = 0; - $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' .'; + $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' погиб.'; $this->priemAddLog( $id, 1, 2, $u->info['id'], $u1, ' ', $mas['text'], ($this->hodID + 1) - // // + //Удаляем размен из базы //ТУТ возможен лаг удаления ); mysql_query( 'DELETE FROM `battle_act` WHERE `uid1` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "-' . $this->stats[$this->uids[$u1]]['id'] . '"' diff --git a/_incl_data/class/BotLogic.php b/_incl_data/class/BotLogic.php index a9e07029..64e78166 100644 --- a/_incl_data/class/BotLogic.php +++ b/_incl_data/class/BotLogic.php @@ -21,7 +21,7 @@ class BotLogic static function battle_priems() { - // + //используем приемы в бою if (self::$st['hpNow'] > 0 && self::$bot['battle'] > 0) { $pr = explode('|', self::$bot['priems']); @@ -36,7 +36,7 @@ class BotLogic $i = 0; while ($i < count($pr)) { if ($rz[$i] < 1 && $pr[$i] > 0) { - // , + //Можно использовать прием, подключаем логику BotPriemLogic::start($i, $pr[$i]); } $i++; @@ -48,15 +48,15 @@ class BotLogic static function clear_bot() { - // , [0], , ., delete + //Очистка бота, обнуляем его до [0], удаляем эффекты, предметы и т.д, а текущему ставим логин delete - // + //Удаляем сообщения в чате mysql_query('DELETE FROM `chat` WHERE `to` = "' . self::$bot['login'] . '"'); - // + //Удаляем шмотки и эффекты mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . self::$bot['id'] . '"'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '"'); - // + //Удаляем статы и поле в юзерс mysql_query('DELETE FROM `users` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `online` WHERE `uid` = "' . self::$bot['id'] . '" LIMIT 1'); @@ -80,13 +80,13 @@ class BotLogic } } - // + //ПРоверка на файтрум static function test_fr($id, $city = 'capitalcity') { return $city != 'capitalcity' || $id == 0 || $id == 2 || $id == 4 || $id == 5 || $id == 7 || $id == 377; } - // + //Действия бота вне боя static function actions() { @@ -94,9 +94,9 @@ class BotLogic if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia') { - //: , , , + //Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы - // + //Переходим в другую комнату if (true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room']) { self::_loc(self::$bot['a1']); @@ -116,22 +116,22 @@ class BotLogic mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } - // - // - // + //Действие в комнате + //Магазин + //Покупаем кристалл вечности if (self::$bot['room'] == 10 && self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) { $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); if (!isset($cr['id'])) { - // + //Покупаем кристалл $u->addItem(1204, self::$bot['id']); } } - // + //Переходим в комнату для сражений self::_loc(self::_loc_zv()); } } - // 6- + //Если бот уже набрал опыт для перехода на 6-ой if (self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) { $cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); if (!isset($cr['id'])) { @@ -139,12 +139,12 @@ class BotLogic } } - // )) + //Похоже что боту пора сменить комплект )) if (self::$bot['clss'] == 0) { - // :) + //Выбираем новый класс и шмотки :) - // + //Меняем класс self::$bot['clss'] = rand(1, 4); $x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ')); @@ -154,7 +154,7 @@ class BotLogic if ($x[0] > 1) { $x = rand(1, $x[0]); - // 1 + //выбираем 1 из нескольких $da = ['ASC', 'DESC', 'DESC', 'ASC']; $da = $da[rand(0, 5)]; $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ORDER BY `id` ' . $da . ' LIMIT ' . ($x - 1) . ',1')); @@ -172,12 +172,12 @@ class BotLogic mysql_query('UPDATE `users` SET `clss` = "' . self::$bot['clss'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); - /* */ + /* Забираем старые шмотки и эффекты */ mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"'); - /* */ + /* Обновляем статы и приемы */ if ($com['pr'] == '') { $i = 1; @@ -193,7 +193,7 @@ class BotLogic $i = 1; while ($i <= 20) { if ($com['e' . $i] > 0) { - // + //Выдаем и надеваем предмет //$it = $u->addItem($com['e'.$i],self::$bot['id']); $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1')); mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 9640000) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'); @@ -204,7 +204,7 @@ class BotLogic $i = 1; while ($i <= 20) { if ($com['w' . $i] > 0) { - // + //Выдаем и надеваем предмет $it = $u->addItem($com['w' . $i], self::$bot['id']); $eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "' . $com['w' . $i] . '" LIMIT 1')); if ($it > 0) { @@ -217,7 +217,7 @@ class BotLogic } } - // 1- , :) + //если бот уже 1-ый уровень, а сидит в новичках :) кидаем его в залы if (self::$bot['city'] == 'capitalcity' && self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) { self::_loc(self::_loc_zv()); } @@ -226,7 +226,7 @@ class BotLogic public $bot_last_action = []; - // + //Включаем логику бота static function start($id) { if (!isset($bot_last_action[$id])) { @@ -238,12 +238,12 @@ class BotLogic self::$st = $u->getStats(self::$bot, 0); - // + //Заходим ботом в онлайн self::_online(); if (self::$bot['battle'] > 0) { - // + //Действия бота в поединке self::$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string(self::$bot['battle']) . '" AND `team_win` = "-1" LIMIT 1')); if (isset(self::$btl['id'])) { @@ -252,16 +252,16 @@ class BotLogic $a1 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid1` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1')); - // - // + //Проверяем возможность использования приемов и делаем список что использовать + //используем приемы self::battle_priems(); - // , , + //Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим if (isset($a1['id']) && $a1['time'] + self::$btl['timeout'] < time()) { $go_bot = true; } - // test + //ТУТ test $a2 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1')); if (isset($a2['uid1'])) { mysql_query('UPDATE `stats` SET `enemy` = "' . $a2['uid1'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); @@ -270,41 +270,41 @@ class BotLogic if (isset($a3['uid2'])) { mysql_query('UPDATE `stats` SET `enemy` = "' . $a3['uid2'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } - // + //Размен с противником self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . self::$bot['enemy'] . '" LIMIT 1')); } else { - // + //Заходим на персонажа self::inuser_go_btl(self::$bot); - // , + //Поединок уже завершился, выкидываем из боя self::$bot['battle'] = 0; mysql_query('UPDATE `users` SET `battle` = "' . self::$bot['battle'] . '" WHERE `id` = "' . mysql_real_escape_string(self::$bot['id']) . '" LIMIT 1 '); } } else { - // + //Действия бота вне поединка if (self::$bot['timeMain'] < time()) { mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `to` = "' . self::$bot['login'] . '" AND `time` = "-1"'); - // + //Действие возможно произвести if (self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4) { - // + //Принимаем только хаоты self::$bot['ipreg'] = 3; } if (self::$bot['ipreg'] == 5) { - // + //Подаем только хаоты self::$bot['ipreg'] = 7; } // if (self::$bot['ipreg'] == 0 || !self::test_fr(self::$bot['room'])) { - // + //Обновляем эффекты $com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1')); if (isset($com['id'])) { $eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1')); @@ -313,7 +313,7 @@ class BotLogic $i = 1; while ($i <= 20) { if ($com['e' . $i] > 0) { - // + //Выдаем и надеваем предмет //$it = $u->addItem($com['e'.$i],self::$bot['id']); $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1')); mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 86400 * 7) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'); @@ -324,25 +324,25 @@ class BotLogic } if (self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0) { - // + //обнуляем бота self::clear_bot(); } - //- , + //Только-что из поединка, хиляется if (!self::test_fr(self::$bot['room'])) { - // - , - + //В какой-то локации, видимо что-то делаем } elseif (self::$st['hpNow'] >= self::$st['hpAll']) { echo 1; - // :) + //Приступаем к активной деятельности :) mysql_query('UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); - mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "Стажер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } else { - if (self::$bot['mod_zvanie'] == '100500') { - // + + if (self::$bot['mod_zvanie'] == 'Стажер100500') { + //Надеваем комплект + обновляем эффекты mysql_query('UPDATE `eff_users` SET `timeUse` = "' . (time() + 7200) . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" AND `v1` != "priem" LIMIT 12'); mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` > 0 AND `delete` = "0"'); $sp = mysql_query('SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20'); @@ -373,10 +373,10 @@ class BotLogic mysql_query('UPDATE `items_users` SET `inOdet` = "' . $od . '" WHERE `id` = "' . $pl['id'] . '" AND `uid` = "' . self::$bot['id'] . '" LIMIT 1'); } } - mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Ca" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); + mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Cтaжер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } - // + //Хиляемся дальше if (self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0) { mysql_query('UPDATE `stats` SET `regHP` = "' . time() . '", `regMP` = "' . time() . '",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } @@ -390,10 +390,10 @@ class BotLogic } elseif (self::$bot['ipreg'] == 1) { - // (.) + //Принять заявку на бой (физ.) if (self::$bot['zv'] == 0) { - // . + //Выделяем подходящую заявку в физ. поединке $rz = 2; $zv = 0; $nozv = 0; @@ -415,13 +415,13 @@ class BotLogic if ($uz1st['reting'] <= floor(self::$st['reting'] * 1.27)) { - // + //Принимаем заявку $sa = ''; if (self::$bot['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . self::$bot['login'] . '] ' . $sa . ' .[reflesh_main_zv_priem:' . self::$bot['id'] . ']'; + $text = ' [login:' . self::$bot['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . self::$bot['id'] . ']'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')"); mysql_query('UPDATE `stats` SET `zv` = "' . $zv['id'] . '",`team` = "2" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); @@ -449,19 +449,19 @@ class BotLogic } elseif (self::$bot['ipreg'] == 2) { - // (.) + //Принять заявку на бой (груп.) self::bot_group_haot_zv(6); } elseif (self::$bot['ipreg'] == 3) { - // (.) + //Принять заявку на бой (хаот.) self::bot_group_haot_zv(7); } elseif (self::$bot['ipreg'] == 4) { - // (.) - self::e('' . self::$bot['login'] . ', ...'); + //Принять заявку на бой (турнир.) + self::e('' . self::$bot['login'] . ', я хочу принять турнир...'); } elseif (self::$bot['ipreg'] == 5) { - // (.) + //Подать заявку (физ.) if (self::$bot['zv'] == 0) { $rz = 2; @@ -531,34 +531,34 @@ class BotLogic } elseif (self::$bot['ipreg'] == 8) { - // + //Ожидание начала поединка if (self::$bot['zv'] == 0) { - // + //Поединок не удалось начать mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } else { $zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . self::$bot['zv'] . '" AND `cancel` = "0" AND `start` = "0" LIMIT 1')); if (!isset($zv['id'])) { - // + //Обнуляем действия mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); } elseif ($zv['razdel'] == 4 || $zv['razdel'] == 5) { - // + //хаот или группа if ($zv['time_start'] + $zv['time'] <= time()) { self::inuser_go_zv(self::$bot); } } else { - // + //физ if ($zv['creator'] == self::$bot['id']) { $uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1')); if (isset($uz2['id'])) { - // - , ! :) + //Заявку кто-то принял, реагируем! :) $pr = -1; $uz2st = $u->getStats($uz2, 0); @@ -566,12 +566,12 @@ class BotLogic //btl-cof if ($uz2st['reting'] > floor(self::$st['reting'] * 1.27)) { - //, 95% , + //Отказываем, в 95% случаев, противник слишком силен if (rand(0, 100) > 95) { - // :D + //отправляем бота на избиение :D $pr = 1; } else { - // + //отказ $pr = 0; } @@ -579,13 +579,13 @@ class BotLogic $pr = 1; } - // + //Можно принять заявку //$pr = 0; if ($pr == 1) { - // - // + //Прием заявки + //создаем поединок с ботом $expB = 0; $btl = ['players' => '', 'timeout' => $zv['timeout'], 'type' => $zv['type'], 'invis' => $zv['invis'], 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; $ins = mysql_query('INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES ( @@ -604,13 +604,13 @@ class BotLogic "-1")'); if ($ins) { $btl_id = mysql_insert_id(); - // + //обновляем данные о поединке mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '",`ipreg` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); - // , + //Если бой кулачный, то снимаем вещи if ($btl['type'] == 1) { mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet`!=0'); mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $uz2['id'] . '" AND `inOdet`!=0'); @@ -618,21 +618,21 @@ class BotLogic mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); - // , + //обновляем заявку, что бой начался self::$bot['battle'] = $btl_id; - // + //Отправляем сообщение в чат всем бойцам mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $uz2['login'] . "','" . time() . "','11','0','117')"); } } elseif ($pr == 0) { - // + //Отказ $sa = ''; if (self::$bot['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . self::$bot['login'] . '] ' . $sa . ' .'; + $text = ' [login:' . self::$bot['login'] . '] отказал' . $sa . ' вам в поединке.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz2['city'] . "','','','" . $uz2['login'] . "','" . $text . "','" . time() . "','6','0')"); mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1'); mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1'); @@ -640,7 +640,7 @@ class BotLogic } else { - // , ! + //Заявку никто не принял, возможно стоит отменить заявку вообще! if (self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk']), (3 * 49 / $zv['otk']))) { mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); @@ -655,7 +655,7 @@ class BotLogic } - // , + //Бот уже слишком долго ждет ответа игрока, отказываемся от заявки if (self::$bot['timeMain'] < time() - rand((30 / $zv['otk']), (135 / $zv['otk'])) && $zv['creator'] != self::$bot['id'] && ($zv['razdel'] == 1 || $zv['razdel'] == 2)) { $uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1')); @@ -663,10 +663,10 @@ class BotLogic $sa = ''; if (self::$bot['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . self::$bot['login'] . '] ' . $sa . ' .'; + $text = ' [login:' . self::$bot['login'] . '] отозвал' . $sa . ' свой запрос на бой.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')"); } @@ -709,18 +709,18 @@ class BotLogic if (self::$bot['level'] < 2) { if ($r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8) { if (rand(0, 1) == 1) { - $r = 1; // + $r = 1; //принимаем физ } elseif (rand(0, 1) == 0) { - $r = 4; // + $r = 4; //принимаем турнир } else { - $r = 5; // + $r = 5; //подаем физ } } } elseif (self::$bot['level'] == 0) { if (rand(0, 1) == 1) { - $r = 1; // + $r = 1; //принимаем физ } else { - $r = 5; // + $r = 5; //подаем физ } } @@ -734,9 +734,9 @@ class BotLogic /*/ - + Базовые функции обучения бота /*/ - // + //Бот ищет заявку в группы или хаот для своего уровня и подходящую ему static function bot_group_haot_zv($id) { $rz = 5; @@ -783,7 +783,7 @@ class BotLogic } - // + //Логика приема заявки if ((self::team_zv_cf($pl, $atm) > (self::team_zv_cf($pl, $tmr) + self::$st['reting']) * 1.67 || ($zv['tm2max'] < $zv['tm1max'] / 2) || ($zv['tm1max'] < $zv['tm2max'] / 2)) && rand(0, 100) < 90) { $go = 0; } @@ -840,7 +840,7 @@ class BotLogic if ($tm > 0 || $rz == 5) { - // + //Принимаем участие в заявке mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "' . $tm . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `login2` = "' . self::$bot['login2'] . '",`ipreg` = "8" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); self::$bot['zv'] = $pl['id']; @@ -856,7 +856,7 @@ class BotLogic } - // + //Добавляем нового бота static function createNewBot($login, $sex) { if ($sex != 1) { @@ -872,7 +872,7 @@ class BotLogic 'real_bot_user', '0', '" . mysql_real_escape_string($login) . "', - '" . md5('regnxt#$%^0.' . time()) . "', + '" . md5('regnxt#$%^а0.' . time()) . "', '127.0.0.1', '127.0.0.1', 'capitalcity', @@ -890,11 +890,11 @@ class BotLogic } - // + //Бот находится в онлайне static function _online() { if (self::$bot['online'] < time() - 60) { - /// + //уровень/апп if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0) { self::_level(); } @@ -903,7 +903,7 @@ class BotLogic } } - // + //Бот меняет локацию static function _loc_A($a, $b) { return $b; @@ -918,28 +918,28 @@ class BotLogic $r = rand(1, 4); } - // + //будуар if ($r == 4 && self::$bot['sex'] != 1) { $r = rand(1, 3); } if (self::$bot['city'] == 'capitalcity') { if ($r == 4) { - // + //будуар $r = 7; } elseif ($r == 3) { - // 3 + //ЗВ 3 $r = 5; } elseif ($r == 2) { - // 2 + //ЗВ 2 $r = 2; } else { - // 1 + //ЗВ 1 $r = 4; } if (self::$bot['level'] == 0) { - // + //Новички $r = 0; } @@ -952,20 +952,20 @@ class BotLogic { if ($id == self::$bot['room']) { - //, + //ничего, уже пришли self::update('a1', 0); } else { - // + //Прокладываем маршрут из текущей комнаты $rid_next = self::_loc_A(self::$bot['room'], $id); if ($rid_next > 0) { - // + //Идем туда //$rid_next = 377; mysql_query('UPDATE `users` SET `room` = "' . $rid_next . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'); return true; } else { - // + //Невозможно дойти туда return false; } @@ -973,7 +973,7 @@ class BotLogic } - // , + //Бот получил уровень, либо апп static function _level() { global $u; @@ -999,11 +999,11 @@ class BotLogic } - // + //Вспомогательные функции static function e($t) { - mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' ( ): ' . mysql_real_escape_string($t) . '","capitalcity", + mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity", "LEL","6","1","-1")'); } diff --git a/_incl_data/class/BotPriemLogic.php b/_incl_data/class/BotPriemLogic.php index da3fc716..bd0851b9 100644 --- a/_incl_data/class/BotPriemLogic.php +++ b/_incl_data/class/BotPriemLogic.php @@ -13,85 +13,85 @@ class BotPriemLogic $test = self::testpriem(self::$p); if (isset(self::$p['id']) && $test == 0) { - // $id + //Используем прием под номером $id if ($id == 1) { self::priem1($i); - } // 1|2|3|4|5|6|7|8|9|10|11|13|14|45|47|48|49|188|204|211|217|220|223|232|235|240|0|0|0|0|0|0|0|0|0|0|0|0|0|0 + } //Прикрыться 1|2|3|4|5|6|7|8|9|10|11|13|14|45|47|48|49|188|204|211|217|220|223|232|235|240|0|0|0|0|0|0|0|0|0|0|0|0|0|0 elseif ($id == 2) { self::priem2($i); - } // + } //Вломить elseif ($id == 3) { self::priem3($i); - } // + } //Собрать зубы elseif ($id == 4) { self::priem4($i); - } // + } //Сильный удар elseif ($id == 5) { self::priem5($i); - } // + } //Утереть пот elseif ($id == 6) { self::priem6($i); - } // + } //Воля к победе elseif ($id == 7) { self::priem7($i); - } // + } //Активная защита elseif ($id == 8) { self::priem8($i); - } // + } //Танец ветра elseif ($id == 9) { self::priem9($i); - } // + } //Дикая удача elseif ($id == 10) { self::priem10($i); - } // + } //Предвидиние elseif ($id == 11) { self::priem11($i); - } // + } //Удачный удар elseif ($id == 13) { self::priem13($i); - } // + } //Стойкость elseif ($id == 14) { self::priem14($i); - } // + } //Ярость elseif ($id == 45) { self::priem45($i); - } // + } //Полная защита elseif ($id == 47) { self::priem47($i); - } // + } //Слепая удача elseif ($id == 48) { self::priem48($i); - } // + } //Танец лезвий elseif ($id == 49) { self::priem49($i); - } // + } //Второе дыхание elseif ($id == 188) { self::priem188($i); - } // + } //Жажда крови elseif ($id == 204) { self::priem204($i); - } // + } //Обреченность elseif ($id == 211) { self::priem211($i); - } // + } //Агрессивная защита elseif ($id == 217) { self::priem217($i); - } // + } //Разгадать тактику elseif ($id == 220) { self::priem220($i); - } // + } //Ставка на опережение elseif ($id == 223) { self::priem223($i); - } // + } //Рывок elseif ($id == 232) { self::priem232($i); - } // + } //Выжить elseif ($id == 235) { self::priem235($i); - } // + } //Шокирующий удар elseif ($id == 240) { self::priem240($i); - } // + } //Хлебнуть крови elseif ($id >= 175 && $id <= 179) { self::priem175($i); } @@ -110,7 +110,7 @@ class BotPriemLogic BotLogic::inuser_go_btl(BotLogic::$bot, $go_txt); } - // + //Ставка на опережение private static function priem220($i) { if (rand(0, 100) < 30) { @@ -118,7 +118,7 @@ class BotPriemLogic } } - // + //Разгадать тактику private static function priem217($i) { if (rand(0, 100) < 30) { @@ -126,7 +126,7 @@ class BotPriemLogic } } - // + //Обреченность private static function priem204($i) { if (rand(0, 100) < 30) { @@ -134,7 +134,7 @@ class BotPriemLogic } } - // + //Выжить private static function priem232($i) { if (self::hp() <= 30 && rand(0, 100) < 50) { @@ -142,7 +142,7 @@ class BotPriemLogic } } - // + //Жажда крови private static function priem188($i) { if (rand(0, 100) < 30) { @@ -150,7 +150,7 @@ class BotPriemLogic } } - // + //Шок удар private static function priem235($i) { if (rand(0, 100) < 50) { @@ -158,7 +158,7 @@ class BotPriemLogic } } - // + //Хлебнуть крови private static function priem240($i) { if (self::hp() <= 70) { @@ -166,13 +166,13 @@ class BotPriemLogic } } - // + //Силовое поле private static function priem175($i) { self::usePriem($i); } - // + //Прикрыться private static function priem1($i) { if (rand(0, 100) < 50) { @@ -180,7 +180,7 @@ class BotPriemLogic } } - // + //Вломить private static function priem2($i) { if (rand(0, 100) < 50) { @@ -188,7 +188,7 @@ class BotPriemLogic } } - // + //Собрать зубы private static function priem3($i) { if (self::hp() <= 70 && rand(0, 100) < 50) { @@ -196,7 +196,7 @@ class BotPriemLogic } } - // + //Воля к победе private static function priem6($i) { if (self::hp() <= 40 && rand(0, 100) < 50) { @@ -204,7 +204,7 @@ class BotPriemLogic } } - // + //Танец ветра private static function priem8($i) { if (rand(0, 100) < 30) { @@ -212,7 +212,7 @@ class BotPriemLogic } } - // + //Танец лезвий private static function priem48($i) { if (rand(0, 100) < 70) { @@ -220,7 +220,7 @@ class BotPriemLogic } } - // + //Дикая удача private static function priem9($i) { if (rand(0, 100) < 30) { @@ -228,7 +228,7 @@ class BotPriemLogic } } - // + //Слепая удача private static function priem47($i) { if (rand(0, 100) < 50) { @@ -236,7 +236,7 @@ class BotPriemLogic } } - // + //Предвиденье private static function priem10($i) { if (rand(0, 100) < 30) { @@ -244,7 +244,7 @@ class BotPriemLogic } } - // + //Второе дыхание private static function priem49($i) { if (rand(0, 100) < 80 && self::hp() <= 60) { @@ -252,7 +252,7 @@ class BotPriemLogic } } - // + //Рывок private static function priem223($i) { if (self::hp() <= 50 && rand(0, 100) < 50) { @@ -260,7 +260,7 @@ class BotPriemLogic } } - // + //Удачный удар private static function priem11($i) { if (rand(0, 100) < 30) { @@ -268,7 +268,7 @@ class BotPriemLogic } } - // + //Стойкость private static function priem13($i) { if (rand(0, 100) < 50) { @@ -276,7 +276,7 @@ class BotPriemLogic } } - // + //Ярость private static function priem14($i) { if (rand(0, 100) < 50) { @@ -284,7 +284,7 @@ class BotPriemLogic } } - // + //Сильный удар private static function priem4($i) { if (rand(0, 100) < 60) { @@ -292,7 +292,7 @@ class BotPriemLogic } } - // + //Утереть пот private static function priem5($i) { if (self::hp() <= 95) { @@ -301,7 +301,7 @@ class BotPriemLogic } - // + //Агрессивная защита private static function priem211($i) { if (rand(0, 100) < 80) { @@ -310,7 +310,7 @@ class BotPriemLogic } - // + //Полная защита private static function priem45($i) { if (rand(0, 100) < 50) { @@ -319,7 +319,7 @@ class BotPriemLogic } - // + //Активная защита private static function priem7($i) { if (rand(0, 100) < 30) { @@ -333,7 +333,7 @@ class BotPriemLogic return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2); } - // + //Тест на возможность использования private static function testpriem($pl) { global $u; @@ -382,14 +382,14 @@ class BotPriemLogic } if ($pl['trUser'] == 1) { - // - ( ) + //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) $ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . BotLogic::$bot['battle'] . '" AND `uid1` = "' . BotLogic::$bot['id'] . '" AND `uid2` = "' . BotLogic::$bot['enemy'] . '" LIMIT 1')); if (isset($ga['id'])) { $notr++; } } - // + //Если прием уже использовали if (BotLogic::$st['prsu'][$pl['id']] > 0) { $notr++; } diff --git a/_incl_data/class/Chat.php b/_incl_data/class/Chat.php index 2965686e..25446f54 100644 --- a/_incl_data/class/Chat.php +++ b/_incl_data/class/Chat.php @@ -12,7 +12,7 @@ use Core\Db; class Chat { - private $smilesWorld = ['laugh' => [0 => '', 1 => ' [*%l*]'], 'fingal' => [0 => ' ', 1 => ' [*%l*]'], 'eek' => [0 => '', 1 => ' [*%l*]'], 'smoke' => [0 => '', 1 => ' [*%l*] '], 'hi' => [0 => ' ', 1 => ' [*%l*]'], 'bye' => [0 => ' ', 1 => ' [*%l*]'], 'king' => [0 => ' :-)', 1 => ' [*%l*] !'], 'king2' => [0 => ' :-)', 1 => ' [*%l*] !'], 'boks2' => [0 => ' ', 1 => ' [*%l*] '], 'boks' => [0 => ' , !', 1 => ' [*%l*] '], 'gent' => [0 => ' ', 1 => ' [*%l*] '], 'lady' => [0 => ' ', 1 => ', [*%l*] '], 'tongue' => [0 => ' ', 1 => ' [*%l*]'], 'smil' => [0 => ' ', 1 => ', [*%l*] !'], 'ponder' => [0 => '- ', 1 => ' [*%l*]'], 'bow' => [0 => ' , ', 1 => ' [*%l*]'], 'angel' => [0 => ' ', 1 => ' [*%l*] '], 'angel2' => [0 => ' ', 1 => ' [*%l*] '], 'hello' => [0 => ' ', 1 => ' [*%l*]'], 'dont' => [0 => ' ', 1 => ' [*%l*] '], 'idea' => [0 => ' !', 1 => ' [*%l*] '], 'mol' => [0 => ' ', 1 => ' [*%l*]'], 'super' => [0 => ', , - , - !', 1 => ' [*%l*]'], 'beer' => [0 => ' ...', 1 => ' [*%l*] !'], 'drink' => [0 => ', ', 1 => ' [*%l*] '], 'baby' => [0 => ' ', 1 => ' , [*%l*] '], 'tongue2' => [0 => ' ', 1 => ' [*%l*] , '], 'sword' => [0 => ' ', 1 => ' [*%l*] !'], 'agree' => [0 => ' ', 1 => ' [*%l*]'], 'loveya' => [0 => ' ', 1 => ' [*%l*]'], 'kiss' => [0 => ' ', 1 => ' [*%l*]'], 'kiss2' => [0 => ' -...', 1 => ' [*%l*]'], 'kiss3' => [0 => '- ...', 1 => ' [*%l*]'], 'kiss4' => [0 => '- ...', 1 => ' [*%l*] ...'], 'rose' => [0 => ' - , ...', 1 => ' [*%l*] ...'], 'love' => [0 => ' ...', 1 => ', [loginfrom] + [*%l*]= !'], 'love2' => [0 => ' ...', 1 => ' [*%l*]'], 'confused' => [0 => ' ...', 1 => ' [*%l*]'], 'yes' => [0 => ' ', 1 => ' [*%l*] '], 'no' => [0 => ' ', 1 => ' [*%l*] '], 'shuffle' => [0 => ' ', 1 => ' [*%l*]'], 'nono' => [0 => ' !', 1 => ' [*%l*]'], 'maniac' => [0 => ' - - ...', 1 => ', [*%l*] ...'], 'privet' => [0 => ' ', 1 => ' [*%l*]'], 'ok' => [0 => ', ', 1 => ', [*%l*] '], 'ninja' => [0 => ' !', 1 => ' [*%l*] '], 'pif' => [0 => ' ', 1 => ', [*%l*]'], 'smash' => [0 => ' ', 1 => ' - [*%l*]'], 'alien' => [0 => ', !', 1 => ' , [*%l*] !'], 'pirate' => [0 => ', !...', 1 => ', [*%l*], !'], 'gun' => [0 => ' - ... :gun:', 1 => ', [*%l*] ! :gun:'], 'trup' => [0 => ' ', 1 => ', [*%l*], , !'], 'mdr' => [0 => ', ... :mdr:', 1 => ' [*%l*] :mdr:'], 'sneeze' => [0 => ' ', 1 => ' [*%l*], !'], 'mad' => [0 => ' !!!', 1 => ' [*%l*]!!!'], 'friday' => [0 => ' ...', 1 => ' [*%l*] '], 'cry' => [0 => ' ', 1 => ' [*%l*]'], 'grust' => [0 => '...', 1 => ' [*%l*]'], 'rupor' => [0 => ' ', 1 => ' [*%l*]'], 'fie' => [0 => ': , !!!', 1 => ' [*%l*] !'], 'nnn' => [0 => ' , , ...', 1 => ' , [*%l*]'], 'row' => [0 => ' ...', 1 => ' [*%l*]'], 'red' => [0 => ' ...', 1 => ' [*%l*]'], 'lick' => [0 => ', ', 1 => ' [*%l*]'], 'help' => [0 => ' !', 1 => ' [*%l*]'], 'wink' => [0 => ' ', 1 => ' [*%l*]'], 'jeer' => [0 => ' ...', 1 => ' [*%l*]'], 'tease' => [0 => '', 1 => ' [*%l*]'], 'nunu' => [0 => ' ...', 1 => ' [*%l*]'], 'inv' => [0 => ' ...', 1 => ' [*%l*] ...'], 'duel' => [0 => ' -...', 1 => ' [*%l*] !'], 'susel' => [0 => ': " , .." ...', 1 => ' [*%l*] !'], 'nun' => [0 => ' ', 1 => ' [*%l*] '], 'kruger' => [0 => ' :kruger:', 1 => ' [*%l*] '], 'flowers' => [0 => ' -21 - ', 1 => ' [*%l*] '], 'horse' => [0 => ' ', 1 => ' [*%l*] ! :horse:'], 'hug' => [0 => ' !', 1 => ' [*%l*]'], 'str' => [0 => ' !', 1 => ' [*%l*]'], 'alch' => [0 => ' :alch:', 1 => ' [*%l*] :alch:'], 'pal' => [0 => ' , , - ! :-)', 1 => ' [*%l*] !'], 'mag' => [0 => ' . . .', 1 => ' [*%l*]'], 'sniper' => [0 => ' ', 1 => ' [*%l*] '], 'fuck' => [0 => ' ', 1 => ' [*%l*] '], 'rotate' => [0 => ' ', 1 => ' [*%l*]']]; + private $smilesWorld = ['laugh' => [0 => 'смеется', 1 => 'посмеялся над [*%l*]'], 'fingal' => [0 => 'трет фингал', 1 => 'щупает фингал у [*%l*]'], 'eek' => [0 => 'ошарашен', 1 => 'ошарашен действиями [*%l*]'], 'smoke' => [0 => 'закуривает', 1 => 'предлагает [*%l*] пойти покурить'], 'hi' => [0 => 'приветствует всех вокруг', 1 => 'приветствует [*%l*]'], 'bye' => [0 => 'прощается со всеми и уходит', 1 => 'прощается с [*%l*]'], 'king' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своим королем!'], 'king2' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своей королевой!'], 'boks2' => [0 => 'вызывает всех на поединок', 1 => 'предлагает [*%l*] дружеский матч'], 'boks' => [0 => 'обещает побить любого, кто примет вызов!', 1 => 'намекает [*%l*] на поединок'], 'gent' => [0 => 'предлагает считать себя благородным сэром', 1 => 'считает [*%l*] джельтельменом'], 'lady' => [0 => 'предлагает считать себя благородной леди', 1 => 'считает, что [*%l*] настоящая Леди'], 'tongue' => [0 => 'показывает окружающим язык', 1 => 'показывает язык [*%l*]'], 'smil' => [0 => 'болтает без умолку', 1 => 'считает, что [*%l*] говорит откровенную ерунду!'], 'ponder' => [0 => 'кое-что усиленно обдумывает', 1 => 'обещает обмозговать предложение [*%l*]'], 'bow' => [0 => 'сохраняя достоинство, кивает окружающим', 1 => 'сохраняя достоинство кивает [*%l*]'], 'angel' => [0 => 'считает себя Ангелом', 1 => 'считает [*%l*] своим Ангелом'], 'angel2' => [0 => 'грезит об Ангелах', 1 => 'думает что [*%l*] Ангел'], 'hello' => [0 => 'желает здравствовать окружающим', 1 => 'желает здравствовать [*%l*]'], 'dont' => [0 => 'рекомендует окружающим не делать этого', 1 => 'рекомендует [*%l*] не делать этого'], 'idea' => [0 => 'озарен свежей идеей!', 1 => 'предлагает [*%l*] обсудить пару идей'], 'mol' => [0 => 'преклоняется перед окружающими', 1 => 'преклоняется перед [*%l*]'], 'super' => [0 => 'считает, что мир хорош, все дамы - Леди, а Солнце - шар дающий свет!', 1 => 'фанатеет от [*%l*]'], 'beer' => [0 => 'вспоминает про припрятаный в заначке эликсир...', 1 => 'готов поделиться с [*%l*] припрятанным эликсиром!'], 'drink' => [0 => 'считает, что пора пить различные эликсиры', 1 => 'предлагает [*%l*] пойти пропустить по стаканчику эликсира'], 'baby' => [0 => 'изображает малыша', 1 => ' считает, что [*%l*] еще мал и неопытен для обоснованной критики'], 'tongue2' => [0 => ' показывает всяким врединам язык', 1 => 'показывает [*%l*] язык, проявляя недовольство'], 'sword' => [0 => 'готов сразиться в честном поединке', 1 => 'вызывает [*%l*] на честный поединок!'], 'agree' => [0 => 'пожимает руку собеседникам', 1 => 'пожимает руку [*%l*]'], 'loveya' => [0 => 'преисполнен чувства любви', 1 => 'преисполнен чувства любви к [*%l*]'], 'kiss' => [0 => 'целует всех', 1 => 'целует [*%l*]'], 'kiss2' => [0 => 'хочет нежно поцеловать кого-то...', 1 => 'нежно целует [*%l*]'], 'kiss3' => [0 => 'кое-кого целует...', 1 => 'нежно целует [*%l*]'], 'kiss4' => [0 => 'кое-кого целует...', 1 => 'хочет уединиться с [*%l*] и целоваться...'], 'rose' => [0 => 'хочет кому-то подарить розу, но стесняется...', 1 => 'дарит [*%l*] ароматную розу...'], 'love' => [0 => 'думает только о любви...', 1 => 'думает, что [loginfrom] + [*%l*]= любовь!'], 'love2' => [0 => 'мечтает о свадьбе...', 1 => 'мечтает о свадьбе с [*%l*]'], 'confused' => [0 => 'в недоумении...', 1 => 'недоумевает от [*%l*]'], 'yes' => [0 => 'кивает в знак согласия', 1 => 'кивает [*%l*] в знак согласия'], 'no' => [0 => 'мотает головой в знак протеста', 1 => 'мотает головой [*%l*] в знак протеста'], 'shuffle' => [0 => 'в смущении от таких обстоятельств', 1 => 'в смущении от [*%l*]'], 'nono' => [0 => 'выражает категорическое несогласие!', 1 => 'выражает категорическое несогласение с [*%l*]'], 'maniac' => [0 => 'знает точно наперед - сегодня кто-нибудь умрет...', 1 => 'считает, что [*%l*] пора бы уже стать жертвой маньяка...'], 'privet' => [0 => 'почтительно приветствует окружающих', 1 => 'почтительно приветствует [*%l*]'], 'ok' => [0 => 'считает, что это замечательная идея', 1 => 'считает, что [*%l*] движется в правильном направлении'], 'ninja' => [0 => 'угрожает окружающим тайным мастерством!', 1 => 'угрожает [*%l*] мастерством древних'], 'pif' => [0 => 'ищет подходящую мишень', 1 => 'думает, что сложно промахнуться по [*%l*]'], 'smash' => [0 => 'собирается крушить и ломать', 1 => 'хочет сломать пару-тройку костей у [*%l*]'], 'alien' => [0 => 'считает, что мир захватили мутанты!', 1 => ' считает, что [*%l*] еще тот мутант!'], 'pirate' => [0 => 'подумывает, кого бы ограбить!...', 1 => 'считает, что лучшей жертвы чем [*%l*], не найти!'], 'gun' => [0 => 'хочет повысить кое-кому уровень железа в организме... :gun:', 1 => 'считает, что у [*%l*] маловато железа в организме! :gun:'], 'trup' => [0 => 'падает замертво', 1 => 'считает, что [*%l*], живет слишком долго, и пора бы это исправить!'], 'mdr' => [0 => 'считает, что у него есть отличный способ решения разногласий... :mdr:', 1 => 'предлагает [*%l*] культурно отдохнуть :mdr:'], 'sneeze' => [0 => 'громко чихает', 1 => 'чихает на [*%l*], обрызгивая его слюнями с ног до головы!'], 'mad' => [0 => 'просто в бешенстве!!!', 1 => 'в бешенстве от [*%l*]!!!'], 'friday' => [0 => 'культурно отдыхает...', 1 => 'предлагает [*%l*] культурно отдохнуть'], 'cry' => [0 => 'безудержно рыдает', 1 => 'рыдает на плече у [*%l*]'], 'grust' => [0 => 'грустит...', 1 => 'грустит о [*%l*]'], 'rupor' => [0 => 'пытается докричаться до окружающих', 1 => 'пытается докричаться до [*%l*]'], 'fie' => [0 => 'умоляет: НЕТ, только не ЭТО!!!', 1 => 'умоляет [*%l*] о пощаде!'], 'nnn' => [0 => 'ничего не видит, не слышит, и никому не скажет...', 1 => 'ничего не видел, не слышал и не помнит о [*%l*]'], 'row' => [0 => 'находится в бешенстве и ищет с кем бы пообщаться...', 1 => 'собирается выяснить отношения с [*%l*]'], 'red' => [0 => 'смущаясь краснеет...', 1 => 'краснеет от [*%l*]'], 'lick' => [0 => 'облизнулся, в предвкушении', 1 => 'облизывается при виде [*%l*]'], 'help' => [0 => 'нуждается в срочной помощи!', 1 => 'просит помощи у [*%l*]'], 'wink' => [0 => 'подмигивает окружающим', 1 => 'подмигивает [*%l*]'], 'jeer' => [0 => 'посмеивается над ситуацией...', 1 => 'посмеивается над [*%l*]'], 'tease' => [0 => 'дразнится', 1 => 'дразнит [*%l*]'], 'nunu' => [0 => 'недоволен окружающими...', 1 => 'недоволен [*%l*]'], 'inv' => [0 => 'хочет найти свои зубы...', 1 => 'жалуется [*%l*] на трудности жизни инвалида...'], 'duel' => [0 => 'собирается проткнуть кое-кого...', 1 => 'вызывает [*%l*] на дуэль!'], 'susel' => [0 => 'Напевая: "эээххх ухнеееемм, да ещеее ууухнеем.." высматривает в толпе подходящий пондер...', 1 => 'предлагает [*%l*] отхватить прямо по пондеру!'], 'nun' => [0 => 'угрожает окружающим палочками для риса', 1 => 'показывает [*%l*] как надо пользоваться палочками для риса'], 'kruger' => [0 => 'ненавязчиво объясняет окружающим кого тут надо бояться :kruger:', 1 => 'демонстрирует [*%l*] нестриженные когти'], 'flowers' => [0 => 'учится выхватывать букет Ромашек-21 из-за спины одним движением', 1 => 'целует [*%l*] и дарит букет ромашек'], 'horse' => [0 => 'патрулирует границы Бойцовского Клуба', 1 => 'предлагает [*%l*] порубать всех врагов в капусту! :horse:'], 'hug' => [0 => 'готов обнять всех в комнате!', 1 => 'крепко обнимает [*%l*]'], 'str' => [0 => 'в ужасе покрывается ледяным потом!', 1 => 'в ужасе прячется от [*%l*]'], 'alch' => [0 => 'напоминает окружающим о вечных ценностях :alch:', 1 => 'предлагает [*%l*] приобщиться к вечным ценностям :alch:'], 'pal' => [0 => ' напоминает, что из под робы выпирает крест, а не что-то там! :-)', 1 => 'требует от [*%l*] предъявить документы в развернутом виде!'], 'mag' => [0 => 'читает заклинания. Вслух. По слогам.', 1 => 'произносит страшное колдунство на [*%l*]'], 'sniper' => [0 => 'изображает из себя Вильгельма Теля', 1 => 'предлагает [*%l*] поиграть в Вильгельма Теля'], 'fuck' => [0 => 'повторяет позы камасутры', 1 => 'предлагает [*%l*] повторить позы камасутры вместе'], 'rotate' => [0 => 'катается от смеха по полу', 1 => 'катается по полу от смеха над [*%l*]']]; public function expworld($txt, $vl) { diff --git a/_incl_data/class/ComissionShop.php b/_incl_data/class/ComissionShop.php new file mode 100644 index 00000000..ac23704c --- /dev/null +++ b/_incl_data/class/ComissionShop.php @@ -0,0 +1,575 @@ + unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string( + $typeOtdel + ) . '" and `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" GROUP BY `items_users`.`inGroup`, `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup > 0 +UNION ALL SELECT `items_users`.`id`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp`, count(`items_users`.`id`) as inGroupCount +FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) +WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string( + $typeOtdel + ) . '" and `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" GROUP BY `items_users`.`uid`, `items_users`.`1price` HAVING `items_users`.inGroup = 0 +ORDER BY `1price`ASC , inGroupCount DESC' + ); + } else { + $cl = mysql_query( + 'SELECT `items_users`.`id`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp` FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string( + $typeOtdel + ) . '" GROUP BY `items_users`.`item_id` ORDER BY `items_main`.`id` DESC' + ); + } + } else { + if ($preview == "full") { + $cl = mysql_query( + 'SELECT +`items_users`.`id` as id, `items_users`.`id` AS `idu`,`items_users`.`item_id` as item_id,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`, +`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`, +`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`, +`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`, +`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id` as item_id,`items_main`.`name`, +`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`, +`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`, +`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`, +`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`, +`items_main`.`lvl_aexp` , count(`items_users`.`id`) as inGroupCount +FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) +WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" +AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30" +GROUP BY `items_users`.`inGroup`, `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup > 0 +UNION ALL +SELECT `items_users`.`id` as id, `items_users`.`id` AS `idu`,`items_users`.`item_id` as item_id,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`, +`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`, +`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`, +`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`, +`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id` as item_id,`items_main`.`name`, +`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`, +`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`, +`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`, +`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`, +`items_main`.`lvl_aexp`, count(`items_users`.`id`) as inGroupCount +FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) +WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" +AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30" +GROUP BY `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup = 0 +ORDER BY `1price`ASC , inGroupCount DESC' + ); + } else { + $cl = mysql_query( + 'SELECT `items_users`.`id`, `items_users`.`id` AS `idu`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp` FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30" GROUP BY `items_users`.`item_id` ORDER BY `items_main`.`id` DESC' + ); + } + } + $cr = 'c8c8c8'; + $i = 0; + $steckCikl = 1; + while ($pl = mysql_fetch_array($cl)) { + // количетсво одинаковых предметов в комке + if ($preview == "preview") { + $steck = ['--', '--', '--', '--']; + } + if ($cr == 'd4d4d4') { + $cr = 'c8c8c8'; + } else { + $cr = 'd4d4d4'; + } + if ($preview == "preview" && ($steck[0] > 1 && $steck[0] > $steckCikl)) { + ++$steckCikl; + } else { + $steckCikl = 1; + $d = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $pl['item_id'] . '" LIMIT 1' + ) + ); + if ($steck[0] > 1 && $preview == "preview") { + $po = $this->lookStats($d['data']); + } else { + $po = $this->lookStats($pl['data']); + } + if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) { + //Зоны блока + + if ($pl['inOdet'] != 14) { + $po['zonb']++; + } + } + $is2 = ''; + $is1 = '
'; + if ($preview == "full") { + $is1 .= 'купить '; + } elseif ($preview == "preview") { + $is1 .= 'Просмотреть '; + } + //название + + $col = $this->itemsX($pl[0]); + if ($col > 1 && $pl['inGroup'] != 0 && $pl['inGroupCount'] > 1) { + $pl['kolvo'] = $col; + $pl['name'] .= ' (x' . $col . ')'; + } + $is2 .= '' . $pl['name'] . '    '; + if ($pl['massa'] > 0 && $preview == "full") { + $is2 .= '(Масса: ' . round($pl['massa'], 2) . ')'; + if ($pl['gift'] != '') { + $ttl = ''; + if ($pl['gift'] == 1) { + $ttl = 'Вы не можете передать этот предмет кому-либо'; + } else { + $ttl = 'Этот предмет подарил ' . $pl['gift'] . '. Вы не сможете передать этот предмет кому-либо еще'; + } + $is2 .= ' '; + } + if (isset($po['art'])) { + $is2 .= ' '; + } + if (isset($po['sudba'])) { + if ($po['sudba'] == '0') { + $is2 .= ' '; + } elseif ($po['sudba'] == '1') { + $is2 .= ' '; + } else { + $is2 .= ' '; + } + } + } + //цена + $is2 .= '
Цена: '; + if ($steck[0] > 1 && $preview == "preview") { + $is2 .= $steck[3] . '-' . $steck[4] . ' кр. '; + } else { + $is2 .= $pl['1price'] . ' кр. '; + } + if ($pl['pricerep'] > 0) { + $is2 .= ' (' . round($pl['pricerep'], 2) . ' Воинственности)'; + } + + //долговечность + if ($pl['iznosMAX'] > 0) { + $izcol = ''; + if (floor($pl['iznosNOW']) >= (floor($pl['iznosMAX']) - ceil($pl['iznosMAX']) / 100 * 20)) { + $izcol = 'brown'; + } + } + if ($preview == "preview") { + $is2 .= '
Долговечность: ' . floor($steck[1]) . '/' . ceil( + $steck[2] + ) . ''; + } else { + if ($pl['iznosMAXi'] == 999999999) { + $is2 .= '
Долговечность: неразрушимо'; + } else { + $is2 .= '
Долговечность: ' . floor( + $pl['iznosNOW'] + ) . '/' . ceil($pl['iznosMAX']) . ''; + } + } + //Срок годности предмета + + if ($po['srok'] > 0) { + $pl['srok'] = $po['srok']; + } + if ($pl['srok'] > 0 and $preview != "preview") { + if ($pl['time_create'] + $pl['srok'] < time()) { + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (испорчен)'; + } else { + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']) . ' (до ' . date( + 'd.m.Y H:i', $pl['time_create'] + $pl['srok'] + ) . ')'; + } + } elseif ($pl['srok'] > 0) { + $is2 .= '
Срок годности: ' . $this->timeOut($pl['srok']); + } + if ($pl['magic_chance'] > 0) { + $is2 .= '
Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%'; + } + + //Продолжительность действия магии: + if ((int)$pl['magic_inci'] > 0) { + $efi = mysql_fetch_array( + mysql_query( + 'SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . ((int)$pl['magic_inci']) . '" LIMIT 1' + ) + ); + if (isset($efi['id2']) && $efi['actionTime'] > 0) { + $is2 .= '
Продолжительность действия: ' . $this->timeOut($efi['actionTime']); + } + } + if ($preview == "full" || $preview == "preview") { + //Требуется минимальное: + $tr = ''; + $t = $this->items['tr']; + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($po['tr_' . $n]) && $po['tr_' . $n] != 0) { + if ($po['tr_' . $n] > $this->stats[$n]) { + if ($n == 'rep') { + $temp = explode('::', $po['tr_' . $n]); + if ($this->rep['rep' . $temp[1]] < $temp[0]) { + $tr .= ''; + $notr++; + } + unset($temp); + } elseif ($n != 'align' || floor($this->info['align']) != $po['tr_' . $n]) { + $tr .= ''; + $notr++; + } + } + $tr .= '
• '; + if ($n == 'rep') { + $temp = explode('::', $po['tr_' . $n]); + $tr .= $this->is[$n] . ' ' . ucfirst( + str_replace('city', ' city', $temp[1]) + ) . ': ' . $temp[0]; + unset($temp); + } elseif ($n != 'align') { + if ($n == 'sex') { + if ($po['tr_' . $n] == 1) { + $tr .= $this->is[$n] . ': Женский'; + } else { + $tr .= $this->is[$n] . ': Мужской'; + } + } else { + $tr .= $this->is[$n] . ': ' . $po['tr_' . $n]; + } + } else { + $tr .= $this->is[$n] . ': ' . $this->align_nm[$po['tr_' . $n]]; + } + if ($po['tr_' . $n] > $this->stats[$n]) { + if ($n != 'align' || floor($this->info['align']) != $po['tr_' . $n]) { + $tr .= '
'; + } + } + } + $x++; + } + + if ($tr != '') { + $is2 .= '
Требуется минимальное:' . $tr; + } + //Действует на: + $tr = ''; + $t = $this->items['add']; + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($po['add_' . $n], $this->is[$n])) { + $z = '+'; + if ($po['add_' . $n] < 0) { + $z = ''; + } + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; + } + $x++; + } + //действует на (броня) + $i = 1; + $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; + while ($i <= 4) { + if (isset($po['add_mab' . $i])) { + if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) { + $z = '+'; + if ($po['add_mab' . $i] < 0) { + $z = ''; + } + $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; + } else { + $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i] . ' (' . $this->bronFx( + [$po['add_mib' . $i], $po['add_mab' . $i]] + ) . ')'; + } + } + $i++; + } + if ($tr != '') { + $is2 .= '
Действует на:' . $tr; + } + //Свойства предмета: + $tr = ''; + $t = $this->items['sv']; + if (isset($po['sv_yron_min'], $po['sv_yron_max'])) { + $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; + } + $x = 0; + while ($x < count($t)) { + $n = $t[$x]; + if (isset($po['sv_' . $n])) { + $z = '+'; + if ($po['sv_' . $n] < 0) { + $z = ''; + } + $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; + } + $x++; + } + if ($pl['2too'] == 1) { + $tr .= '
• Второе оружие'; + } + if ($pl['2h'] == 1) { + $tr .= '
• Двуручное оружие'; + } + if (isset($po['zonb'])) { + $tr .= '
• Зоны блокирования: '; + if ($po['zonb'] > 0) { + $x = 1; + while ($x <= $po['zonb']) { + $tr .= '+'; + $x++; + } + } else { + $tr .= '—'; + } + } + + if ($tr != '') { + $is2 .= '
Свойства предмета:' . $tr; + } + + $tr = ''; + + if (isset($po['imposed']) && $po['imposed'] > 0) { + if ($po['imposed_lvl'] == 0) { + $rnc = 'maroon'; + } elseif ($po['imposed_lvl'] == 1) { + $rnc = '#624542'; + } elseif ($po['imposed_lvl'] == 2) { + $rnc = '#77090b'; + } elseif ($po['imposed_lvl'] == 3) { + $rnc = '#d99800'; + } else { + $rnc = '#282828'; + } + $po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']); + $tr .= '
Наложены заклятия: ' . $po['imposed_name'] . ' '; + unset($rnc); + } + if ($tr != '') { + $is2 .= '
Улучшения предмета:'; + $is2 .= $tr; + } + + if ($notr == 0) { + $d[0] = 1; + if ($pl['magic_inc'] != '') { + $d[2] = 1; + } + } + if (isset($po['free_stats']) && $po['free_stats'] > 0) { + $is2 .= '
Распределение статов:'; + $is2 .= '• Возможных распределений: ' . $po['free_stats'] . ''; + } + if (floor($pl['iznosNOW']) >= ceil($pl['iznosMAX'])) { + $d[0] = 0; + $d[2] = 0; + } + if (isset($po['complect']) || isset($po['complect2'])) { + $is2 .= '
Дополнительная информация:'; + } + if (isset($po['complect'])) { + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + $spc = mysql_query( + 'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect'] . '" ORDER BY `x` ASC LIMIT 20' + ); + while ($plc = mysql_fetch_array($spc)) { + $com1['name'] = $plc['name']; + $com1['text'] .= '    • ' . $plc['x'] . ': '; + //действие комплекта + $i1c = 0; + $i2c = 0; + $i1e = $this->lookStats($plc['data']); + while ($i1c < count($this->items['add'])) { + if (isset($i1e[$this->items['add'][$i1c]])) { + $i3c = $i1e[$this->items['add'][$i1c]]; + if ($i3c > 0) { + $i3c = '+' . $i3c; + } + if ($i2c > 0) { + $com1['text'] .= '    ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + } else { + $com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + } + $com1['text'] .= '
'; + $i2c++; + } + $i1c++; + } + unset($i1c, $i2c, $i3c); + $com1['x']++; + } + $is2 .= '
• Часть комплекта: ' . $com1['name'] . '
'; + $is2 .= $com1['text']; + $is2 .= ''; + } + if (isset($po['complect2'])) { + //не отображается + $com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => '']; + $spc = mysql_query( + 'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect2'] . '" ORDER BY `x` ASC LIMIT 20' + ); + while ($plc = mysql_fetch_array($spc)) { + $com1['name'] = $plc['name']; + $com1['text'] .= '    • ' . $plc['x'] . ': '; + //действие комплекта + $i1c = 0; + $i2c = 0; + $i1e = $this->lookStats($plc['data']); + while ($i1c < count($this->items['add'])) { + if (isset($i1e[$this->items['add'][$i1c]])) { + $i3c = $i1e[$this->items['add'][$i1c]]; + if ($i3c > 0) { + $i3c = '+' . $i3c; + } + if ($i2c > 0) { + $com1['text'] .= '    ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + } else { + $com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + } + $com1['text'] .= '
'; + $i2c++; + } + $i1c++; + } + unset($i1c, $i2c, $i3c); + $com1['x']++; + } + $is2 .= '
• Часть комплекта (подгонка): ' . $com1['name'] . '
'; + $is2 .= $com1['text']; + $is2 .= ''; + } + + $is2 .= ''; + if (isset($po['gravi'])) { + $is2 .= '
На поверхности выгравирована надпись: ' . $po['gravi'] . ''; + } + if ($pl['info'] != '') { + $is2 .= '
Рекомендации:
' . $pl['info'] . '
'; + } + if ($po['info'] != '') { + $is2 .= '
' . $po['info'] . '
'; + } + if ($pl['max_text'] - $pl['use_text'] > 0) { + $is2 .= '
Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '
'; + } + if (isset($po['noremont'])) { + $is2 .= '
Предмет не подлежит ремонту
'; + } + if (isset($po['nosale'])) { + $is2 .= '
Предмет нельзя продать
'; + } + if (isset($po['nomodif'])) { + $is2 .= '
Предмет нельзя улучшать
'; + } + if (isset($po['nodelete'])) { + $is2 .= '
Предмет нельзя выбросить
'; + } + if (isset($po['frompisher']) && $po['frompisher'] > 0) { + $is2 .= '
Предмет из подземелья
'; + } + if (isset($po['sleep_moroz']) && $po['sleep_moroz'] > 0) { + $is2 .= '
Предмет не портится во время сна
'; + } + if (isset($po['fromlaba']) && $po['fromlaba'] > 0) { + $is2 .= '
Предмет из лабиринта
'; + } + if (isset($po['vip_sale']) && $po['vip_sale'] > 0) { + $is2 .= '
Предмет куплен за 10% от стоимости
'; + } + if ($pl['dn_delete'] > 0) { + $is2 .= '
Предмет будет удален при выходе из подземелья
'; + } + if ($this->pokol > $pl['geni']) { + $is2 .= '
Предмет устарел
'; + } + if (isset($po['zazuby']) && $po['zazuby'] > 0) { + $is2 .= '
Предмет куплен за зубы
'; + } + $is2 .= '
'; + } + if ($preview == "preview") { + $kolvoprint = "Количество: $steck[0] шт."; + } + echo '' . $is1 . '' . $kolvoprint . $is2 . ''; + $i++; + } + } + if ($i == 0) { + echo 'Прилавок магазина пуст'; + } + } +} \ No newline at end of file diff --git a/_incl_data/class/Core/Config.php b/_incl_data/class/Core/Config.php index 5398d91b..513655bb 100644 --- a/_incl_data/class/Core/Config.php +++ b/_incl_data/class/Core/Config.php @@ -8,10 +8,8 @@ class Config private function __construct() { error_reporting(E_ALL ^ E_NOTICE); - setlocale(LC_CTYPE, "ru_RU.CP1251"); ini_set('display_errors', 'Off'); - ini_set('default_charset', 'windows-1251'); ini_set('date.timezone', 'Europe/Moscow'); header('Cache-Control: no-cache, no-store, must-revalidate'); @@ -22,16 +20,16 @@ class Config public static function get(?string $key = null) { $c['ver'] = '1.8.3.7'; - /* */ - $c['name'] = ' '; - $c['title'] = ' ' . $c['name'] . ' - , '; // - $c['title2'] = ' - , !'; + /* Конфигурации игры */ + $c['name'] = 'Бойцовский Клуб'; + $c['title'] = 'Новый «' . $c['name'] . '» - Бесплатная,браузерная онлайн игра'; //Название игры + $c['title2'] = ' - Бесплатная, онлайн игра посвященная сражениям и магии!'; $c['title3'] = $c['name']; - $c['keys'] = $c['name'] . ', combats.com, ' . $c['name'] . ' , ' . $c['name'] . ' , ' . $c['name'] . ', ' . $c['name'] . ', ' . $c['name'] . ' , ' . $c['name'] . ' , ' . $c['name'] . ', , , , , , , ' . $c['name'] . ', , combats, , combats ru, combats com, OldBK, oldbk ru, oldbk com, , old bk, , mycombats, rebk, recombats, oldcombats, obk2'; // META - $c['desc'] = '' . $c['name'] . ' 2004-2009, . ' . $c['name'] . ' 2004-2009, , , .'; // META - $c['footer'] = $c['name'] . ' 2013-' . date('Y'); + $c['keys'] = $c['name'] . ', combats.com, ' . $c['name'] . ' игра, ' . $c['name'] . ' играть, игра ' . $c['name'] . ', старый ' . $c['name'] . ', ' . $c['name'] . ' онлайн игра, ' . $c['name'] . ' браузерная игра, играть в ' . $c['name'] . ', игра бк, бк игра, старый бк, играть в бк, бк онлайн игра, новый бк, Легендарный ' . $c['name'] . ', легендарный бк, combats, комбатс, combats ru, combats com, OldBK, oldbk ru, oldbk com, олдбк, old bk, олд бк, mycombats, rebk, recombats, oldcombats, obk2'; //Ключевые слова META + $c['desc'] = '«' . $c['name'] . '» – это бесплатная увлекательная браузерная онлайн игра 2004-2009г, в которой сконцентрировано все самое лучшее от современных онлайн игр. В этой браузерной игре заложены самые интересные традиции всем известной онлайн игры под названием «' . $c['name'] . ' 2004-2009», которая, кстати, стала первооткрывателем всех браузерных игр.'; //Описание META + $c['footer'] = $c['name'] . ' © 2013-' . date('Y'); - // + //Сервера $c['host'] = 'new-combats.com'; $c['forum'] = 'forum.' . $c['host']; $c['img'] = 'img.' . $c['host']; @@ -43,52 +41,52 @@ class Config $c['support'] = 'support@' . $c['host']; - // + //Валюта $c['curency_name'] = 'RUB'; $c['curency_value'] = 30; - // - $c['bot_level'] = 0; // () - $c['propsk_die'] = 0; // , 0 - . , >= 1 - + //Бот клон + $c['bot_level'] = 0; // до какого лвл бот (включительно) + $c['propsk_die'] = 0; //Смерть при пропуске ходов, 0 - выкл. , >= 1 - количество пропусков до смерти при нападении - // - $c['exp'] = 0; // - $c['shop_type1'] = 100; // - $c['shop_type2'] = 90; // - $c['shop_all'] = 0; // ! , 0 - . - $c['shop_all_type1'] = 100; // ! , 0 - . - $c['shop_all_type2'] = 100; // ! , 0 - . + //Скупка + $c['exp'] = 0; //бонус опыта + $c['shop_type1'] = 100; //в гос НЕ ТРОГАТЬ + $c['shop_type2'] = 90; //в березку НЕ ТРОГАТЬ + $c['shop_all'] = 0; //Скупка на все! , 0 - сделать для отключения скупки. + $c['shop_all_type1'] = 100; //Скупка только с госе! , 0 - сделать для отключения скупки. + $c['shop_all_type2'] = 100; //Скупка только с березки! , 0 - сделать для отключения скупки. // - $c['nosanich'] = true; // - true , - false - $c['zuby'] = false; // - $c['limitedexp'] = false; // - $c['infinity5level'] = false; // 5 - $c['expstop'] = 2999999; //9; // 11 149999999 - $c['expstopu'] = 2999999; // - $c['noobgade'] = false; // () - $c['bonusonline'] = true; // - $c['level_ransfer'] = 8; // - $c['znahar'] = true; // - $c['nolevel'] = false; // - $c['noitembuy'] = false; // - $c['effz'] = 0; // - $c['money_haot'] = true; // - $c['crtoecr'] = 500; // ( 0, ) - $c['ecrtocr'] = 200; // - $c['bonuslevel'] = true; // - $c['bonussocial'] = false; // + $c['nosanich'] = true; //Странички Саныча не выпадают - true , выпадают - false + $c['zuby'] = false; //зубы + $c['limitedexp'] = false; //лимит опыта + $c['infinity5level'] = false; //вечные 5 уровни + $c['expstop'] = 2999999; //9; //Опыт на котором останавливаемся 11 149999999 + $c['expstopu'] = 2999999; //Опыт на котором останавливаемся + $c['noobgade'] = false; //нуб квест (пещера) + $c['bonusonline'] = true; //бонус за онлайн + $c['level_ransfer'] = 8; //С какого уровня разрешены передачи + $c['znahar'] = true; //бесплатный знахарь + $c['nolevel'] = false; //лимитирование уровней + $c['noitembuy'] = false; //Не требует ресурсы для покупки + $c['effz'] = 0; //Скольким секундам равен заряд + $c['money_haot'] = true; //кр за хаоты + $c['crtoecr'] = 500; //Курс обмена кр на екр (если 0, то выключено) + $c['ecrtocr'] = 200; //Курс обмена екр на кр + $c['bonuslevel'] = true; //Бонус уровня + $c['bonussocial'] = false; //Бонус социальный $c['w'] = date('w'); $c['m'] = date('m'); $c['counters'] = ''; $c['counters_noFrm'] = ''; - $c['securetime'] = 0; // ( ) + $c['securetime'] = 0; //Время последнего возможного взлома персов (подбор пароля по базам данных других игр) - $c['copyright'] = 'Copyright ' . date('Y') . ' '; - $c['db_user'] = 'newcom1_abk'; - $c['db_name'] = 'newcom1_abk'; - $c['db_password'] = '4nWYsIM[c?}P'; + $c['copyright'] = 'Copyright © ' . date('Y') . ' « Новый Бойцовский Клуб »'; + $c['db_user'] = 'prod1'; + $c['db_name'] = 'game_production'; + $c['db_password'] = 'Bz@fGaZjFU2206Ua'; return $c[$key] ?? $c; } diff --git a/_incl_data/class/Core/Database.php b/_incl_data/class/Core/Database.php index 83336163..b40f228d 100644 --- a/_incl_data/class/Core/Database.php +++ b/_incl_data/class/Core/Database.php @@ -14,7 +14,7 @@ class Database */ private function __construct() { mysql_select_db(Config::get('db_name'), mysql_connect('localhost', Config::get('db_user'), Config::get('db_password'))); - mysql_query('SET NAMES cp1251'); + mysql_query('SET NAMES utf8mb4'); } /** @@ -42,7 +42,7 @@ class Database [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES cp1251", + PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4", PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ] diff --git a/_incl_data/class/Core/Mail.php b/_incl_data/class/Core/Mail.php index 3683a255..8688382d 100644 --- a/_incl_data/class/Core/Mail.php +++ b/_incl_data/class/Core/Mail.php @@ -6,11 +6,9 @@ use PHPMailer; class Mail { - public static function send($to, $message, $subject = ' ') + public static function send($to, $message, $subject = 'Бойцовский клуб') { require dirname(__DIR__) . '/mail/class.phpmailer.php'; - $message = mb_convert_encoding($message, 'UTF-8', 'CP1251'); - $subject = mb_convert_encoding($subject, 'UTF-8', 'CP1251'); $mail = new PHPMailer; $mail->IsSMTP(); // Set mailer to use SMTP @@ -23,7 +21,7 @@ class Mail $mail->CharSet = 'UTF-8'; $mail->From = 'newcombats@yahoo.com'; - $mail->FromName = mb_convert_encoding(' ', 'UTF-8', 'CP1251'); + $mail->FromName = 'Бойцовский Клуб'; $mail->AddAddress($to); // Add a recipient $mail->IsHTML(true); // Set email format to HTML diff --git a/_incl_data/class/DarksLight2/Training/StepFactory.php b/_incl_data/class/DarksLight2/Training/StepFactory.php new file mode 100644 index 00000000..992eca25 --- /dev/null +++ b/_incl_data/class/DarksLight2/Training/StepFactory.php @@ -0,0 +1,13 @@ +user_id = $user_id; + + } + + /** + * @param StepFactory[] $steps + * + * @return void + * @throws \DarksLight2\Training\TrainingException + */ + public function register(array $steps) + { + if (!empty($this->steps)) { + throw TrainingException::alreadyRegistered(); + } + + foreach ($steps as $step) { + if($step instanceof StepFactory) { + $this->steps[$step->getShortName()] = new class ( + $step->getMessage(), + $step->getTitle(), + $step->getRewards(), + $this->stepData($step->getShortName())->complete, + $step->getShortName(), + $this->stepData($step->getShortName())->progress + ) { + public string $message; + public string $title; + public string $short_name; + public array $rewards; + public bool $isComplete; + + public stdClass $progress; + + public function __construct( + string $message, + string $title, + array $rewards, + bool $isComplete, + string $short_name, + stdClass $progress + ) { + $this->rewards = $rewards; + $this->title = $title; + $this->isComplete = $isComplete; + $this->message = $message; + $this->short_name = $short_name; + $this->progress = $progress; + } + + public function render() + { + $path = $_SERVER['DOCUMENT_ROOT'] . '/modules_data/steps/' . $this->short_name . '.php'; + + if(file_exists($path)) { + require $path; + return; + } + + throw TrainingException::noRenderingFile(); + } + }; + } + } + } + + private function stepData(string $short_name): object + { + return json_decode($this->getDatabaseRecords()->data)->$short_name; + } + + private function getDatabaseRecords() + { + if(!$this->database_records) { + $this->database_records = Db::run('SELECT * FROM user_training WHERE user_id = ?', [$this->user_id]) + ->fetch(PDO::FETCH_OBJ); + } + + return $this->database_records; + } + + public function createDatabaseRecord() + { + if(!$this->getDatabaseRecords()) { + Db::run('INSERT INTO user_training (user_id, data) VALUES (?, ?)', [ + $this->user_id, + json_encode($this->firstRecordData()) + ]); + } + } + + private function firstRecordData(): array + { + return [ + 'first_step' => [ + 'complete' => 0, + 'progress' => [ + 'current' => 0, + 'need' => 0, + ] + ] + ]; + } + + public function __get(string $name) + { + return $this->steps[$name]; + } + + public function addPoint(string $short_name) + { + $this->$short_name->progress++; + } + + public function store() + { + + } +} \ No newline at end of file diff --git a/_incl_data/class/DarksLight2/Traits/Singleton.php b/_incl_data/class/DarksLight2/Traits/Singleton.php new file mode 100644 index 00000000..c6c21d23 --- /dev/null +++ b/_incl_data/class/DarksLight2/Traits/Singleton.php @@ -0,0 +1,17 @@ +info['id'] . '" LIMIT 1')); if (isset($ta['id'])) { @@ -44,7 +44,7 @@ class Dialog $i = 0; $x = explode('|', $ta['tr']); while ($i < count($x)) { - // + //Требования $k = explode('=', $x[$i]); if ($k[0] == 'data') { $date = explode('-', $k[1]); @@ -61,105 +61,105 @@ class Dialog } } elseif ($k[0] == 'diact') { - // + //Действия //user_id # all # all # lukaqst1 # -1 if ($this->quest_act($k[1]) == false) { $go1 = 'delete'; $i = count($x); } } elseif ($k[0] == 'quest_end') { - // + //Квест можно выполнять несколько раз в текущей пещере $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { $go1 = 0; - $txt .= '
- , ...'; + $txt .= '
Что-то не так, Вы уже взяли данное задание...'; $pg = $ta['page']; } } elseif ($k[0] == 'quest_only_one') { - // + //Квест можно выполнять только один раз $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { $go1 = 0; - $txt .= '
- , ...'; + $txt .= '
Что-то не так, Вы уже выполняли данное задание...'; $pg = $ta['page']; } } elseif ($k[0] == 'quest_now') { - // + //Квест должен быть взят $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { } else { $go1 = 0; - $txt .= '
- , ...'; + $txt .= '
Что-то не так, требуется взять задание...'; $pg = $ta['page']; } } elseif ($k[0] == 'tr_itm') { - // + //Квест требует предмет $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if ($qlst[0] < $k[2]) { $go1 = 0; $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); if (isset($itmqs['id'])) { - $txt .= '
"' . $itmqs['name'] . '" (x' . $k[2] . ').'; + $txt .= '
Требуется предмет "' . $itmqs['name'] . '" (x' . $k[2] . ').'; } $pg = $ta['page']; } } elseif ($k[0] == 'tr_itmodet') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (!isset($qlst['id'])) { $go1 = 0; $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); if (isset($itmqs['id'])) { - $txt .= '
"' . $itmqs['name'] . '".'; + $txt .= '
Требуется предмет "' . $itmqs['name'] . '".'; } $pg = $ta['page']; } } elseif ($k[0] == 'tr_noitmodet') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (isset($qlst['id'])) { $go1 = 0; $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); if (isset($itmqs['id'])) { - $txt .= '
"' . $itmqs['name'] . '".'; + $txt .= '
У вас уже есть требуемый предмет "' . $itmqs['name'] . '".'; } $pg = $ta['page']; } } elseif ($k[0] == 'tr_noitm') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (isset($qlst['id'])) { $go1 = 0; $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); if (isset($itmqs['id'])) { - $txt .= '
"' . $itmqs['name'] . '".'; + $txt .= '
У вас уже есть требуемый предмет "' . $itmqs['name'] . '".'; } $pg = $ta['page']; } } elseif ($k[0] == 'del_itm') { - // + //Квест удаляет предмет $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (isset($qlst['id'])) { $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $k[1] . '" LIMIT 1')); if (isset($itmqs['id'])) { if (mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1')) { - $txt .= '
"' . $itmqs['name'] . '"'; + $txt .= '
Вы отдали "' . $itmqs['name'] . '"'; } } $pg = $ta['page']; } } elseif ($k[0] == 'needRep') { - // . + // разговор требует репутации в пещере. $temp = explode(',', $k[1]); $needRep = ['city' => $temp[0], 'rep' => (int)$temp[1]]; - if (isset($needRep)) { # . + if (isset($needRep)) { # Проверяем репутацию. if ($u->rep['rep' . $needRep['city']] < $needRep['rep']) { $swapActStatus = 0; $go1 = 0; - $txt = ' , !'; + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; $pg = $ta['page']; } } @@ -174,14 +174,14 @@ class Dialog if (file_exists('_incl_data/class/quest/' . htmlspecialchars($act0[1]) . '.php')) { require_once('_incl_data/class/quest/' . htmlspecialchars($act0[1]) . '.php'); } else { - $txt .= '
NPS...'; + $txt .= '
Квест не найден в списках NPS...'; } $pg = $act[1]; } elseif ($act[0] == 'dialog_act_update') { $act33 = $this->dialog_act_update($act[2]); if ($act33[0] == false) { if ($act33[1] == '') { - $txt .= '
- ...'; + $txt .= '
Что-то пошло не так...'; } else { $txt .= '
' . $act33[1] . ''; } @@ -190,7 +190,7 @@ class Dialog } $pg = $act[1]; } elseif ($act[0] == 'quest_act') { - $txt .= '
.'; + $txt .= '
Вы получили новое задание.'; mysql_query('INSERT INTO `dialog_act` ( `uid`,`city`,`time`,`var`,`val`,`btl_bot`,`itms`,`now`,`max`,`info` ) VALUES ( @@ -199,31 +199,31 @@ class Dialog )'); $pg = $act1[2]; if ($act1[8] != 0) { - // + //Выдаем предмет для квеста $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $act1[8] . '" LIMIT 1')); if (isset($itmb['id'])) { $u->addItem($act1[8], $u->info['id'], '|nodelete=1'); - $txt .= '
"' . $itmb['name'] . '"'; + $txt .= '
Вы получили предмет "' . $itmb['name'] . '"'; } } } elseif ($act[0] == 'buyitm') { $itmb = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $act1[0] . '" LIMIT 1')); if (isset($itmb['id'])) { if ($u->info['money'] < $act1[1]) { - $txt .= '
"' . $itmb['name'] . '", ' . $act1[1] . ' .'; + $txt .= '
Вам не хватает денег для покупки "' . $itmb['name'] . '", требуется ' . $act1[1] . ' кр.'; } else { $act1dt = ''; - $txt .= '
"' . $itmb['name'] . '"'; + $txt .= '
Вы успешно приобрели "' . $itmb['name'] . '"'; if ($act1[1] > 0) { - $txt .= ' ' . $act1[1] . ' .'; + $txt .= ' за ' . $act1[1] . ' кр.'; $u->info['money'] -= $act1[1]; mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } if ($act1[2] > 0) { - $txt .= ' ' . $act1[2] . ' .'; + $txt .= ' за ' . $act1[2] . ' екр.'; } if ($act1[3] > 0) { - $txt .= ' ' . $u->timeOut($act1[3]) . ''; + $txt .= ' на срок ' . $u->timeOut($act1[3]) . ''; $act1dt .= '|srok=' . $act1[3] . ''; } $txt .= ''; @@ -232,16 +232,16 @@ class Dialog $pg = $act1[4]; } } else { - $txt .= '
...'; + $txt .= '
Неудалось приобрести предмет...'; $pg = 1; } } elseif ($act1[0] == 'quest') { $pg = $act1[1]; $act2 = explode('=', $act[1]); if ($act2[0] > 0 && $q->testGood($act2[0]) == 1) { - // + //выдаем квест if ($act2[1] != '0') { - // + //Выдача предмета $ic1 = 0; $act21 = explode(',', $act2[1]); while ($ic1 < count($act21)) { @@ -249,11 +249,11 @@ class Dialog $itmqs = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $act3[0] . '" LIMIT 1')); if (isset($itmqs['id'])) { if ($act3[2] > 1) { - // - $txt .= '
"' . $itmqs['name'] . '" (x' . $act3[2] . ' .).'; + //несколько + $txt .= '
Вы получили предмет "' . $itmqs['name'] . '" (x' . $act3[2] . ' шт.).'; } else { - // - $txt .= '
"' . $itmqs['name'] . '".'; + //один + $txt .= '
Вы получили квестовый предмет "' . $itmqs['name'] . '".'; } $ic2 = 1; while ($ic2 <= $act3[2]) { @@ -268,12 +268,12 @@ class Dialog $txt .= '
' . $u->error . '.'; $u->error = ''; } else { - $txt .= '
, ...'; + $txt .= '
Не удалось получить задание, не соответствуют условия получения...'; } } elseif ($act[0] == 'go' && $go1 == 1) { $pg = $act[1]; } elseif ($act[0] == 'atackbot' && $go1 == 1) { - // + //Нападение на монстра if (round((int)$act[1]) > 0) { $btl_id = 0; //$expB = -77.77; @@ -299,7 +299,7 @@ class Dialog $btl_id = mysql_insert_id(); if ($btl_id > 0) { - // + //Добавляем ботов $k = $u->addNewbot(round((int)$act[1]), null, null, []); mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `x`="' . $u->info['x'] . '",`y`="' . $u->info['y'] . '",`team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); @@ -309,7 +309,7 @@ class Dialog } header('location: main.php'); } else { - echo ' - ...'; + echo 'Поединок почему-то не начался...'; } die(); } elseif ($act[0] == 'goroom' && $go1 == 1) { @@ -318,55 +318,55 @@ class Dialog header('location: main.php'); die(); } elseif ($act[0] == 'transfer2' && $go1 == 1) { - // + //Обменник тыквоголового $txt = ''; - $xtik = 0; // + $xtik = 0; //Требуется тыкв if ($act[1] == 1 && true == false) { - $txt .= ' 1...'; + $txt .= 'Обмен 1...'; $xtik = 10; $itik = 4465; } elseif ($act[1] == 2) { - $txt .= ' 2...'; + $txt .= 'Обмен 2...'; $xtik = 15; $itik = 2143; } elseif ($act[1] == 3) { - $txt .= ' 3...'; + $txt .= 'Обмен 3...'; $xtik = 15; $itik = 2144; } elseif ($act[1] == 4 && true == false) { - $txt .= ' 4...'; + $txt .= 'Обмен 4...'; $xtik = 6; - // + //арт воина $itik = -1; } elseif ($act[1] == 5 && true == false) { - $txt .= ' 5...'; + $txt .= 'Обмен 5...'; $xtik = 6; - // + //арт мага $itik = -2; } elseif ($act[1] == 6) { - $txt .= ' 6...'; + $txt .= 'Обмен 6...'; $xtik = 50; - // 1 + //значок 1 $itik = -3; } elseif ($act[1] == 7) { - $txt .= ' 7...'; + $txt .= 'Обмен 7...'; $xtik = 70; - // 2 + //значок 2 $itik = -4; } else { - $txt .= ' ...'; + $txt .= 'Тыквоголовый не меняет этот хлам...'; } - $txt = ' 3 '; + $txt = 'Обменник начнет свою работу 3 ноября'; $itms = []; $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); @@ -376,8 +376,8 @@ class Dialog $t = $this->trnObj($itms[4504], $xtik); if ($t[0] > 0) { - // $t[0] - , $cn[$i]['add'][0] - item_id - // + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты $gdtik = 1; @@ -386,14 +386,14 @@ class Dialog //echo 'UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4504" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT '.$t[0].''; if ($upd) { if ($itik > 0) { - // + //Выдаем предметы $u->addItem($itik, $u->info['id'], '|nosale=1|srok=' . (7 * 86400) . '', null, 1); $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itik . '" LIMIT 1')); - $txt = ' "' . $itm_nm['name'] . '"'; + $txt = 'Вы получили предмет "' . $itm_nm['name'] . '"'; } else { - //- + //Что-то уникальное if ($itik == -1) { - // + //Артефакт воин $arts_1 = []; $arts_lvl = $u->info['level']; if ($arts_lvl < 4) { @@ -411,9 +411,9 @@ class Dialog } $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $arts_1 . '" LIMIT 1')); - $txt = ' "' . $itm_nm['name'] . '" 12 .'; + $txt = 'Вы получили артефакт для воина "' . $itm_nm['name'] . '" на срок 12 часов.'; } elseif ($itik == -2) { - // + //Артефакт мага $arts_1 = []; $arts_lvl = $u->info['level']; if ($arts_lvl < 4) { @@ -431,43 +431,43 @@ class Dialog } $itm_nm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $arts_1 . '" LIMIT 1')); - $txt = ' "' . $itm_nm['name'] . '" 12 .'; + $txt = 'Вы получили артефакт для мага "' . $itm_nm['name'] . '" на срок 12 часов.'; } elseif ($itik == -3) { - // +1 + //Значок +1 mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . $u->info['id'] . '" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( "' . $u->info['id'] . '", "' . time() . '", - "`' . date('Y') . '
!", + "Хэллоуин`' . date('Y') . '
Обыкновенный собиратель тыкв!", "helloween_2014m1.gif", "' . (time() + 86400 * 365) . '", "add_m10=15|add_m11=15", "1", "1" )'); - $txt = ' "`' . date('Y') . ' "'; + $txt = 'Вы получили значок "Хэллоуин`' . date('Y') . ' Обыкновенный"'; } elseif ($itik == -4) { - // +5 + //Значок +5 mysql_query('DELETE FROM `users_ico` WHERE `uid` = "' . $u->info['id'] . '" AND (`img` = "helloween_2014m1.gif" OR `img` = "helloween_2014m2.gif")'); mysql_query('INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`bonus`,`type`,`x`) VALUES ( "' . $u->info['id'] . '", "' . time() . '", - "`' . date('Y') . '
!", + "Хэллоуин`' . date('Y') . '
Лучший собиратель тыкв!", "helloween_2014m2.gif", "' . (time() + 86400 * 365) . '", "add_m10=15|add_m11=15", "1", "1" )'); - $txt = ' "`' . date('Y') . ' "'; + $txt = 'Вы получили значок "Хэллоуин`' . date('Y') . ' Лучший"'; } } } } else { - $txt = ' ...'; + $txt = 'Неудалось совершить обмен...'; } } else { - $txt = ' ...'; + $txt = 'Недостаточно тыкв для обмена...'; } if ($txt != '') { @@ -475,31 +475,31 @@ class Dialog } $pg = 3; } elseif ($act[0] == 'transfer1' && $go1 == 1) { - // - // ... , ! + //Меняем гайки и прочий мусор из канализации на жетоны + //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! $pg = $act[1]; $itms = []; $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "1002" OR `item_id` = "1003" OR `item_id` = "1004" OR `item_id` = "1005" OR (`item_id` >= "1009" AND`item_id` <= "1014")) AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); while ($pl = mysql_fetch_array($sp)) { $itms[$pl['item_id']]++; } - // - $cn = [0 => 3, //- - 1 => [// - 1 => ['n' => '', 0 => 1002, 1 => 3, 7 => 9, 8 => 15], // - 2 => ['n' => '', 0 => 1003, 1 => 1, 7 => 3, 8 => 5], // - 3 => ['n' => '', 0 => 1005, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1006, 1 => ''] // , - ], // - 2 => [// - 1 => ['n' => ' ', 0 => 1009, 1 => 3, 7 => 9, 8 => 15], // - 2 => ['n' => ' ', 0 => 1010, 1 => 1, 7 => 3, 8 => 5], // - 3 => ['n' => ' ', 0 => 1011, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1007, 1 => ' '] // , - ], // - 3 => [// - 1 => ['n' => ' ', 0 => 1012, 1 => 3, 7 => 9, 8 => 15], // - 2 => ['n' => ' ', 0 => 1013, 1 => 1, 7 => 3, 8 => 5], // - 3 => ['n' => ' ', 0 => 1014, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1008, 1 => ' '] // , - ] // + //Предметы + $cn = [0 => 3, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Гайка', 0 => 1002, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Болт', 0 => 1003, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Вентиль', 0 => 1005, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1006, 1 => 'Жетон'] //предмет вознаграждения, бронзовый жетон + ], //бронза + 2 => [//гайка + 1 => ['n' => 'Чистая гайка', 0 => 1009, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Длинный Болт', 0 => 1010, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Чистый вентиль', 0 => 1011, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1007, 1 => 'Серебряный жетон'] //предмет вознаграждения, бронзовый жетон + ], //серебро + 3 => [//гайка + 1 => ['n' => 'Гайка с Резьбой', 0 => 1012, 1 => 3, 7 => 9, 8 => 15], //болт + 2 => ['n' => 'Нужный болт', 0 => 1013, 1 => 1, 7 => 3, 8 => 5], //вентиль + 3 => ['n' => 'Рабочий вентиль', 0 => 1014, 1 => (1 / 3), 7 => 1, 8 => 2], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон + ] //золото ]; $i = 1; @@ -510,8 +510,8 @@ class Dialog $t = $cn[$i][$j]; $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); if ($t[0] > 0) { - // $t[0] - , $cn[$i]['add'][0] - item_id - // + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); if ($upd) { $data = '|frompisher=' . $d->info['id2']; @@ -522,7 +522,7 @@ class Dialog } $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } } $j++; @@ -534,18 +534,18 @@ class Dialog $txt = '
' . $txt . ''; } } elseif ($act[0] == 'transfer3' && $go1 == 1) { - // ... , ! - // , 3 1 + //ИХ больше у тебя нету... Неси еще, Луке нужно больше ИХ! + //Серебро на золото, 3 к 1 $pg = $act[1]; $itms = []; $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1007" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); while ($pl = mysql_fetch_array($sp)) { $itms[$pl['item_id']]++; } - // - $cn = [0 => 1, //- - 1 => [// - 1 => ['n' => ' ', 0 => 1007, 1 => 3, 7 => 3, 8 => 3], 'add' => [0 => 1008, 1 => ' '] // , + //Предметы + $cn = [0 => 1, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Серебряный жетон', 0 => 1007, 1 => 3, 7 => 3, 8 => 3], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон ]]; $i = 1; @@ -556,8 +556,8 @@ class Dialog $t = $cn[$i][$j]; $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); if ($t[0] > 0) { - // $t[0] - , $cn[$i]['add'][0] - item_id - // + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); if ($upd) { $data = '|frompisher=' . $d->info['id2']; @@ -568,7 +568,7 @@ class Dialog } $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } } $j++; @@ -580,18 +580,18 @@ class Dialog $txt = '
' . $txt . ''; } } elseif ($act[0] == 'transfer4' && $go1 == 1) { - // ... , ! - // , 20 1 + //ИХ больше у тебя нету... Неси еще, мне нужно больше ИХ! + //Засоры к золоту, 20 к 1 $pg = $act[1]; $itms = []; $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "4728" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 250'); while ($pl = mysql_fetch_array($sp)) { $itms[$pl['item_id']]++; } - // - $cn = [0 => 1, //- - 1 => [// - 1 => ['n' => '', 0 => 4728, 1 => 20, 7 => 20, 8 => 20], 'add' => [0 => 1008, 1 => ' '] // , + //Предметы + $cn = [0 => 1, //кол-во классификаций + 1 => [//гайка + 1 => ['n' => 'Засоры', 0 => 4728, 1 => 20, 7 => 20, 8 => 20], 'add' => [0 => 1008, 1 => 'Золотой жетон'] //предмет вознаграждения, бронзовый жетон ]]; $i = 1; @@ -602,8 +602,8 @@ class Dialog $t = $cn[$i][$j]; $t = $this->trnObj($itms[$cn[$i][$j][0]], $this->objLevel($cn[$i][$j], $u->info['level'])); if ($t[0] > 0) { - // $t[0] - , $cn[$i]['add'][0] - item_id - // + // $t[0] - сколько предметов награды даем, $cn[$i]['add'][0] - item_id предмета награды + //удаляем ингридиенты $upd = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $cn[$i][$j][0] . '" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" LIMIT ' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ''); if ($upd) { $data = '|frompisher=' . $d->info['id2']; @@ -614,7 +614,7 @@ class Dialog } $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i]['add'][1] . ' x' . $t[0] . '
'; } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } } $j++; @@ -623,7 +623,7 @@ class Dialog } if ($txt == '') { - $txt = ' 20 .'; + $txt = 'Необходимо минимум 20 засоров для обмена.'; } if ($txt != '') { @@ -642,11 +642,11 @@ class Dialog mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr1['id'] . '" OR `id` = "' . $keypr2['id'] . '" LIMIT 2'); $data = '|frompisher=' . $d->info['id2']; $u->addItem(2555, $u->info['id'], $data); - $txt = ' " "'; + $txt = 'Вы успешно получили "Пирамидальный ключ"'; } if ($txt == '') { - $txt = ' ...'; + $txt = 'Необходимо принести два разных осколка...'; } if ($txt != '') { @@ -665,12 +665,12 @@ class Dialog $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); if (!isset($keypr['id'])) { $itms = []; - $txt = ' " ", ...'; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; } - // - $cn = [0 => 5, //- - 1 => [1 => ['n' => ' [0]', 0 => 2560, 8 => 3, 'add' => [2561, ' [1]']], 2 => ['n' => ' [0]', 0 => 2564, 8 => 3, 'add' => [2565, ' [1]']], 3 => ['n' => ' [0]', 0 => 2568, 8 => 3, 'add' => [2569, ' [1]']], 4 => ['n' => ' [0]', 0 => 2572, 8 => 3, 'add' => [2573, ' [1]']], 5 => ['n' => ' [0]', 0 => 2576, 8 => 3, 'add' => [2577, ' [1]']]]]; + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [0]', 0 => 2560, 8 => 3, 'add' => [2561, 'Зачаровать Украшение [1]']], 2 => ['n' => 'Зачаровать Оружие [0]', 0 => 2564, 8 => 3, 'add' => [2565, 'Зачаровать Оружие [1]']], 3 => ['n' => 'Зачаровать Броню [0]', 0 => 2568, 8 => 3, 'add' => [2569, 'Зачаровать Броню [1]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2572, 8 => 3, 'add' => [2573, 'Зачаровать Перчатки [1]']], 5 => ['n' => 'Зачаровать Шлем [0]', 0 => 2576, 8 => 3, 'add' => [2577, 'Зачаровать Шлем [1]']]]]; $i = 1; while ($i <= $cn[0]) { @@ -690,7 +690,7 @@ class Dialog mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } $i = $cn[0]; $j = count($cn[$i][$j]); @@ -701,7 +701,7 @@ class Dialog } if ($txt == '') { - $txt = ' ...'; + $txt = 'У вас не хватило необходимых предметов...'; } if ($txt != '') { @@ -720,12 +720,12 @@ class Dialog $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); if (!isset($keypr['id'])) { $itms = []; - $txt = ' " ", ...'; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; } - // - $cn = [0 => 5, //- - 1 => [1 => ['n' => ' [1]', 0 => 2561, 8 => 3, 'add' => [2562, ' [2]']], 2 => ['n' => ' [1]', 0 => 2565, 8 => 3, 'add' => [2566, ' [2]']], 3 => ['n' => ' [1]', 0 => 2569, 8 => 3, 'add' => [2570, ' [2]']], 4 => ['n' => ' [0]', 0 => 2573, 8 => 3, 'add' => [2574, ' [2]']], 5 => ['n' => ' [1]', 0 => 2577, 8 => 3, 'add' => [2578, ' [2]']]]]; + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [1]', 0 => 2561, 8 => 3, 'add' => [2562, 'Зачаровать Украшение [2]']], 2 => ['n' => 'Зачаровать Оружие [1]', 0 => 2565, 8 => 3, 'add' => [2566, 'Зачаровать Оружие [2]']], 3 => ['n' => 'Зачаровать Броню [1]', 0 => 2569, 8 => 3, 'add' => [2570, 'Зачаровать Броню [2]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2573, 8 => 3, 'add' => [2574, 'Зачаровать Перчатки [2]']], 5 => ['n' => 'Зачаровать Шлем [1]', 0 => 2577, 8 => 3, 'add' => [2578, 'Зачаровать Шлем [2]']]]]; $i = 1; while ($i <= $cn[0]) { @@ -746,7 +746,7 @@ class Dialog mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } $i = $cn[0]; $j = count($cn[$i][$j]); @@ -757,7 +757,7 @@ class Dialog } if ($txt == '') { - $txt = ' ...'; + $txt = 'У вас не хватило необходимых предметов...'; } if ($txt != '') { @@ -776,12 +776,12 @@ class Dialog $keypr = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 AND `item_id` = "2555" LIMIT 1')); if (!isset($keypr['id'])) { $itms = []; - $txt = ' " ", ...'; + $txt = 'Необходим "Пирамидальный ключ", у вас его нет...'; } - // - $cn = [0 => 5, //- - 1 => [1 => ['n' => ' [0]', 0 => 2562, 8 => 3, 'add' => [2563, ' [3]']], 2 => ['n' => ' [0]', 0 => 2566, 8 => 3, 'add' => [2567, ' [3]']], 3 => ['n' => ' [0]', 0 => 2570, 8 => 3, 'add' => [2571, ' [3]']], 4 => ['n' => ' [0]', 0 => 2574, 8 => 3, 'add' => [2575, ' [3]']], 5 => ['n' => ' [0]', 0 => 2578, 8 => 3, 'add' => [2579, ' [3]']]]]; + //Предметы + $cn = [0 => 5, //кол-во классификаций + 1 => [1 => ['n' => 'Зачаровать Украшение [0]', 0 => 2562, 8 => 3, 'add' => [2563, 'Зачаровать Украшение [3]']], 2 => ['n' => 'Зачаровать Оружие [0]', 0 => 2566, 8 => 3, 'add' => [2567, 'Зачаровать Оружие [3]']], 3 => ['n' => 'Зачаровать Броню [0]', 0 => 2570, 8 => 3, 'add' => [2571, 'Зачаровать Броню [3]']], 4 => ['n' => 'Зачаровать Перчатки [0]', 0 => 2574, 8 => 3, 'add' => [2575, 'Зачаровать Перчатки [3]']], 5 => ['n' => 'Зачаровать Шлем [0]', 0 => 2578, 8 => 3, 'add' => [2579, 'Зачаровать Шлем [3]']]]]; $i = 1; while ($i <= $cn[0]) { @@ -802,7 +802,7 @@ class Dialog $txt .= $cn[$i][$j]['n'] . ' x' . ($t[0] * $this->objLevel($cn[$i][$j], $u->info['level'])) . ' = ' . $cn[$i][$j]['add'][1] . ' x' . $t[0] . '
'; mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $keypr['id'] . '" LIMIT 1'); } else { - $txt .= ' "' . $cn[$i][$j]['n'] . '", - ...
'; + $txt .= 'Не удалось обменять предмет "' . $cn[$i][$j]['n'] . '", что-то не так ...
'; } $i = $cn[0]; $j = count($cn[$i][$j]); @@ -813,14 +813,14 @@ class Dialog } if ($txt == '') { - $txt = ' ...'; + $txt = 'У вас не хватило необходимых предметов...'; } if ($txt != '') { $txt = '
' . $txt . ''; } - } elseif ($act[0] == 'GoHrumpShop' && $go1 == 1) { // ( ) + } elseif ($act[0] == 'GoHrumpShop' && $go1 == 1) { //отправляемся в магазин Рульфа Хрумпта (пещеры мглы) mysql_query('UPDATE `stats` SET `x` = "6",`y` = "73" WHERE `id` = "' . $u->info['id'] . '" AND `dnow` = "' . $u->info['dnow'] . '" LIMIT 1'); header('location: main.php'); die(); @@ -829,71 +829,71 @@ class Dialog $swapItem = $act[1]; $swapError = $act[2]; $swapTrue = $act[3]; - # ( ) - if (!isset($swapActStatus)) $swapActStatus = 1; # , ! - $swapAct = []; # . + # Обмениваем предметы у Забытого (Мастерская Забытых) + if (!isset($swapActStatus)) $swapActStatus = 1; # Все окей, проблем нет! + $swapAct = []; # Собираем данные об обмене. $temp = explode("\\", $swapItem); foreach ($temp as $t) { $t = explode('=', $t); - if ($t[0] == 'tr') { // + if ($t[0] == 'tr') { // Нужны для обмена $temp2 = explode(',', $t[1]); $tr_items = []; foreach ($temp2 as $t2) { $temp3 = explode('x', $t2); - if (!isset($temp3[1])) $temp3[1] = 1; // , 1. - if (isset($temp3[2]) && $temp3[2] == 'del') $temp3[2] = true; else $temp3[2] = false; // ! + if (!isset($temp3[1])) $temp3[1] = 1; // Если количество не задано, задаем 1ед. + if (isset($temp3[2]) && $temp3[2] == 'del') $temp3[2] = true; else $temp3[2] = false; // Удаляем даже при неудачной попытке совершить обмен! $tr_items[] = ['item_id' => $temp3[0], 'colvo' => (int)$temp3[1], 'delete' => $temp3[2]]; } $swapAct['tr'] = $tr_items; - } elseif ($t[0] == 'needQuest') { // - . + } elseif ($t[0] == 'needQuest') { // Если нужен какой-то квест для приобретения. - } elseif ($t[0] == 'needRep') { // + } elseif ($t[0] == 'needRep') { // Если нужна репутация в подземельи $temp2 = explode(',', $t[1]); $need_rep = []; $need_rep[] = ['city' => $temp2[0], 'rep' => (int)$temp2[1]]; $swapAct['need_rep'] = $need_rep; - } elseif ($t[0] == 'add') { // . + } elseif ($t[0] == 'add') { // Какие предметы даем. $temp2 = explode(',', $t[1]); $add_items = []; foreach ($temp2 as $t2) { $temp3 = explode('x', $t2); - if (!isset($temp3[1])) $temp3[1] = 1; // , 1. + if (!isset($temp3[1])) $temp3[1] = 1; // Если количество не задано, задаем 1ед. $add_items[] = ['item_id' => $temp3[0], 'colvo' => (int)$temp3[1]]; } $swapAct['add'] = $add_items; - } elseif ($t[0] == 'uses') { // + } elseif ($t[0] == 'uses') { // Если нужна репутация в подземельи $swapAct['uses'] = $t[1]; } - } // . + } // Цикл обработки данных разговора. unset($temp, $temp2, $temp3, $t2, $tr_items, $add_items); if ($swapActStatus == 0) { - $txt = ' , !'; + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; $pg = $swapError; - } elseif (isset($swapAct['need_rep'])) { # . - foreach ($swapAct['need_rep'] as $rep) { # + } elseif (isset($swapAct['need_rep'])) { # Проверяем репутацию. + foreach ($swapAct['need_rep'] as $rep) { # Если несколько репутаций if ($u->rep['rep' . $rep['city']] < $rep['rep']) { $swapActStatus = 0; - $txt = ' , !'; + $txt = 'Я тебя раньше здесь не видел, уходи прочь негодник!'; $pg = $swapError; } } } - if (isset($swapAct['uses'])) { # . + if (isset($swapAct['uses'])) { # Проверяем количество раз использований. #$swapAct['uses'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `room` = "'.$u->info['room'].'" AND `vals` = "masteryUses'.$u->info['dnow'].'" ORDER BY `id` DESC LIMIT '.$swapAct['uses'] .'')); if (isset($swapAct['uses']['id'])) { $swapActStatus = 0; - $txt = '- , ...'; + $txt = 'Кто-то уже побывал здесь и испортил кузницу, ничего не получится...'; $pg = 0; } } - if (isset($swapAct['tr']) and $swapActStatus == 1) { # . - foreach ($swapAct['tr'] as $item) { # . + if (isset($swapAct['tr']) and $swapActStatus == 1) { # Проверяем необходимые предметы. + foreach ($swapAct['tr'] as $item) { # Если несколько предметов. $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); if (isset($item_info['id'])) { $query = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" LIMIT ' . $item['colvo'] . ''); @@ -902,7 +902,7 @@ class Dialog $j++; } if ($j < $item['colvo']) { - $txt .= ' "' . $item_info['name'] . '"! (' . $item['item_id'] . ')
'; + $txt .= 'У вас недостаточно предметов "' . $item_info['name'] . '"! (' . $item['item_id'] . ')
'; $swapActStatus = 3; $pg = $swapError; } elseif ($swapActStatus != 3) { @@ -912,25 +912,25 @@ class Dialog } } - if (isset($swapAct['tr']) and $swapActStatus == 3) { # del==true. - $mess = ' : '; + if (isset($swapAct['tr']) and $swapActStatus == 3) { # Забираем предметы del==true. + $mess = 'Израсходованы ресурсы: '; $qsw = 0; - foreach ($swapAct['tr'] as $item) { # . + foreach ($swapAct['tr'] as $item) { # Если несколько предметов. if ($item['delete'] == true) { $query = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT ' . $item['colvo'] . ''); if ($query) { $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); if ($qsw > 0) $mess .= ', '; $mess .= '"' . $item_info['name'] . '"'; - if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . ')'; + if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . 'шт)'; $qsw++; } } } $mess .= '.
'; if ($qsw > 0) $txt .= $mess; - } elseif (isset($swapAct['tr']) and $swapActStatus == 2) { # . - $mess = ' : '; + } elseif (isset($swapAct['tr']) and $swapActStatus == 2) { # Забираем предметы все. + $mess = 'Израсходованы ресурсы: '; $qsw = 0; foreach ($swapAct['tr'] as $item) { $query = mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `item_id` = "' . $item['item_id'] . '" AND `uid` = "' . $u->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY inGroup DESC LIMIT ' . $item['colvo'] . ''); @@ -938,7 +938,7 @@ class Dialog $item_info = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $item['item_id'] . '" LIMIT 1')); if ($qsw > 0) $mess .= ', '; $mess .= '"' . $item_info['name'] . '"'; - if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . ')'; + if ($item['colvo'] > 1) $mess .= '(' . $item['item_id'] . 'шт)'; $qsw++; } } @@ -946,11 +946,11 @@ class Dialog if ($qsw > 0) $txt .= $mess; } - if (isset($swapAct['add']) and $swapActStatus == 2) { # . + if (isset($swapAct['add']) and $swapActStatus == 2) { # Выдаем предметы. foreach ($swapAct['add'] as $item) { $qsw = 0; while ($qsw < $item['colvo']) { - $txt .= '
'; + $txt .= '
Вы получили предмет'; $u->addItem($item['item_id'], $u->info['id']); $qsw++; } @@ -972,7 +972,7 @@ class Dialog } if ($this->info['tr_dn'] != 0) { - // + //требует пещеру global $d; if ($this->info['tr_dn'] != $d->info['id2']) { $go = 0; @@ -980,7 +980,7 @@ class Dialog if ($d->testLike($u->info['x'], $u->info['y'], $this->info['x'], $this->info['y']) != 1) { $go = 0; } - // + //если бот погиб $dbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $u->info['dnow'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1')); if (!isset($dbot['id2'])) { $go = 0; @@ -990,27 +990,27 @@ class Dialog if ($go == 1) { //dlg_nps:=:3=7 - // ( ) + //квест (с наградой) $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:' . $this->info['id'] . '=' . $pg . '=1=e%" LIMIT 1'); while ($qs_pl = mysql_fetch_array($qs_sp)) { $q->endq($qs_pl['id'], 'win'); $gsex = explode('=e' . $this->info['id'] . $pg . '=', $qs_pl['act_date']); if ($gsex[1] > 0) { - // + //выдаем добавочный квест $q->startq($gsex[1]); - $txt .= '
'; + $txt .= '
Задание изменилось'; } } - // ( ) + //квест (без наградой) $qs_sp = mysql_query('SELECT `id`,`act_date` FROM `quests` WHERE `act_date` LIKE "%dlg_nps:=:' . $this->info['id'] . '=' . $pg . '=0=e%" LIMIT 1'); while ($qs_pl = mysql_fetch_array($qs_sp)) { $q->endq($qs_pl['id'], 'end'); $gsex = explode('=e' . $this->info['id'] . $pg . '=', $qs_pl['act_date']); if ($gsex[1] > 0) { - // $gsex[1] + //выдаем добавочный квест $gsex[1] $q->startq($gsex[1]); - $txt .= '
'; + $txt .= '
Задание изменилось'; } } @@ -1018,13 +1018,13 @@ class Dialog $this->youInfo = $u->getInfoPers($u->info['id'], 1); $this->youInfo = $this->youInfo[0]; $this->botInfo = $this->infoBot($this->info['bot_id']); - // + //Диалог $qpl = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "1" AND `qid` = "0" AND `id_dg` = "' . $this->info['id'] . '" AND `page` = "' . ((int)$pg) . '" LIMIT 1')); if (!isset($qpl['id'])) { if ($txt == '') { - $qpl['text'] = ' ...'; + $qpl['text'] = 'Диалог не найден ...'; } else { - $qpl['text'] = $txt . ' ()'; + $qpl['text'] = $txt . ' (уйти)'; $txt = ''; } } else { @@ -1033,11 +1033,11 @@ class Dialog if ($u->info['admin'] > 0) { if (isset($_GET['add_new_qid'])) { - mysql_query('INSERT INTO `dungeon_dlg` (`type`,`qid`,`id_dg`,`text`) VALUES ("0","' . $qpl['id'] . '","' . $this->info['id'] . '"," ")'); + mysql_query('INSERT INTO `dungeon_dlg` (`type`,`qid`,`id_dg`,`text`) VALUES ("0","' . $qpl['id'] . '","' . $this->info['id'] . '","Новый вариант ответа")'); } } - // + //Варианты ответа $a = ''; $sp = mysql_query('SELECT * FROM `dungeon_dlg` WHERE `type` = "0" AND `qid` = "' . $qpl['id'] . '" AND `id_dg` = "' . $this->info['id'] . '" ORDER BY `sort` DESC LIMIT 25'); while ($pl = mysql_fetch_array($sp)) { @@ -1051,7 +1051,7 @@ class Dialog $i = 0; $x = explode('|', $pl['tr']); while ($i < count($x)) { - // + //Требования $k = explode('=', $x[$i]); if ($k[0] == 'data') { $date = explode('-', $k[1]); @@ -1068,7 +1068,7 @@ class Dialog } } elseif ($k[0] == 'diact') { - // + //Действия //user_id # all # all # lukaqst1 # -1 if ($this->quest_act($k[1]) == false) { $go1 = 'delete'; @@ -1076,23 +1076,23 @@ class Dialog } } elseif ($k[0] == 'quest_end') { - // + //Квест можно выполнять несколько раз в текущей пещере $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { - //$go1 .= " \n"; + //$go1 .= "Вы уже взяли данное задание\n"; $go1 = 'delete'; $i = count($x); } } elseif ($k[0] == 'quest_only_one') { - // + //Квест можно выполнять только один раз $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && ($qlst['vals'] == 'win' || $qlst['vals'] == 'bad')) { - //$go1 .= " \n"; + //$go1 .= "Вы уже взяли данное задание\n"; $go1 = 'delete'; $i = count($x); } } elseif ($k[0] == 'quest_now') { - // + //Квест должен быть взят $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $k[1] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { } else { @@ -1100,14 +1100,14 @@ class Dialog $i = count($x); } } elseif ($k[0] == 'tr_itm') { - // + //Квест требует предмет $qlst = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . $k[1] . '" AND `inOdet` = 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if ($qlst[0] < $k[2]) { $go1 = 'delete'; $i = count($x); } } elseif ($k[0] == 'tr_itmodet') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inOdet` > 0 AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (!isset($qlst['id'])) { @@ -1115,7 +1115,7 @@ class Dialog $i = count($x); } } elseif ($k[0] == 'tr_noitmodet') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `inOdet` > 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (isset($qlst['id'])) { @@ -1123,7 +1123,7 @@ class Dialog $i = count($x); } } elseif ($k[0] == 'tr_noitm') { - // + //Квест требует предмет $k[1] = str_replace(',', '" OR `item_id` = "', $k[1]); $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND (`item_id` = "' . $k[1] . '") AND `inTransfer` = 0 AND `delete` = 0 AND `inShop` = 0 LIMIT 1')); if (isset($qlst['id'])) { @@ -1135,7 +1135,7 @@ class Dialog } } if ($u->info['admin'] > 0) { - $a .= '(.)   '; + $a .= '(ред.)   '; } if ($go1 == '') { $a .= '• ' . $pl['text'] . '
'; @@ -1150,16 +1150,16 @@ class Dialog if ($u->info['admin'] > 0) { - $a .= ' '; + $a .= 'Добавить вариант ответа'; } $this->dText = $qpl['text'] . '
' . $txt; $this->aText = $a; } else { - $this->aText = '
,
'; + $this->aText = '
Диалог не доступен, вернуться назад
'; } } else { - $this->aText = '
,
' . ((int)$id) . '
'; + $this->aText = '
Диалог не найден, вернуться назад
' . ((int)$id) . '
'; } } @@ -1174,7 +1174,7 @@ class Dialog $var = $k[0]; $val = $k[1]; if ($var == 'take_item') { - // + //Забираем предмет $itms = []; $sp = mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "' . mysql_real_escape_string($val) . '" AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 100'); while ($pl = mysql_fetch_array($sp)) { @@ -1189,9 +1189,9 @@ class Dialog $i = count($x); $r[0] = false; $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $val . '" LIMIT 1')); - $r[1] = ' ! "' . $itm['name'] . '"'; + $r[1] = 'У вас нет нужного предмета! Требуется "' . $itm['name'] . '"'; if ($k[2] > 1) { - $r[1] .= ' (' . $k[2] . ' .)'; + $r[1] .= ' (' . $k[2] . ' шт.)'; } } // @@ -1200,7 +1200,7 @@ class Dialog $i1 = 0; while ($i1 < $k[2]) { if ($val == 4797) { - // + //Повестка if ($u->info['level'] >= 4 && $u->info['level'] <= 7) { $val = 4797; } elseif ($u->info['level'] >= 8 && $u->info['level'] <= 9) { @@ -1272,29 +1272,29 @@ class Dialog $r = ''; $bot = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "' . ((int)$id) . '" LIMIT 1')); if (isset($bot['id'])) { - // + //Характеристики от предметов и их изображение $witm = []; - $witm[1] = ''; - $witm[2] = ''; - $witm[3] = ''; - $witm[4] = ''; - $witm[7] = ''; - $witm[8] = ''; - $witm[9] = ''; - $witm[10] = ''; - $witm[11] = ''; - $witm[12] = ''; - $witm[13] = ''; - $witm[14] = ''; - $witm[16] = ''; - $witm[17] = ''; - //40-52 - $witm[53] = ''; - $witm[54] = ''; - $witm[55] = ''; - $witm[56] = ''; - $witm[57] = ''; - $witm[58] = ''; + $witm[1] = ''; + $witm[2] = ''; + $witm[3] = ''; + $witm[4] = ''; + $witm[7] = ''; + $witm[8] = ''; + $witm[9] = ''; + $witm[10] = ''; + $witm[11] = ''; + $witm[12] = ''; + $witm[13] = ''; + $witm[14] = ''; + $witm[16] = ''; + $witm[17] = ''; + //40-52 слот под магию + $witm[53] = ''; + $witm[54] = ''; + $witm[55] = ''; + $witm[56] = ''; + $witm[57] = ''; + $witm[58] = ''; $pb = ''; $hpmp = '?? '; @@ -1344,7 +1344,7 @@ class Dialog
- +
' . $eff . '
' . $anml . '
diff --git a/_incl_data/class/Dungeon.php b/_incl_data/class/Dungeon.php index 7d9dbfa6..9f3ba3f0 100644 --- a/_incl_data/class/Dungeon.php +++ b/_incl_data/class/Dungeon.php @@ -3,7 +3,7 @@ class Dungeon { private $bs; - private $map = [0 => []]; // + private $map = [0 => []]; //карта private $cord = ['x' => 0]; private $sg = [ 1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], @@ -67,22 +67,22 @@ class Dungeon mysql_query('UPDATE `stats` SET `s` = "' . ((int)$this->gs) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); $u->info['s'] = $this->gs; } elseif (isset($_GET['go'])) { - // + //перемещение $this->testGo((int)$_GET['go']); } - /* ( ) - $this->gs = 1; // - 2; // - 3; // - 4; // + /* генерируем вид персонажа (только карта) + $this->gs = 1; //смотрим прямо + 2; //смотрим лево + 3; //смотрим вниз + 4; //смотрим право ( ( ( `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).' ) ) ) */ - $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) . ')) ', // - 4 => ' ((`x` >= ' . $u->info['x'] . ' && `x` <= ' . ($u->info['x'] + 4) . ') && (`y` <= ' . ($u->info['y'] + 2) . ' && `y` >= ' . ($u->info['y'] - 2) . ')) ' // + $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) . ')) ', //лево + 4 => ' ((`x` >= ' . $u->info['x'] . ' && `x` <= ' . ($u->info['x'] + 4) . ') && (`y` <= ' . ($u->info['y'] + 2) . ' && `y` >= ' . ($u->info['y'] - 2) . ')) ' //право ]; $i = 1; @@ -91,7 +91,7 @@ class Dungeon $this->map[0][$pl['y'] . '_' . $pl['x']] = $pl; $i++; } - $this->map['good'] = $i; // + $this->map['good'] = $i; //целых клеток $this->map[1] = $this->genMatix(); $this->lookDungeon(); } @@ -101,20 +101,20 @@ class Dungeon global $u; $itm = mysql_fetch_assoc(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm . '" LIMIT 1')); if (isset($itm['id'])) { - $tou = 0; // - /* */ + $tou = 0; //какому юзеру предназначено + /* выделяем случайного юзера из команды */ $itmnm = mysql_fetch_assoc(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1')); $itmnm = $itmnm['name']; $asex = ''; if ($u->info['sex'] == 1) { - $asex = ''; + $asex = 'а'; } if ($for > 0) { $tou = $for; - $rtxt = '' . $u->info['login'] . ' ' . $asex . ' "' . $itm['name'] . '" "' . $obj['name'] . '"'; + $rtxt = '' . $u->info['login'] . ' обнаружил' . $asex . ' предмет "' . $itm['name'] . '" в "' . $obj['name'] . '"'; } else { - $rtxt = '' . $u->info['login'] . ' ' . $asex . ' "' . $itm['name'] . '" "' . $obj['name'] . '", '; + $rtxt = '' . $u->info['login'] . ' обнаружил' . $asex . ' предмет "' . $itm['name'] . '" в "' . $obj['name'] . '", и вы решили разыграть его'; } if ($dn_delete) { $dn_delete = 1; @@ -144,19 +144,19 @@ class Dungeon $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')); if ($this->info['uid'] != $lead) { - $this->error = ' ...'; + $this->error = 'Вы не лидер...'; } elseif (!isset($to['id'])) { - $this->error = ' ...'; + $this->error = 'Персонаж не найден...'; } elseif ($to['id'] == $this->info['uid']) { - $this->error = ' ...'; + $this->error = 'Вы и так лидер...'; } elseif ($to['dnow'] != $this->info['id']) { - $this->error = ' ...'; + $this->error = 'Персонаж не найден в вашей команде...'; } else { mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $to['id'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($u->info['sex'] == 0) { - $this->sys_chat('' . $u->info['login'] . ' ' . $to['login'] . ''); + $this->sys_chat('' . $u->info['login'] . ' передал лидерство в группе персонажу ' . $to['login'] . ''); } else { - $this->sys_chat('' . $u->info['login'] . ' ' . $to['login'] . ''); + $this->sys_chat('' . $u->info['login'] . ' передала лидерство в группе персонажу ' . $to['login'] . ''); } //header('Location: main.php'); die(''); @@ -170,35 +170,35 @@ class Dungeon $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')); if ($this->info['uid'] != $lead) { - $this->error = ' ...'; + $this->error = 'Вы не лидер...'; } elseif (!isset($to['id'])) { - $this->error = ' ...'; + $this->error = 'Персонаж не найден...'; } elseif ($to['id'] == $this->info['uid']) { - $this->error = ' ...'; + $this->error = 'Лидера нельзя выгнать...'; } elseif ($to['dnow'] != $this->info['id']) { - $this->error = ' ...'; + $this->error = 'Персонаж не найден в вашей команде...'; } else { - $rb = 321; // + $rb = 321; // Магический портал if ($u->info['room'] == 304) { - $rb = 209; // + $rb = 209; // Вход в ледяную пещеру } elseif ($u->info['room'] == 396) { - $rb = 395; // () + $rb = 395; // Канализация (Ангелс) } elseif ($u->info['room'] == 398) { - $rb = 321; // + $rb = 321; // Все пещеры } elseif ($this->info['id2'] == 3) { - $rb = 293; // + $rb = 293; // Вход в Катакомбы } elseif ($this->info['id2'] == 1) { - $rb = 188; // + $rb = 188; // Вход в Канализацию } elseif ($this->info['id2'] == 13) { - $rb = 275; // + $rb = 275; // Гора Легиона } elseif ($this->info['id2'] == 12) { - $rb = 372; // + $rb = 372; // Вход в Пещеру Тысячи Проклятий } elseif ($this->info['id2'] == 444) { - $rb = 321; // + $rb = 321; // Вход в пещеру инкв } elseif ($this->info['id2'] == 31) { - $rb = 321; // + $rb = 321; // Вход в пещеру инкв } elseif ($this->info['id2'] == 101) { - $rb = 321; // + $rb = 321; // Вход в Бездну } @@ -218,15 +218,15 @@ class Dungeon $city = mysql_fetch_assoc(mysql_query('SELECT `id`, `city` FROM `room` WHERE `id` = "' . $rb . '" LIMIT 1')); mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `room` = "' . $rb . '", `city`="' . $city['city'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - // + //удаляем все предметы которые пропадают после выхода из пещеры mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); 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'); if ($u->info['sex'] == 0) { - $this->sys_chat('' . $u->info['login'] . ' ' . $to['login'] . ''); + $this->sys_chat('' . $u->info['login'] . ' выгнал из похода персонажа ' . $to['login'] . ''); } else { - $this->sys_chat('' . $u->info['login'] . ' ' . $to['login'] . ''); + $this->sys_chat('' . $u->info['login'] . ' выгнала из похода персонажа ' . $to['login'] . ''); } header('Location: /main.php'); } @@ -255,24 +255,24 @@ class Dungeon $r .= 'style="padding-top:12px"'; } $r .= '> -
' . floor($stt['hpNow']) . '/' . $stt['hpAll'] . '
-
+
' . floor($stt['hpNow']) . '/' . $stt['hpAll'] . '
+
-
+
'; if ($stt['mpAll'] > 0) { - $r .= '
' . floor($stt['mpNow']) . '/' . $stt['mpAll'] . '
-
+ $r .= '
' . floor($stt['mpNow']) . '/' . $stt['mpAll'] . '
+
-
'; +
'; } $r .= '
'; if ($this->info['uid'] == $pl['id']) { - $r .= ''; + $r .= ''; } if ($this->info['uid'] == $u->info['id'] && $pl['id'] == $u->info['id'] && $this->info['id2'] != 15) { - $r .= ' '; - $r .= ' '; + $r .= ' '; + $r .= ' '; } $r .= '
'; $r .= ''; @@ -287,13 +287,13 @@ class Dungeon $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')); if (isset($bot['id2'])) { if (($u->info['x'] != $bot['x'] || $bot['y'] != $u->info['y']) && $this->testLike($u->info['x'], $u->info['y'], $bot['x'], $bot['y']) == 1) { - // + //Создаем подеинок $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')); if (isset($tbtl['id'])) { - // + //вступаем в поединок mysql_query('UPDATE `users` SET `battle` = "' . $tbtl['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - /*#$this->error = ' ... '; // */ + /*#$this->error = 'Нападаем ... '; // */ //header('location: main.php'); die(''); } else { @@ -321,7 +321,7 @@ class Dungeon $btl_id = mysql_insert_id(); if ($btl_id > 0) { - // + //Добавляем ботов $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'); $j = 0; $logins_bot = []; @@ -347,28 +347,28 @@ class Dungeon if ($j > 0) { 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'); - /*#$this->error = ' ...';// */ // + /*#$this->error = 'Нападаем ...';// */ // //header('location: main.php'); die(''); } else { - $this->error = ' , ...'; + $this->error = 'Не удалось напасть, ошибка обьекта нападения ...'; } } else { - $this->error = ' ...'; + $this->error = 'Не удалось создать поединок ...'; } } } else { - $this->error = ' ...'; + $this->error = 'Не удалось напасть ...'; } } else { if (isset($this->bs['id']) || $this->info['id2'] == 15) { $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) { - // + //Создаем подеинок $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')); - //die(' . ['.$tbtl['id'].'] 5-10 .'); + //die('Нападения временно запрещены. ['.$tbtl['id'].'] 5-10 мин.'); if (isset($tbtl['id'])) { - // + //вступаем в поединок $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'); $nextteam = $lstm['team'] + 1; @@ -380,11 +380,11 @@ class Dungeon $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'); - // + //Заносим в лог БС if ($u->info['sex'] == 0) { - $text = '{u1} {u2} '; + $text = '{u1} вмешался в поединок напав на {u2} »»'; } else { - $text = '{u1} {u2} '; + $text = '{u1} вмешалася в поединок напав на {u2} »»'; } if (isset($usr_real['id'])) { $usrreal = ''; @@ -396,7 +396,7 @@ class Dungeon } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } if (isset($me_real['id'])) { $mereal = ''; @@ -408,11 +408,11 @@ class Dungeon } $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $mereal, $text); $text = str_replace('{u2}', $usrreal, $text); - // + //Добавляем в лог БС 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'] . '", "' . round($this->bs['money'] * 0.85, 2) . '","' . $i . '" @@ -420,7 +420,7 @@ class Dungeon // } // - $this->error = ' ... '; + $this->error = 'Нападаем ... '; } else { $btl_id = 0; //$expB = -77.77; @@ -455,7 +455,7 @@ class Dungeon mysql_query('UPDATE `stats` SET `x` = "' . $bot['x'] . '", `y` = "' . $bot['y'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); if ($btl_id > 0) { - // + //Добавляем ботов 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'); @@ -479,11 +479,11 @@ class Dungeon $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')); - // + //Заносим в лог БС if ($u->info['sex'] == 0) { - $text = '{u1} {u2} '; + $text = '{u1} напал на {u2} завязался бой »»'; } else { - $text = '{u1} {u2} '; + $text = '{u1} напала на {u2} завязался бой »»'; } if (isset($usr_real['id'])) { $usrreal = ''; @@ -495,7 +495,7 @@ class Dungeon } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } if (isset($me_real['id'])) { $mereal = ''; @@ -507,11 +507,11 @@ class Dungeon } $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $mereal, $text); $text = str_replace('{u2}', $usrreal, $text); - // + //Добавляем в лог БС 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'] . '", "' . round($this->bs['money'] * 0.85, 2) . '","' . $i . '" @@ -519,16 +519,16 @@ class Dungeon // } - $this->error = ' ... '; + $this->error = 'Нападаем ... '; } else { - $this->error = ' ...'; + $this->error = 'Не удалось создать поединок ...'; } } } else { - $this->error = ' ...'; + $this->error = 'Не удалось напасть ...'; } } else { - $this->error = ' , (id' . $id . ') ...'; + $this->error = 'Не удалось напасть, слишком далеко (id' . $id . ') ...'; } } } @@ -545,14 +545,14 @@ class Dungeon 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","" )'); - //21:50 " 2 - " + //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" $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')); if ($u->info['sex'] == 0) { - $this->sys_chat('' . $u->info['login'] . ' "' . $room['name'] . '"'); + $this->sys_chat('' . $u->info['login'] . ' трагически погиб и находится в комнате "' . $room['name'] . '"'); } else { - $this->sys_chat('' . $u->info['login'] . ' "' . $room['name'] . '"'); + $this->sys_chat('' . $u->info['login'] . ' трагически погибла и находится в комнате "' . $room['name'] . '"'); } 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'); //header('location: main.php'); @@ -561,18 +561,18 @@ class Dungeon 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","" )'); - //21:50 " 2 - " + //21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток" if ($u->info['sex'] == 0) { - $this->sys_chat('' . $u->info['login'] . ' '); + $this->sys_chat('' . $u->info['login'] . ' трагически погиб без права на воскрешение'); } else { - $this->sys_chat('' . $u->info['login'] . ' '); + $this->sys_chat('' . $u->info['login'] . ' трагически погибла без права на воскрешение'); } $_GET['exitd'] = true; } } } - // + //Предметы для БС public $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]; public function sys_chat($rtxt) @@ -590,7 +590,7 @@ class Dungeon $i = 0; - # { $act_sl['save_pos'] = "save_pos" } { $act_sl['port'] = "10:20" } + # Создаем МАССИВ { $act_sl['save_pos'] = "save_pos" }или { $act_sl['port'] = "10:20" } $act_sl = []; $act_sm = explode('|', $obj['action']); while ($i < count($act_sm)) { @@ -604,9 +604,9 @@ class Dungeon } if (isset($tbot['id2'])) { - $this->error = ' , - - ...'; + $this->error = 'Не удалось, что-то или кто-то мешает ...'; } elseif ($this->testLike($u->info['x'], $u->info['y'], $obj['x'], $obj['y']) != 1) { - $this->error = ' , ...!'; + $this->error = 'Не удалось, слишком далеко ...!'; } else { $a = explode('|', $obj['action']); $r = ''; @@ -615,11 +615,11 @@ class Dungeon $s = explode(':', $a[$i]); if ($s[0] == 'kill_bot') { - // + //Требуется убить ботов $t = explode(',', $s[1]); $tr_gd = 0; - // - + //Проверяем кого нужно убить и убили-ли $j = 1; $jn = 0; while ($j < count($t)) { @@ -639,18 +639,18 @@ class Dungeon unset($itm, $bot_itm, $jn); if ($tr_gd == 0) { if ($t[0] == '0') { - $r .= ' , - - ...'; + $r .= 'Не удалось, что-то или кто-то мешает ...'; } else { $r .= $t[0]; } $i = count($a); } } elseif ($s[0] == 'kill_bot_d') { - // ( , - ) + //Требуется убить ботов (все боты нападают , если что-то не так ) $t = explode(',', $s[1]); $tr_gd = 0; - // - + //Проверяем кого нужно убить и убили-ли $j = 1; $jn = 0; $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')); @@ -672,15 +672,15 @@ class Dungeon unset($itm, $bot_itm, $jn); if ($tr_gd == 0) { if ($t[0] == '0') { - $r .= ' , - - ...'; + $r .= 'Не удалось, что-то или кто-то мешает ...'; } else { $r .= $t[0]; } - $r .= ' !'; + $r .= ' Монстры начали атаковать вас!'; $i = count($a); } } elseif ($s[0] == 'ditm') { - // + //требует предмет для действия $j = 0; $t = explode(',', $s[1]); $tr_gd = 1; @@ -688,11 +688,11 @@ class Dungeon $itm = explode('=', $t[$j]); $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]); - $r .= ' "' . $uitm['name'] . '" (x' . $itm[1] . ') ...
'; + $r .= 'Предмет "' . $uitm['name'] . '" (x' . $itm[1] . ') был утрачен...
'; $j++; } } elseif ($s[0] == 'tritm') { - // + //требует предмет для действия $j = 0; $t = explode(',', $s[1]); $j = 0; @@ -704,16 +704,16 @@ class Dungeon if ($uitm < $itm[1]) { $tr_gd = 0; $uitm = mysql_fetch_assoc(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itm[0] . '" LIMIT 1')); - $r .= ' "' . $uitm['name'] . '" (x' . $itm[1] . ')
'; + $r .= 'Требуется предмет "' . $uitm['name'] . '" (x' . $itm[1] . ')
'; } $j++; } if (rand(0, 10000) > $itm[2] * 100) { $tr_gd = 0; - $r .= ', ...
'; + $r .= 'Странно, но ничего не произошло...
'; } if ($tr_gd == 1) { - // + //все отлично } else { $i = count($a); } @@ -722,51 +722,51 @@ class Dungeon die(); //header('Location: ../../modules_data/location/_dungeon_replace.php'); } elseif ($s[0] == 'add_eff') { - // + //Кастуем эффект $t = explode(',', $s[1]); $j = 0; while ($j < count($t)) { $itm = explode('=', $t[$j]); - $ch = $u->testAction('`vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //- + $ch = $u->testAction('`vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток $ch = $ch[0]; - $ch2 = $u->testAction(' `vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[4]) . '', 2); //- ( ) + $ch2 = $u->testAction(' `vars` = "add_eff_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[4]) . '', 2); //кол-во прошлых попыток (все юзеры) $ch2 = $ch2[0]; if (($ch2 < $itm[4] || $itm[4] == 0) && $ch < $itm[2]) { if ($itm[1] * 100 >= rand(0, 10000)) { - // + //удачно $eff_d = mysql_fetch_assoc(mysql_query('SELECT `id2`,`mname` FROM `eff_main` WHERE `id2` = "' . $itm[0] . '" LIMIT 1')); if (isset($eff_d['id2'])) { - // + //добавляем эффект $us = $magic->add_eff($u->info['id'], $itm[0], 1); if ($us[0] == 1) { - $r .= '
"' . $eff_d['mname'] . '".
'; + $r .= '
На Вас наложили заклятие "' . $eff_d['mname'] . '".
'; } else { - $r .= '
- ... - ...
'; + $r .= '
Что-то пошло не так... Ощущается чье-то присутствие...
'; } } else { - $r .= '
- ... - ...
'; + $r .= '
Что-то пошло не так... Слышен чей-то вой...
'; } unset($eff_d, $us); } else { - // - $r .= '
...
'; + //не удачно + $r .= '
Не удалось...
'; } $u->addAction(time(), 'add_eff_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); } else { - // - $r .= '
- ...
'; + //уже нельзя юзать + $r .= '
Что-то пошло не так...
'; } unset($ch, $ch2); $j++; } } elseif ($s[0] == 'mfast') { - // // + //Добавляем баф //Ловушки и бафы $j = 0; $t = explode(',', $s[1]); while ($j < count($t)) { $itm = explode('=', $t[$j]); - $ch = $u->testAction('`vars` = "bafit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //- + $ch = $u->testAction('`vars` = "bafit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток $ch = $ch[0]; if ($ch < $itm[3]) { if ($itm[2] * 1000 >= rand(1, 100000)) { @@ -776,13 +776,13 @@ class Dungeon $itm[1] = rand($mm[0], $mm[1]); } if ($itm[1] < 0) { - $r .= '
... : ' . $itm[1] . ' HP
'; + $r .= '
Вы попали в ловушку... Здоровье: ' . $itm[1] . ' HP
'; } elseif ($itm[1] > 0) { - $r .= '
... : +' . $itm[1] . ' HP
'; + $r .= '
Вы прикоснулись к магии... Здоровье: +' . $itm[1] . ' HP
'; } $u->info['hpNow'] += $itm[1]; if ($u->info['hpNow'] < 1) { - $r .= '
...
'; + $r .= '
Вы перемещены в точку возрождения...
'; 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'); } else { mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); @@ -791,7 +791,7 @@ class Dungeon } $u->addAction(time(), 'bafit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); } - // + //записываем попытку $j++; } } elseif ($s[0] == 'save_pos') { @@ -800,7 +800,7 @@ class Dungeon $obj['x'] = $itm[0]; $obj['y'] = $itm[1]; } - #$r .= ' . .'; + #$r .= 'Позиция сохранена. Теперь после смерти вы оживете здесь.'; 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'); } elseif ($s[0] == 'look_text') { $itm = explode('=', $s[1]); @@ -811,12 +811,12 @@ class Dungeon $u->info['res_y'] = $itm[1]; $upd = mysql_query('UPDATE `stats` SET `res_x` = "' . $u->info['x'] . '",`res_y` = "' . $u->info['y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); if ($upd) { - $r .= ' - ... ...
'; + $r .= 'Вы куда-то переместились... на этот раз удачно...
'; } else { - $r .= '- ...'; + $r .= 'Что-то здесь не так ...'; } } elseif ($s[0] == 'port') { - // + //телепортирует пользователя $itm = explode('=', $s[1]); $u->info['x'] = $itm[0]; $u->info['y'] = $itm[1]; @@ -824,9 +824,9 @@ class Dungeon `x` = "' . $u->info['x'] . '",`y` = "' . $u->info['y'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); if ($upd) { - $r .= ' - ... ...
'; + $r .= 'Вы куда-то переместились... на этот раз удачно...
'; } else { - $r .= '- ...'; + $r .= 'Что-то здесь не так ...'; } } elseif ($s[0] == 'save_port') { $itm = explode('=', $s[1]); @@ -834,106 +834,106 @@ class Dungeon $u->info['res_y'] = $itm[1]; $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'); } elseif ($s[0] == 'itm') { - // + //Добавляем предмет $j = 0; $t = explode(',', $s[1]); while ($j < count($t)) { $itm = explode('=', $t[$j]); - $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //- + $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток $ch = $ch[0]; if ($ch >= $itm[2]) { - // - $r = ' ...
'; + //закончились попытки + $r = 'ничего не произошло...
'; } else { if ($itm[1] * 1000 >= rand(1, 100000)) { - // ( ) + //Случайный предмет (Башня смерти) if ($itm[0] == 'random1') { $itm[0] = $this->itbs[rand(0, count($this->itbs))]; } - // + //удачная попытка $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); if (isset($it['id'])) { - $r .= ' "' . $it['name'] . '".
'; + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; $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]]); } } else { - // - $r .= ' ...
'; + //неудачная попытка + $r .= 'Вы ничего не нашли ...
'; } $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); } - // + //записываем попытку $j++; } } elseif ($s[0] == 'itm1') { - // , 1 + //Добавляем предмет , только 1 предмет из всех и все юзеры могут тоже $nj = 0; $t = explode(',', $s[1]); $j = rand(0, count($t)); if ($nj == 0) { $itm = explode('=', $t[$j]); - $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //- + $ch = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток $ch = $ch[0]; if ($ch >= $itm[2]) { - // - $r .= ', ...
'; + //закончились попытки + $r .= 'Странно, но ничего не произошло...
'; } else { if ($itm[1] * 1000 >= rand(1, 100000)) { - // ( ) + //Случайный предмет (Башня смерти) if ($itm[0] == 'random1') { $itm[0] = $this->itbs[rand(0, count($this->itbs))]; } - // + //удачная попытка $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); if (isset($it['id'])) { - $r .= ' "' . $it['name'] . '".
'; + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; $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]]); $nj++; } } else { - // + //неудачная попытка $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); - $r .= ' ...
'; + $r .= 'Вы ничего не нашли ...
'; } } } } elseif ($s[0] == 'itm2') { - // , 1 1 + //Добавляем предмет , только 1 предмет из всех и только 1 юзер может поднять $nj = 0; $t = explode(',', $s[1]); $j = rand(0, count($t) - 1); if ($nj == 0) { $itm = explode('=', $t[$j]); - $ch = $u->testAction('`vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //- + $ch = $u->testAction('`vars` = "takeit_' . $this->info['id'] . '_' . $obj['id'] . '" LIMIT ' . (1 + (int)$itm[2]) . '', 2); //кол-во прошлых попыток $ch = $ch[0]; if ($ch >= $itm[2]) { - // - $r .= ' ...
'; + //закончились попытки + $r .= 'Ничего не произошло...
'; } else { if ($itm[1] * 1000 >= rand(1, 100000)) { - // ( ) + //Случайный предмет (Башня смерти) if ($itm[0] == 'random1') { $itm[0] = $this->itbs[rand(0, count($this->itbs))]; } - // + //удачная попытка $it = mysql_fetch_assoc(mysql_query('SELECT * FROM `items_main` WHERE `id`="' . ((int)$itm[0]) . '" LIMIT 1')); if (isset($it['id'])) { - $r .= ' "' . $it['name'] . '".
'; + $r .= 'Вы обнаружили предмет "' . $it['name'] . '".
'; $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]]); $nj++; } } else { - // + //неудачная попытка $u->addAction(time(), 'takeit_' . $this->info['id'] . '_' . $obj['id'], $u->info['city']); - $r .= ' ...
'; + $r .= 'Вы ничего не нашли ...
'; } } } @@ -944,18 +944,18 @@ class Dungeon } $r = rtrim($r, '\'); if ($r == '') { - $r = ' - '; + $r = 'В этот раз не удалось найти что-либо еще'; } $this->error = $r; } } else { - $this->error = ' ...'; + $this->error = 'Предмет не найден ...'; } } public function addItem($i) { - // ( ) + //добавляем предмет в пещеру (возможно выпал из бота или из сундука) 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']) . '")'); } @@ -967,24 +967,24 @@ class Dungeon $this->test_luck($id); $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'))]; if ($obj['user'] == 0 && $fxv['user_count'][0] > $fxv['luck_count'][0] && $fxv['user_count'][0] > 1 && $this->info['bsid'] == 0) { - $this->error = ' , . ' . $u->timeOut($obj['time'] - time() + 300); + $this->error = 'Вы не можете сейчас поднять этот предмет, дождитесь завершения розыгрыша. Осталось ' . $u->timeOut($obj['time'] - time() + 300); } elseif ($u->info['x'] != $obj['x'] || $obj['y'] != $u->info['y']) { - $this->error = ' ...'; + $this->error = 'Предмет не найден ...'; } else { if ($obj['take'] > 0) { - $this->error = '- ...'; + $this->error = 'Кто-то опередил вас ...'; } else { if ($obj['user'] > 0 && $obj['user'] != $u->info['id'] && $obj['time'] > time() - 300) { $uo = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $obj['user'] . '" LIMIT 1')); } if (isset($uo['id'])) { - $this->error = ' "' . $uo['login'] . '". , '; + $this->error = 'Предмет предназначен для "' . $uo['login'] . '". Вы сможете забрать этот предмет, если '; if ($uo['sex'] == 1) { - $this->error .= ' '; + $this->error .= 'она '; } else { - $this->error .= ' '; + $this->error .= 'он '; } - $this->error .= ' ' . ceil(5 - (time() - $obj['time']) / 60) . ' .'; + $this->error .= ' не поднимет его в течении ' . ceil(5 - (time() - $obj['time']) / 60) . ' мин.'; unset($uo); } else { $upd = mysql_query('UPDATE `dungeon_items` SET `take` = "' . $u->info['id'] . '" WHERE `id` = "' . $obj['id'] . '" LIMIT 1'); @@ -1007,19 +1007,19 @@ class Dungeon unset($idl); if ($this->info['bsid'] == 0) { - $rtxt = '' . $u->info['login'] . ' "' . $it['name'] . '"'; + $rtxt = '' . $u->info['login'] . ' поднял предмет "' . $it['name'] . '"'; if ($obj['quest'] > 0) { - $rtxt .= ' ()'; + $rtxt .= ' (Квест)'; } mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); } - $this->error = ' "' . $it['name'] . '"'; + $this->error = 'Вы подняли "' . $it['name'] . '"'; } else { - $this->error = ' ...'; + $this->error = 'Не удалось найти предмет ...'; } } else { - $this->error = ' ...'; + $this->error = 'Не удалось добавить предмет в инвентарь ...'; } } } @@ -1028,7 +1028,7 @@ class Dungeon } - // + //Розыгрыш предмета public function test_luck($id) { global $u; @@ -1042,17 +1042,17 @@ class Dungeon $fxv['win_val'] = 0; unset($fxv['pl'], $fxv['sp']); if (count($fxv['winner']) > 1) { - // - $this->error .= '
!
'; + //Розыгрыш еще раз между победителями + $this->error .= '
Розыгрыш завершен!
'; } elseif (count($fxv['winner']) == 1) { $fxv['user_win'] = mysql_fetch_assoc(mysql_query('SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $fxv['winner'][0] . '" LIMIT 1')); - $fxv['text'] = '' . $fxv['user_win']['login'] . ' "' . $fxv['itm']['name'] . '"'; + $fxv['text'] = '' . $fxv['user_win']['login'] . ' выигрывает в споре за предмет "' . $fxv['itm']['name'] . '"'; $this->sys_chat($fxv['text']); mysql_query('UPDATE `dungeon_items` SET `time` = "' . time() . '",`user` = "' . $fxv['user_win']['id'] . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1'); - $this->error .= '
! ' . $fxv['user_win']['login'] . '!
'; + $this->error .= '
Розыгрыш завершен! Победитель ' . $fxv['user_win']['login'] . '!
'; } } else { - $this->error .= '
' . $u->timeOut($fxv['itm']['time'] + 300 - time()) . ' .
'; + $this->error .= '
У остальных участников осталось ' . $u->timeOut($fxv['itm']['time'] + 300 - time()) . ' мин. до конца розыгрыша
'; } unset($fxv); } @@ -1061,15 +1061,15 @@ class Dungeon { global $u; $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'))]; - if ($u->stats['silver'] >= 3) { // + if ($u->stats['silver'] >= 3) { //дополнительный бросок $fxv['luck2'][0]--; } if ($fxv['itm']['user'] > 0) { - $this->error = ' ...'; + $this->error = 'Розыгрыш предмет уже завершился...'; } elseif (!isset($fxv['itm']['id'])) { - $this->error .= '
'; + $this->error .= '
Предмет не найден
'; } elseif ($fxv['luck2'][0] > 0) { - $this->error .= '
"' . $fxv['itm']['name'] . '", ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; + $this->error .= '
Вы уже учавствуете в розыгрыше "' . $fxv['itm']['name'] . '", ожидаем других участников еще ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; } else { $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')); $luck_users = $luck_users[0]; @@ -1082,12 +1082,12 @@ class Dungeon "luck_itm' . mysql_real_escape_string($id) . '","' . $rndl . '" )'); if ($u->info['sex'] == 0) { - $fxv['text'] = '' . $u->info['login'] . ' *' . $rndl . '* "' . $fxv['itm']['name'] . '"'; + $fxv['text'] = '' . $u->info['login'] . ' выбросил *' . $rndl . '* в споре за предмет "' . $fxv['itm']['name'] . '"'; } else { - $fxv['text'] = '' . $u->info['login'] . ' *' . $rndl . '* "' . $fxv['itm']['name'] . '"'; + $fxv['text'] = '' . $u->info['login'] . ' выбросила *' . $rndl . '* в споре за предмет "' . $fxv['itm']['name'] . '"'; } $this->sys_chat($fxv['text']); - $this->error .= '
' . $rndl . ' "' . $fxv['itm']['name'] . '"
'; + $this->error .= '
Вы выбросили ' . $rndl . ' в споре за "' . $fxv['itm']['name'] . '"
'; } $this->test_luck($id); unset($fxv); @@ -1098,14 +1098,14 @@ class Dungeon global $u; $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'))]; if ($fxv['itm']['user'] > 0) { - $this->error = ' ...'; + $this->error = 'Розыгрыш предмет уже завершился...'; } elseif (!isset($fxv['itm']['id'])) { - $this->error .= '
'; + $this->error .= '
Предмет не найден
'; } elseif (isset($fxv['luck']['id'])) { if ($fxv['luck']['vals'] == 0) { - $this->error .= '
"' . $fxv['itm']['name'] . '"
'; + $this->error .= '
Вы уже отказались от участия в розыгрыше "' . $fxv['itm']['name'] . '"
'; } else { - $this->error .= '
"' . $fxv['itm']['name'] . '", ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; + $this->error .= '
Вы уже учавствуете в розыгрыше "' . $fxv['itm']['name'] . '", ожидаем других участников еще ' . $u->timeOut($fxv['itm']['time'] - time() + 300) . '
'; } } else { $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')); @@ -1114,16 +1114,16 @@ class Dungeon mysql_query('UPDATE `dungeon_items` SET `time` = "' . time() . '" WHERE `id` = "' . $fxv['itm']['id'] . '" LIMIT 1'); } if ($u->info['sex'] == 0) { - $fxv['text'] = '' . $u->info['login'] . ' "' . $fxv['itm']['name'] . '"'; + $fxv['text'] = '' . $u->info['login'] . ' отказался от спора за предмет "' . $fxv['itm']['name'] . '"'; } else { - $fxv['text'] = '' . $u->info['login'] . ' "' . $fxv['itm']['name'] . '"'; + $fxv['text'] = '' . $u->info['login'] . ' отказалась от спора за предмет "' . $fxv['itm']['name'] . '"'; } $this->sys_chat($fxv['text']); 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() . '", "luck_itm' . mysql_real_escape_string($id) . '","0" )'); - $this->error .= '
"' . $fxv['itm']['name'] . '"
'; + $this->error .= '
Вы отказались от участия в розыгрыше "' . $fxv['itm']['name'] . '"
'; } unset($fxv); } @@ -1143,7 +1143,7 @@ class Dungeon if ($pl['user'] == 0 && $live_users > 1 && ($pl['time'] + 300 > time() || $luck_users < 1)) { $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')); if (!isset($fxv['id'])) { - // + //Розыгрыш if ($this->info['bsid'] == 0) { $action = 'javascript: top.fartgame(\'' . $pl['id'] . '\',\'' . $pl['img'] . '\',\'' . $pl['name'] . '\',1,\'\');'; $tk = 1; @@ -1151,37 +1151,37 @@ class Dungeon } } if ($tk == 0) { - $r .= ''; + $r .= ''; } elseif ($tk == 1) { - $r .= ''; + $r .= ''; } } if ($r != '') { - $r = '

:

' . $r; //

+ $r = '

В комнате разбросаны вещи:

' . $r; //
Подобрать все
} return $r; } public function testLike($x1, $y1, $x2, $y2) { - // $x1,$y1 $x2,$y2 - //- + //из $x1,$y1 в $x2,$y2 + //доступна-ли эта клетка для действий $r = 0; $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')); if (isset($c1['id']) && isset($c2['id'])) { if ($x1 == $x2 && $y1 == $y2) { $r = 1; - } elseif ($x1 == $x2 - 1 && $c1['go_1'] == 1) // + } elseif ($x1 == $x2 - 1 && $c1['go_1'] == 1) //право { $r = 1; - } elseif ($x1 == $x2 + 1 && $c1['go_2'] == 1) // + } elseif ($x1 == $x2 + 1 && $c1['go_2'] == 1) //лево { $r = 1; - } elseif ($y1 == $y2 - 1 && $c1['go_3'] == 1) // + } elseif ($y1 == $y2 - 1 && $c1['go_3'] == 1) //верх { $r = 1; - } elseif ($y1 == $y2 + 1 && $c1['go_4'] == 1) // + } elseif ($y1 == $y2 + 1 && $c1['go_4'] == 1) //низ { $r = 1; } @@ -1193,13 +1193,13 @@ class Dungeon { global $u, $c, $code; ////i:{id,name,mapPoint,action,img,type}, - //'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- + //'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- справа $r = ''; - $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'] . ')) ', // - 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'] . ')) ' // + $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'] . ')) ', //лево + 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'] . ')) ' //право ]; $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'); $i = 0; @@ -1222,8 +1222,8 @@ class Dungeon $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } - if (isset($da['use'])) unset($da['use']); // - if (isset($da['rl2'])) $da['rl2'] = -round((int)$da['rl2'] * 1.55); // + 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); $pl['date'] = str_replace('"', '', json_encode($da)); @@ -1245,8 +1245,8 @@ class Dungeon $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } - if (isset($da['use'])) unset($da['use']); // - if (isset($da['rl2'])) $da['rl2'] = 355 - round((int)$da['rl2'] * 0.30); // + 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); $pl['date'] = str_replace('"', '', json_encode($da)); @@ -1271,7 +1271,7 @@ class Dungeon $btli = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1')); } - if (!isset($btli['id'])) { // + if (!isset($btli['id'])) { //Создаем поединок $btl_id = 0; $expB = 0; $btl = ['players' => '', 'timeout' => 120, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; @@ -1280,8 +1280,8 @@ class Dungeon $btl_id = mysql_insert_id(); - if ($btl_id > 0) { // - $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'); // , ? + if ($btl_id > 0) { //Добавляем ботов + $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'); // Только тот, который напал и жив ли он? $j = 0; $logins_bot = []; while ($pl = mysql_fetch_assoc($sp)) { @@ -1310,7 +1310,7 @@ class Dungeon } } else { $btl_id = $btli['id']; - // + //Добавляем ботов $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'); $j = 0; $logins_bot = []; @@ -1335,7 +1335,7 @@ class Dungeon $jui++; } if ($j > 0) { - $logins_bot_text = '{tm1} : ' . implode(', ', $logins_bot_text) . '.'; + $logins_bot_text = '{tm1} В поединок вмешались: ' . implode(', ', $logins_bot_text) . '.'; $logins_bot_vars = implode('||', $logins_bot_vars); $battle_log = mysql_fetch_assoc(mysql_query('SELECT * FROM `battle_logs` WHERE `battle`=' . $btl_id . ' ORDER BY `id_hod` DESC LIMIT 1')); if ($battle_log['id_hod'] > 0) { @@ -1357,10 +1357,10 @@ class Dungeon ////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 = ''; - $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) . ')) ', // - 4 => ' ((`u`.`x` >= ' . $u->info['x'] . ' && `u`.`x` <= ' . ($u->info['x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . ')) ' // + $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) . ')) ', //лево + 4 => ' ((`u`.`x` >= ' . $u->info['x'] . ' && `u`.`x` <= ' . ($u->info['x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['y'] + 2) . ' && `u`.`y` >= ' . ($u->info['y'] - 2) . ')) ' //право ]; // $tmsu = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $u->info['id'] . '" LIMIT 1')); @@ -1379,7 +1379,7 @@ class Dungeon $noat = 1; } if ($this->info['id2'] == 15) { - // + //Хоккей $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']]] . ''; // $tms = mysql_fetch_assoc(mysql_query('SELECT * FROM `katok_now` WHERE `clone` = "' . $pl['id'] . '" LIMIT 1')); @@ -1396,15 +1396,15 @@ class Dungeon } } - // + //отображаем ботов // //$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'); - // , , , -\+30 X -\+35 Y ( , ). + // Выбираем Ботов в подземельи, которые Не в бою, Живые, и не дальше чем -\+30 по X и -\+35 по Y (дабы не гонять всех ботов, меньше выборка). $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'); while ($pl = mysql_fetch_assoc($sp)) { - // , 3-10 . + //перемещение бота, каждые 3-10 сек. if ($pl['go_bot'] > 0 && $pl['go_bot'] <= time()) { $tgx = rand(-1, 1); $tgy = rand(-1, 1); @@ -1416,20 +1416,20 @@ class Dungeon } } $vlb = $this->testLike($pl['x'], $pl['y'], $pl['x'] + $tgx, $pl['y'] + $tgy); - //- + //Кто-то рядом $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')); if (isset($tuz['id']) && $this->testLike($pl['x'], $pl['y'], $tuz['x'], $tuz['y']) == 1) { $tuz['x'] = $pl['x']; $tuz['y'] = $pl['y']; mysql_query('UPDATE `stats` SET `x` = "' . $tuz['x'] . '" , `y` = "' . $tuz['y'] . '" WHERE `id` = "' . $tuz['id'] . '" LIMIT 1'); - $this->botAtack($pl, $tuz, 1);// + $this->botAtack($pl, $tuz, 1);//Тут $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'); while ($pll = mysql_fetch_assoc($sps)) { $this->botAtack($pll, $tuz, 1); } - } elseif ($vlb == 1) { // . + } elseif ($vlb == 1) { // Передвижение ботов. $pl['go_bot'] = time() + 10 + rand(1, 5); $pl['x'] += $tgx; $pl['y'] += $tgy; @@ -1465,16 +1465,16 @@ class Dungeon global $u, $c, $code; $go = 0; if ($id == 1) { - // + //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { - // + //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { - // + //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { - // + //на лево $go = $this->sg[$this->gs][2]; } $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')); @@ -1499,7 +1499,7 @@ class Dungeon } $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')); - // + //наличие предмета if ($tmap['tr_items'] != '') { $ti = explode(',', $tmap['tr_items']); $i = 0; @@ -1521,19 +1521,19 @@ class Dungeon } if ($trnit != '') { $trnit = rtrim($trnit, ', '); - $this->error = ' . ' . $trnit; + $this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit; } } - $tmGo = $u->info['timeGo'] - time(); // + $tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось if ($tmGo > 0) { $go = 0; - $this->error = ' ...'; + $this->error = 'Не так быстро...'; } if ($u->aves['now'] >= $u->aves['max']) { $go = 0; - $this->error = ' , ...'; + $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; } if ($go > 0) { @@ -1560,7 +1560,7 @@ class Dungeon if (isset($tmap1['id'])) { $u->info['x'] = $tmap1['x']; $u->info['y'] = $tmap1['y']; - $this->error = ' ...'; + $this->error = 'Вы переместились в другую комнату...'; } } 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'); @@ -1573,16 +1573,16 @@ class Dungeon global $u, $c, $code; $go = 0; if ($id == 1) { - // + //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { - // + //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { - // + //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { - // + //на лево $go = $this->sg[$this->gs][2]; } $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')); @@ -1612,7 +1612,7 @@ class Dungeon public function testSt($id, $s) { $r = 0; - // + //заменяем отображение стен в зависимости от угла обзора $s = $this->sg[$this->gs][$s]; if (isset($this->map[1][$id]['id'])) { $r = $this->map[1][$id]['st'][($s - 1)]; @@ -1623,9 +1623,9 @@ class Dungeon public function lookDungeon() { global $u, $c, $code, $pd; - /* */ /* LEVEL 1 */ + /* Генерируем изображение карты */ /* LEVEL 1 */ - // 29/10/2014 D5, 2 , . . 22/11/2014 . , . + // Исправления от 29/10/2014 относительно D5, 2 этаж, ПТП. Покрутиться и все гуд. и от 22/11/2014 для обратных стен. Если стена к нам задницей, мы её не видим. if ($this->testSt(2, 4) > 0 /* || $this->testSt(3,2)>0 */) { $pd[28] = 1; } @@ -1705,9 +1705,9 @@ class Dungeon $pd[3] = 1; } - /* */ + /* Генерируем предметы на карте */ - /* */ + /* Генерируем персонажей и ботов на карте */ } @@ -1723,29 +1723,29 @@ class Dungeon { $r = []; if ($this->gs == 1) { - //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 + //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 вперед } elseif ($this->gs == 2) { - //2; // + //2; //смотрим лево $r[1] = $this->getMatrix(-1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(1, 0); @@ -1766,7 +1766,7 @@ class Dungeon $r[18] = $this->getMatrix(2, -4); $r[19] = $this->getMatrix(-2, -4); } elseif ($this->gs == 3) { - //3; // + //3; //смотрим вниз $r[1] = $this->getMatrix(0, 1); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(0, -1); @@ -1787,7 +1787,7 @@ class Dungeon $r[18] = $this->getMatrix(-4, -2); $r[19] = $this->getMatrix(-4, 2); } elseif ($this->gs == 4) { - //4; // + //4; //смотрим право $r[1] = $this->getMatrix(1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(-1, 0); diff --git a/_incl_data/class/DungeonEditor.php b/_incl_data/class/DungeonEditor.php index 4abcb580..dd5aaf60 100644 --- a/_incl_data/class/DungeonEditor.php +++ b/_incl_data/class/DungeonEditor.php @@ -2,13 +2,13 @@ class DungeonEditor { - public $bs, $info, $see, $error, $gs = 1, $map = [0 => [] // + public $bs, $info, $see, $error, $gs = 1, $map = [0 => [] //карта ], $id_dng, $cord = ['x' => 0], $sg = [1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3]]; public function start() { global $u, $c, $code, $id; - $this->info = ['id2' => $id, 'id' => 0, 'name' => ' ', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0]; + $this->info = ['id2' => $id, 'id' => 0, 'name' => 'Редактирование Пещеры', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0]; $this->id_dng = $this->info['id2']; $this->gs = $u->info['psevdo_s']; @@ -18,24 +18,24 @@ class DungeonEditor if ($this->info['bsid'] > 0) { $this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1')); - // + //Если БС закончена if (isset($this->bs['id']) && $this->bs['users'] - $this->bs['users_finish'] < 2) { $u->bsfinish($this->bs, false, null); } } - /* ( ) - $this->gs = 1; // - 2; // - 3; // - 4; // + /* генерируем вид персонажа (только карта) + $this->gs = 1; //смотрим прямо + 2; //смотрим лево + 3; //смотрим вниз + 4; //смотрим право ( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) ) */ - $whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', // - 3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', // - 2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', // - 4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' // + $whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо + 3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз + 2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево + 4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право ]; $i = 1; @@ -44,7 +44,7 @@ class DungeonEditor $this->map[0][$pl['y'] . '_' . $pl['x']] = $pl; $i++; } - $this->map['good'] = $i; // + $this->map['good'] = $i; //целых клеток $this->map[1] = $this->genMatix(); $this->lookDungeon(); } @@ -53,43 +53,43 @@ class DungeonEditor { global $u, $c; $r = ''; - /* ( ) */ + /* отображение ботов (бесполезно в данном редакторе) */ } public function atack($id) { global $u, $c, $code; - /* , ? :) , ? :) */ + /* нападение, какое нападение может быть в редакторе? :) На самого себя, со стулом? :) */ } public function takeinv($id) { global $u, $c, $code; - /* , , :) */ + /* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */ } public function takeit($id) { global $u, $c, $code, $magic; - /* ;) */ + /* В редакторе ничего не падает ;) */ } public function addItem($i) { - // ( ) - /* ? ?! */ + //добавляем предмет в пещеру (возможно выпал из бота или из сундука) + /* А что еще? Пульт к управлению Землей?! */ } public function itemsMap() { global $u, $c, $code; - /* ! ! */ + /* Да ничего здесь не падает! Говорю же! */ } public function testLike($x1, $y1, $x2, $y2) { - // $x1,$y1 $x2,$y2 - //- + //из $x1,$y1 в $x2,$y2 + //доступна-ли эта клетка для действий $r = 0; $c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); $c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); @@ -97,10 +97,10 @@ class DungeonEditor if ($x1 == $x2 && $y1 == $y2) { $r = 1; } elseif ( - $x1 == $x2 - 1 && $c1['go_1'] == 1 || // - $x1 == $x2 + 1 && $c1['go_2'] == 1 || // - $y1 == $y2 - 1 && $c1['go_3'] == 1 || // - $y1 == $y2 + 1 && $c1['go_4'] == 1 // + $x1 == $x2 - 1 && $c1['go_1'] == 1 || //право + $x1 == $x2 + 1 && $c1['go_2'] == 1 || //лево + $y1 == $y2 - 1 && $c1['go_3'] == 1 || //верх + $y1 == $y2 + 1 && $c1['go_4'] == 1 //низ ) { $r = 1; @@ -113,13 +113,13 @@ class DungeonEditor { global $u, $c, $code; ////i:{id,name,mapPoint,action,img,type}, - //'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- + //'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- справа $r = ''; - $whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', // - 3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', // - 2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', // - 4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' // + $whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //прямо + 3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //вниз + 2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //лево + 4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' //право ]; $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this->id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 76'); # die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76'); @@ -144,8 +144,8 @@ class DungeonEditor $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } - #if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // - if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // + #if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева + if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // Слева if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160); if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120); $pl['date'] = str_replace('"', '', json_encode($da)); @@ -165,8 +165,8 @@ class DungeonEditor $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } - #if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // - if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // + #if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа + if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // Справа if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160); if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120); $pl['date'] = str_replace('"', '', json_encode($da)); @@ -188,13 +188,13 @@ class DungeonEditor ////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 = ''; - $whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', // - 3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', // - 2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', // - 4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' // + $whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо + 3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз + 2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево + 4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право ]; $i = 0; - // + //отображаем ботов $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr[$this->gs] . ' AND `dn` = "0" AND `for_dn` = "' . $this->id_dng . '" AND `u`.`delete` = "0" LIMIT 50'); while ($pl = mysql_fetch_array($sp)) { $i++; @@ -219,7 +219,7 @@ class DungeonEditor $btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1')); } if (!isset($btli['id'])) { - // + //Создаем поединок $btl_id = 0; $expB = 0; $btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; @@ -243,7 +243,7 @@ class DungeonEditor $btl_id = mysql_insert_id(); if ($btl_id > 0) { - // + //Добавляем ботов $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 50'); $j = 0; $logins_bot = []; @@ -279,16 +279,16 @@ class DungeonEditor global $u, $c, $code; $go = 0; if ($id == 1) { - // + //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { - // + //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { - // + //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { - // + //на лево $go = $this->sg[$this->gs][2]; } $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); @@ -313,7 +313,7 @@ class DungeonEditor } $tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); - // + //наличие предмета if ($tmap['tr_items'] != '') { $ti = explode(',', $tmap['tr_items']); $i = 0; @@ -335,19 +335,19 @@ class DungeonEditor } if ($trnit != '') { $trnit = rtrim($trnit, ', '); - $this->error = ' . ' . $trnit; + $this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit; } } - $tmGo = $u->info['timeGo'] - time(); // + $tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось if ($tmGo > 0) { $go = 0; - $this->error = ' ...'; + $this->error = 'Не так быстро...'; } if ($u->aves['now'] >= $u->aves['max']) { $go = 0; - $this->error = ' , ...'; + $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; } if ($go > 0) { @@ -371,16 +371,16 @@ class DungeonEditor global $u, $c, $code; $go = 0; if ($id == 1) { - // + //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { - // + //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { - // + //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { - // + //на лево $go = $this->sg[$this->gs][2]; } $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); @@ -410,7 +410,7 @@ class DungeonEditor public function testSt($id, $s) { $r = 0; - // + //заменяем отображение стен в зависимости от угла обзора $s = $this->sg[$this->gs][$s]; if (isset($this->map[1][$id]['id'])) { $r = $this->map[1][$id]['st'][($s - 1)]; @@ -421,7 +421,7 @@ class DungeonEditor public function lookDungeon() { global $u, $c, $code, $pd; - /* */ + /* Генерируем изображение карты */ /* LEVEL 1 */ if ($this->testSt(2, 4) > 0 || $this->testSt(3, 2) > 0) { $pd[28] = 1; @@ -502,9 +502,9 @@ class DungeonEditor $pd[3] = 1; } - /* */ + /* Генерируем предметы на карте */ - /* */ + /* Генерируем персонажей и ботов на карте */ } @@ -520,7 +520,7 @@ class DungeonEditor { $r = []; if ($this->gs == 1) { - //1; // + //1; //смотрим прямо $r[1] = $this->getMatrix(0, -1); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(0, 1); @@ -541,7 +541,7 @@ class DungeonEditor $r[18] = $this->getMatrix(4, 2); $r[19] = $this->getMatrix(4, -2); } elseif ($this->gs == 2) { - //2; // + //2; //смотрим лево $r[1] = $this->getMatrix(-1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(1, 0); @@ -562,7 +562,7 @@ class DungeonEditor $r[18] = $this->getMatrix(2, -4); $r[19] = $this->getMatrix(-2, -4); } elseif ($this->gs == 3) { - //3; // + //3; //смотрим вниз $r[1] = $this->getMatrix(0, 1); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(0, -1); @@ -583,7 +583,7 @@ class DungeonEditor $r[18] = $this->getMatrix(-4, -2); $r[19] = $this->getMatrix(-4, 2); } elseif ($this->gs == 4) { - //4; // + //4; //смотрим право $r[1] = $this->getMatrix(1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(-1, 0); diff --git a/_incl_data/class/FightRequest.php b/_incl_data/class/FightRequest.php index cd1a213f..6e103bec 100644 --- a/_incl_data/class/FightRequest.php +++ b/_incl_data/class/FightRequest.php @@ -5,9 +5,9 @@ use Core\Db; class FightRequest { - private array $z1n = [4 => '', 5 => '']; - private array $z2n = [4 => '', 5 => '']; - private bool $backTest = false; // . + private array $z1n = [4 => 'групповые', 5 => 'хаотичные']; + private array $z2n = [4 => 'группового', 5 => 'хаотичного']; + private bool $backTest = false; // Для проверок хаотических поединков. private static bool $bcktst; private User $u; @@ -16,7 +16,7 @@ class FightRequest public string $error = ''; /** - * . + * Заявки на бой. */ public function __construct() { @@ -38,7 +38,7 @@ class FightRequest } } - $this->test(); // + $this->test(); //проверяем заявки } private function add_effn($uid, $id) @@ -72,25 +72,25 @@ class FightRequest private function testTurnir() { $chat = new Chat(); - // + //Проверяем турниры в этом городе $trn = Db::getRows('select * from turnirs where status != -1'); $stmt = Db::prepare('update turnirs set chat = ? where id = ?'); foreach ($trn as $pl) { - // + //Начало турнира if ($pl['status'] == 0 && $pl['time'] > time()) { if (floor(($pl['time'] - time()) / 60) <= 2 && $pl['chat'] > 0) { $stmt->execute([0, $pl['id']]); } elseif (floor(($pl['time'] - time()) / 60) <= 5 && $pl['chat'] > 1) { - // 5 . - $chat->sendsys(': 5 .'); + //Осталось 5 мин. + $chat->sendsys('Турниры: До начала турнира осталось 5 минут.'); $stmt->execute([1, $pl['id']]); } elseif (floor(($pl['time'] - time()) / 60) <= 10 && $pl['chat'] > 2) { - // 10 . - $chat->sendsys(': 10 .'); + //Осталось 10 мин. + $chat->sendsys('Турниры: До начала турнира осталось 10 минут.'); $stmt->execute([2, $pl['id']]); } elseif (floor(($pl['time'] - time()) / 60) <= 15 && $pl['chat'] > 3) { - // 15 . - $chat->sendsys(': 15 .'); + //Осталось 15 мин. + $chat->sendsys('Турниры: До начала турнира осталось 15 минут.'); $stmt->execute([3, $pl['id']]); } } @@ -98,7 +98,7 @@ class FightRequest continue; } if ($pl['users_in'] > 1) { - // + //Начало турнира Db::sql('update turnirs set time = unix_timestamp() + ?, status = 1 where id = ?', [$pl['time3'], $pl['id']]); $usp = mysql_query( @@ -121,10 +121,10 @@ class FightRequest mysql_query( 'UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1' ); - // + //Добавляем эффекты скорость регена и запрет передвижения } } else { - // + //Отмена турнира mysql_query( 'UPDATE `turnirs` SET `time` = "' . (time( ) + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' @@ -136,7 +136,7 @@ class FightRequest private function testGroupAndChaotic() { - // + //Проверяем хаотичные и групповые бои в этом городе $sp = mysql_query( 'SELECT * FROM `zayvki` AS `z` WHERE `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 22' ); @@ -181,22 +181,22 @@ class FightRequest $toChat = rtrim($toChat, ','); $toWhere = ltrim($toWhere, 'OR '); if ($pl['razdel'] == 4) { - // + //группы $this->testGroup($i, $pl, $toChat, $toWhere); } elseif ($pl['razdel'] == 5) { - //fixme ! + //fixme ёбаный костыль! $this->testCronChaotic($pl, $toChat, $toWhere); return; - // + //хаоты // $i = mysql_fetch_array( mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" LIMIT 1') ); if ($i[0] < 4 && ($i[0] < 2 || $pl['fastfight'] == 0)) { - // - $this->cancelGroup($pl, $toChat, ' !'); + //группа не набрана + $this->cancelGroup($pl, $toChat, ' Беда!'); } else { - // + //Начинаем поединок $this->startBattle($pl['id'], $toChat . '|-|' . $toWhere); } } @@ -204,7 +204,7 @@ class FightRequest } } - /** + /** Проверяем заявки * @return void */ private function test() @@ -223,15 +223,15 @@ class FightRequest private function testCronTurnir() { - // + //Проверяем турниры в этом городе $sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` != "-1"'); while ($pl = mysql_fetch_array($sp)) { - // + //Начало турнира if ($pl['status'] != 0 || $pl['time'] >= time()) { continue; } if ($pl['users_in'] > 1) { - // + //Начало турнира mysql_query( 'UPDATE `turnirs` SET `time` = "' . (time( ) + $pl['time3']) . '",`status` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' @@ -256,10 +256,10 @@ class FightRequest mysql_query( 'UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1' ); - // + //Добавляем эффекты скорость регена и запрет передвижения } } else { - // + //Отмена турнира mysql_query( 'UPDATE `turnirs` SET `time` = "' . (time( ) + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' @@ -283,10 +283,10 @@ class FightRequest $zayavka['teams'] == 3 ) ) { - // + //группа не набрана $this->cancelGroup($zayavka, $toChat); } else { - // + //Начинаем поединок $this->startBattle($zayavka['id'], $toChat . '|-|' . $toWhere); } } @@ -331,18 +331,18 @@ class FightRequest $pendingFightersCount = Db::getValue('select count(*) from stats where zv = ?', [$zayavka['id']]); if ($pendingFightersCount < $requiredFightersToStartBattle) { - // - // - if (!$zayavka['nobot']) { // . + //группа не набрана + //Добавляем недостающих игроков + if (!$zayavka['nobot']) { // Если нет запрета на ботов. $getRealPlayersQuery = 'select * from stats left join users on stats.id = users.id where exp >= ? and exp < ? and bot = 0 order by btl_cof desc limit 50'; $getBotsQuery = 'select * from stats left join users on stats.id = users.id where bot = 2 and exp >= ? and exp < ?'; $botUsers = Db::getRows($getBotsQuery, [$levelToExp[$zayavka['min_lvl_1']], $levelToExp[$zayavka['max_lvl_1'] + 1]]); } if (empty($botUsers)) { - $text = ' : . (' . $zayavka['id'] . ': 0 ' . $levelToExp[$zayavka['min_lvl_1']] . '-' . $levelToExp[$zayavka['max_lvl_1'] + 1] . ')'; + $text = ' Не удалось начать поединок по причине: Группа не набрана. (' . $zayavka['id'] . ': 0 ' . $levelToExp[$zayavka['min_lvl_1']] . '-' . $levelToExp[$zayavka['max_lvl_1'] + 1] . ')'; $chat->sendsys($text, 'Merlin'); - $this->cancelGroup($zayavka, $toChat, ' .'); + $this->cancelGroup($zayavka, $toChat, ' Боты проспали.'); } else { $pendingBotsCount = 0; for ($i = 0; $i < $requiredFightersToStartBattle - $pendingFightersCount; $i++) { @@ -382,12 +382,12 @@ class FightRequest } } } else { - // + //Начинаем поединок $this->startBattle($zayavka['id'], $toChat . '|-|' . $toWhere); } } - /** + /** Проверяем хаотичные и групповые бои в этом городе * @return void * @throws Exception */ @@ -453,25 +453,25 @@ class FightRequest $r .= '
  ' . $this->u->microLogin($this->u->info['id'], 1) . '   -
' . floor( +
' . floor( $this->u->stats['hpNow'] ) . '/' . $this->u->stats['hpAll'] . '
-
+
-
+
'; if ($this->u->stats['mpAll'] > 0) { - $r .= '
' . floor( + $r .= '
' . floor( $this->u->stats['mpNow'] ) . '/' . $this->u->stats['mpAll'] . '
-
+
-
'; +
'; } $r .= '
'; unset($stt, $ph, $pm); @@ -493,8 +493,8 @@ class FightRequest } if ($zv['priz'] > 0) { while ($pl = mysql_fetch_array($sp)) { - // 1 - if ($zv['type'] == 33) // + //Выдаем по 1 жетону + if ($zv['type'] == 33) //ТУТ група не набранна удаляем персонажа и выдаем жетон { $pld = mysql_fetch_array( mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "' . $pl['id'] . '"') @@ -512,9 +512,9 @@ class FightRequest $this->u->addItem(4754, $pl['id'], ''); } } - $text = ' : . (1)'; + $text = ' Не удалось начать поединок по причине: Группа не набрана. Вы получаете Призовой Жетон (х1)'; } else { - $text = ' : !'; + $text = ' Не удалось начать поединок по причине: Группа не набрана!'; } $chat = new Chat(); $chat->sendsys($text . $debug, $uids); @@ -532,26 +532,26 @@ class FightRequest $az = 1; if ($r == 1 && $this->u->info['level'] > 0) { $az = 0; - $this->error = ' ;)'; + $this->error = 'Вы уже выросли из ползунков ;)'; } if (($r == 4 || $r == 5) && $this->u->info['level'] < 2) { $az = 0; - $this->error = ' ' . $this->z1n[$r] . ' .'; + $this->error = 'В ' . $this->z1n[$r] . ' бои только со второго уровня.'; } if ($this->testTravm() == 1 && $_POST['k'] != 1) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.'; $az = 0; } elseif ($this->testTravm() == 2) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; $az = 0; } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30) { - $this->error = ' '; + $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; } if ($this->u->info['zv'] > 0) { $az = 0; - $this->error = ' .'; + $this->error = 'Вы уже находите в заявке.'; } if ($az != 1) { return; @@ -598,12 +598,12 @@ class FightRequest $gad = 1; if ($r == 5 && $this->u->info['level'] > 1) { - // + //хаотичный бой if ($_POST['startime2']) { $nz['time_start'] = (int)$_POST['startime2']; $nz['comment'] = substr($_POST['cmt'], 0, 40); $nz['comment'] = str_replace('"', '"', $nz['comment']); - $nz['comment'] = htmlspecialchars($nz['comment'], null, 'cp1251'); + $nz['comment'] = htmlspecialchars($nz['comment'], null); if (!in_array($nz['time_start'], [60, 180, 300])) { $nz['time_start'] = 600; } @@ -653,7 +653,7 @@ class FightRequest $nz['timeout'] = 3; } - // + //Генерируем уровни союзника $lvl = (int)$_POST['levellogin1']; if ($lvl == 0) { $nz['min_lvl_1'] = 2; @@ -672,11 +672,11 @@ class FightRequest } if ((int)$_POST['k'] == 1) { - // + //кулачный бой $nz['type'] = 1; } if ((int)$_POST['k'] == 2) { - // + //кровавый бой $nz['type'] = 6; $nz['travmaChance'] = 1; } @@ -684,16 +684,16 @@ class FightRequest $nz['tm1'] = $this->u->stats['reting']; if (!$this->u->info['no_zv_key'] && ($_POST['code21'] == 0 || $_POST['code21'] != $_SESSION['code2'] || $_SESSION['code2'] == 0 || !isset($_SESSION['code2']))) { - $this->error = ' '; + $this->error = 'Неправильный код подтверждения'; $gad = 0; } } else { $gad = 0; - $this->error = '- ...
'; + $this->error = 'Что-то не так...
'; } } elseif ($r == 4 && $this->u->info['level'] > 1) { - // - // + //групповой бой + //здесь заносим и проверяем данные на гурпповой бой if ($_POST['startime']) { $nz['time_start'] = (int)$_POST['startime']; $nz['comment'] = substr($_POST['cmt'], 0, 40); @@ -711,28 +711,28 @@ class FightRequest $nz['tm1max'] = (int)$_POST['nlogin1']; if ($nz['tm1max'] < 1 || $nz['tm1max'] > 99) { - $this->error .= ' -
'; + $this->error .= 'Неверное кол-во союзников
'; $gad = 0; } $nz['tm2max'] = (int)$_POST['nlogin2']; if ($nz['tm2max'] < 1 || $nz['tm2max'] > 99) { - $this->error .= ' -
'; + $this->error .= 'Неверное кол-во противников
'; $gad = 0; } if ($this->testTravm() == 1 && $_POST['k'] != 1) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.'; $gad = 0; } elseif ($this->testTravm() == 2) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; $gad = 0; } elseif ($nz['tm1max'] + $nz['tm2max'] < 3) { - $this->error .= ' 1 1
'; + $this->error .= 'Заявки 1 на 1 подаются в разделе физические или договорные бои
'; $gad = 0; } - // + //Генерируем уровни союзника $lvl = (int)$_POST['levellogin1']; if ($lvl == 0) { $nz['min_lvl_1'] = 2; @@ -757,11 +757,11 @@ class FightRequest $nz['max_lvl_1'] = $this->u->info['level'] + 1; $nz['min_lvl_1'] = 99; } else { - $this->error = '- ...
'; + $this->error = 'Что-то не так...
'; $gad = 0; } - // + //Генерируем уровни противника $lvl = (int)$_POST['levellogin2']; if ($lvl == 0) { $nz['min_lvl_2'] = 2; @@ -786,7 +786,7 @@ class FightRequest $nz['max_lvl_2'] = $this->u->info['level'] + 1; $nz['min_lvl_2'] = 99; } else { - $this->error = '- ...
'; + $this->error = 'Что-то не так...
'; $gad = 0; } @@ -804,18 +804,18 @@ class FightRequest } if ((int)$_POST['k'] == 1) { - // + //кулачный бой $nz['type'] = 1; } if ((int)$_POST['k'] == 2) { - // + //кровавый бой $nz['type'] = 6; $nz['travmaChance'] = 100; } } else { $gad = 0; - $this->error = '- ...
'; + $this->error = 'Что-то не так...
'; } } @@ -836,7 +836,7 @@ class FightRequest } $nz['time_create_zv'] = time(); if ($nz['razdel'] == 4 || $nz['razdel'] == 5) { - // + //Округляем время для кроны $nz['time_create_zv'] = strtotime( date('d.m.Y H:i', $nz['time_create_zv']) . ':00', $nz['time_create_zv'] ); @@ -871,7 +871,7 @@ class FightRequest } // if ($nz['razdel'] == 2 && isset($_POST['commentfiz'])) { - $nz['comment'] = htmlspecialchars($_POST['commentfiz'], null, 'cp1251'); + $nz['comment'] = htmlspecialchars($_POST['commentfiz'], null); } // if ($nz['razdel'] == 5) { @@ -936,14 +936,14 @@ class FightRequest if ($ins) { Db::sql('update stats set zv = ?, team = 1 where id = ?', [$zid, $this->u->info['id']]); $this->u->info['zv'] = $zid; - $this->error = ' '; + $this->error = 'Заявка на бой подана'; } else { - $this->error = ': !'; + $this->error = 'Ошибка: Заявка не подана!'; } } } - // + //тренеровочный бой public function addBot() { global $c; @@ -954,17 +954,17 @@ class FightRequest $bot = false; } if (!$bot) { - $this->error = ' , , 8 ...
, - ...
'; + $this->error = 'Бои с монстрами, нежитью, клонами и прочими вурдалаками проводятся только для персонажей младше 8 уровня...
Со стороны посматривает Общий Враг, ему явно что-то не понравилось...
'; } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r == 1)) { - $this->error = ' '; + $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; } elseif ($this->u->info['align'] == 2) { - $this->error = ' '; + $this->error = 'Хаосники не могут сражаться здесь'; $az = 0; } elseif (!$bot) { echo '
Cannot start battle (no prototype "ND0Clone")
'; } else { - // + //создаем поединок с ботом $expB = 0; $btl = ['smert' => 0, 'noart' => 0, 'noeff' => 0, 'otmorozok' => 0, 'noatack' => 0, 'priz' => 0, 'arand' => 0, 'kingfight' => 0, 'nobot' => 0, 'fastfight' => 0, 'players' => '', 'timeout' => 60, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0, 'money3' => 0]; $ins = mysql_query( @@ -994,7 +994,7 @@ class FightRequest ); if ($ins) { $btl_id = mysql_insert_id(); - // + //обновляем данные о поединке $this->u->info['enNow'] -= $trEn; $upd2 = mysql_query( 'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2' @@ -1005,9 +1005,9 @@ class FightRequest mysql_query( 'UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`team`="2" WHERE `id` = "' . $bot . '" LIMIT 1' ); - // , + //обновляем заявку, что бой начался $this->u->info['battle'] = $btl_id; - // + //Отправляем сообщение в чат всем бойцам mysql_query( "INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $this->u->info['login'] . "','" . time( ) . "','11','0','117')" @@ -1019,7 +1019,7 @@ class FightRequest } } - // + //тренеровочный бой public function addBotClone($uid) { if ($this->u->info['online'] > 0) { @@ -1028,17 +1028,17 @@ class FightRequest $bot = false; } if (!$bot) { - $this->error = ' '; + $this->error = 'Не получилось начать поединок'; } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) { - $this->error = ' '; + $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; } elseif ($this->u->info['align'] == 2) { - $this->error = ' '; + $this->error = 'Хаосники не могут сражаться здесь'; $az = 0; } elseif (!$bot) { echo '
Cannot start battle (no prototype "ND0Clone")
'; } else { - // + //создаем поединок с ботом $expB = 0; $btl = ['priz' => 0, 'smert' => 0, 'noart' => 0, 'noeff' => 0, 'noatack' => 0, 'arand' => 0, 'kingfight' => 0, 'nobot' => 0, 'fastfight' => 0, 'players' => '', 'timeout' => 60, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0, 'money3' => 0]; $ins = mysql_query( @@ -1068,7 +1068,7 @@ class FightRequest ); if ($ins) { $btl_id = mysql_insert_id(); - // + //обновляем данные о поединке $this->u->info['enNow'] -= $trEn; $upd2 = mysql_query( 'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2' @@ -1077,7 +1077,7 @@ class FightRequest 'UPDATE `stats` SET `team`="1",`enNow` = "' . $this->u->info['enNow'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' ); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot . '" LIMIT 1'); - // , + //Если бой кулачный, то снимаем вещи if ($btl['type'] == 1) { mysql_query( 'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $this->u->info['id'] . '" AND `inOdet`!=0' @@ -1085,9 +1085,9 @@ class FightRequest mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $bot . '" AND `inOdet`!=0'); } - // , + //обновляем заявку, что бой начался $this->u->info['battle'] = $btl_id; - // + //Отправляем сообщение в чат всем бойцам mysql_query( "INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $this->u->info['login'] . "','" . time( ) . "','11','0','117')" @@ -1196,7 +1196,7 @@ class FightRequest if (isset($z['id'])) { $vars = explode('|-|', $vars); if ($z['razdel'] >= 4 && $z['razdel'] <= 5) { - // + //начало группового или хаотичного боя $btl_id = 0; //$txtz = ''; if ($z['razdel'] == 5) { @@ -1211,7 +1211,7 @@ class FightRequest $pld[$ii] = $pl; } $yy = $ii; - $jj = $ii;// c + $jj = $ii;//счетчик c конца $ii = 0; $teamA = 0; $teamAbtlconf = 0; @@ -1282,7 +1282,7 @@ class FightRequest 'otmorozok' => $z['otmorozok'], 'priz' => $z['priz'], 'smert' => $z['smert'], 'noart' => $z['noart'], 'noeff' => $z['noeff'], 'noatack' => $z['noatack'], 'arand' => $z['arand'], 'kingfight' => $z['kingfight'], 'players' => '', 'timeout' => $z['timeout'], 'type' => $z['type'], 'travmChance' => $z['travmChance'], 'invis' => $z['invise'], 'noinc' => 0, 'typeBattle' => 0, 'addExp' => $z['exp'], 'money' => 0, 'money3' => 0]; - // + //ТУТ старт боя $ins = mysql_query( 'INSERT INTO `battle` (`otmorozok`,`priz`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`razdel`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( "' . $z['otmorozok'] . '", @@ -1311,7 +1311,7 @@ class FightRequest $btl_id = mysql_insert_id(); if ($btl_id > 0) { - // , + //Если бой кулачный, то снимаем вещи if ($z['type'] == 1) { $sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $z['id'] . '"'); while ($pl = mysql_fetch_array($sp)) { @@ -1319,7 +1319,7 @@ class FightRequest 'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $pl['id'] . '" AND `inOdet`!=0' ); } - } elseif ($z['type'] == 51) { // + } elseif ($z['type'] == 51) { //Поединок без ЕКР вещей $sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $z['id'] . '"'); while ($pl = mysql_fetch_array($sp)) { mysql_query( @@ -1328,17 +1328,17 @@ class FightRequest } } - // + //обновляем данные о поединке $upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "' . $z['id'] . '"'); $upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE ' . $vars[1] . ''); - // , + //обновляем заявку, что бой начался $upd = mysql_query( 'UPDATE `zayvki` SET `start` = "' . time( ) . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1' ); $this->u->info['battle'] = $btl_id; - // + //Отправляем сообщение в чат всем бойцам mysql_query( "INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','-1','" . $vars[0] . "','" . time( ) . "','11','0','117')" @@ -1346,7 +1346,7 @@ class FightRequest } } elseif ($z['razdel'] >= 1 && $z['razdel'] <= 3) { - // PvP + //начало PvP if ($this->u->info['team'] == 1 && $this->u->info['zv'] == $z['id']) { $zu = mysql_fetch_array( mysql_query('SELECT * FROM `stats` WHERE `zv`="' . $z['id'] . '" AND `team` = "2" LIMIT 1') @@ -1356,7 +1356,7 @@ class FightRequest mysql_query('SELECT `login`,`money` FROM `users` WHERE `id`="' . $zu['id'] . '" LIMIT 1') ); if ($zu['clone'] > 0) { - // + //обновляем клона $bot = $this->u->addNewbot(1, null, $zu['clone'], null, true); if ($bot > 0) { mysql_query('DELETE FROM `users` WHERE `id` = "' . $zu['id'] . '" LIMIT 1'); @@ -1381,7 +1381,7 @@ class FightRequest } } - // + //создаем поединок $btl_id = 0; if ($uz['money'] < $z['money'] || $this->u->info['money'] < $z['money']) { $z['money'] = 0; @@ -1414,13 +1414,13 @@ class FightRequest ); $btl_id = mysql_insert_id(); if ($ins) { - // + //обновляем данные о поединке $upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "' . $z['id'] . '" LIMIT 2'); $upd2 = mysql_query( 'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $zu['id'] . '" LIMIT 2' ); - // , + //Если бой кулачный, то снимаем вещи if ($z['type'] == 1) { mysql_query( 'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $this->u->info['id'] . '" AND `inOdet`!=0' @@ -1430,7 +1430,7 @@ class FightRequest ); } - // , + //обновляем заявку, что бой начался $upd = mysql_query( 'UPDATE `zayvki` SET `start` = "' . time( ) . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1' @@ -1438,20 +1438,20 @@ class FightRequest $this->u->info['battle'] = $btl_id; - // + //Отправляем сообщение в чат всем бойцам mysql_query( "INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $this->u->info['city'] . "','" . $this->u->info['room'] . "','" . $uz['login'] . "','" . time( ) . "','11','0','117')" ); die(''); } else { - $this->error = ' .'; + $this->error = 'Ошибка создания битвы.'; } } else { - $this->error = ' , .'; + $this->error = 'Вы не можете начать поединок, вашу заявку никто не принял.'; } } else { - $this->error = ' .'; + $this->error = 'Вы не можете начать поединок.'; } } } @@ -1470,26 +1470,26 @@ class FightRequest ); if (isset($enemy['id'])) { if ($this->u->info['team'] == 1) { - // + + //выкидываем из заявки + пишем сообщение в чат $upd = mysql_query( 'UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1' ); if ($upd) { mysql_query('UPDATE `users` SET `otk` = (`otk` + 1) WHERE `id` = "' . $zi['id'] . '" LIMIT 1'); - $this->error = ' ' . $enemy['login'] . ' '; - // + $this->error = 'Вы отказали ' . $enemy['login'] . ' в поединке'; + //отправляем сообщение в чат $sa = ''; if ($this->u->info['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . $this->u->info['login'] . '] ' . $sa . ' .'; + $text = ' [login:' . $this->u->info['login'] . '] отказал' . $sa . ' вам в поединке.'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $enemy['city'] . "','','','" . $enemy['login'] . "','" . $text . "','" . time( ) . "','6','0')" ); } } elseif ($this->u->info['id'] == $enemy['id'] && $zi['start'] == 0) { - // + + //выкидываем из заявки + пишем сообщение в чат $upd = mysql_query( 'UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1' ); @@ -1500,13 +1500,13 @@ class FightRequest ) ); if (isset($uz['id'])) { - $this->error = ' .'; - // + $this->error = 'Вы отозвали свой запрос на бой.'; + //отправляем сообщение в чат $sa = ''; if ($this->u->info['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . $this->u->info['login'] . '] ' . $sa . ' .'; + $text = ' [login:' . $this->u->info['login'] . '] отозвал' . $sa . ' свой запрос на бой.'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz['city'] . "','','','" . $uz['login'] . "','" . $text . "','" . time( ) . "','6','0')" @@ -1517,7 +1517,7 @@ class FightRequest } } if ($enemy['bot'] == 1) { - // , + //удаляем бота , предметы и эффекты mysql_query('DELETE FROM `users` WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $enemy['id'] . '" LIMIT 100'); @@ -1525,7 +1525,7 @@ class FightRequest } } else { if ($this->u->info['team'] == 1) { - // + //удаляем заявку на бой $upd = mysql_query( 'UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zi['id'] . '" LIMIT 1' ); @@ -1533,7 +1533,7 @@ class FightRequest mysql_query( 'UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' ); - $this->error = ' '; + $this->error = 'Вы отозвали свою заявку'; $zi = false; $this->u->info['zv'] = 0; } @@ -1550,24 +1550,24 @@ class FightRequest if (in_array($r, [1, 4, 5, 8, 10])) { $this->zv_see = 1; if ($this->u->room['FR'] == 0 && $this->u->room['zvsee'] == 0) { - echo '


'; + echo '


Подать заявку можно только в комнатах бойцовского клуба
'; $this->zv_see = 0; } elseif ($r == 1 && $this->u->info['level'] > 0) { - echo '


;)
'; + echo '


Вы уже выросли из ползунков ;)
'; $this->zv_see = 0; } elseif ($r > 1 && $r < 6 && $this->u->info['level'] < 1) { - echo '


;)
'; + echo '


Вы еще не выросли из ползунков ;)
'; $this->zv_see = 0; } elseif ($r > 3 && $r < 6 && $this->u->info['level'] < 2) { - echo '


' . $this->z1n[$r] . ' .
'; + echo '


В ' . $this->z1n[$r] . ' бои только со второго уровня.
'; $this->zv_see = 0; } elseif ($r == 8 && $this->u->info['level'] < 1) { - echo '


.
'; + echo '


Принимать участие в турнире только с первого уровня.
'; $this->zv_see = 0; } elseif ($r == 10) { if (\Insallah\Tournament::IS_ENABLED) { - /** by Insallah*/ - # F5 + /** Турниры by Insallah*/ + # Защита от F5 if (!isset($_SESSION['bypass'])) { $_SESSION['bypass'] = mt_rand(); } @@ -1578,11 +1578,11 @@ class FightRequest } } ## - # . + # Формируем список идущих турниров. $tournamentsList = Db::getRows('select * from tournaments'); $tournaments = '
    '; foreach ($tournamentsList as $tournament) { - $time = $tournament['start_time'] === -1 ? ' !' : date( + $time = $tournament['start_time'] === -1 ? 'Турнир уже начался!' : date( 'G:i', $tournament['start_time'] ); $tournament_members_id = \Insallah\TournamentModel::getFreeFighters($tournament['tid']); @@ -1591,39 +1591,39 @@ class FightRequest $members[] = \Insallah\TournamentModel::uidToLogin($member); } $tournaments .= sprintf( - "
  • %d .
    : %s
    : %s
  • ", + "
  • Турнир для %d уровней.
    Время подачи заявки: %s
    Участники: %s
  • ", $tournament['tid'], $time, implode(', ', $members) ); } $tournaments .= '
'; ?>
- ! + Внимание!
    -
  • , - - ! +
  • В случае создания либо присоединения к Турниру, покинуть его - + невозможно!
  • u->info['id'])): ?> -
  • , - Стоимость предметов, одетых на вас не должна + превышать u->info['level'] - ) ?> . + ) ?> еврокредитов.
  • u->info['exp'] < \Insallah\Tournament::MIN_EXP): ?> -
  • .
  • +
  • У вас должно быть не менее опыта.
  • -
  • , - . +
  • Турнир начнётся, когда в заявке + наберётся человек.
  • -
  • 1, 2 3 25, 15, 5 - , 12 , 6 3 ! +
  • Игроки занявшие 1, 2 и 3 места получат 25, 15, 5 Реликвий + Ангела, а так же задержки на участие в турнире 12 часов, 6 и 3 часа соответственно!
- .
+ Активные турниры.
@@ -1631,21 +1631,21 @@ class FightRequest $this->u->info['id'] ) || !\Insallah\TournamentModel::isStarted($this->u->info['level'])): ?>
- +
- . + Вы учавствуете.
- ! + В данный момент турниры не проводятся!
u->info['zv'] > 0 && $this->u->info['battle'] == 0 && $r != 8) { if ($zi['razdel'] == 1 || $zi['razdel'] == 2 || $zi['razdel'] == 3) { echo ' @@ -1660,17 +1660,17 @@ class FightRequest ) ); if (!isset($uz['id'])) { - // - echo '
'; + //если никто не принял + echo '
Вы уже подали заявку на бой
'; } else { - // - + //если кто-то принял $sa = ''; if ($uz['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - echo ' ' . $sa . ' ' . $ca . ' ' . $this->u->microLogin( + echo 'Вашу заявку принял' . $sa . ' ' . $ca . ' ' . $this->u->microLogin( $uz['id'], 1 - ) . ' ? '; + ) . ' Хотите подтвердить бой? '; } } else { $uz = mysql_fetch_array( @@ -1679,25 +1679,25 @@ class FightRequest ) ); if (isset($uz['id'])) { - echo ' ' . $this->u->microLogin( + echo 'Ожидаем подтверждения боя от ' . $this->u->microLogin( $uz['id'], 1 - ) . ' '; + ) . ' '; } } echo '
'; } else { $tm_start = floor(($zi['time'] + $zi['time_start'] - time()) / 6) / 10; $tm_start = $this->rzv($tm_start); - echo ' ' . $this->z2n[$zi['razdel']] . ' '; - echo '
' . $tm_start . ' .'; + echo 'Ожидаем начала ' . $this->z2n[$zi['razdel']] . ' боя'; + echo '
Ваш бой начнется через ' . $tm_start . ' мин.'; } } elseif ($r == 8) { - // + //Турниры $ttur = [ - 0 => ' !', - 1 => ' !', - 2 => ' !', + 0 => 'Выжить любой ценой!', + 1 => 'Каждый сам за себя!', + 2 => 'Захват ключа!', ]; if (isset($_POST['trn1']) && $this->u->room['zvsee'] == 0) { @@ -1717,12 +1717,12 @@ class FightRequest 'UPDATE `turnirs` SET `users_in` = `users_in` + 1 WHERE `id` = "' . $totr['id'] . '" LIMIT 1' ); $this->u->info['inTurnirnew'] = $totr['id']; - $this->error = ' .'; + $this->error = 'Вы записались на участие в турнире.'; } else { - $this->error = ' .'; + $this->error = 'Заявка на турнир не найдена.'; } } else { - $this->error = ' .'; + $this->error = 'Вы уже находитесь в заявке на турнир.'; } } elseif (isset($_GET['cancel13']) && $this->u->room['zvsee'] == 0) { if ($this->u->info['inTurnirnew'] > 0) { @@ -1739,12 +1739,12 @@ class FightRequest ); mysql_query('UPDATE `turnirs` SET `users_in` = `users_in` - 1 LIMIT 1'); $this->u->info['inTurnirnew'] = 0; - $this->error = ' .'; + $this->error = 'Вы отказались от заявки на турнир.'; } else { - $this->error = ' .'; + $this->error = 'Нельзя отказаться от заявки находясь в турнире.'; } } else { - $this->error = ' .'; + $this->error = 'Вы не принимаете участия ни в одном из турниров.'; } } @@ -1761,9 +1761,9 @@ class FightRequest mysql_query( 'UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' ); - echo '- ... .'; + echo 'Что-то не так... Обновите страницу.'; } else { - $dv = ' [' . $pl['users_in'] . ']:
'; + $dv = 'Участники турнира [' . $pl['users_in'] . ']:
'; $spu = mysql_query( 'SELECT `u`.`id`,`u`.`align`,`u`.`login`,`u`.`clan`,`u`.`level`,`u`.`city`,`u`.`online`,`u`.`sex`,`u`.`cityreg`,`u`.`palpro`,`u`.`invis` FROM `users` AS `u` WHERE `u`.`inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in'] ); @@ -1788,9 +1788,9 @@ class FightRequest ' . $this->error . '
- ' . $this->u->timeOut( + Начало турнира через ' . $this->u->timeOut( $pl['time'] - time() - ) . ' + ) . '
' . $dv . ' @@ -1804,7 +1804,7 @@ class FightRequest } else { $tlvl = 4; $i = 4; - $trnmz = [4 => '', 5 => '', 6 => '.\.']; + $trnmz = [4 => 'Физический', 5 => 'Магический', 6 => 'Физ.\Маг.']; while ($i <= 6) { if ($_GET['tlvl'] == $i) { $trse .= ''; @@ -1814,21 +1814,21 @@ class FightRequest } $i++; } - $prb = ''; + $prb = ''; echo ''; $sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` = "0" AND `level` = "' . $tlvl . '"'); $j = 0; while ($pl = mysql_fetch_array($sp)) { $j++; - $dinf = ' ' . $this->u->timeOut($pl['time'] - time()) . ''; + $dinf = 'Начало через ' . $this->u->timeOut($pl['time'] - time()) . ''; $dv .= ''; + $dv .= ' Физический турнир. Участников турнира: ' . $pl['users_in'] . ' чел. | ' . $dinf . '
'; } if ($dv == '') { - $dv = ' ...'; + $dv = 'Список турниров для данного типа пуст...'; } echo '
'; - $dv .= '
: '; $sp_m = mysql_query('SELECT * FROM `test_bot` WHERE `pishera` != 0 ORDER BY `id` ASC'); while ($pl_m = mysql_fetch_array($sp_m)) { @@ -1978,65 +1978,65 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0
'; } } elseif ($r == 4) { - if ($this->u->room['zvsee'] == 0) { // ?> + if ($this->u->room['zvsee'] == 0) { //групповые ?> + value="Подать заявку на групповой бой" style="margin:3px;">
'; } } } elseif ($r == 6) { - // + //текущие $x = 1; $html = ''; $p = 0; @@ -2149,43 +2149,43 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $tmsu = rtrim($tmsu, ', '); $tm .= $tmsu; if ($i + 1 != count($tms)) { - $tm .= ' '; + $tm .= ' против '; } $i++; } if ($tm != '') { $html .= ($p + $x) . '. ' . date( 'd.m.y H:i', $pl['time_start'] - ) . ' ' . $tm . '
'; + ) . '
' . $tm . ' Физический бой »»
'; } $x++; } ?> - +

- ( )

Записи текущих боев на + (всего )

...
'; + echo '
К сожалению сейчас боев нет...
'; } else { echo '
' . $html . '
'; } ?> -
0 && $xx > 15) { ?> -   + 0 && $xx > 15) { ?>«« + предыдущая страница  0) { ?> -   + следующая страница »» 
-

' . date('d.m.Y', $dt) . '

-   + « Предыдущий день +

Записи о завершенных боях за ' . date('d.m.Y', $dt) . '

+Следующий день » 
- : за + ) . '">
'; @@ -2270,11 +2270,11 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 ) ); if (isset($btlg['id']) && $g == $btlg['team_win']) { - $tm2 .= ' '; + $tm2 .= ' '; } $tm .= $tm2; if ($k + 1 < count($ts) && $tm2 != '' && $ts[$k + 1] > 0) { - $tm .= ' '; + $tm .= ' против '; } $k++; } @@ -2282,30 +2282,30 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if (!isset($btl_lst[$b['id']])) { $btl_lst[$b['id']] = true; if ($tm == '') { - $tm = ' '; + $tm = 'Данные поединка потеряны'; } $jk++; $btl .= $jk . '. ' . date( 'd.m.y H:i', $pl['time'] - ) . ' ' . $tm . '
'; + ) . '
' . $tm . ' »»
'; } $j++; } } if ($btl == '') { - $see .= '


, , ...




'; + $see .= '


В этот день не было боев, или же, летописец опять потерял свитки...




'; } else { $see .= $btl; } echo $see; } else { if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) { - echo '

'; + echo '

Выберите раздел
'; } } } else { if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) { - echo '

'; + echo '

Выберите раздел
'; } } } @@ -2336,7 +2336,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if (isset($_GET['r']) && $this->zv_see == 1) { $r = round(intval($_GET['r'])); if ($r >= 1 && $r <= 5) { - // + //Список заявок $i = 0; $cl = mysql_query( 'SELECT * FROM `zayvki` WHERE `razdel` = "' . mysql_real_escape_string( @@ -2381,8 +2381,8 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $n1tv = ''; $unvs = ''; if ($pl['invise'] == 1) { - // - $tm = ''; + //невидимый бой + $tm = 'невидимый'; $unvs = 0; $usrszv = ''; @@ -2401,40 +2401,40 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $pl['creator'], 1 ) . '' . $usrszv . ' - ' . $tm; - $unvs = ' : ' . (1 + $unvs) . ' . '; - $n1tv = ' '; + $unvs = ' Участников: ' . (1 + $unvs) . ' чел. '; + $n1tv = ' '; } if ($pl['kingfight'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['travmaChance'] == 100) { - $n1tv .= ''; + $n1tv .= ''; } if ($pl['noatack'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['nobot'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['fastfight'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['noeff'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['arand'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['noart'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['otmorozok'] == 1) { - $n1tv .= ' '; + $n1tv .= ' '; } if ($pl['comment'] != '') { $dl = ''; if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct( $_GET['key'] ) == true) { @@ -2445,11 +2445,11 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } } if ($pl['dcom'] > 0) { - $dl = ' '; + $dl = 'Комментарий удален модератором'; } if ($pl['dcom'] > 0) { if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) { - $pl['comment'] = '[ : ' . $pl['comment'] . '] '; + $pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . '] '; } else { $pl['comment'] = ''; } @@ -2461,25 +2461,25 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if ($pl['priz'] == 1) { $imn = ''; if ($pl['min_lvl_1'] == 10) { - $imn .= ' . Jora Kardan'; + $imn .= ' им. Jora Kardan'; } - $zv_comm = ' ( ' . $imn . ')'; + $zv_comm = ' (Героическое Сражение' . $imn . ')'; } if ($r == 5 && ($pl['creator'] == $this->u->info['id']) && $cols < 2 && $pl['priz'] == 0) { - $del_q = '  '; + $del_q = '  '; } else { $del_q = ''; } $lvldt = ''; if ($pl['min_lvl_1'] != $pl['max_lvl_2']) { - $lvldt .= '' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_2'] . ' . '; + $lvldt .= '' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_2'] . ' ур. '; } else { - $lvldt .= '' . $pl['min_lvl_1'] . ' . '; + $lvldt .= '' . $pl['min_lvl_1'] . ' ур. '; } $lvldt .= (0 + $cols) . '/' . $pl['maxplayers'] . ''; $zvb .= $rad . '' . date( 'H:i', $pl['time'] - ) . ' (' . $lvldt . ') : ' . $n1tv . ' ( ' . ($pl['timeout'] / 60) . ' .) ' . $zv_comm . ' (' . $unvs . ' ' . $tmStart . ' .) ' . $mon . ' : ' . $tm . ' ' . $del_q . '
'; + ) . ' (' . $lvldt . ') тип боя: ' . $n1tv . ' (таймаут ' . ($pl['timeout'] / 60) . ' мин.) ' . $zv_comm . ' (' . $unvs . 'Бой начнется через ' . $tmStart . ' мин.) ' . $mon . ' Участники: ' . $tm . ' ' . $del_q . '
'; } elseif ($pl['razdel'] == 4) { if ($pl['min_lvl_1'] < 2) { $pl['min_lvl_1'] = 2; @@ -2493,17 +2493,17 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if ($pl['max_lvl_2'] > 21) { $pl['max_lvl_2'] = 21; } - // + //Заявки группового боя $tm1 = ''; $tm2 = ''; $tmStart = floor(($pl['time'] + $pl['time_start'] - time()) / 6) / 10; $tmStart = $this->rzv($tmStart); - // , - // + //Персонаж в заявке, подключаем ему противника + //Ищем апонента для групповых $xx2 = $this->testzvu($pl['id'], 2, 0); if ($pl['bot2'] > 0 && $xx2 < $pl['tm2max']) { - // + //Добавляем ботов за вторую команду $spb = mysql_query( 'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`bot` = 3 AND `u`.`level` = "' . $pl['min_lvl_2'] . '" AND `u`.`battle` = 0 AND `st`.`zv` = 0 LIMIT 100' ); @@ -2524,7 +2524,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } unset($xx2); - // + //генерируем команды $users = mysql_query( 'SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "' . $pl['id'] . '"' ); @@ -2535,20 +2535,20 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } if ($tm1 == '') { - $tm2 = ' '; + $tm2 = 'группа пока не набрана'; } else { $tm1 = rtrim($tm1, ', '); } if ($tm2 == '') { - $tm2 = ' '; + $tm2 = 'группа пока не набрана'; } else { $tm2 = rtrim($tm2, ', '); } // if ($pl['teams'] == 3) { if ($tm3 == '') { - $tm2 = ' '; + $tm2 = 'группа пока не набрана'; } else { $tm3 = rtrim($tm3, ', '); } @@ -2558,25 +2558,25 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $ttl3 = ''; if ($pl['align1'] == 3) { - $ttl1 = ''; + $ttl1 = 'Тьма'; } elseif ($pl['align1'] == 7) { - $ttl1 = ''; + $ttl1 = 'Нейтралы'; } else { - $ttl1 = ''; + $ttl1 = 'Свет'; } if ($pl['align2'] == 3) { - $ttl2 = ''; + $ttl2 = 'Тьма'; } elseif ($pl['align2'] == 7) { - $ttl2 = ''; + $ttl2 = 'Нейтралы'; } else { - $ttl2 = ''; + $ttl2 = 'Свет'; } if ($pl['align3'] == 3) { - $ttl3 = ''; + $ttl3 = 'Тьма'; } elseif ($pl['align3'] == 7) { - $ttl3 = ''; + $ttl3 = 'Нейтралы'; } else { - $ttl3 = ''; + $ttl3 = 'Свет'; } $tm1 = ' ' . $ttl1 . ': ' . $tm1; @@ -2592,7 +2592,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if ($pl['comment'] != '') { $dl = ''; if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct( $_GET['key'] ) == true) { @@ -2603,11 +2603,11 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } } if ($pl['dcom'] > 0) { - $dl = ' '; + $dl = 'Комментарий удален модератором'; } if ($pl['dcom'] > 0) { if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) { - $pl['comment'] = '[ : ' . $pl['comment'] . '] '; + $pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . '] '; } else { $pl['comment'] = ''; } @@ -2617,7 +2617,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $zv_comm = ''; } if ($pl['teams'] == 3) { - $zv_comm .= ' ( )'; + $zv_comm .= ' (Турнир трех склонностей)'; } $zvb .= $rad . '' . date('H:i', $pl['time']) . ' '; @@ -2629,8 +2629,8 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } else { $zvb .= $pl['min_lvl_1'] . '-' . $pl['max_lvl_1']; } - $zvb .= ' .)
'; - $zvb .= ' '; + $zvb .= ' ур.)
'; + $zvb .= ' против '; $zvb .= '(' . (0 + $tmc[2]) . '/' . $pl['tm2max'] . ')'; $zvb .= ' ' . $tm2; $zvb .= ' ('; @@ -2639,10 +2639,10 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } else { $zvb .= $pl['min_lvl_2'] . '-' . $pl['max_lvl_2']; } - $zvb .= ' .)'; - $zvb .= ' : (: ' . ($pl['timeout'] / 60) . ' .) '; + $zvb .= ' ур.)
'; + $zvb .= ' тип боя: (таймаут: ' . ($pl['timeout'] / 60) . ' мин.) '; $zvb .= ' ' . $zv_comm . ' '; - $zvb .= ' ( ' . $tmStart . ') ' . $mon . '
'; + $zvb .= ' (Бой начнется через ' . $tmStart . ') ' . $mon . '
'; } elseif ($pl['razdel'] >= 1 && $pl['razdel'] <= 3) { $uz = mysql_fetch_array( mysql_query( @@ -2662,7 +2662,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if (!isset($uze['id']) || $this->u->info['zv'] == $pl['id']) { $enm = ''; if (isset($uze['id'])) { - $enm = ' ' . $this->u->microLogin($uze['id'], 1) . ''; + $enm = ' против ' . $this->u->microLogin($uze['id'], 1) . ''; } if ($uz['banned'] > 0) { $pl['id'] = 0; @@ -2671,7 +2671,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } $dp1 = ''; if ($pl['money'] > 0) { - $dp1 = ' , : ' . $this->u->round2($pl['money']) . ' .'; + $dp1 = ' Бой на деньги, ставка: ' . $this->u->round2($pl['money']) . ' кр.'; } if ($this->u->room['zvsee'] == 0) { $zvb .= ''; @@ -2684,9 +2684,9 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 'H:i', $pl['time'] ) . ' ' . $this->u->microLogin( $uz['id'], 1 - ) . ' ' . $enm . ' : ( ' . round( + ) . ' ' . $enm . ' тип боя: ( таймаут ' . round( $pl['timeout'] / 60 - ) . ' .' . $dp1 . ' ' . $mon . ')' . $mbcom . '
'; + ) . ' мин.
' . $dp1 . ' ' . $mon . ')' . $mbcom . '
'; if ($uz['banned'] > 0) { $zvb .= ''; } @@ -2696,28 +2696,28 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $i++; } if ($i == 0) { - // + //заявок нет if ($this->u->room['zvsee'] > 0) { - echo '


'; + echo '


В данном разделе нет ни одной заявки
'; } } else { if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) { if ($_GET['r'] == 5) { if (!$this->u->info['no_zv_key']) { echo '

- : -
' . $zvb . ' : - + Код подтверждения: +
' . $zvb . ' Код подтверждения: +
'; } else { echo '

-
' . $zvb . ' -
'; +
' . $zvb . ' + '; } } else { if ($zvb != '' && $this->u->info['level'] > Config::get('bot_level')) { - echo '


' . $zvb . '
'; + echo '


' . $zvb . '
'; } else { echo '
' . $zvb . '
'; } @@ -2735,7 +2735,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 global $zi; $filter = new Filter(); if (isset($zi['id'])) { - $this->error = ' . .'; + $this->error = 'Вы не можете принять бой. Сначала отзовите свою заявку.'; } else { if ($this->u->info['battle'] == 0 && $this->u->info['inTurnirnew'] == 0) { $z = mysql_fetch_array( @@ -2748,7 +2748,7 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 ); if (isset($z['id'])) { if ($z['razdel'] >= 1 && $z['razdel'] <= 3) { - //, , + //новички, физы, договорные $uz1 = mysql_fetch_array( mysql_query( 'SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $z['id'] . '" AND `st`.`team`="1" LIMIT 1' @@ -2761,24 +2761,24 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 ) ); if ($this->testTravm() == 1 && $z['type'] != 1) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.'; $az = 0; } elseif ($this->testTravm() == 2) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; $az = 0; } elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($z['razdel'] >= 1 || $z['razdel'] <= 3)) { - $this->error = ' '; + $this->error = 'Вы еще слишком ослаблены чтобы начать новый бой'; $az = 0; } elseif ($uz1['clan'] == $this->u->info['clan'] && $this->u->info['clan'] != 0 && $this->u->info['admin'] == 0 && true == false) { - $this->error = ' '; + $this->error = 'Вы не можете сражаться против сокланов'; } elseif ($z['withUser'] != '' && $filter->mystr($this->u->info['login']) != $filter->mystr( $z['withUser'] ) && $z['razdel'] == 3) { - $this->error = ' '; + $this->error = 'Вы не можете принять эту заявку'; } elseif ($z['money'] > 0 && $z['money'] > $this->u->info['money']) { - $this->error = ' , '; + $this->error = 'У Вас недостаточно денег, чтобы принять эту заявку'; } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { - $this->error = ' , '; + $this->error = 'Вы слишком ослаблены, восстановитесь'; } elseif (!isset($uz2['id'])) { $upd = mysql_query( 'UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "2" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' @@ -2799,12 +2799,12 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 if ($uz1['align'] != 0) { $ca = '' . $ca; } - $this->error = ' ' . $ca . ' ' . $uz1['login'] . ' [' . $uz1['level'] . ']'; + $this->error = 'Ожидаем подтверждения боя от ' . $ca . ' ' . $uz1['login'] . ' [' . $uz1['level'] . ']'; $sa = ''; if ($this->u->info['sex'] == 2) { - $sa = ''; + $sa = 'а'; } - $text = ' [login:' . $this->u->info['login'] . '] ' . $sa . ' .[reflesh_main_zv_priem:' . $this->u->info['id'] . ']'; + $text = ' [login:' . $this->u->info['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . $this->u->info['id'] . ']'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time( ) . "','6','0')" @@ -2813,23 +2813,23 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 $this->u->info['zv'] = $z['id']; $this->u->info['team'] = 2; } else { - $this->error = ' .'; + $this->error = 'Невозможно принять заявку.'; } } else { - $this->error = ' - .'; + $this->error = 'Заявку уже кто-то принял до вас.'; } } else { - $this->error = ' .'; + $this->error = 'Заявка на бой заблокирована.'; } } elseif ($z['razdel'] == 4 && $this->u->info['level'] > 1) { $tm = 0; - // + //групповые if (isset($_GET['tm1'])) { $tm = 1; } elseif (isset($_GET['tm2'])) { $tm = 2; } else { - $this->error = '- '; + $this->error = 'Что-то здесь не так'; } if ($tm != 0) { $t1 = $tm; @@ -2851,18 +2851,18 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 } } if ($cln > 0) { - $this->error = ' '; + $this->error = 'Вы не можете сражаться против сокланов'; } elseif ($z['bot2'] == 1 && $t1 == 2) { - $this->error = ' '; + $this->error = 'Вы не можете сражаться на стороне ботов'; } elseif ($z['money3'] > 0 && $z['money3'] > $this->u->info['money3']) { - $this->error = ' , '; + $this->error = 'У Вас недостаточно денег, чтобы принять эту заявку'; } elseif (($z['money'] > 0 || $z['money3'] > 0) && $this->u->info['level'] < 4) { - $this->error = ' 4- '; + $this->error = 'Бои на деньги проводятся с 4-го уровня'; } elseif ($z['tm' . $t1 . 'max'] > $tmmax) { if ($z['min_lvl_' . $t1] > $this->u->info['level'] || $z['max_lvl_' . $t1] < $this->u->info['level']) { - $this->error = ' , ' . $z['min_lvl_' . $t1] . ' - ' . $z['max_lvl_' . $t1] . ' '; + $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_' . $t1] . ' - ' . $z['max_lvl_' . $t1] . ' уровня'; } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { - $this->error = ' , '; + $this->error = 'Вы слишком ослаблены, восстановитесь'; } else { $upd = mysql_query( 'UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . mysql_real_escape_string( @@ -2870,44 +2870,44 @@ function MM_jumpMenu(targ,selObj,restore){ //v3.0 ) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' ); if (!$upd) { - $this->error = ' ...'; + $this->error = 'Ошибка приема заявки...'; } else { - $this->error = ' ...'; + $this->error = 'Вы приняли групповой бой...'; $zi = $z; $this->u->info['zv'] = $z['id']; $this->u->info['team'] = mysql_real_escape_string((int)$t1); } } } else { - $this->error = ' (' . ($z['tm' . $t1 . 'max'] - $tmmax) . ')'; + $this->error = 'Группа уже набрана (' . ($z['tm' . $t1 . 'max'] - $tmmax) . ')'; } } } elseif ($z['razdel'] == 5 && $this->u->info['level'] > 1) { - // + //хаотичные $col_p = mysql_fetch_array( mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $z['id'] . '"') ); $cols = $col_p[0]; if ($cols >= $z['maxplayers']) { - $this->error = ' !'; + $this->error = 'Достигнут максимальный предел участников в этой заявке!'; } elseif ($this->testTravm() == 1 && $z['k'] != 1) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.'; } elseif ($this->testTravm() == 2) { - $this->error = ' . .'; + $this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.'; } elseif (!$this->u->info['no_zv_key'] && (!isset($_SESSION['code2']) || $_SESSION['code2'] < 1 || ($_POST['code21'] != $_SESSION['code2'] && $_POST['code22'] != $_SESSION['code2']))) { - $this->error = ' '; + $this->error = 'Неправильный код подтверждения'; } elseif ($z['min_lvl_1'] > $this->u->info['level'] || $z['max_lvl_1'] < $this->u->info['level']) { - $this->error = ' , ' . $z['min_lvl_1'] . ' - ' . $z['max_lvl_1'] . ' '; + $this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_1'] . ' - ' . $z['max_lvl_1'] . ' уровня'; } elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) { - $this->error = ' , '; + $this->error = 'Вы слишком ослаблены, восстановитесь'; } elseif ($z['money'] > 0 && $this->u->info['level'] < 4) { - $this->error = ' 4- '; + $this->error = 'Бои на деньги проводятся с 4-го уровня'; } else { $t1 = 0; if ($z['type'] == 33) { - //============================================================================================= + //============================================================================================= Призовые Db::sql( 'insert into users (name, align, `real`, login, host_reg, pass, ip, ipreg, city, cityreg, room, timereg, mail, bithday, sex, fnq, battle, molch2, level) values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86400,8)', @@ -2929,7 +2929,7 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 $uidb = Db::lastInsertId(); Db::sql('update users set inUser = ? where id = ?', [$uidb, $this->u->info['id']]); - // + //тут классы $sellclass = rand(1, 6); $stmt1 = Db::prepare('update items_users set inOdet = ? where id = ?'); $stmt2 = Db::prepare( @@ -2940,9 +2940,9 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 ); if ($sellclass == 1) { - // 1 - $this->add_effn($uidb, 8); // - $this->add_effn($uidb, 20); // + //уворот класс 1 + $this->add_effn($uidb, 8); // ловка + $this->add_effn($uidb, 20); // сокрушение $items = [ 1 => 525, 2 => 539, @@ -2975,12 +2975,12 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 ] ); - // + //уворот класс закончен } elseif ($sellclass == 2) { - // 2 - $this->add_effn($uidb, 7); // - $this->add_effn($uidb, 20); // + //крит класс 2 + $this->add_effn($uidb, 7); // инта + $this->add_effn($uidb, 20); // сокрушение $items = [ 1 => 527, 2 => 537, @@ -3014,9 +3014,9 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 ); } elseif ($sellclass == 3) { - // 3 - $this->add_effn($uidb, 1); // - $this->add_effn($uidb, 20); // + //танк класс 3 + $this->add_effn($uidb, 1); // сила + $this->add_effn($uidb, 20); // сокрушение $items = [ 1 => 533, @@ -3051,9 +3051,9 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 ); } elseif ($sellclass == 4) { - // 4 - $this->add_effn($uidb, 1); // - $this->add_effn($uidb, 20); // + //топор класс 4 + $this->add_effn($uidb, 1); // сила + $this->add_effn($uidb, 20); // сокрушение $items = [ 1 => 528, 2 => 538, @@ -3088,12 +3088,12 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 } elseif ($sellclass == 5) { - // 5 - // - $this->add_effn($uidb, 9); // - $this->add_effn($uidb, 32); // - $this->add_effn($uidb, 54); // - $this->add_effn($uidb, 439); // + //м земля класс 5 + //кастим эфекты + $this->add_effn($uidb, 9); // интелект + $this->add_effn($uidb, 32); // Холодный разум + $this->add_effn($uidb, 54); // Маг уселок земля + $this->add_effn($uidb, 439); // Маг уселок $items = [ 1 => 531, @@ -3128,12 +3128,12 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 } elseif ($sellclass == 6) { - // 6 - // - $this->add_effn($uidb, 9); // - $this->add_effn($uidb, 32); // - $this->add_effn($uidb, 53); // - $this->add_effn($uidb, 439); // + //м воздух 6 + //кастим эфекты + $this->add_effn($uidb, 9); // интелект + $this->add_effn($uidb, 32); // Холодный разум + $this->add_effn($uidb, 53); // Маг уселок воздух + $this->add_effn($uidb, 439); // Маг уселок $items = [ 1 => 531, 2 => 534, @@ -3165,22 +3165,22 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 ] ); } - // - // + // классы кончились + //кастим эфекты - $this->add_effn($uidb, 37);// - $this->add_effn($uidb, 38);// - $this->add_effn($uidb, 283);// - - - $this->add_effn($uidb, 25);// - $this->add_effn($uidb, 296);// +6 + $this->add_effn($uidb, 37);//нектар + $this->add_effn($uidb, 38);//нектар отрицания + $this->add_effn($uidb, 283);//Бутерброд -Завтрак Рыцаря- толстый + $this->add_effn($uidb, 25);//Защита от оружия + $this->add_effn($uidb, 296);//Жажда Жизни +6 Db::sql('update users set money = -3000, money2 = 0 where id = ?', [$uidb]); - // + //Корекция хп в призовых Db::sql('update stats set hpNow = hpAll, mpNow = mpAll where id = ?', [$uidb]); $this->u->info['id'] = $uidb; //============================================================================================= - $this->error = ' 8 '; // + $this->error = 'Вы вселены в клона 8го левела'; //ТУТ вселяем в клона призовые хаоты echo ''; } @@ -3205,14 +3205,14 @@ values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86 $zi = $z; $this->u->info['zv'] = $z['id']; $this->u->info['team'] = $t1; - $this->error = ' ...'; + $this->error = 'Вы приняли хаотичный бой...'; } else { - $this->error = ' ...'; + $this->error = 'Ошибка приема заявки...'; } } } } else { - $this->error = ' .'; + $this->error = 'Заявка на бой не найдена.'; } } } diff --git a/_incl_data/class/Filter.php b/_incl_data/class/Filter.php index 56a58846..712c6604 100644 --- a/_incl_data/class/Filter.php +++ b/_incl_data/class/Filter.php @@ -10,7 +10,7 @@ class Filter return ($str); } // - // + //Смайлики private $sm = ["laugh" => 1, "fingal" => 1, "eek" => 1, "smoke" => 1, "hi" => 1, "bye" => 1, "king" => 1, "king2" => 1, "boks2" => 1, "boks" => 1, "gent" => 1, "lady" => 1, "tongue" => 1, "smil" => 1, "rotate" => 1, "ponder" => 1, "bow" => 1, "angel" => 1, "angel2" => 1, "hello" => 1, "dont" => 1, "idea" => 1, "mol" => 1, "super" => 1, "beer" => 1, "drink" => 1, "baby" => 1, "tongue2" => 1, "sword" => 1, "agree" => 1, "loveya" => 1, "kiss" => 1, "kiss2" => 1, "kiss3" => 1, "kiss4" => 1, "rose" => 1, "love" => 1, "love2" => 1, "confused" => 1, "yes" => 1, "no" => 1, "shuffle" => 1, "nono" => 1, "maniac" => 1, "privet" => 1, "ok" => 1, "ninja" => 1, "pif" => 1, "smash" => 1, "alien" => 1, "pirate" => 1, "gun" => 1, "trup" => 1, "mdr" => 1, "sneeze" => 1, "mad" => 1, "friday" => 1, "cry" => 1, "grust" => 1, "rupor" => 1, "fie" => 1, "nnn" => 1, "row" => 1, "red" => 1, "lick" => 1, "help" => 1, "wink" => 1, "jeer" => 1, "tease" => 1, "nunu" => 1, "inv" => 1, "duel" => 1, "susel" => 1, "nun" => 1, "kruger" => 1, "flowers" => 1, "horse" => 1, "hug" => 1, "str" => 1, "alch" => 1, "pal" => 1, "mag" => 1, "sniper" => 1, "vamp" => 1, "doc" => 1, "doc2" => 1, "sharp" => 1, "naem" => 1, "naem2" => 1, "naem3" => 1, "invis" => 1, "chtoza" => 1, "beggar" => 1, "sorry" => 1, "sorry2" => 1, "creator" => 1, "grace" => 1, "dustman" => 1, "carreat" => 1, "lordhaos" => 1, "ura" => 1, "elix" => 1, "dedmoroz" => 1, "snegur" => 1, "showng" => 1, "superng" => 1, "podz" => 1, "sten" => 1, "devil" => 1, "cat" => 1, "owl" => 1, "lightfly" => 1, "snowfight" => 1, "rocket" => 1, "ball" => 1, "smile" => 1, "fuck" => 1]; public function e($t) @@ -18,7 +18,7 @@ class Filter mysql_query( 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("#' . date('d.m.Y') . ' %' . date( 'H:i:s' - ) . ': ' . mysql_real_escape_string($t) . '","capitalcity","","6","1","-1")' + ) . ': ' . mysql_real_escape_string($t) . '","capitalcity","Игромир","6","1","-1")' ); } @@ -56,8 +56,8 @@ class Filter { $str = strtolower($string); if (strtolower('S') != 's') { - $ru = 'Ũ'; - $ru2 = ''; + $ru = 'АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ'; + $ru2 = 'абвгдеёжзийклмнорпстуфхцчшщъьыэюя'; $en = 'QWERTYUIOPASDFGHJKLZXCVBNM'; $en2 = 'qwertyuiopasdfghjklzxcvbnm'; $i = 0; @@ -77,7 +77,7 @@ class Filter public function spamFiltr($txt) { - $txt = str_replace('', '', $txt); + $txt = str_replace('ё', 'е', $txt); $nospam = 0; $txt = str_replace('>', '', $txt); @@ -91,7 +91,7 @@ class Filter } $i++; } - /* */ + /* фильтр */ $spam = mysql_fetch_array(mysql_query('SELECT * FROM `spam_word` WHERE `id` = 1 LIMIT 1')); $spam = $spam['data']; // @@ -100,45 +100,45 @@ class Filter $testEN2 = str_replace('"', '', $testEN2); $testEN2 = str_replace(' ', '', $testEN2); - $testEN2 = str_replace('', 'a', $testEN2); - $testEN2 = str_replace('', 'b', $testEN2); - $testEN2 = str_replace('', 'c', $testEN2); - $testEN2 = str_replace('', 'b', $testEN2); - $testEN2 = str_replace('', 'e', $testEN2); - $testEN2 = str_replace('', 't', $testEN2); - $testEN2 = str_replace('', 'o', $testEN2); - $testEN2 = str_replace('', 'p', $testEN2); - $testEN2 = str_replace('', 'm', $testEN2); - $testEN2 = str_replace('', 'h', $testEN2); - $testEN2 = str_replace('', 'y', $testEN2); - $testEN2 = str_replace('', 'k', $testEN2); - $testEN2 = str_replace('', 'u', $testEN2); - $testEN2 = str_replace('', 'x', $testEN2); - $testEN2 = str_replace('', '9', $testEN2); + $testEN2 = str_replace('а', 'a', $testEN2); + $testEN2 = str_replace('б', 'b', $testEN2); + $testEN2 = str_replace('с', 'c', $testEN2); + $testEN2 = str_replace('в', 'b', $testEN2); + $testEN2 = str_replace('е', 'e', $testEN2); + $testEN2 = str_replace('т', 't', $testEN2); + $testEN2 = str_replace('о', 'o', $testEN2); + $testEN2 = str_replace('р', 'p', $testEN2); + $testEN2 = str_replace('м', 'm', $testEN2); + $testEN2 = str_replace('н', 'h', $testEN2); + $testEN2 = str_replace('у', 'y', $testEN2); + $testEN2 = str_replace('к', 'k', $testEN2); + $testEN2 = str_replace('и', 'u', $testEN2); + $testEN2 = str_replace('х', 'x', $testEN2); + $testEN2 = str_replace('я', '9', $testEN2); $testEN2 = str_replace('()', 'o', $testEN2); $testEN2 = str_replace('0', 'o', $testEN2); $testEN2 = preg_replace('/[^A-z]*/i', '', $testEN2); - $testRU = preg_replace('/[^-]*/i', '', $txt); + $testRU = preg_replace('/[^А-я]*/i', '', $txt); $testRU2 = $txt; - $testRU2 = str_replace('a', '', $testRU2); - $testRU2 = str_replace('b', '', $testRU2); - $testRU2 = str_replace('c', '', $testRU2); - $testRU2 = str_replace('b', '', $testRU2); - $testRU2 = str_replace('e', '', $testRU2); - $testRU2 = str_replace('t', '', $testRU2); - $testRU2 = str_replace('o', '', $testRU2); - $testRU2 = str_replace('p', '', $testRU2); - $testRU2 = str_replace('m', '', $testRU2); - $testRU2 = str_replace('h', '', $testRU2); - $testRU2 = str_replace('y', '', $testRU2); - $testRU2 = str_replace('k', '', $testRU2); - $testRU2 = str_replace('x', '', $testRU2); - $testRU2 = str_replace('u', '', $testRU2); - $testRU2 = str_replace('()', '', $testRU2); - $testRU2 = str_replace('0', '', $testRU2); - $testRU2 = preg_replace('/[^-]*/i', ' ', $testRU2); - $testRU2 = preg_replace('/[^-]*/i', ' ', $testRU2); + $testRU2 = str_replace('a', 'а', $testRU2); + $testRU2 = str_replace('b', 'б', $testRU2); + $testRU2 = str_replace('c', 'с', $testRU2); + $testRU2 = str_replace('b', 'в', $testRU2); + $testRU2 = str_replace('e', 'е', $testRU2); + $testRU2 = str_replace('t', 'т', $testRU2); + $testRU2 = str_replace('o', 'о', $testRU2); + $testRU2 = str_replace('p', 'р', $testRU2); + $testRU2 = str_replace('m', 'м', $testRU2); + $testRU2 = str_replace('h', 'н', $testRU2); + $testRU2 = str_replace('y', 'у', $testRU2); + $testRU2 = str_replace('k', 'к', $testRU2); + $testRU2 = str_replace('x', 'х', $testRU2); + $testRU2 = str_replace('u', 'и', $testRU2); + $testRU2 = str_replace('()', 'о', $testRU2); + $testRU2 = str_replace('0', 'о', $testRU2); + $testRU2 = preg_replace('/[^А-я]*/i', ' ', $testRU2); + $testRU2 = preg_replace('/[^А-Я]*/i', ' ', $testRU2); $i = 0; $spe = explode('|', $spam); while ($i <= count($spe)) { @@ -154,6 +154,6 @@ class Filter public function __clone() { - trigger_error(' .', E_USER_ERROR); + trigger_error('Дублирование не допускается.', E_USER_ERROR); } } diff --git a/_incl_data/class/GameDealer.php b/_incl_data/class/GameDealer.php index b0b13bb5..175284e6 100644 --- a/_incl_data/class/GameDealer.php +++ b/_incl_data/class/GameDealer.php @@ -1,44 +1,55 @@ 'pay_operations', // + 'db_name' => 'pay_operations', //Таблица в которую заносятся данные 'db_host' => 'localhost', 'db_user' => 'newcom1_abk', 'db_pass' => '4nWYsIM[c?}P', - 'db_base' => 'newcom1_abk', /* */ - 'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], // ( IP) + 'db_base' => 'newcom1_abk', /* Настройки платежей */ + 'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], //Указывать через запятую (Разрешенные IP) 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID - ], $BACK = []; // + 'id' => '65643' //ID проекта + ], $BACK = []; //Результат который возвращаем в конце - // -8 + //Кодируем из ЮТФ-8 в Кирилицу + /** + * @param $text + * @return mixed + * @deprecated + */ public function in($text) { - return iconv("UTF-8", "cp1251", $text); + return $text; } - // -8 + //Кодируем из Кирилицу в ЮТФ-8 + + /** + * @param $text + * @return mixed + * @deprecated + */ public function out($text) { - return iconv("cp1251", "UTF-8", $text); + return $text; } - // + //Добавляем данные в базу данных public function add($type, $value, $money) { mysql_query('INSERT INTO `' . $this->c['db_name'] . '` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("' . time() . '","' . mysql_real_escape_string($type) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . mysql_real_escape_string($value) . '","' . mysql_real_escape_string($money) . '","' . mysql_real_escape_string($this->id) . '")'); } - // + //Подключаемся к базе данных public function connect_db() { - $db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die(' MySQL !'); - mysql_select_db($this->c['db_base'], $db) or die(' !'); - mysql_query('SET NAMES cp1251'); + $db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); + mysql_select_db($this->c['db_base'], $db) or die('Ошибка подключения к базе данных!'); + mysql_query('SET NAMES utf8mb4'); } public function output($a, $v = null) @@ -69,7 +80,7 @@ class GameDealer return $r; } - // XML- + //Генерируем XML-файл public function backInformation() { header('Content-Type: text/html/force-download'); @@ -77,7 +88,7 @@ class GameDealer echo $this->output($this->BACK, 1); } - // + //Проверка существования персонажа public function test_accaunt($nick) { $r = false; @@ -88,7 +99,7 @@ class GameDealer return $r; } - // + //Получает счет в банке по логину public function getBank($nick) { $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); @@ -96,7 +107,7 @@ class GameDealer return $nick['id']; } - // + //Поиск логина public function bank_user($nick) { $nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); @@ -104,79 +115,79 @@ class GameDealer return $nick['login']; } - // + //Начинаем обработку запросов public function start_session() { $ip = ''; $ip = $_SERVER['HTTP_X_REAL_IP']; - // + //Подключаемся к БД $this->connect_db(); - // + //Получаем данные запроса //$xml = file_get_contents('php://input'); - // XML + //Парсинг XML запроса if (function_exists('simplexml_load_string')) { $xml = simplexml_load_string($xml); } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' ']]]]; + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Не удалось произвести обработку запроса']]]]; die($this->backInformation()); } $this->id = $xml->projectid; if (!in_array($ip, $this->c['ip_list'])) { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' IP']]]]; + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Нет доступа с данного IP']]]]; die($this->backInformation()); } - // + //Обработка запросов if ($xml->method == 'check_balance') { //MD5(method+MD5(gdKey)) $sign = md5($xml->method . md5($this->c['key'])); if ($sign == $xml->sign) { - // + //Баланс дилера $balance = 1000000; - $this->BACK = [['gdanswer', [['status', '1'], ['desc', ' : ' . $balance], ['balance', $balance]]]]; + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Баланс дилера: ' . $balance], ['balance', $balance]]]]; $this->add('4', 'check:' . $xml->nick . ':1' . $r, 0); } } elseif ($xml->method == 'check') { /* - nick - MD5(nick+method+MD5(gdKey)) */ + nick - логин персонажа MD5(nick+method+MD5(gdKey)) */ $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); if ($sign == $xml->sign) { $xml->nick = $this->in($xml->nick); if ($this->test_accaunt($xml->nick) == true) { - // - $this->BACK = [['gdanswer', [['status', '1'], ['desc', ' ']]]]; + //Персонаж найден и зачисляем ему игровую валюту + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Банковский счет найден']]]]; $this->add('3', 'check:' . $xml->nick . ':1' . $r, 0); } else { - // - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' . .']]]]; - $this->add('-1', ' :pay:' . $xml->nick . ':0', 0); + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Банковский счет не найден.']]]]; + $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); } } } elseif ($xml->method == 'pay') { - /* - nick - , projectid - id , sign , amount - , payid - id */ + /* Проводим платеж + nick - логин аккаунта , projectid - id проекта , sign , amount - деньги , payid - id платежа */ $sign = md5($xml->nick . $xml->projectid . $xml->amount . $xml->payid . $xml->method . md5($this->c['key'])); if ($sign == $xml->sign) { $xml->nick = $this->in($xml->nick); if ($this->test_accaunt($xml->nick)) { - // + //Персонаж найден и зачисляем ему игровую валюту $bank = $this->test_accaunt($xml->nick); if ($bank > 0) { mysql_query('UPDATE `bank` SET `money2` = `money2` + ' . mysql_real_escape_string($xml->amount) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); - $this->BACK = [['gdanswer', [['status', '1'], ['desc', ' '], ['id', $this->c['id']]]]]; + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Платеж прошел успешно'], ['id', $this->c['id']]]]]; $this->add('2', 'pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); $user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1')); @@ -184,59 +195,59 @@ class GameDealer mysql_query('UPDATE `users` SET `catch` = `catch` + ' . mysql_real_escape_string(floor($xml->amount)) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); - $r = '' . date('d.m.Y H:i') . ' Enchanter / : '; + $r = '' . date('d.m.Y H:i') . ' Алхимик Enchanter / Автоматическая оплата сообщает: '; if ($user['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' ' . $user['login'] . ', ' . $bank . ' ' . $xml->amount . ' Ekr. !'; + $r .= ' ' . $user['login'] . ', на Ваш банковский счет №' . $bank . ' зачислено ' . $xml->amount . ' Ekr. Благодарим Вас за покупку!'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $user['city'] . "','" . $user['room'] . "','','" . $user['login'] . "','" . $r . "','-1','5','0')"); } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' '], ['id', $this->c['id']]]]]; - $this->add('-1', ' :pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'У пользователя отсутствует банк'], ['id', $this->c['id']]]]]; + $this->add('-1', 'У персонажа отсутствует банк:pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); } } else { - // - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' . .']]]]; - $this->add('-1', ' :pay:' . $xml->nick . ':0', 0); + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Персонаж не найден.']]]]; + $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); } } else { - // - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' ']]]]; - $this->add('-1', ' :pay:' . $xml->nick . ':0', 0); + //Ошибка сигнатуры + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; + $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); } } elseif ($xml->method == 'check_login') { - /* - nick - , projectid - id , sign */ + /* Проверка аккаунта + nick - логин аккаунта , projectid - id проекта , sign */ $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); if ($sign == $xml->sign) { $xml->nick = $this->in($xml->nick); if ($this->test_accaunt($xml->nick)) { - // - $this->BACK = [['gdanswer', [['status', '1'], ['desc', ' '], ['addinfo', $this->bank_user($xml->nick)]]]]; + //Персонаж найден + $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Счет найден'], ['addinfo', $this->bank_user($xml->nick)]]]]; $this->add('1', 'check_login:' . $xml->nick . ':1' . $r, 0); } else { - // - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' ']]]]; - $this->add('-1', ' :check_login:' . $xml->nick . ':0', 0); + //Персонаж не найден + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Счет не найден']]]]; + $this->add('-1', 'Персонаж не найден:check_login:' . $xml->nick . ':0', 0); } } else { - // - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' ']]]]; - $this->add('-1', ' :pay:' . $xml->nick . ':0', 0); + //Ошибка сигнатуры + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; + $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); } } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', ' ']]]]; - $this->add('-1', ' :error_method:gamedealer', 0); + $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Неизвестный тип запроса']]]]; + $this->add('-1', 'Неизвестный тип запроса:error_method:gamedealer', 0); } - // + //Возвращаем результат $this->backInformation(); } } diff --git a/_incl_data/class/Insallah/Achievements.php b/_incl_data/class/Insallah/Achievements.php index f2132bfe..37d8d9b7 100644 --- a/_incl_data/class/Insallah/Achievements.php +++ b/_incl_data/class/Insallah/Achievements.php @@ -11,87 +11,87 @@ class Achievements private $info; private array $data = [ 'zb' => [ - 'questname' => '.', - 'quest' => ' .', - 'check' => ['', 5, 25, 50, 100, 250], - 'prize' => ['

', 5, 20, 40, 60, 100], + 'questname' => 'Ежедн.Задания', + 'quest' => 'Выполнить задания бабки.', + 'check' => ['Заданий', 5, 25, 50, 100, 250], + 'prize' => ['Жетон
успеха
', 5, 20, 40, 60, 100], 'startlink' => 11 ], 'vx' => [ - 'questname' => ' ', - 'quest' => ' .', - 'check' => ['', 50, 300, 400, 500, 1000], - 'prize' => ['.', 25, 50, 75, 100, 200], + 'questname' => 'Хаотические бои', + 'quest' => 'Победить в хаотических боях.', + 'check' => ['Побед', 50, 300, 400, 500, 1000], + 'prize' => ['екр.', 25, 50, 75, 100, 200], 'startlink' => 21 ], 'snt' => [ - 'questname' => ' ', - 'quest' => ' .', - 'check' => ['', 5, 25, 50, 100, 250], - 'prize' => ['.', 10, 25, 50, 75, 200], + 'questname' => 'Сундук трупожора', + 'quest' => 'Открыть сундук трупожора.', + 'check' => ['Открытий', 5, 25, 50, 100, 250], + 'prize' => ['екр.', 10, 25, 50, 75, 200], 'startlink' => 31 ], 'rp' => [ - 'questname' => ' 8 .', - 'quest' => ' . [S]', - 'check' => ['', 5, 10, 25, 50, 100], - 'prize' => ['

', 5, 7, 10, 12, 15], + 'questname' => 'Руны 8 лвл.', + 'quest' => 'Получить руну при плавке плохих заготовок. [S]', + 'check' => ['Рун', 5, 10, 25, 50, 100], + 'prize' => ['Плохие
заготовки
', 5, 7, 10, 12, 15], 'startlink' => 41 ], 'rn' => [ - 'questname' => ' 9 .', - 'quest' => ' . [M]', - 'check' => ['', 5, 10, 15, 25, 50], - 'prize' => ['

', 5, 7, 9, 12, 15], + 'questname' => 'Руны 9 лвл.', + 'quest' => 'Получить руну при плавке нормальных заготовок. [M]', + 'check' => ['Рун', 5, 10, 15, 25, 50], + 'prize' => ['Нормальные
заготовки
', 5, 7, 9, 12, 15], 'startlink' => 51 ], 'rb' => [ - 'questname' => ' 10 .', - 'quest' => ' . [L]', - 'check' => ['', 2, 5, 8, 11, 15], - 'prize' => ['

', 2, 4, 6, 10, 15], + 'questname' => 'Руны 10 лвл.', + 'quest' => 'Получить руну при плавке идеальных заготовок. [L]', + 'check' => ['Рун', 2, 5, 8, 11, 15], + 'prize' => ['Идеальные
заготовки
', 2, 4, 6, 10, 15], 'startlink' => 61 ], 'pg' => [ - 'questname' => '. ', - 'quest' => ' .', - 'check' => ['', 100, 200, 400, 600, 1000], - 'prize' => ['

', 10, 20, 40, 60, 80], + 'questname' => 'Героич. Сражения', + 'quest' => 'Поучаствовать в героическом сражении.', + 'check' => ['Участий', 100, 200, 400, 600, 1000], + 'prize' => ['Жетон
успеха
', 10, 20, 40, 60, 80], 'startlink' => 71 ], 'bv' => [ - 'questname' => ' ', - 'quest' => ' .', - 'check' => ['', 5, 25, 50, 100, 250], - 'prize' => ['.', 500, 1000, 2000, 4000, 5000], + 'questname' => 'Продажи Бабушке', + 'quest' => 'Продать бабушке найденные вещи в пещере.', + 'check' => ['Продаж', 5, 25, 50, 100, 250], + 'prize' => ['кр.', 500, 1000, 2000, 4000, 5000], 'startlink' => 81 ], 'kw' => [ - 'questname' => ' ', - 'quest' => ' .', - 'check' => ['', 5, 10, 15, 20, 25], - 'prize' => ['

', 1, 2, 5, 10, 15], + 'questname' => 'Клан Поединки', + 'quest' => 'Победить в клановой войне.', + 'check' => ['Побед', 5, 10, 15, 20, 25], + 'prize' => ['Свиток
кланового
опыта ', 1, 2, 5, 10, 15], 'startlink' => 91 ], 'pa' => [ # not implemented! - 'questname' => '', - 'quest' => ' .', - 'check' => ['', 5, 25, 50, 100, 250], + 'questname' => 'Покровительство', + 'quest' => 'Получить покровительство Ангела.', + 'check' => ['Получено', 5, 25, 50, 100, 250], 'prize' => null, 'startlink' => null ], 'bs' => [ - 'questname' => ' ', - 'quest' => ' .', - 'check' => ['', 1, 5, 10, 50, 500], - 'prize' => ['.', 1, 5, 10, 50, 200], + 'questname' => 'Башня смерти', + 'quest' => 'Победы в башне смерти.', + 'check' => ['Побед', 1, 5, 10, 50, 500], + 'prize' => ['екр.', 1, 5, 10, 50, 200], 'startlink' => 101 ], 'trn' => [ # not implemented! - 'questname' => '', - 'quest' => ' .', - 'check' => ['', 25, 50, 100, 200, 500], - 'prize' => ['.', 25, 25, 25, 25, 50], + 'questname' => 'Турниры', + 'quest' => 'Поучавствовать в турнирах.', + 'check' => ['Побед', 25, 50, 100, 200, 500], + 'prize' => ['екр.', 25, 25, 25, 25, 50], 'startlink' => 111 ], ]; @@ -102,19 +102,19 @@ class Achievements $this->info = Db::getRow('select * from users_achiv where id = ?', [$user->info['id']]); } - //fixme: (NULL, NULL). + //fixme: сюда иногда приходит (NULL, NULL). private function prizeName(?int $int, ?string $string): string { - return in_array($string, ['.', '.']) ? $int . ' ' . $string : $string . ' ' . $int; + return in_array($string, ['екр.', 'кр.']) ? $int . ' ' . $string : $string . ' ' . $int; } private function drawSunduk($nagr, $whatInside, $tier): string { return vsprintf( - '', + 'Сундук', [ "location.href='\main.php?titul&nagr=$nagr'", - "top.hi(this, ' $tier
:
$whatInside
', event, 2, 0, 1, 1, 'max-width:307px')", + "top.hi(this, 'Сундук $tier ранга
Содержит:
$whatInside
', event, 2, 0, 1, 1, 'max-width:307px')", "top.hic();", "top.hic();", "https://img.new-combats.com/i/titul/nagr$tier.gif" @@ -129,15 +129,15 @@ class Achievements foreach ($this->data as $key => $value) { - //, ! - // = ( ) - // = () - // 0. - // , , . - // - . FFUUUUUUUUUUUUUU!!! Ins. + //Бля, какую херню приходится городить! + //Первое число = требование следующего тира минус требование текущего тира (надо набрать) + //Второе число = количество достижений минус требование текущего тира (набрал) + //Требования текущего тира отнимаются чтобы каждый тир начинал считать процент с 0. + //Пизды дать тому, кто так уебански называет переменные, что нужно полдня въезжать что происходит. + //И хер поменяешь - всё сломается. FFUUUUUUUUUUUUUU!!! Ins. if (!is_numeric($value['check'][$this->info['klas' . $key]])) { - // - . 5.4 , 7.4 - . + // Потомы что первый элемент массива - слово. В РНР5.4 прокатывало, в РНР7.4 - нет. $value['check'][$this->info['klas' . $key]] = 0; } @@ -148,15 +148,15 @@ class Achievements $questname = empty($value['questname']) ? $value['quest'] : $value['questname']; $string .= '

' . $questname . '

'; $string .= '' . $value['quest'] . '
'; - $string .= ' : ' . $this->info['klas' . $key] . ' '; - $string .= ' ' . mb_strtolower($value['check'][0]) . ': ' . $this->info[$key] . ' = ' . $percentToSuccess . '%'; + $string .= 'Текущий Ранг: ' . $this->info['klas' . $key] . ' '; + $string .= 'Количество ' . mb_strtolower($value['check'][0]) . ': ' . $this->info[$key] . ' = ' . $percentToSuccess . '%'; //$string .= '' . $percentToSuccess . ''; $string .= Table::get([ - ['', 1, 2, 3, 4, 5], + ['Ранги', 1, 2, 3, 4, 5], $value['check'], [ - '', + 'Награда', $this->prizeName($value['prize'][1], $value['prize'][0]), $this->prizeName($value['prize'][2], $value['prize'][0]), $this->prizeName($value['prize'][3], $value['prize'][0]), @@ -171,7 +171,7 @@ class Achievements !empty($value['prize']) && !empty($value['startlink']) ) { - $string .= '
:
'; + $string .= '
Награда:
'; $string .= $this->drawSunduk( $this->info[$key . '_n'] + $value['startlink'], $this->prizeName($value['prize'][$this->info[$key . '_n'] + 1], $value['prize'][0]), @@ -208,7 +208,7 @@ class Achievements if ($this->info[$k] >= $this->data[$k]['check'][$i]) { $this->info["klas$k"] = $i; if ($i === 5) { - # 5 . + # На 5 ранге должно отдавать максимум. $this->info["klasP$k"] = 100; } else { $this->info["klasP$k"] = Math::get100Percentage( diff --git a/_incl_data/class/Insallah/Config.php b/_incl_data/class/Insallah/Config.php index e0d493ab..e63d9149 100644 --- a/_incl_data/class/Insallah/Config.php +++ b/_incl_data/class/Insallah/Config.php @@ -10,7 +10,7 @@ require_once 'Runes/Runes.php'; //require_once 'Tournament/TournamentModel.php'; require_once 'Achievements.php'; -// . +//Вместо крона для турнира. //if (Tournament::IS_ENABLED) { // (new Tournament())->startAllBattles(); //} \ No newline at end of file diff --git a/_incl_data/class/Insallah/Core/Dbold.php b/_incl_data/class/Insallah/Core/Dbold.php index 73afd522..f4219d41 100644 --- a/_incl_data/class/Insallah/Core/Dbold.php +++ b/_incl_data/class/Insallah/Core/Dbold.php @@ -12,15 +12,15 @@ use PDOStatement; class DbOld { /** - * - * + * Настройки подключения + * Лучше выносить в конфиг * self::DB_HOST -> Config::DB_HOST */ const DB_HOST = '127.0.0.1'; // localhost const DB_USER = 'newcom1_abk'; const DB_PASSWORD = '4nWYsIM[c?}P'; const DB_NAME = 'newcom1_abk'; - const CHARSET = 'cp1251'; + const CHARSET = 'utf8mb4'; const DB_PREFIX = ''; /** diff --git a/_incl_data/class/Insallah/Runes/Runes.php b/_incl_data/class/Insallah/Runes/Runes.php index e40b76c1..e8531c1b 100644 --- a/_incl_data/class/Insallah/Runes/Runes.php +++ b/_incl_data/class/Insallah/Runes/Runes.php @@ -4,7 +4,7 @@ namespace Insallah; class Runes { - /** . + /** Создаём руну в зависимости от уровня. * @param $level * * @return array @@ -26,24 +26,24 @@ class Runes ['s5', 'm11', 'mpAll', 'pzm'] ]; $vars = [ - 's1' => ['', mt_rand(1, $stats[$level])], - 's2' => ['', mt_rand(1, $stats[$level])], - 's3' => ['', mt_rand(1, $stats[$level])], - 's5' => ['', mt_rand(1, $stats[$level])], - 'pa1' => [' ', mt_rand(1, $power[$level])], - 'pa2' => [' ', mt_rand(1, $power[$level])], - 'pa3' => [' ', mt_rand(1, $power[$level])], - 'pa4' => [' ', mt_rand(1, $power[$level])], - 'm2' => ['. ', mt_rand(5, 15)], - 'm3' => ['', mt_rand(1, 3)], - 'antm3' => ['', mt_rand(1, 3)], - 'm5' => ['. ', mt_rand(5, 10)], - 'm11' => [' ', mt_rand(1, $power[$level])], + 's1' => ['Сила', mt_rand(1, $stats[$level])], + 's2' => ['Ловкость', mt_rand(1, $stats[$level])], + 's3' => ['Интуиция', mt_rand(1, $stats[$level])], + 's5' => ['Интеллект', mt_rand(1, $stats[$level])], + 'pa1' => ['Мощности Колющего урона', mt_rand(1, $power[$level])], + 'pa2' => ['Мощности Рубящего урона', mt_rand(1, $power[$level])], + 'pa3' => ['Мощности Дробящего урона', mt_rand(1, $power[$level])], + 'pa4' => ['Мощности Режущего урона', mt_rand(1, $power[$level])], + 'm2' => ['мф. Против Критического Удара', mt_rand(5, 15)], + 'm3' => ['МК', mt_rand(1, 3)], + 'antm3' => ['ПМК', mt_rand(1, 3)], + 'm5' => ['мф. Против Увертывания', mt_rand(5, 10)], + 'm11' => ['Мощности Магии стихии', mt_rand(1, $power[$level])], 'hpAll' => ['HP', mt_rand(5, 15)], 'mpAll' => ['MP', mt_rand(10, 20)], - 'pzm' => [' ', 1], - 'za' => [' ', mt_rand(5, 10)], - 'zma' => [' ', mt_rand(5, 10)] + 'pzm' => ['Подавление защиты от магии', 1], + 'za' => ['Защита от Урона', mt_rand(5, 10)], + 'zma' => ['Защита от Магии', mt_rand(5, 10)] ]; $rune = $runes[array_rand($runes)]; // arr (s, pa\m, rand9\mpAll, other) @@ -51,40 +51,40 @@ class Runes $runeVals = [$vars[$rune[0]][1], $vars[$rune[1]][1], $vars[$rune[2]][1], $vars[$rune[3]][1]]; $resultRune = array_combine($rune, $runeVals); $resultText = array_combine($runeTxt, $runeVals); - if ($level < 10) { // 4. + if ($level < 10) { // Отрезаем параметр 4. array_pop($resultRune); array_pop($resultText); } - if ($level < 9) { // 3. + if ($level < 9) { // Отрезаем параметр 3. array_pop($resultRune); array_pop($resultText); } - // data + //Строчка data в базу $returnData = '|' . http_build_query($resultRune, '', '|'); $returnData = str_replace('|', '|add_', $returnData); - // . + //Строчка человекопонятных параметров в статус. $returnText = urldecode(http_build_query($resultText, '', ', ')); - $returnText = ' : ' . str_replace('=', ': +', $returnText) . '.'; + $returnText = 'Характеристики Руны: ' . str_replace('=', ': +', $returnText) . '.'; return [$returnData, $returnText]; } - /** . + /** Выкусывает руну из предмета. * * @param array $itemDataArray - * data + * data предмета * - * @return array , item - , rune - , rune_id - id . - * data + * @return array массив, item - предмет, rune - руна из предмета, rune_id - id руны. + * Оба в подготовленном строчном формате для data */ public static function removeRuneData($itemDataArray) { - # . + # Ищем есть ли в предмете руна определённого типа. $runeid = array_search('rune_id', array_flip($itemDataArray)); if (!in_array($runeid, [6001, 6002, 6003])) { return []; } $bonusArgs = 0; - # -. + # В зависимости от типа руны считаем количество элементов-бонусов. if ($runeid === 6001) { $bonusArgs = 2; } diff --git a/_incl_data/class/Insallah/Tournament/Tournament.php b/_incl_data/class/Insallah/Tournament/Tournament.php index 402167fb..c05e13ef 100644 --- a/_incl_data/class/Insallah/Tournament/Tournament.php +++ b/_incl_data/class/Insallah/Tournament/Tournament.php @@ -11,13 +11,13 @@ class Tournament private const PRIZE2 = 10; private const PRIZE3 = 5; const MIN_EXP = 175000; - private const CHAT_MESSAGE = '! %d ! !'; - private const VICTORY_MESSAGE = ' %d ! : %s. : %s. : %s.'; + private const CHAT_MESSAGE = 'Внимание! Турнир для %d уровня открыт! Поспешите принять участие в Зале Воинов!'; + private const VICTORY_MESSAGE = 'Турнир для %d уровней завершён! Первое место: %s. Второе место: %s. Третье место: %s.'; private const DELAY1 = '+12hour'; private const DELAY2 = '+6hour'; private const DELAY3 = '+3hour'; - /** . + /** Формула рассчёта разрешённой стоимости одетых предметов. * * @param int $int * @@ -29,7 +29,7 @@ class Tournament } /** - * , . + * Проверяем может ли игрок учавствовать в турнире и либо присоединяем его, либо обламываем. * * @param int $uid * @@ -37,7 +37,7 @@ class Tournament */ public function join(int $uid): void { - /** level, 0 . */ + /** Возвращает level, или 0 если провалены проверки. */ $userLevel = TournamentModel::getUserLevel($uid); if ( $userLevel === 0 || @@ -67,7 +67,7 @@ class Tournament } /** - * \. . + * Проверка для крона\конфига. Выбивает проигравших и перезапускает поединки во всех турнирах. * @return void */ public function startAllBattles(): void @@ -91,7 +91,7 @@ class Tournament } /** - * . + * Получаем пары бойцов и начинаем их поединки. * * @param array $fightersList * @@ -108,7 +108,7 @@ class Tournament } /** - * , . + * Награждаем победителей турнира, чистим базу. * * @param int $tid * diff --git a/_incl_data/class/Insallah/Tournament/TournamentModel.php b/_incl_data/class/Insallah/Tournament/TournamentModel.php index 428cea3a..a8136348 100644 --- a/_incl_data/class/Insallah/Tournament/TournamentModel.php +++ b/_incl_data/class/Insallah/Tournament/TournamentModel.php @@ -6,8 +6,8 @@ class TournamentModel { /** - * , , , - * 30 + * проверка уровня, стоимости эквипа, прочие проверки, что персонаж свободен + * таймер ожидания 30 минут * * @param int $uid * @@ -70,7 +70,7 @@ class TournamentModel } /** - * . + * Считаем сколько игроков ждут в заявке на турнир. * * @param int $tid * @@ -83,7 +83,7 @@ class TournamentModel } /** - * . + * Создание нового турнира. * * @param int $tid * @@ -96,7 +96,7 @@ class TournamentModel } /** - * . + * Игрок присоединяется к турниру и телепортируется в турнирную комнату. * * @param int $uid * @param int $tid @@ -105,7 +105,7 @@ class TournamentModel */ public static function joinTournament(int $uid, int $tid): void { - /** 25008 - 25012. */ + /** Кастомные комнаты 25008 - 25012. */ $roomId = 25000 + $tid; $db = new Db(); $db::sql('insert into tournaments_users (tid, uid) values (?, ?)', [$tid, $uid]); @@ -113,7 +113,7 @@ class TournamentModel } /** - * . + * Старт турнира. * * @param int $tid * @@ -126,7 +126,7 @@ class TournamentModel } /** - * . + * Чистим базы от прошедшего турнира. * * @param int $tid * @@ -135,12 +135,12 @@ class TournamentModel public static function destroyTournament(int $tid): void { $db = new Db(); - // foreign_keys tournaments_users !!! + //Убедиться что в базе настроен foreign_keys и последует автоочистка tournaments_users !!! $db::sql('delete from tournaments where tid = ?', [$tid]); } /** - * . + 1 . + * Получаем список бойцов и бьём их на пары. Возвращаем списки пар + 1 последний без пары если есть. * * @param array $fightersList * @@ -154,7 +154,7 @@ class TournamentModel } /** - * . + * Выбираем живых бойцов не сражающихся в данный момент. * * @param int $tid * @@ -167,7 +167,7 @@ class TournamentModel } /** - * . , . + * Выбираем победителей. Смещаем массив, чтобы возврат шёл с единицы. * * @param int $tid * @@ -185,7 +185,7 @@ class TournamentModel } /** - * . + * Пробуем выкусить проигравшего в последней турнирной битве и удалить эту самую битву во избежание. * @return mixed */ public static function getLooser() @@ -216,7 +216,7 @@ class TournamentModel } /** - * . + * Выбывший из турнира покидает комнату и получает время смерти. * * @param int $uid * @param bool $winner @@ -227,17 +227,17 @@ class TournamentModel if (!$uid) { return; } - //$winner_timer_add = $winner? 500 : 0; # . + //$winner_timer_add = $winner? 500 : 0; # Последный ДОЛЖЕН быть последним. $db = new Db(); $db::sql('update tournaments_users set death_time = unix_timestamp() + 500 where death_time = 0 and uid = ?', [$uid]); self::teleport($uid, 9); - //fixme: . . :( + //fixme: Классы не подключаются друг к другу. Нужно менять архитектуру игры. :( Db::sql("update users_achiv set trn = trn + 1 where id = ?", [$uid]); //(new Achievements(\user::start()))->updateCounter('trn'); } /** - * id id . + * Узнаём id турнира по id игрока. * * @param int $uid * @@ -250,10 +250,10 @@ class TournamentModel } /** - * . - * 25000 - id . - * noinc - - * invis - + * Попробуем стартонуть поединок. + * 25000 - Уникальный id поединка под турниры. + * noinc - запрет на вмешательство + * invis - невидимый бой * * @param int $uid1 * @param int $uid2 @@ -270,14 +270,14 @@ class TournamentModel $db::exec('insert into battle (city, time_start, timeout, type, invis, noinc, travmChance, typeBattle) values (\'capitalcity\', unix_timestamp(), 60, 0, 1, 1, 0, 25000)'); - $bid = $db::lastInsertId(); // ! + $bid = $db::lastInsertId(); // ВАЖНО! $db::sql('update stats set team = 1, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid1]); $db::sql('update stats set team = 2, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid2]); $db::sql('update users set battle = ? where id in (?, ?)', [$bid, $uid1, $uid2]); } /** - * id. + * Узнаём логин персонажа по его id. * * @param int $uid * @@ -290,7 +290,7 @@ class TournamentModel } /** - * . + * Телепорт по комнатам. * * @param int $uid * @param int $roomId @@ -304,7 +304,7 @@ class TournamentModel } /** - * $message . + * Нет проверок $message потому что оно всегда задаётся в коде и игрок на него не влияет. * * @param string $message * @@ -320,7 +320,7 @@ class TournamentModel } /** - * $quantity $uid. + * Генерирует множественный запрос сразу на $quantity однотипных предметов в инвентарь пользователя $uid. * * @param int $uid * @param int $quantity @@ -342,7 +342,7 @@ class TournamentModel } } - /** - . + /** Эффект-ограничитель на участие в турнире. * @param int $uid * @param int $unixtime * @@ -352,7 +352,7 @@ class TournamentModel { $db = new Db(); $query = 'insert into eff_users (id_eff, uid, name, timeUse) VALUES (?,?,?,?)'; - $args = [486, $uid, ' !', $unixtime]; + $args = [486, $uid, 'Призёр городского турнира!', $unixtime]; $db::sql($query, $args); } } diff --git a/_incl_data/class/Insallah/Tournaments/Config.php b/_incl_data/class/Insallah/Tournaments/Config.php index 9a74fd9f..c6c93099 100644 --- a/_incl_data/class/Insallah/Tournaments/Config.php +++ b/_incl_data/class/Insallah/Tournaments/Config.php @@ -11,8 +11,8 @@ class Config const PRIZE2 = 10; const PRIZE3 = 5; const MIN_EXP = 175000; - const CHAT_MESSAGE = '! %d ! !'; - const VICTORY_MESSAGE = ' %d ! : %s. : %s. : %s.'; + const CHAT_MESSAGE = 'Внимание! Турнир для %d уровня открыт! Поспешите принять участие в Зале Воинов!'; + const VICTORY_MESSAGE = 'Турнир для %d уровней завершён! Первое место: %s. Второе место: %s. Третье место: %s.'; const DELAY1 = '+12hour'; const DELAY2 = '+6hour'; const DELAY3 = '+3hour'; @@ -23,7 +23,7 @@ class Config const RETURN_ROOM = 9; const MINIMUM_USER_LEVEL = 8; - /** . + /** Формула рассчёта разрешённой стоимости одетых предметов. * * @param $level * @return float|int diff --git a/_incl_data/class/Insallah/Tournaments/Model/GameConnector.php b/_incl_data/class/Insallah/Tournaments/Model/GameConnector.php index 31471c94..acf5b087 100644 --- a/_incl_data/class/Insallah/Tournaments/Model/GameConnector.php +++ b/_incl_data/class/Insallah/Tournaments/Model/GameConnector.php @@ -48,7 +48,7 @@ class GameConnector } /** - * id. + * Узнаём логин персонажа по его id. * * @return mixed */ @@ -58,9 +58,9 @@ class GameConnector } /** - * . + * Телепорт по комнатам. * - * @param bool $out - . + * @param bool $out - обратный телепорт. * * @return void */ @@ -71,9 +71,9 @@ class GameConnector } /** - * , 11. - * noinc - - * invis - + * Получаем список бойцов и бьём их на пары, между которыми стартуют поединки 1х1. + * noinc - запрет на вмешательство + * invis - невидимый бой * * @param array $fightersList * @@ -100,7 +100,7 @@ class GameConnector } /** - * $quantity $uid. + * Генерирует множественный запрос сразу на $quantity однотипных предметов в инвентарь пользователя $uid. * * @param int $quantity * @@ -120,7 +120,7 @@ class GameConnector } } - /** - . + /** Эффект-ограничитель на участие в турнире. * * @param int $unixtime * @@ -134,7 +134,7 @@ class GameConnector } /** - * . + * Пробуем выкусить проигравшего в последней турнирной битве и удалить эту самую битву во избежание. * @return mixed */ public static function getLooser(): int @@ -157,7 +157,7 @@ class GameConnector } /** - * $message . + * Нет проверок $message потому что оно всегда задаётся в коде и игрок на него не влияет. * * @param string $message * diff --git a/_incl_data/class/Insallah/Tournaments/Model/Tournament.php b/_incl_data/class/Insallah/Tournaments/Model/Tournament.php index 30dda0c7..fc73e164 100644 --- a/_incl_data/class/Insallah/Tournaments/Model/Tournament.php +++ b/_incl_data/class/Insallah/Tournaments/Model/Tournament.php @@ -39,19 +39,19 @@ class Tournament $list = ''; $tournamentMembersId = new User(); foreach ($this->t as $row) { - $time = $row['start_time'] === -1 ? ' !' : date('G:i', $row['start_time']); + $time = $row['start_time'] === -1 ? 'Турнир уже начался!' : date('G:i', $row['start_time']); $members = []; foreach ($tournamentMembersId->getAlive($row['tid']) as $member) { $members[] = (new GameConnector())->setUser($member)->uidToLogin(); } $list .= sprintf( - "
  • %d .
    : %s
    : %s
  • ", + "
  • Турнир для %d уровней.
    Время подачи заявки: %s
    Участники: %s
  • ", $row['tid'], $time, implode(', ', $members) ); } - return $list ? "
    .
      $list
    " : ''; + return $list ? "
    Активные турниры.
      $list
    " : ''; } public function getOne(int $tid): string @@ -60,13 +60,13 @@ class Tournament $tournamentMembersId = new User(); foreach ($this->t as $row) { if ($this->t['tid'] === $tid) { - $time = $row['start_time'] === -1 ? ' !' : date('G:i', $row['start_time']); + $time = $row['start_time'] === -1 ? 'Турнир уже начался!' : date('G:i', $row['start_time']); $members = []; foreach ($tournamentMembersId->getAlive($row['tid']) as $member) { $members[] = (new GameConnector())->setUser($member)->uidToLogin(); } $str = sprintf( - "
    %d .
    : %s
    : %s
    ", + "
    Турнир для %d уровней.
    Время подачи заявки: %s
    Участники: %s
    ", $row['tid'], $time, implode(', ', $members) @@ -77,7 +77,7 @@ class Tournament } /** - * . + * Создание нового турнира. * * @param int $tid * @@ -89,7 +89,7 @@ class Tournament } /** - * . + * Старт турнира. * * @param int $tid * @@ -101,7 +101,7 @@ class Tournament } /** - * . + * Чистим базы от прошедшего турнира. * * @param int $tid * diff --git a/_incl_data/class/Insallah/Tournaments/Model/User.php b/_incl_data/class/Insallah/Tournaments/Model/User.php index 4455fe61..f6f32714 100644 --- a/_incl_data/class/Insallah/Tournaments/Model/User.php +++ b/_incl_data/class/Insallah/Tournaments/Model/User.php @@ -16,7 +16,7 @@ class User /** - * . + * Считаем сколько игроков ждут в заявке на турнир. * * @param int $tid * @@ -38,7 +38,7 @@ class User } /** - * . + * Игрок присоединяется к турниру и телепортируется в турнирную комнату. * * @param int $uid * @param int $tid @@ -52,10 +52,10 @@ class User } /** - * . + * Выбираем живых бойцов не сражающихся в данный момент. * * @param int $tid - * @param bool $shuffle - true . + * @param bool $shuffle - установить true если нужно перетасовать массив. * * @return array */ @@ -74,7 +74,7 @@ class User } /** - * . + * Выбираем победителей. * * @param int $tid * @@ -102,7 +102,7 @@ class User } /** - * . + * Выбывший из турнира покидает комнату и получает время смерти. * * @param int $uid * @@ -115,7 +115,7 @@ class User } /** - * id id . + * Узнаём id турнира по id игрока. * * @param int $uid * diff --git a/_incl_data/class/Insallah/Tournaments/Tournament.php b/_incl_data/class/Insallah/Tournaments/Tournament.php index e1a78f28..633d82b8 100644 --- a/_incl_data/class/Insallah/Tournaments/Tournament.php +++ b/_incl_data/class/Insallah/Tournaments/Tournament.php @@ -5,7 +5,7 @@ namespace Insallah\Tournaments; class Tournament { /** - * , . + * Проверяем может ли игрок учавствовать в турнире и либо присоединяем его, либо обламываем. * * @param int $uid * @@ -13,7 +13,7 @@ class Tournament */ public function join(int $uid) { - /** level, 0 . */ + /** Возвращает level, или 0 если провалены проверки. */ $checks = new Model\GameConnector(); $tournament = new Model\Tournament(); $userLevel = $checks->setUser($uid)->getAllowedLevel(); @@ -47,7 +47,7 @@ class Tournament } /** - * \. . + * Проверка для крона\конфига. Выбивает проигравших и перезапускает поединки во всех турнирах. * @return void */ public static function startAllBattles() @@ -70,7 +70,7 @@ class Tournament } /** - * , . + * Награждаем победителей турнира, чистим базу. * * @param int $tid * diff --git a/_incl_data/class/Insallah/Tournaments/View/TList.php b/_incl_data/class/Insallah/Tournaments/View/TList.php index 15ec969c..73eb434b 100644 --- a/_incl_data/class/Insallah/Tournaments/View/TList.php +++ b/_incl_data/class/Insallah/Tournaments/View/TList.php @@ -14,34 +14,34 @@ class TList public function __construct($user) { if (!Config::IS_ENABLED) { - $this->str = '
    !
    '; + $this->str = '
    В данный момент турниры не проводятся!
    '; return; } $tournamentstatus = new Tournament(); $this->str = '
    - ! + Внимание!
      -
    • !
    • '; +
    • Присоединяясь к турниру покинуть заявку невозможно!
    • '; if ((new GameConnector())->setUser($user->info['id'])->isEkrOverpriced()) { - $this->str .= '
    • , - ' . Config::ekrOverpriceFormula($user->info['level']) . ' . + $this->str .= '
    • Стоимость предметов, одетых на вас не должна + превышать ' . Config::ekrOverpriceFormula($user->info['level']) . ' еврокредитов.
    • '; } if ($user->info['exp'] < Config::MIN_EXP) { - $this->str .= '
    • ' . Config::MIN_EXP . ' .
    • '; + $this->str .= '
    • У вас должно быть не менее ' . Config::MIN_EXP . ' опыта.
    • '; } - $this->str .= '
    • , - ' . Config::START_TOURNAMENT . ' .
    • + $this->str .= '
    • Турнир начнётся, когда в заявке + наберётся ' . Config::START_TOURNAMENT . ' человек.
    '; $this->str .= $tournamentstatus->getList(); if (!User::getTournamentIdByUserId($user->info['id']) || !$tournamentstatus->isStarted($user->info['level'])) { $this->str .= '
    - +
    '; } else { - $this->str .= ' .'; + $this->str .= 'Вы учавствуете.'; } } diff --git a/_incl_data/class/Magic.php b/_incl_data/class/Magic.php index 561a4b5f..1abf37ac 100644 --- a/_incl_data/class/Magic.php +++ b/_incl_data/class/Magic.php @@ -27,7 +27,7 @@ class Magic } } - // + //Использование предмета public function useItems($id) { global $u, $btl; @@ -36,17 +36,17 @@ class Magic $bs_is = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $u->info['inTurnir'] . '" LIMIT 1')); if (isset($itm['id'])) { - // + //Группа предметов if ($itm['group'] == 1 && $u->itemsX($itm['id']) > 1) { - // + //вытаскиваем предмет из группы $u->unstack($itm['id'], 1); } $st = $u->lookStats($itm['data']); if (isset($st['tr_lvl']) && $st['tr_lvl'] > $u->info['level']) { - $u->error = ' '; - return ' '; + $u->error = 'Вы слишком малы чтобы использовать данный предмет '; + return 'Вы слишком малы чтобы использовать данный предмет'; } if ($itm['magic_chance'] > 0 && $itm['magic_chance'] < 100) { @@ -65,30 +65,30 @@ class Magic } if ($itm['iznosNOW'] >= $itm['iznosMAX']) { - $u->error = ' ...'; + $u->error = 'Не осталось зарядов...'; } elseif ($st['useOnlyInBattle'] == 1 && $u->info['battle'] == 0) { - // - $u->error = ' '; + //Можно использовать только в поединке + $u->error = 'Можно использовать только в поединке'; } elseif ($u->info['battle'] > 0 && $itm['btl_zd'] > 0) { - // - $u->error = ' ' . $itm['btl_zd'] . ' '; + //Можно использовать только в поединке + $u->error = 'Задержка использования еще ' . $itm['btl_zd'] . ' ходов'; } elseif ($st['useOnlyInBattle'] == 1 && $u->info['battle'] > 0 && $u->stats['hpNow'] < 1) { - // - $u->error = ' , '; + //Можно использовать только в поединке + $u->error = 'Вы погибли, нельзя пользоваться свитками и магией'; } elseif ($itm['magic_chance'] > 0 && rand(0, 100) > $itm['magic_chance']) { - $u->error = ' "' . $itm['name'] . '" '; + $u->error = 'Каст "' . $itm['name'] . '" сгорел'; $itm['iznosNOW']++; if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = 0, `delete` = 0 WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); - $u->addDelo(1, $u->info['id'], '"System.inventory":( ) "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $u->info['id'], '"System.inventory":(КАСТ СГОРЕЛ) Персонаж использовал "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); } elseif (isset($st['usefromfile'])) { - // + //используем заклятие $st = $u->lookStats($itm['data']); if (isset($st['zazuby']) && $_GET['login'] != $u->info['login']) { //unset($st['useOnLogin']); @@ -96,7 +96,7 @@ class Magic } $jl = $_GET['login']; $_GET['login'] = urlencode($_GET['login']); - // ( ) + //используем на персонажа (все кроме себя) $_GET['login'] = str_replace('%', ' ', $_GET['login']); $_GET['login'] = str_replace('25', '', $_GET['login']); $jl = str_replace('%', ' ', $jl); @@ -123,13 +123,13 @@ class Magic if (file_exists('../../_incl_data/class/magic/' . $itm['magic_inci'] . '.php')) { require('../../_incl_data/class/magic/' . $itm['magic_inci'] . '.php'); } else { - $u->error = ' (' . $itm['magic_inci'] . '.b)'; + $u->error = 'Не удалось использовать (' . $itm['magic_inci'] . '.b)'; } } else { if (file_exists('_incl_data/class/magic/' . $itm['magic_inci'] . '.php')) { require('_incl_data/class/magic/' . $itm['magic_inci'] . '.php'); } else { - $u->error = ' (' . $itm['magic_inci'] . ')'; + $u->error = 'Не удалось использовать (' . $itm['magic_inci'] . ')'; } } } else { @@ -137,20 +137,20 @@ class Magic if (file_exists('../../_incl_data/class/priems/' . $st['usefromfile'] . '.php')) { require('../../_incl_data/class/priems/' . $st['usefromfile'] . '.php'); } else { - $u->error = ' (' . $st['usefromfile'] . '.)'; + $u->error = 'Не удалось использовать (' . $st['usefromfile'] . '.)'; } } else { - $u->error = ' (' . $st['usefromfile'] . '!)'; + $u->error = 'Не удалось использовать (' . $st['usefromfile'] . '!)'; } } } elseif ($itm['type'] == 30) { - // + //Эликсиры $goodUse = 0; $use = []; if (isset($st['moment'])) { - // ( ) + //Эликсир используется моментально (Восстановление НР или МР) if (isset($st['moment_hp'])) { - // + //Восстанавливаем здоровье if ($u->stats['hpNow'] < $u->stats['hpAll']) { $goodUse = 1; $use['moment_hp'] = $st['moment_hp']; @@ -159,39 +159,39 @@ class Magic $use['moment_hp'] = ceil($u->stats['hpAll'] - $u->stats['hpNow']); } - $u->error .= ' ' . ($use['moment_hp']) . ' HP.
    '; + $u->error .= 'Вы восстановили ' . ($use['moment_hp']) . ' HP.
    '; } else { - $u->error = '
    '; + $u->error = 'Ваше здоровье и так полностью восстановлено
    '; $goodUse = 0; } } if (isset($st['moment_mp'])) { - // + //Восстанавливаем здоровье if ($u->stats['mpNow'] < $u->stats['mpAll']) { $goodUse = 1; $use['moment_mp'] = $st['moment_mp']; if ($u->stats['mpNow'] + $use['moment_mp'] > $u->stats['mpAll']) { $use['moment_mp'] = ceil($u->stats['mpAll'] - $u->stats['mpNow']); } - $u->error .= ' ' . ($use['moment_mp']) . ' MP.
    '; + $u->error .= 'Вы восстановили ' . ($use['moment_mp']) . ' MP.
    '; } else { - $u->error = ' '; + $u->error = 'Ваша манна и так полностью восстановлена'; $goodUse = 0; } } if ($itm['iznosNOW'] >= $itm['iznosMAX']) { - $u->error = ' ...'; + $u->error = 'Эликсир был испорчен...'; $goodUse = 0; } if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; - $u->error = ' '; + $u->error = 'Хаосники не могут использовать данный эликсир'; } - // + //Заносим данные в БД if ($goodUse == 1) { $itm['iznosNOW']++; $upd = mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); @@ -204,26 +204,26 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '", `mpNow` = "' . $u->info['mpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (+' . $use['moment_hp'] . ' HP) [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал эликсир "' . $itm['name'] . '" (+' . $use['moment_hp'] . ' HP) [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); $this->youuse++; - $u->error = ' "' . $itm['name'] . '"
    ' . $u->error . ''; + $u->error = 'Вы успешно использовали эликсир "' . $itm['name'] . '"
    ' . $u->error . ''; } else { - $u->error = ' ...'; + $u->error = 'Не удалось использовать эликсир...'; } } } else { - // + //Эликсиры с продолжительным эффектом $goodUse = 1; if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; - $u->error = ' '; + $u->error = 'Хаосники не могут использовать данный эликсир'; } if ($goodUse == 1) { $upd1 = 1; $upd2 = 1; - // + //добавляем эффект персонажу if (isset($st['onlyOne'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"'); if ($upd1) { @@ -231,7 +231,7 @@ class Magic } } if (isset($st['oneType'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"'); if ($upd1) { @@ -246,20 +246,20 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал эликсир "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); $this->youuse++; - $u->error = ' "' . $itm['name'] . '"
    ' . $us[1] . ''; + $u->error = 'Вы успешно использовали эликсир "' . $itm['name'] . '"
    ' . $us[1] . ''; } else { - $u->error = ' "' . $itm['name'] . '"'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"'; } } else { - $u->error = ' "' . $itm['name'] . '"'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"'; } } } //--------------- } elseif ($itm['type'] == 29) { - // + //используем заклятие $st = $u->lookStats($itm['data']); if (isset($st['zazuby']) && $_GET['login'] != $u->info['login']) { //unset($st['useOnLogin']); @@ -267,20 +267,20 @@ class Magic } $jl = $_GET['login']; $_GET['login'] = urlencode($_GET['login']); - // ( ) + //используем на персонажа (все кроме себя) $_GET['login'] = str_replace('%', ' ', $_GET['login']); $_GET['login'] = str_replace('25', '', $_GET['login']); $jl = str_replace('%', ' ', $jl); $jl = str_replace('25', '', $jl); if ($itm['magic_inci'] == 'nextuplvl') { if ($itm['iznosNOW'] >= $itm['iznosMAX']) { - $u->error = ' ...'; + $u->error = 'Свиток был исполчен...'; } elseif ($u->info['battle'] > 0) { // - $u->error = ' '; + $u->error = 'Вы не можете использовать свиток в бою'; } else { if ($u->info['twink'] > 0) { - $u->error = ' '; + $u->error = 'Используйте свиток на основном персонаже'; } else { mysql_query('UPDATE `users` SET `stopexp` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `users_twink` SET `stopexp` = 0 WHERE `uid` = "' . $u->info['id'] . '" LIMIT 1'); @@ -308,9 +308,9 @@ class Magic if (isset($usr['id'])) { - // + //заклятье нападения if ($itm['iznosNOW'] >= $itm['iznosMAX']) { - $u->error = ' ...'; + $u->error = 'Свиток был исполчен...'; } elseif ($itm['magic_inci'] == 'snowball') { if ($u->info['battle'] == 0) { $usr = mysql_fetch_array(mysql_query('SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "' . $u->info['city'] . '" AND (`u`.`battle` = 0 OR `u`.`battle` = "' . $u->info['battle'] . '") AND (`u`.`login`="' . mysql_real_escape_string($_GET['login']) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") LIMIT 1')); @@ -318,13 +318,13 @@ class Magic $usr = mysql_fetch_array(mysql_query('SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "' . $u->info['city'] . '" AND (`u`.`battle` = 0 OR `u`.`battle` = "' . $u->info['battle'] . '") AND (`u`.`login`="' . mysql_real_escape_string($_GET['login']) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") AND `u`.`battle` = "' . $u->info['battle'] . '" LIMIT 1')); } if ($usr['battle'] > 0 && $u->info['battle'] != $usr['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в бою'; } elseif ($usr['battle'] > 0) { - // + //Кидаемся в поединке if ($usr['team'] != $u->info['team'] && $usr['hpNow'] > 0) { $txt = 1; - // + //Отморозки if ($usr['bot_id'] >= 439 && $usr['bot_id'] <= 460) { $txt = 500; } elseif ($usr['bot_id'] == 291) { @@ -370,27 +370,27 @@ class Magic mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); $txt = '' . $txt . ''; if ($u->info['sex'] == 1) { - $txt = ' {u1} {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = 'Хитрая {u1} бросила кусок снега в {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } else { - $txt = ' {u1} {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = 'Хитрый {u1} бросил кусок снега в {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'); } unset($txt); } else { - $u->error = ' '; + $u->error = 'Нельзя использовать на данного персонажа'; } } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['id'] == $u->info['id']) { - $u->error = ' '; + $u->error = 'Нельзя кидаться в самого себя'; } elseif ($usr['online'] < time() - 520 && $usr['battle'] == 0 && $usr['bot'] == 0) { - $u->error = ' ;)'; + $u->error = 'Персонаж находится в реальном мире ;)'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['admin'] > 0 && $u->info['admin'] == 0) { - $u->error = ' '; + $u->error = 'Нельзя кидаться в Ангелов'; } else { $usr['hpNow'] -= 1000; if ($usr['hpNow'] < 0) { @@ -398,11 +398,11 @@ class Magic } $upd = mysql_query('UPDATE `stats` SET `hpNow` = "' . $usr['hpNow'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'); if ($upd) { - $sx = ''; + $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { - $sx = ''; - $sx2 = ''; + $sx = 'ая'; + $sx2 = 'а'; } $itm['iznosNOW']++; if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { @@ -410,54 +410,54 @@ class Magic } mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); $urs_st = $u->getStats($usr['id']); - $rtxt = '[img[items/snowball1.gif]] ' . $sx . ' "' . $u->info['login'] . '" ' . $sx2 . ' "' . $usr['login'] . '". -1000 [' . floor($urs_st['hpNow']) . '/' . $urs_st['hpAll'] . ']'; + $rtxt = '[img[items/snowball1.gif]] Хитр' . $sx . ' "' . $u->info['login'] . '" бросил' . $sx2 . ' кусок снега в "' . $usr['login'] . '". -1000 [' . floor($urs_st['hpNow']) . '/' . $urs_st['hpAll'] . ']'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); unset($sx, $sx2); } else { - $u->error = ' ...'; + $u->error = 'Не удалось кинуть снежок...'; } } - } elseif ($itm['magic_inci'] == 'atack') { // + } elseif ($itm['magic_inci'] == 'atack') { //заклятье нападения - $usta = $u->getStats($usr['id'], 0); // + $usta = $u->getStats($usr['id'], 0); // статы цели $rgd = $u->regen($usr['id'], $usta, 1); $usta['hpNow'] = $rgd['hpNow']; $usta['mpNow'] = $rgd['mpNow']; - $minHp = floor($usta['hpAll'] / 100 * 33); // + $minHp = floor($usta['hpAll'] / 100 * 33); // минимальный запас здоровья цели при котором можно напасть $batlatest = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $usr['battle'] . '" AND `team_win` = -1 LIMIT 1')); $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `battle_id` = "' . $usr['battle'] . '" LIMIT 1')); if (isset($test['id'])) { - echo ' , .'; + echo 'Нельзя вмешаться, вы уже были в этом поединке.'; } elseif (time() - $usr['timereg'] < 86400 * 10) { - $u->error = ' ! ...'; + $u->error = 'Нападать на новичков запрещается! Сейчас придет Мироздатель и превратит тебя в лягушку...'; } elseif ($usr['atack'] == 1 || $usr['atack'] > time()) { - $u->error = ' , ...'; + $u->error = 'На персонаже метка нападения, нападайте через неё...'; } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' ()'; + $u->error = 'Персонаж находится в другой комнате (пещере)'; } elseif ($usr['inTurnirnew'] > 0) { - $u->error = ' '; + $u->error = 'Персонаж принимает участие в турнире'; } elseif ($u->info['battle'] > 0) { - $u->error = ' '; + $u->error = 'Вы уже находитесь в бою'; } elseif ($usr['id'] == $u->info['id']) { - $u->error = ' '; + $u->error = 'Нельзя нападать на самого себя'; } elseif ($usr['bot'] == 2) { - $u->error = ' ' . $usr['login'] . ''; + $u->error = 'Не удалость напасть на бота ' . $usr['login'] . ''; } elseif ($usr['online'] < time() - 120) { - $u->error = ' '; + $u->error = 'Персонаж не в сети'; } elseif ($usr['admin'] == 1) { - $u->error = ' ...'; + $u->error = 'Уважайте хранителей...'; } elseif ($usr['room'] != $u->info['room'] && $u->info['battle'] != $usr['battle'] && $u->info['battle'] > 0) { - $u->error = ' !'; + $u->error = 'Персонаж находится в другой комнате!'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($batlatest['noatack'] == 1) { - $u->error = ' ! !'; + $u->error = 'Поединок защищен магией! Вы не можете вмешаться!'; } elseif ($minHp > $usta['hpNow'] && !isset($batlatest['id'])) { - // - $u->error = ' (' . floor($usta['hpNow']) . 'HP)'; + //мало хп + $u->error = 'Персонаж слишком слаб (' . floor($usta['hpNow']) . 'HP)'; } elseif ($u->info['noatack'] != 0) { - // - $u->error = ' .'; + //мало хп + $u->error = 'В этой комнате нападения запрещены.'; } else { if ($usr['type_pers'] > 0) { @@ -481,49 +481,49 @@ class Magic } $atc = $this->atackUser($u->info['id'], $usr['id'], $usr['team'], $usr['battle'], 0, $kroww, $kulak, $bsi); if ($atc > 0) { - // + //отправляем системку в чат $sx = ''; if ($u->info['sex'] == 1) { - $sx = ''; + $sx = 'а'; } $itm['iznosNOW']++; if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); - $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" ' . $sx . ' "' . $usr['login'] . '".'; + $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" использовал' . $sx . ' магию нападения на персонажа "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','11','0','1')"); - //, + //напали, обновляем экран die(''); } else { if ($u->error == '') { - $u->error = ' ...'; + $u->error = 'Не удалось напасть на персонажа...'; } } } } elseif ($itm['magic_inci'] == 'cureHP') { - // ,MP + //Реген НР,MP $po = $u->lookStats($itm['data']); if ($u->info['battle'] > 0) { - // + //используем свиток в поединке $bu = mysql_fetch_array(mysql_query('SELECT * FROM `spells` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); if (isset($bu['id'])) { - $u->error = ' ...'; + $u->error = 'Нельзя использовать свиток каждый ход...'; } elseif ($usr['battle'] != $u->info['battle']) { - $u->error = ' , ...'; + $u->error = 'Неудалось использовать, персонаж в другом поединке...'; } elseif ($usr['team'] != $u->info['team']) { - $u->error = ' ...'; + $u->error = 'Неудалось использовать на противника...'; } elseif ($usr['hpNow'] < 1) { - $u->error = ' ...'; + $u->error = 'Неудалось использовать на мертвых...'; } elseif ($u->info['hpNow'] < 1) { - $u->error = ' , ...'; + $u->error = 'Неудалось использовать, вы погибли...'; } elseif ($btl->info['noeff'] > 0) { - $u->error = ' '; + $u->error = 'Запрет на использования свитков восстановления'; } elseif ($po['magic_hpNow'] < 1 && $po['magic_mpNow'] < 1) { - $u->error = ' , ...'; + $u->error = 'Неудалось использовать, в магическом свитке нет магии...'; } elseif (($usr['battle'] == $u->info['battle'] && ($u->info['team'] == $usr['team'] && ($po['magic_hpNow'] > 0 || $po['magic_mpNow'] > 0))) && $usr['hpNow'] >= 1 && $u->info['hpNow'] >= 1) { - // + //кастуем if (isset($po['magic_hpNow'])) { mysql_query('INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ( @@ -577,15 +577,15 @@ class Magic $txt = '' . $txt . ''; if ($u->info['id'] == $usr['id']) { if ($u->info['sex'] == 1) { - $txt = '{u1} "' . $itm['name'] . '" . ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = '{u1} использовала "' . $itm['name'] . '" на себя. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } else { - $txt = '{u1} "' . $itm['name'] . '" . ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = '{u1} использовал "' . $itm['name'] . '" на себя. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } } else { if ($u->info['sex'] == 1) { - $txt = '{u1} "' . $itm['name'] . '" {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = '{u1} использовала "' . $itm['name'] . '" на {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } else { - $txt = '{u1} "' . $itm['name'] . '" {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; + $txt = '{u1} использовал "' . $itm['name'] . '" на {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']'; } } mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'); @@ -594,27 +594,27 @@ class Magic $itm['iznosNOW']++; mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); - // - $sx = ''; + // сообщение в лог боя + $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { - $sx = ''; - $sx2 = ''; + $sx = 'ая'; + $sx2 = 'а'; } - $u->error = ' "' . $itm['name'] . '" .'; + $u->error = 'Свиток "' . $itm['name'] . '" был успешно использован.'; } else { - $u->error = ' '; + $u->error = 'Нельзя использовать на данного персонажа'; } } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' []'; + $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) { - $u->error = ' '; + $u->error = 'Персонаж находится в реальном мире'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['battle'] != $u->info['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в поединке'; } else { - // + //кастуем if (isset($po['magic_hpNow'])) { mysql_query('UPDATE `stats` SET `hpNow` = `hpNow` + ' . $po['magic_hpNow'] . ' WHERE `id` = "' . $usr['id'] . '" LIMIT 1'); } @@ -626,29 +626,29 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - // - $sx = ''; + // сообщение в чат + $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { - $sx = ''; - $sx2 = ''; + $sx = 'ая'; + $sx2 = 'а'; } - $u->error = ' "' . $itm['name'] . '" .'; - $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" ' . $sx2 . ' "' . $itm['name'] . '" "' . $usr['login'] . '".'; + $u->error = 'Свиток "' . $itm['name'] . '" был успешно использован.'; + $rtxt = '[img[items/' . $itm['img'] . ']] Персонаж "' . $u->info['login'] . '" использовал' . $sx2 . ' "' . $itm['name'] . '" на "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } } elseif ($itm['magic_inci'] == 'cureMP') { - // ,MP + //Реген НР,MP $po = $u->lookStats($itm['data']); if ($u->info['battle'] > 0) { - // + //используем свиток в поединке $bu = mysql_fetch_array(mysql_query('SELECT * FROM `spells` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); if (isset($bu['id'])) { - $u->error = ' ...'; + $u->error = 'Нельзя использовать свиток каждый ход...'; } elseif ($btl->info['noeff'] > 0) { - $u->error = ' '; + $u->error = 'Запрет на использования свитков восстановления'; } elseif (($usr['battle'] == $u->info['battle'] && ($u->info['team'] == $usr['team'] && ($po['magic_hpNow'] > 0 || $po['magic_mpNow'] > 0))) && $usr['hpNow'] > 1 && $u->info['hpNow'] >= 1) { - // + //кастуем if (isset($po['magic_mpNow'])) { mysql_query('INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ( @@ -667,7 +667,7 @@ class Magic $txt = floor($txt / 100 * $gdhd); } - if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) { // >= 1 , + if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) { // поставить >= 1 , если требует дух if ($txt > 0) { $btl->stats[$btl->uids[$usr['id']]]['mpNow'] += $txt; $btl->users[$btl->uids[$usr['id']]]['tactic7'] -= $gdhh; @@ -700,15 +700,15 @@ class Magic $txt = '' . $txt . ''; if ($u->info['id'] == $usr['id']) { if ($u->info['sex'] == 1) { - $txt = '{u1} "' . $itm['name'] . '" . ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] ()'; + $txt = '{u1} использовала "' . $itm['name'] . '" на себя. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)'; } else { - $txt = '{u1} "' . $itm['name'] . '" . ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] ()'; + $txt = '{u1} использовал "' . $itm['name'] . '" на себя. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)'; } } else { if ($u->info['sex'] == 1) { - $txt = '{u1} "' . $itm['name'] . '" {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] ()'; + $txt = '{u1} использовала "' . $itm['name'] . '" на {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)'; } else { - $txt = '{u1} "' . $itm['name'] . '" {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] ()'; + $txt = '{u1} использовал "' . $itm['name'] . '" на {u2}. ' . $txt . ' [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)'; } } mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'); @@ -717,27 +717,27 @@ class Magic $itm['iznosNOW']++; mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); - // - $sx = ''; + // сообщение в лог боя + $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { - $sx = ''; - $sx2 = ''; + $sx = 'ая'; + $sx2 = 'а'; } - $u->error = ' "' . $itm['name'] . '" .'; + $u->error = 'Свиток "' . $itm['name'] . '" был успешно использован.'; } else { - $u->error = ' '; + $u->error = 'Нельзя использовать на данного персонажа'; } } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' []'; + $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) { - $u->error = ' '; + $u->error = 'Персонаж находится в реальном мире'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['battle'] != $u->info['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в поединке'; } else { - // + //кастуем if (isset($po['magic_mpNow'])) { mysql_query('UPDATE `stats` SET `mpNow` = `mpNow` + ' . $po['magic_mpNow'] . ' WHERE `id` = "' . $usr['id'] . '" LIMIT 1'); } @@ -749,47 +749,47 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - // - $sx = ''; + // сообщение в чат + $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { - $sx = ''; - $sx2 = ''; + $sx = 'ая'; + $sx2 = 'а'; } - $u->error = ' "' . $itm['name'] . '" .'; - $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" ' . $sx2 . ' "' . $itm['name'] . '" "' . $usr['login'] . '".'; + $u->error = 'Свиток "' . $itm['name'] . '" был успешно использован.'; + $rtxt = '[img[items/' . $itm['img'] . ']] Персонаж "' . $u->info['login'] . '" использовал' . $sx2 . ' "' . $itm['name'] . '" на "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } } elseif ($itm['magic_inci'] == 'lech_1' or $itm['magic_inci'] == 'lech_2' or $itm['magic_inci'] == 'lech_3') { if ($u->info['battle'] > 0) { - // + //используем свиток в поединке } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' []'; + $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) { - $u->error = ' '; + $u->error = 'Персонаж находится в реальном мире'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['battle'] != $u->info['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в поединке'; } else { $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1')); //$type_lechenie = $travm['v1']; $itm['magic_inci'] = 'lech_' . $travm['v1']; if ($itm['magic_inci'] == 'lech_1') { - $type_lechenie = 1; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 1; // тип травмы котору лечим + $text_msg = '"Легкой травмы"'; + $text_msg2 = 'легких'; } elseif ($itm['magic_inci'] == 'lech_2') { - $type_lechenie = 2; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 2; // тип травмы котору лечим + $text_msg = '"Средней травмы"'; + $text_msg2 = 'средних'; } elseif ($itm['magic_inci'] == 'lech_3') { - $type_lechenie = 3; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 3; // тип травмы котору лечим + $text_msg = '"Тяжелой травмы"'; + $text_msg2 = 'тяжелых'; } if ($travm) { $lech_aa = [0, 2, 3, 4]; @@ -817,7 +817,7 @@ class Magic $lech_co = round($travm_cep['x'] + 1); if ($it_no == 1) { - $u->error = ' '; + $u->error = 'Вы уже один из лекарей'; } elseif ($lech_co >= $lech_aa[$type_lechenie]) { mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'); $itm['iznosNOW']++; @@ -826,30 +826,30 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - $rtxt = '[img[items/cure_g1.gif]] "' . $u->info['login'] . '" "' . $usr['login'] . '".'; + $rtxt = '[img[items/cure_g1.gif]] Лекарь "' . $u->info['login'] . '" кинул цепь исцеления на игрока "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1'); mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'); - // - $u->error = ' ' . $text_msg . '.'; - $rtxt = '[img[items/cure' . $type_lechenie . '.gif]] "' . $u->info['login'] . $it_users . '" ' . $text_msg . ' "' . $usr['login'] . '".'; + // сообщение в чат + $u->error = 'Персонаж излечен от ' . $text_msg . '.'; + $rtxt = '[img[items/cure' . $type_lechenie . '.gif]] Лекари "' . $u->info['login'] . $it_users . '" вылечили от ' . $text_msg . ' игрока "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } else { if (isset($travm_cep['id'])) { $travm_cep['x']++; - $u->error = ' "' . $text_msg . '" ( ' . $text_msg2 . ' )'; + $u->error = 'Вы присоединились к цепи исцеления для "' . $text_msg . '" (исцеление ' . $text_msg2 . ' травм)'; mysql_query('UPDATE `eff_users` SET `x` = "' . $travm_cep['x'] . '" ,`data` = "' . $travm_cep['data'] . ',' . $u->info['id'] . '" WHERE `id` = "' . $travm_cep['id'] . '" LIMIT 1'); } else { - $u->error = ' "' . $text_msg . '" ( ' . $text_msg2 . ' ), 5 , '; + $u->error = 'Вы создали цепь исцеления для "' . $text_msg . '" (исцеление ' . $text_msg2 . ' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание'; mysql_query('INSERT INTO `eff_users` ( `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x` ) VALUES ( - "335","' . $usr['id'] . '"," ","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1" + "335","' . $usr['id'] . '","Цепь исцеления","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1" )'); } //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1'); @@ -858,13 +858,13 @@ class Magic if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - // - $rtxt = '[img[items/cure_g1.gif]] "' . $u->info['login'] . '" "' . $usr['login'] . '".'; + // сообщение в чат + $rtxt = '[img[items/cure_g1.gif]] Лекарь "' . $u->info['login'] . '" кинул цепь исцеления на игрока "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } } else { - $u->error = ' .'; + $u->error = 'Персонаж не имеет данной травмы.'; } } @@ -873,36 +873,36 @@ class Magic } elseif ($itm['magic_inci'] == 'lech_free_1' or $itm['magic_inci'] == 'lech_free_2' or $itm['magic_inci'] == 'lech_free_3') { if ($u->info['battle'] > 0) { - // + //используем свиток в поединке } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' []'; + $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) { - $u->error = ' '; + $u->error = 'Персонаж находится в реальном мире'; } elseif ($usr['room'] != $u->info['room']) { - $u->error = ' '; + $u->error = 'Персонаж находится в другой комнате'; } elseif ($usr['battle'] != $u->info['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в поединке'; } else { $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1')); //$type_lechenie = $travm['v1']; //$itm['magic_inci'] = 'lech_free_'.$travm['v1']; if ($itm['magic_inci'] == 'lech_free_1') { - $type_lechenie = 1; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 1; // тип травмы котору лечим + $text_msg = '"Легкой травмы"'; + $text_msg2 = 'легких'; } elseif ($itm['magic_inci'] == 'lech_free_2') { - $type_lechenie = 2; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 2; // тип травмы котору лечим + $text_msg = '"Средней травмы"'; + $text_msg2 = 'средних'; } elseif ($itm['magic_inci'] == 'lech_free_3') { - $type_lechenie = 3; // - $text_msg = '" "'; - $text_msg2 = ''; + $type_lechenie = 3; // тип травмы котору лечим + $text_msg = '"Тяжелой травмы"'; + $text_msg2 = 'тяжелых'; } if ($travm['v1'] != $type_lechenie) { - $u->error = ' .'; + $u->error = 'Неподходящий свиток для данной травмы.'; } elseif ($travm['id']) { $lech_aa = [0, 0, 0, 0]; $travm_cep = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="335" and `delete`="0" and `v1`="' . $type_lechenie . '" LIMIT 1')); @@ -929,7 +929,7 @@ class Magic $lech_co = round($travm_cep['x'] + 1); if ($it_no == 1) { - $u->error = ' '; + $u->error = 'Вы уже один из лекарей'; } elseif ($lech_co >= $lech_aa[$type_lechenie]) { mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'); $itm['iznosNOW']++; @@ -940,24 +940,24 @@ class Magic mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'); - // - $u->error = ' ' . $text_msg . '.'; - $rtxt = '[img[items/cure' . $type_lechenie . '.gif]] "' . $u->info['login'] . $it_users . '" ' . $text_msg . ' "' . $usr['login'] . '".'; + // сообщение в чат + $u->error = 'Персонаж излечен от ' . $text_msg . '.'; + $rtxt = '[img[items/cure' . $type_lechenie . '.gif]] Лекари "' . $u->info['login'] . $it_users . '" вылечили от ' . $text_msg . ' игрока "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } else { if (isset($travm_cep['id'])) { $travm_cep['x']++; - $u->error = ' "' . $text_msg . '" ( ' . $text_msg2 . ' )'; + $u->error = 'Вы присоединились к цепи исцеления для "' . $text_msg . '" (исцеление ' . $text_msg2 . ' травм)'; mysql_query('UPDATE `eff_users` SET `x` = "' . $travm_cep['x'] . '" ,`data` = "' . $travm_cep['data'] . ',' . $u->info['id'] . '" WHERE `id` = "' . $travm_cep['id'] . '" LIMIT 1'); } else { - $u->error = ' "' . $text_msg . '" ( ' . $text_msg2 . ' ), 5 , '; + $u->error = 'Вы создали цепь исцеления для "' . $text_msg . '" (исцеление ' . $text_msg2 . ' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание'; mysql_query('INSERT INTO `eff_users` ( `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x` ) VALUES ( - "335","' . $usr['id'] . '"," ","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1" + "335","' . $usr['id'] . '","Цепь исцеления","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1" )'); } $itm['iznosNOW']++; @@ -965,13 +965,13 @@ class Magic if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - // - $rtxt = '[img[items/cure_g1.gif]] "' . $u->info['login'] . '" "' . $usr['login'] . '".'; + // сообщение в чат + $rtxt = '[img[items/cure_g1.gif]] Лекарь "' . $u->info['login'] . '" кинул цепь исцеления на игрока "' . $usr['login'] . '".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); } } else { - $u->error = ' .'; + $u->error = 'Персонаж не имеет данной травмы.'; } } @@ -981,44 +981,44 @@ class Magic if ($u->info['id'] != $usr['id']) { $lsct = mysql_fetch_array(mysql_query('SELECT `id_eff` FROM `eff_users` WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND (`overType` = "' . $itm['overType'] . '" OR (`id_eff` = "' . $itm['magic_inc'] . '" AND "' . (0 + $st['onlyOne']) . '" != "0")) LIMIT 1')); $lsct['good'] = 1; - // + //Касты if ($lsct['id_eff'] >= 291 && $lsct['id_eff'] <= 296 && $itm['magic_inc'] >= 291 && $itm['magic_inc'] <= 296) { if ($lsct['id_eff'] > $itm['magic_inc']) { - $u->error = ' !'; + $u->error = 'На персонаже есть каст лучше этого!'; $lsct['good'] = 0; } } } else { $lsct['good'] = 1; } - // + //просто используем на персонажа if ($lsct['good'] == 0) { } elseif ($u->info['dnow'] != $usr['dnow']) { - $u->error = ' []'; + $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['room'] == 217 || $usr['room'] == 218 || $usr['room'] == 219) { - $u->error = ' ' . $u->microLogin($usr['id'], 1) . ' !'; + $u->error = 'Персонаж ' . $u->microLogin($usr['id'], 1) . ' находится в Общежитии!'; } elseif ($usr['inTurnir'] != 0 && ($u->info['inTurnir'] != $usr['inTurnir'])) { - $u->error = ' ...'; + $u->error = 'Участвует в турнире Башни смерти...'; } elseif ($usr['id'] == $u->info['id'] && isset($st['useOnlyUser'])) { - $u->error = ' '; + $u->error = 'Нельзя использовать это заклятие на самого себя'; } elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) { - $u->error = ' ;)'; + $u->error = 'Персонаж находится в реальном мире ;)'; } elseif ($usr['room'] != $u->info['room'] && $usr['battle'] != $u->info['battle'] && $u->info['battle'] > 0) { - $u->error = ' [' . $usr['room'] . ' ' . $u->info['room'] . ']'; + $u->error = 'Персонаж находится в другой комнате [' . $usr['room'] . ' ' . $u->info['room'] . ']'; } elseif ($usr['admin'] > 0 && $u->info['admin'] == 0 && isset($st['useNoAdmin'])) { - $u->error = ' '; + $u->error = 'Нельзя использовать данное заклятие на Ангелов'; } elseif ($usr['battle'] > 0 && $u->info['battle'] != $usr['battle']) { - $u->error = ' '; + $u->error = 'Персонаж находится в бою'; } elseif (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { - $u->error = ' '; + $u->error = 'Хаосники не могут использовать данное заклятие'; } else { - // + //добавляем эффект персонажу $goodUse = 1; // $tpsm = 0; if ($itm['useInBattle'] == 0 && $usr['battle'] > 0) { - // + //Нельзя юзать $goodUse = 0; } else { if ($usr['battle'] > 0) { @@ -1039,7 +1039,7 @@ class Magic // if ($goodUse == 1) { if (isset($st['onlyOne'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"'); if ($upd1) { @@ -1047,7 +1047,7 @@ class Magic } } if (isset($st['oneType'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"'); if ($upd1) { @@ -1057,20 +1057,20 @@ class Magic } // if ($goodUse == 1 && $itm['magic_inc'] == 'unclone') { - // + //Переманить клона if ($usr['clone'] > 0 && $usr['hpNow'] >= 1 && $usr['team'] != $u->info['team']) { mysql_query('UPDATE `stats` SET `team` = "' . $u->info['team'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'); if ($u->info['sex'] == 0) { - $txt_m = '{u1} {u2} .'; + $txt_m = '{u1} переманил клона {u2} на свою сторону.'; } else { - $txt_m = '{u1} {u2} .'; + $txt_m = '{u1} переманила клона {u2} на свою сторону.'; } $this->inBattleLog($txt_m, $usr); mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "' . $itm['item_id'] . '" AND `inOdet` > 0 AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" LIMIT 20'); - $u->error = ' "' . $itm['name'] . '" "' . $usr['login'] . '"'; + $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '" на "' . $usr['login'] . '"'; } else { - $u->error = ' ...'; + $u->error = 'Вы не можете переманивать данного персонажа...'; } } elseif ($goodUse == 1) { $us = $this->add_eff($usr['id'], $itm['magic_inc']); @@ -1082,35 +1082,35 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } if ($u->info['id'] != $usr['id']) { - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (' . $us[1] . ') "' . $usr['login'] . '" (id' . $usr['id'] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); - $u->addDelo(1, $usr['id'], '"System.inventory": "' . $u->info['login'] . '" (id' . $u->info['id'] . ') "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $usr['city'], 'System.inventory', 0, 0); - $u->error = ' "' . $itm['name'] . '" "' . $usr['login'] . '"
    ' . $us[1] . ''; + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа "' . $usr['login'] . '" (id' . $usr['id'] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $usr['id'], '"System.inventory": Персонаж "' . $u->info['login'] . '" (id' . $u->info['id'] . ') использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа [itm:' . $itm['id'] . '].', time(), $usr['city'], 'System.inventory', 0, 0); + $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '" на персонажа "' . $usr['login'] . '"
    ' . $us[1] . ''; } else { - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); - $u->error = ' "' . $itm['name'] . '"
    ' . $us[1] . ''; + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа самого себя [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '" на самого себя
    ' . $us[1] . ''; } // if ($usr['battle'] > 0) { - // + //Заносим в лог $txt_m = ''; if ($u->info['sex'] == 0) { if ($u->info['id'] != $usr['id']) { - $txt_m .= '{u1} "' . $itm['name'] . '" {u2}.'; + $txt_m .= '{u1} воспользовался магией "' . $itm['name'] . '" на {u2}.'; } else { - $txt_m .= '{u1} "' . $itm['name'] . '" .'; + $txt_m .= '{u1} воспользовался магией "' . $itm['name'] . '" на себя.'; } } else { if ($u->info['id'] != $usr['id']) { - $txt_m .= '{u1} "' . $itm['name'] . '" {u2}.'; + $txt_m .= '{u1} воспользовалась магией "' . $itm['name'] . '" на {u2}.'; } else { - $txt_m .= '{u1} "' . $itm['name'] . '" .'; + $txt_m .= '{u1} воспользовалась магией "' . $itm['name'] . '" на себя.'; } } $this->inBattleLog($txt_m, $usr); // - // - //306 - , 307 - + //По завершению боя эффект должен слетать + //306 - положительное , 307 - отрицательное if ($tpsm == 1) { //306 mysql_query('UPDATE `eff_users` SET `v1` = "priem",`v2` = "306",`timeUse` = "77",`hod` = "-1",`img2` = "' . $itm['img'] . '" WHERE `id` = "' . $mmmid . '" LIMIT 1'); @@ -1123,25 +1123,25 @@ class Magic // $this->youuse++; } else { - $u->error = ' "' . $itm['name'] . '" ... (' . $itm['magin_inc'] . ' and ' . $itm['magic_inci'] . ', )'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '" ... (' . $itm['magin_inc'] . ' and ' . $itm['magic_inci'] . ', Эффект не добавлен)'; } } else { - $u->error = ' "' . $itm['name'] . '"'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"'; } } } } else { - $u->error = ' "' . $jl . '" (' . $u->info['city'] . ')'; + $u->error = 'Персонаж "' . $jl . '" не найден в этом городе (' . $u->info['city'] . ')'; } } elseif (isset($st['useOnItem']) && $st['useOnItem'] == 1) { - // + //используем на предмет } else { - // + //на себя $goodUse = 1; if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; - $u->error = ' '; + $u->error = 'Хаосники не могут использовать данное заклятие'; } if ($itm['magic_inci'] == 'sanich2') { @@ -1151,39 +1151,39 @@ class Magic $slech = rand(0, 4); $goodUse = 0; if ($slech == 1) { - //3083 + //3083 Настойка на жучьей требухе //$this->add_eff($u->info['id'],3083); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 290 AND `delete` =0'); $this->add_eff($u->info['id'], 290); - $echotext = ' !'; - $u->error = ' ' . $echotext . ''; + $echotext = 'Настойка на жучьей требухе!'; + $u->error = 'Вы получили эфект от ' . $echotext . ''; } elseif ($slech == 2) { - //5239 + //5239 Амброзия подмастерья Владык //$this->add_eff($u->info['id'],5239); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 472 AND `delete` =0'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 470 AND `delete` =0'); $this->add_eff($u->info['id'], 472); - $echotext = ' !'; - $u->error = ' ' . $echotext . ''; + $echotext = 'Амброзия подмастерья Владык!'; + $u->error = 'Вы получили эфект от ' . $echotext . ''; } elseif ($slech == 3) { - //5069 + //5069 Амброзия Скучающих Владык //$this->add_eff($u->info['id'],470); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 472 AND `delete` =0'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 470 AND `delete` =0'); $this->add_eff($u->info['id'], 470); - $echotext = ' !'; - $u->error = ' ' . $echotext . ''; + $echotext = 'Амброзия Скучающих Владык!'; + $u->error = 'Вы получили эфект от ' . $echotext . ''; } elseif ($slech == 4) { - //1463 + //1463 Звездное Сияние //$this->add_eff($u->info['id'],1463); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $u->info['id'] . '" AND `id_eff` = 35 AND `delete` =0'); $this->add_eff($u->info['id'], 35); - $echotext = ' !'; - $u->error = ' ' . $echotext . ''; + $echotext = 'Звездное Сияние!'; + $u->error = 'Вы получили эфект от ' . $echotext . ''; } else { $slech = 1; - $echotext = ' !'; + $echotext = 'Не удалось прочитать страницу!'; $u->error = ' ' . $echotext . ' '; } @@ -1192,16 +1192,16 @@ class Magic $u->addAction(time(), 'sanich2', $slech); if ($u->info['sex'] == 1) { - $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" "' . $itm['name'] . ' " ' . $echotext . ' .'; + $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" использовала "' . $itm['name'] . ' Саныча" и получила эффект ' . $echotext . ' травмы.'; } else { - $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" "' . $itm['name'] . ' " ' . $echotext . ' .'; + $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" использовал "' . $itm['name'] . ' Саныча" и получил эффект ' . $echotext . ' травмы.'; } } else { - $u->error = ' ' . $u->timeOut(($sz['time'] + 4 * 60 * 60) - time()) . '.'; + $u->error = 'Задержка использования ' . $u->timeOut(($sz['time'] + 4 * 60 * 60) - time()) . '.'; } } else { - $u->error = ' '; + $u->error = 'Невозможно использовать в бою'; } } elseif ($itm['magic_inci'] == 'sanich1' && $u->info['battle'] > 0) { @@ -1209,7 +1209,7 @@ class Magic $sz = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "sanich1" AND `time` > ' . (time() - 6 * 60) . ' LIMIT 1', 1); if (!isset($sz['id'])) { $goodUse = 0; - $u->error = ' "' . $itm['name'] . '"'; + $u->error = 'Вы успешно использовали "' . $itm['name'] . '"'; $z = 1; while ($z <= 5) { $u->info['tactic' . $z]++; @@ -1221,16 +1221,16 @@ class Magic $z++; } if ($u->info['sex'] == 1) { - $this->inBattleLog('{u1} "' . $itm['name'] . ' ".'); + $this->inBattleLog('{u1} использовала "' . $itm['name'] . ' Саныча".'); } else { - $this->inBattleLog('{u1} "' . $itm['name'] . ' ".'); + $this->inBattleLog('{u1} использовал "' . $itm['name'] . ' Саныча".'); } mysql_query('UPDATE `stats` SET `tactic1` = "' . $u->info['tactic1'] . '",`tactic2` = "' . $u->info['tactic2'] . '",`tactic3` = "' . $u->info['tactic3'] . '",`tactic4` = "' . $u->info['tactic4'] . '",`tactic5` = "' . $u->info['tactic5'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); $itm['iznosNOW']++; mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); $u->addAction(time(), 'sanich1', $u->info['battle']); } else { - $u->error = ' ' . $u->timeOut(($sz['time'] + 6 * 60) - time()) . '.'; + $u->error = 'Задержка использования ' . $u->timeOut(($sz['time'] + 6 * 60) - time()) . '.'; } } elseif ($itm['magic_inci'] == 'sanich3' && $u->info['battle'] > 0) { @@ -1243,12 +1243,12 @@ class Magic $iznslvl = $usr['level']; $goodUse = 0; - $u->error = ' "' . $itm['name'] . '" ' . $usr['login'] . ''; + $u->error = 'Вы успешно использовали "' . $itm['name'] . '" на ' . $usr['login'] . ''; if ($u->info['sex'] == 1) { - $this->inBattleLog('{u1} "' . $itm['name'] . ' " {u2}.', $usr); + $this->inBattleLog('{u1} использовала "' . $itm['name'] . ' Саныча" на {u2}.', $usr); } else { - $this->inBattleLog('{u1} "' . $itm['name'] . ' " {u2}.', $usr); + $this->inBattleLog('{u1} использовал "' . $itm['name'] . ' Саныча" на {u2}.', $usr); } mysql_query('UPDATE `stats` SET `hpNow` = "' . $usr['hpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); @@ -1257,11 +1257,11 @@ class Magic mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); $u->addAction(time(), 'sanich3', $u->info['battle']); } else { - $u->error = ' '; + $u->error = 'Нет подходящего противника'; } } else { - $u->error = ' ' . $u->timeOut(($sz['time'] + 3 * 60 * 60) - time()) . '.'; + $u->error = 'Задержка использования ' . $u->timeOut(($sz['time'] + 3 * 60 * 60) - time()) . '.'; } } elseif ($itm['magic_inci'] == 'lech') { @@ -1269,7 +1269,7 @@ class Magic if ($u->info['level'] >= 2 and $u->info['level'] <= 13) { $travm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`="' . $u->info['id'] . '" and `id_eff`="4" and `delete`="0" LIMIT 1')); if ($travm && $travm['v1'] == 4) - $u->error = ' , .'; + $u->error = 'У вас неизлечимая травма, вам помогут только боги или время.'; elseif ($travm) { mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'); $itm['iznosNOW']++; @@ -1278,10 +1278,10 @@ class Magic mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } } else { - $u->error = ' .'; + $u->error = 'У вас нету травмы.'; } } else { - $u->error = ' .'; + $u->error = 'Ваш уровень не подходит для использования свитка.'; } } @@ -1290,9 +1290,9 @@ class Magic $upd1 = 1; $upd2 = 1; - // + //добавляем эффект персонажу if (isset($st['onlyOne'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"'); if ($upd1) { @@ -1300,7 +1300,7 @@ class Magic } } if (isset($st['oneType'])) { - // + //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"'); if ($upd1) { @@ -1309,30 +1309,30 @@ class Magic } if ($itm['magic_inci'] == 'unclone') { - // + //Свиток клонирования if ($u->info['hpNow'] < 1) { - $u->error = ' ...'; + $u->error = 'Вам не удалось переманить клона...'; } elseif ($u->info['battle'] == 0) { - $u->error = ' ...'; + $u->error = 'Можно использовать только в поединке...'; } else { - // - $u->error = '...'; + //Преманиваем + $u->error = 'Переманили...'; } } elseif ($itm['magic_inci'] == 'cloneMe') { - // + //Свиток клонирования if (true == false) { - $u->error = ' .'; + $u->error = 'Свитки клонирования запрещены в нашем проекте.'; } elseif ($u->info['hpNow'] < 1) { - $u->error = ' ;)'; + $u->error = 'Вы успешно клонировали свой труп ;)'; } elseif ($u->info['battle'] == 0) { - $u->error = ' ...'; + $u->error = 'Можно использовать только в поединке...'; } else { - $bot_cou = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` LIKE "%' . $u->info['login'] . ' (%" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1')); + $bot_cou = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` LIKE "%' . $u->info['login'] . ' (клон%" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1')); $bot_cou = $bot_cou[0] + 1; - // + //Добавляем бота $clone = [ 'id' => $u->info['id'], - 'login' => $u->info['login'] . ' ( ' . $bot_cou . ')', + 'login' => $u->info['login'] . ' (клон ' . $bot_cou . ')', 'level' => $u->info['level'], 'city' => $u->info['city'], 'cityreg' => $u->info['cityreg'], @@ -1351,24 +1351,24 @@ class Magic if ($bot > 0) { mysql_query('UPDATE `stats` SET `team` = "' . $u->info['team'] . '",`hpNow` = "' . $u->stats['hpNow'] . '",`mpNow` = "' . $u->stats['mpNow'] . '" WHERE `id` = "' . $bot . '" LIMIT 1'); mysql_query('UPDATE `users` SET `battle` = "' . $u->info['battle'] . '" WHERE `id` = "' . $bot . '" LIMIT 1'); - // + //Доабвляем лог if ($u->info['sex'] == 0) { - $txt_m = '{u1} "' . $itm['name'] . '" .'; + $txt_m = '{u1} использовал "' . $itm['name'] . '" и породил клона.'; } else { - $txt_m = '{u1} "' . $itm['name'] . '" .'; + $txt_m = '{u1} использовала "' . $itm['name'] . '" и породила клона.'; } $this->inBattleLog($txt_m, null); if ($u->info['sex'] == 0) { - $txt_m = '' . $u->info['login'] . ' ( ' . $bot_cou . ')[' . $u->info['level'] . '] !'; + $txt_m = '' . $u->info['login'] . ' (клон ' . $bot_cou . ')[' . $u->info['level'] . '] вмешался в поединок!'; } else { - $txt_m = '' . $u->info['login'] . ' ( ' . $bot_cou . ')[' . $u->info['level'] . '] !'; + $txt_m = '' . $u->info['login'] . ' (клон ' . $bot_cou . ')[' . $u->info['level'] . '] вмешалась в поединок!'; } $this->inBattleLog($txt_m, $usr_m); mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); mysql_query('UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "' . $itm['item_id'] . '" AND `inOdet` > 0 AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" LIMIT 20'); - $u->error = ' "' . $itm['name'] . '" '; + $u->error = 'Заклятие "' . $itm['name'] . '" было успешно использовано'; } else { - $u->error = ' ...'; + $u->error = 'Неудалось использовать заклятие...'; } unset($txt_m, $usr_m, $clone, $bot_cou, $bot); } @@ -1378,25 +1378,25 @@ class Magic $sp = mysql_query('SELECT `st`.*, `u`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `inTurnir` = "' . $u->info['inTurnir'] . '"'); while ($pl = mysql_fetch_array($sp)) { $rrm = mysql_fetch_array(mysql_query('SELECT * FROM `bs_map` WHERE `x` = "' . $pl['x'] . '" AND `y` = "' . $pl['y'] . '"')); - $trnt .= $pl['login'] . ' : ' . $rrm['name'] . ', '; + $trnt .= $pl['login'] . ' Комната : ' . $rrm['name'] . ', '; } $trnt = rtrim($trnt, ', '); $it_ = $u->addItem(2435, $u->info['id'], 'noodet=1|noremont=1|sudba=' . $u->info['login'] . ''); mysql_query('UPDATE `items_users` SET `use_text` = 500 WHERE `id` = "' . $it_ . '" LIMIT 1'); mysql_query('INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`city`,`x`,`type`) VALUES ("' . $it_ . '","' . time() . '","","' . mysql_real_escape_string($trnt) . '","' . $u->info['city'] . '","1","1")'); mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); - $u->error = ' ...'; + $u->error = 'Вы получили выписку...'; } else { - $u->error = ' ...'; + $u->error = 'Используется только в Башне смерти...'; } } elseif ($itm['magic_inci'] == 'tactic') { - // + //Выдаем тактику if ($u->stats['hpNow'] >= 1) { $bu = mysql_fetch_array(mysql_query('SELECT * FROM `tactic` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1')); if (isset($bu['id'])) { - $u->error = ' ...'; + $u->error = 'Нельзя использовать свиток каждый ход...'; } else { // mysql_query('INSERT INTO `tactic` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ("' . $u->info['battle'] . '","' . $u->info['id'] . '","' . time() . '","' . $itm['item_id'] . '","' . $itm['name'] . '","1")'); @@ -1406,76 +1406,76 @@ class Magic )'); $u->info['tactic' . $st['addtac']] += $st['addtacv']; mysql_query('UPDATE `stats` SET `tactic' . $st['addtac'] . '` = "' . $u->info['tactic' . $st['addtac']] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - // + //Доабвляем лог if ($u->info['sex'] == 0) { - $txt_m = '{u1} "' . $itm['name'] . '".'; + $txt_m = '{u1} применил заклинание "' . $itm['name'] . '".'; } else { - $txt_m = '{u1} "' . $itm['name'] . '".'; + $txt_m = '{u1} применила заклинание "' . $itm['name'] . '".'; } $this->inBattleLog($txt_m, null); mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); - $u->error = ' "' . $itm['name'] . '" '; + $u->error = 'Заклятие "' . $itm['name'] . '" было успешно использовано'; } } else { - $u->error = ' ...'; + $u->error = 'Вы погибли...'; } } elseif ($itm['magic_inci'] == 'add_animal') { if ($u->info['animal'] > 0) { - $u->error = ' "' . $itm['name'] . '", .'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '", у Вас уже есть зверь.'; } else { $anm = ['type' => 1, 'name' => '', 'obraz' => '', 'stats' => '', 'sex' => 0]; - // + //Выбираем тип зверя - if ($itm['name'] == ' ') { + if ($itm['name'] == 'Призвать Сову') { $anm['type'] = 2; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Светляка') { $anm['type'] = 3; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Кота') { $anm['type'] = 1; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Чертяку') { $anm['type'] = 4; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Свина') { $anm['type'] = 6; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Пса') { $anm['type'] = 5; - } elseif ($itm['name'] == ' ') { + } elseif ($itm['name'] == 'Призвать Дракона') { $anm['type'] = 7; if ($anm['type'] == 1) { - $anm['name'] = ''; + $anm['name'] = 'Кот'; $anm['sex'] = 0; $anm['obraz'] = [1 => '20864.gif', 2 => '21301.gif', 3 => '21139.gif', 4 => '20427.gif']; $anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10'; } elseif ($anm['type'] == 7) { - $anm['name'] = ''; + $anm['name'] = 'Дракон'; $anm['sex'] = 0; $anm['obraz'] = [1 => '21338_pgtpdbx.gif']; $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; } } elseif ($anm['type'] == 2) { - $anm['name'] = ''; + $anm['name'] = 'Сова'; $anm['sex'] = 1; $anm['obraz'] = [1 => '21415.gif', 2 => '21722.gif', 3 => '21550.gif']; $anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10'; } elseif ($anm['type'] == 3) { - $anm['name'] = ''; + $anm['name'] = 'Светляк'; $anm['sex'] = 0; $anm['obraz'] = [1 => '22277.gif', 2 => '22265.gif', 3 => '22333.gif', 4 => '22298.gif']; $anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10'; } elseif ($anm['type'] == 4) { - $anm['name'] = ''; + $anm['name'] = 'Чертяка'; $anm['sex'] = 0; $anm['obraz'] = [1 => '22177.gif', 2 => '21976.gif', 3 => '21877.gif']; $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; } elseif ($anm['type'] == 5) { - $anm['name'] = ''; + $anm['name'] = 'Пес'; $anm['sex'] = 0; $anm['obraz'] = [1 => '22352.gif', 2 => '23024.gif', 3 => '22900.gif', 4 => '22501.gif', 5 => '22700.gif']; $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; } elseif ($anm['type'] == 6) { - $anm['name'] = ''; + $anm['name'] = 'Свин'; $anm['sex'] = 0; $anm['obraz'] = [1 => '24000.gif', 2 => '25000.gif', 3 => '27000.gif', 4 => '28000.gif']; $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; @@ -1489,15 +1489,15 @@ class Magic $u->info['animal'] = mysql_insert_id(); mysql_query('UPDATE `users` SET `animal` = "' . $u->info['animal'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->error = ' "' . $itm['name'] . '" - " , ".'; + $u->error = 'Вы успешно использовали "' . $itm['name'] . '" и помните - "Мы в ответе за тех, кого приручили".'; $itm['iznosNOW']++; mysql_query('UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); } else { - $u->error = ' "' . $itm['name'] . '", - ...'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '", что-то здесь не так ...'; } } } elseif ($goodUse == 1) { @@ -1511,21 +1511,21 @@ class Magic if ($itm['inGroup'] > 0 && $itm['delete'] == 0) { mysql_query('UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'); } - $u->addDelo(1, $u->info['id'], '"System.inventory": "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); + $u->addDelo(1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0); $this->youuse++; - $u->error = ' "' . $itm['name'] . '"
    ' . $us[1] . ''; + $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '"
    ' . $us[1] . ''; } else { if ($u->error != '') { - $u->error = ' "' . $itm['name'] . '"...
    ' . $u->error; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"...
    ' . $u->error; } else { - $u->error = ' "' . $itm['name'] . '"...'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"...'; } } } else { if ($u->error != '') { - $u->error = ' "' . $itm['name'] . '"
    ' . $u->error; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"
    ' . $u->error; } else { - $u->error = ' "' . $itm['name'] . '"'; + $u->error = 'Не удалось использовать "' . $itm['name'] . '"'; } } } @@ -1538,13 +1538,13 @@ class Magic } else { if ($id == 5555) { mysql_query('UPDATE `stats` SET `seff` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->error = ' '; + $u->error = 'Эфекты развернуты'; } elseif ($id == 7777) { mysql_query('UPDATE `stats` SET `seff` = 1 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->error = ' '; + $u->error = 'Эфекты свернуты'; } else { - $u->error = ' '; + $u->error = 'Предмет не найден в инвентаре'; } } @@ -1557,9 +1557,9 @@ class Magic $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $id . '" LIMIT 1')); if ($is_no != null) { - // + //добавляем эффект персонажу if ($eff['onlyOne'] > 0) { - // + //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $uid . '" AND `delete` = "0" AND `id_eff` = "' . $eff['id2'] . '"'); if ($upd1) { @@ -1567,7 +1567,7 @@ class Magic } } if ($st['oneType'] > 0) { - // + //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $uid . '" AND `delete` = "0" AND `overType` = "' . $eff['overType'] . '"'); if ($upd2) { @@ -1590,7 +1590,7 @@ class Magic return $g; } - // + //Проверка травмы public function testTravma($uid, $vals) { $r = false; @@ -1614,7 +1614,7 @@ class Magic return $aSum >= $tRange['min'] && $aSum <= $tRange['max']; } - // + //создаем нападение на персонажа public function atackUser($uid1, $uid2, $tm, $btl, $addExp = 0, $type = 0, $kulak = 0, $bsid = 0) { global $u; @@ -1622,63 +1622,63 @@ class Magic $btl_test = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $btl . '" AND `team_win` = -1 LIMIT 1')); $clan_test = mysql_fetch_array(mysql_query('SELECT * FROM `clan_wars` WHERE ((`clan1`="' . $u->info['clan'] . '" AND `clan2`="' . $usr['clan'] . '") OR (`clan2`="' . $u->info['clan'] . '" AND `clan1`="' . $usr['clan'] . '")) AND `time_finish` > "' . time() . '" LIMIT 1')); $good = 0; - // - + //Эффекты из-за которых нельзя нападать $efsno = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $uid2 . '" - AND `name` LIKE "% %" AND `delete` = "0" + AND `name` LIKE "%Лепим снежок%" AND `delete` = "0" LIMIT 1')); $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); $check2 = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 479 OR `id_eff` = 480 OR `id_eff` = 481) AND `uid` = "' . $usr['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); - $u->error = ' !'; + $u->error = 'Нельзя нападать на монстра этого уровня!'; if ($usr['no_ip'] == 'trupojor' && $usr['level'] == 9 && $u->info['level'] > 9) { - $u->error = ' !'; + $u->error = 'Нельзя нападать на монстра этого уровня!'; } elseif ($usr['no_ip'] == 'trupojor' && $usr['level'] == 10 && ($u->info['level'] < 10 || $u->info['level'] > 11)) { - $u->error = ' !'; + $u->error = 'Нельзя нападать на монстра этого уровня!'; } elseif ($ua['no_ip'] == 'trupojor' && isset($check['id'])) { //&& $ua['level'] >9 - $u->error = ' 3 !'; + $u->error = 'Нельзя нападать на монстра чаще одного раза в 3 часа!'; } elseif (isset($check2['id'])) { //&& $ua['level'] >9 - $u->error = ' !'; + $u->error = 'Персонаж имеет защиту от нападения!'; } elseif ($usr['level'] == 8 && $usr['no_ip'] != 'trupojor' && self::canAttack8Level($u->info['id'], $usr['id'])) { - $u->error = ' 8- .'; + $u->error = 'На 8-е уровни нападать нельзя.'; } elseif ($u->info['level'] != $usr['level'] && $usr['no_ip'] != 'trupojor') { //&& !isset ($clan_test['id']) - $u->error = ' !!!'; + $u->error = 'Нападать можно на персонажей только своего уровня!!!'; } elseif (isset($btl_test['id']) && $btl_test['noatack'] > 0) { - $u->error = ' ! !'; + $u->error = 'Поединок защищен магией! Вы не можете вмешаться!'; } elseif ($usr['level'] < 8) { - $u->error = ' ...'; + $u->error = 'Новички находятся под защитой Мироздателя...'; } elseif ($u->info['level'] < 8) { - $u->error = ' ...'; + $u->error = 'Тренируйтесь вам пока еще рано...'; } elseif (isset($efsno['id']) && $efsno['delete'] > 0) { - $u->error = ' , - ...'; + $u->error = 'Невозможно напасть, противник чем-то занят...'; } elseif ($usr['admin'] == 1 && $u->info['admin'] == 0) { - $u->error = ' ...'; + $u->error = 'Уважайте хранителей...'; } elseif ($this->testTravma($uid2, 3)) { - $u->error = ' , !'; + $u->error = 'Противник тяжело травмирован, нельзя напасть!'; } elseif ($this->testTravma($uid1, 2)) { - $u->error = ' , !'; + $u->error = 'Вы травмированы, нельзя напасть!'; } elseif ($bsid != 0 && ($u->info['x'] != $usr['x'] || $u->info['y'] != $usr['y'])) { - $u->error = ' ...'; + $u->error = 'Вы находитесь в разных комнатах...'; } elseif ($usr['clan'] != 0 && ($usr['clan'] == $u->info['clan']) && $u->info['admin'] == 0) { - $u->error = ' .'; + $u->error = 'Чтите честь ваших сокланов.'; } elseif ($btl != 0 && $btl_test['smert'] == 1 && $type != 222) { - $u->error = ' !'; + $u->error = 'Вы не можете вмешаться в этот кровавый поединок!'; } elseif ($btl == 0) { $s01 = $u->getStats($uid1, 0); if ($s01['hpNow'] < floor($s01['hpAll'] / 100 * 33)) { - $u->error = ' , '; + $u->error = 'Нельзя напасть, у противника не восстановилось здоровье'; } else { $addExp += $usr['bbexp']; - //effect + //effect ненападения if ($usr['no_ip'] == 'trupojor') { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '"," ","zashitatk=1","' . time() . '")'); + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); } - // + //тут клан вар //************ - // + //нападаем на персонажа $timewait = rand(1, 3); - //=== + //===Удаление защиты от нападения в результате нападения пользователем $dsl = mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 479 OR `id_eff` = 480 OR `id_eff` = 481) AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC;'); while ($dpl = mysql_fetch_array($dsl)) { mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $dpl['id'] . '";'); @@ -1740,7 +1740,7 @@ class Magic unset($timewait); if ($ins) { $btl_id = mysql_insert_id(); - // + //Обновляем НР и МР игрокам if ($s01['level'] <= 7) { $s01['tactic7'] = floor(10 / $s01['hpAll'] * $s01['hpNow']); } elseif ($s01['level'] == 8) { @@ -1777,9 +1777,9 @@ class Magic if ($bsid != 0) { $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $u->info['inTurnir'] . '" LIMIT 1')); if ($u->info['sex'] == 0) { - $text = ' {u1} {u2} '; + $text = ' {u1} напал на {u2} завязался бой »»'; } else { - $text = ' {u1} {u2} '; + $text = ' {u1} напала на {u2} завязался бой »»'; } $usr_real = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `align`, `clan`, `battle`, `level` FROM `users` WHERE (`inUser` = "' . $usr['id'] . '" OR `id` = "' . $usr['id'] . '") LIMIT 1')); if (!isset($usr_real['id'])) { @@ -1795,7 +1795,7 @@ class Magic } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { - $usrreal = '[??]'; + $usrreal = 'Невидимка[??]'; } $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u->info['id'] . '" AND `login` = "' . $u->info['login'] . '" LIMIT 1')); if (isset($me_real['id'])) { @@ -1808,7 +1808,7 @@ class Magic } $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $mereal, $text); $text = str_replace('{u2}', $usrreal, $text); @@ -1820,19 +1820,19 @@ class Magic } } } elseif (isset($btl_test['id']) && $btl_test['type'] == 500 && $usr['team'] == 1) { - $u->error = ' !'; + $u->error = 'Нельзя сражаться на стороне монстров!'; } elseif (isset($btl_test['id']) && $btl_test['type'] == 250 && $u->info['clan'] != $btl_test['clan1'] && $u->info['clan'] != $btl_test['clan2']) { - $u->error = ' - !!!'; + $u->error = 'Нельзя попасть в клановые бои - если вы неявляетесь представителем данных кланов!!!'; } elseif (isset($btl_test['id']) && $btl_test['invis'] > 0) { - $u->error = ' !'; + $u->error = 'Нельзя вмешиваться в невидимый бой!'; } elseif ($btl_test['noatack'] > 0) { - $u->error = ' !'; + $u->error = 'В этот поединок нельзя вмешиваться!'; } else { - // - //effect + //вмешиваемся в бой + //effect ненападения if ($usr['no_ip'] == 'trupojor') { - mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '"," ","zashitatk=1","' . time() . '")'); + mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); } $upd = mysql_query('UPDATE `users` SET `battle`="' . $btl . '" WHERE `id` = "' . $uid1 . '" LIMIT 1'); if ($upd) { @@ -1856,12 +1856,12 @@ class Magic $uid1st['tactic7'] = floor((10 + $uid1st['s7']) / $uid1st['hpAll'] * $uid1st['hpNow']); } - //, + //Духовность, спасение if ($uid1st['s7'] > 49) { mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $uid1st['id'] . '" AND `overType` = 101 AND `delete` = 0'); mysql_query(" INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - ( 22, '" . $uid1st['id'] . "', '', 'add_spasenie=1', 101, 77, 0, '" . $uid1st['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, '', 0, 0, '', 0, 0, 0, 1, 0); + ( 22, '" . $uid1st['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $uid1st['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); "); } @@ -1878,13 +1878,13 @@ class Magic } $btxt = $btxt . '{u1}[' . $uid1u['level'] . ']'; if ($uid1u['sex'] == 1) { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешалась в поединок.'; } else { - $btxt = $btxt . ' .'; + $btxt = $btxt . ' вмешался в поединок.'; } if ($kulak > 0) { - $btxt .= ' ( )'; + $btxt .= ' (Кулачное нападение)'; } $lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "' . $btl . '" ORDER BY `id_hod` DESC LIMIT 1')); @@ -1896,7 +1896,7 @@ class Magic mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $btl . '","' . ($id_hod) . '","{tm1} ' . $btxt . '","login1=' . $uid1st['login'] . '||t1=' . $uid1st['team'] . '||login2=' . $uid1st['login'] . '||t2=' . $uid1st['team'] . '||time1=' . time() . '","","","","","6")'); } - // animal_bonus --------------------------------- + // Бафф Зверя animal_bonus --------------------------------- if ($u->info['animal'] > 0) { $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . $u->info['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); if (isset($a['id'])) { @@ -1905,8 +1905,8 @@ class Magic $anl = $anl['bonus']; $tpa = [1 => 'cat', 2 => 'owl', 3 => 'wisp', 4 => 'demon', 5 => 'dog', 6 => 'pig', 7 => 'dragon']; - $tpa2 = [1 => '', 2 => '', 3 => '', 4 => '', 5 => '', 6 => '', 7 => '']; - $tpa3 = [1 => ' ', 2 => ' ', 3 => ' ', 4 => ' ', 5 => '', 6 => ' ', 7 => '']; + $tpa2 = [1 => 'Кота', 2 => 'Совы', 3 => 'Светляка', 4 => 'Чертяки', 5 => 'Пса', 6 => 'Свина', 7 => 'Дракона']; + $tpa3 = [1 => 'Кошачья Ловкость', 2 => 'Интуиция Совы', 3 => 'Сила Стихий', 4 => 'Демоническая Сила', 5 => 'Друг', 6 => 'Полная Броня', 7 => 'Инферно']; mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `overType` = 100 AND `delete` = 0'); mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $u->info['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $u->info['id'] . '")'); @@ -1932,11 +1932,11 @@ class Magic } } else { - $u->send('', $u->info['room'], $u->info['city'], '', $u->info['login'], '' . $a['name'] . ' ...', time(), 6, 0, 0, 0, 1); + $u->send('', $u->info['room'], $u->info['city'], '', $u->info['login'], '' . $a['name'] . ' нуждается в еде...', time(), 6, 0, 0, 0, 1); } } } - // animal_bonus --------------------------------- + // Бафф Зверя animal_bonus --------------------------------- $ltm = [1 => 2, 2 => 1]; mysql_query('UPDATE `stats` SET `hpNow` = "' . $uid1st['hpNow'] . '",`mpNow` = "' . $uid1st['mpNow'] . '",`team`="' . $ltm[$tm] . '",`tactic7`="' . (0 + $uid1st['tactic7']) . '" WHERE `id` = "' . $uid1 . '" LIMIT 1'); $good = $btl; @@ -1944,9 +1944,9 @@ class Magic if ($bsid != 0) { $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $u->info['inTurnir'] . '" LIMIT 1')); if ($u->info['sex'] == 0) { - $text = ' {u1} {u2} '; + $text = ' {u1} вмешался в поединок против {u2} »»'; } else { - $text = ' {u1} {u2} '; + $text = ' {u1} вмешалась в поединок против {u2} »»'; } $usr_real = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `align`, `clan`, `battle`, `level` FROM `users` WHERE `inUser` = "' . $usr['id'] . '" LIMIT 1')); if (!isset($usr_real['id'])) { @@ -1962,7 +1962,7 @@ class Magic } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u->info['id'] . '" AND `login` = "' . $u->info['login'] . '" LIMIT 1')); if (isset($me_real['id'])) { @@ -1975,7 +1975,7 @@ class Magic } $mereal .= '' . $me_real['login'] . '[' . $me_real['level'] . ']'; } else { - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $mereal, $text); $text = str_replace('{u2}', $usrreal, $text); diff --git a/_incl_data/class/Priems.php b/_incl_data/class/Priems.php index e90aad05..7af8851b 100644 --- a/_incl_data/class/Priems.php +++ b/_incl_data/class/Priems.php @@ -4,7 +4,7 @@ use Core\Db; use Insallah\Math; /* -- $btl->users[]['eff'] , 1 +- доделать добавление приема в $btl->users[]['eff'] после использования, в противном случаи некотрые приемы используются через 1 ход */ class Priems @@ -16,13 +16,13 @@ class Priems const AIR = 'air'; const EARTH = 'earth'; private $mname = [ - '' => 1, - '' => 2, - '' => 3, - '' => 4, - '' => 5, - '' => 6, - '' => 7, + 'огонь' => 1, + 'воздух' => 2, + 'вода' => 3, + 'земля' => 4, + 'свет' => 5, + 'тьма' => 6, + 'серая' => 7, ]; public $ue = []; private $logColor = [ @@ -94,8 +94,8 @@ class Priems } - /** - * @param int $uid 0, id . + /** Набив Статики + * @param int $uid если 0, будет использоваться id противника напротив. * @return void */ public function addAirStaticPoints($uid = 0) @@ -119,7 +119,7 @@ class Priems ); } - /** + /** отнимаем ману * @param $uid * @param $mp * @param $tp [not used] @@ -128,8 +128,8 @@ class Priems public function minMana($uid, $mp, $tp = null) { global $btl; - /* , $mp > 0 */ - // ss + /* уменьшаем расход маны, если $mp > 0 */ + //с вычетом уменьшения разсхода маныss $mp -= round($mp / 100 * $btl->stats[$btl->uids[$uid]]['min_use_mp']); $btl->stats[$btl->uids[$uid]]['mpNow'] -= $mp; $mpNow = $this->zeromax($btl->stats[$btl->uids[$uid]]['mpNow'], $btl->stats[$btl->uids[$uid]]['mpAll']); @@ -142,7 +142,7 @@ class Priems return $mpNow > 0; } - /** - . + /** Какой-то нестандартный частный расчет маг.крита * @param $l2 * @param $t * @return int @@ -151,18 +151,18 @@ class Priems { $r = $l2 * 2 - 7; if ($r > $t) { - // ( , 2 ) 6% - //250 . 1% - //$r = -1; , -- + //магический промах (серый удар, в 2 раза меньше) 6% + //250 ед. защиты от магии дает 1% шанса увернуться от магии + //$r = -1; , промах -- $r = 0; } else { - // 3% + //каждая владелка дает 3% шанс крита $r = ceil($t * 0.75); if ($r > 30) { $r = 30; } if (rand(0, 10000) < $r * 100) { - // + //крит удар $r = 1; } else { $r = 0; @@ -171,7 +171,7 @@ class Priems return $r; } - /** + /** используем прием каждый ход * @param $eff * @param $pr * @return bool @@ -179,7 +179,7 @@ class Priems public function hodUsePriem($eff, $pr) { global $btl; - $u = $this->u; // . + $u = $this->u; // Для присоедиянемых файлов. $return_main = true; $ue = Db::getRow( 'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0', @@ -200,11 +200,11 @@ class Priems return $return_main; } - /** data c add_m11=2*{lvl1} . - *
    :
    lvl1 = $uid[level]
    ts5 = $uid[s5]
    mpAll = $uid[mpAll] - * @param string $pl data - * @param int $uid , . - * @return string data . + /** Получает строку data c шаблонной записью типа add_m11=2*{lvl1} и конвертирует в реальную строку. + *
    Шаблон:
    lvl1 = $uid[level]
    ts5 = $uid[s5]
    mpAll = $uid[mpAll] + * @param string $pl строка в формате data + * @param int $uid пользователь, параметры которого используются для подставки в шаблон. + * @return string строка в формате data с развёрнутыми шаблонами. */ public function redate($pl, $uid) { @@ -253,23 +253,23 @@ class Priems } } - /* uid - - pr - id - data - , -1, 3 - d2 - 3 - tm - , 77 - - h - - "" - uu - id - tp - + /* uid - на кого кастуем + pr - id приема + data - дата, если -1, то добавляем дату3 + d2 - добавляем дату3 + tm - время использования, 77 - вечно + h - кол-во "вечных" ходов + uu - id юзера который использовал + tp - тип приема */ /** - * @param int $uid - * @param int $pr id - * @param int|string $data , -1, 3 + * @param int $uid на кого кастуем + * @param int $pr id приема + * @param int|string $data дата, если -1, то добавляем дату3 * @param int $d2 * @param $tm - * @param int $h - * @param int $uu id + * @param int $h ход + * @param int $uu id юзера который использовал * @param $max * @param $bj * @param $tp @@ -336,7 +336,7 @@ class Priems } if (isset($num['id']) && ($num['user_use'] != $this->u->info['id'] && $pl['zmu'] != 2)) { - // + // удаляем эффект Db::sql( 'update eff_users set `delete` = unix_timestamp() where id = ?', [$num['id']] @@ -344,7 +344,7 @@ class Priems $i = 0; while ($i < count($btl->stats[$btl->uids[$uid]]['effects'])) { if ($btl->stats[$btl->uids[$uid]]['effects'][$i]['id'] == $num['id']) { - // + //обновляем $btl->stats[$btl->uids[$uid]]['effects'][$i]['delete'] = time(); } $i++; @@ -364,12 +364,12 @@ class Priems $r = true; } - /* $btl->eff */ + /* добавляем данные к $btl->eff */ if ($noupdatebtl == 0) { $btl->stats[$btl->uids[$uid]] = $this->u->getStats($uid, 0); } } elseif ($num['x'] < $max) { - // + //Добавляем еще и обновляем заряды $num['x']++; $num['hod'] = $h; if ($data != -1 && $data != '' && $d2 == 2) { @@ -386,7 +386,7 @@ class Priems } $r = true; } else { - // + //обновляем заряды $num['hod'] = $h; if ($data != -1 && $data != '' && $d2 == 2) { $num['data'] .= '|' . $data; @@ -414,7 +414,7 @@ class Priems return $r; } - /** data ('a=1|b=2|c=3') [a=>1, b=>2, c=>3]. + /** Превращает строку data ('a=1|b=2|c=3') из БД в массив [a=>1, b=>2, c=>3]. * @param $m * @return array */ @@ -424,7 +424,7 @@ class Priems return $arr ?: []; } - /** [a=>1, b=>2, c=>3] data ('a=1|b=2|c=3') . + /** Превращает массив [a=>1, b=>2, c=>3] в строку data ('a=1|b=2|c=3') для БД. * @param array $m * @return string */ @@ -475,10 +475,10 @@ class Priems $dopyrn = 0; } if ($k == 1 && $hpmin != 0 && $krituet) { - // + //крит $hpmin = $hpmin * 2; } elseif ($k == -1 && $hpmin != 0) { - // + //промах $hpmin = $hpmin / 2; $dopyrn = $dopyrn / 2; } @@ -498,7 +498,7 @@ class Priems } if ($btl->users[$btl->uids[$uen]]['tactic7'] > 0 && $dp == 0) { - // , + //Отнимаем тактики, если это возможно $btl->users[$btl->uids[$uen]]['tactic7'] -= $hpmin / $btl->stats[$btl->uids[$uen]]['hpAll']; $btl->users[$btl->uids[$uen]]['tactic7'] = round($btl->users[$btl->uids[$uen]]['tactic7'], 2); $btl->stats[$btl->uids[$uen]]['tactic7'] = $btl->users[$btl->uids[$uen]]['tactic7']; @@ -518,11 +518,11 @@ class Priems } elseif ($hp2 < 0) { $hp2 = 0; } - $rr[0] = $hpmin; // - $rr[1] = $k; // - /* */ - // - $miny = 0; // ( ) + $rr[0] = $hpmin; //урон + $rr[1] = $k; //тип + /* проверяем приемы защиты */ + //получаем массив с приемами противника + $miny = 0; //на сколько едениц урон буде меньше (защита приема) $minu = 0; $sp1 = mysql_query( 'SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25' @@ -546,16 +546,16 @@ class Priems } } - /* */ + /* проверяем приемы ослабления */ - // + //отнимаем НР $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; mysql_query( 'UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`tactic7` = ' . $btl->users[$btl->uids[$uen]]['tactic7'] . ' WHERE `id` = "' . $uen . '" LIMIT 1' ); - // + //заносим в лог боя $vLog = 'time1=' . time() . '||s1=' . $this->u->info['sex'] . @@ -587,34 +587,34 @@ class Priems } else { $hpmin = '--'; } - $tco = [1 => '006699', 2 => '006699', 3 => '006699', 4 => '006699']; // - $tcl = [1 => 'A00000', 2 => '008080', 3 => '0000FF', 4 => 'A52A2A']; // + $tco = [1 => '006699', 2 => '006699', 3 => '006699', 4 => '006699']; //не крит + $tcl = [1 => 'A00000', 2 => '008080', 3 => '0000FF', 4 => 'A52A2A']; //не крит $tco = $tco[$tmp]; $tcl = $tcl[$tmp]; if ($k == 1) { - // + //крит $tco = 'FF0000'; $tcl = 'FF0000'; } elseif ($k == -1) { - // + //промах $tco = '979797'; $tcl = '979797'; } $nmz = [ - 1 => [0 => '', 1 => ''], - 2 => [0 => '', 1 => ''], - 3 => [0 => '', 1 => ''], - 4 => [0 => '', 1 => ''], + 1 => [0 => 'огня', 1 => 'огненная'], + 2 => [0 => 'воздуха', 1 => 'электрическая'], + 3 => [0 => 'воды', 1 => 'водная'], + 4 => [0 => 'земли', 1 => 'земляная'], ]; $nmz = $nmz[$tmp]; if ($rp == 1) { - $sx = [0 => '', 1 => '']; - $mas1['text'] = '{tm1} "' . $pl['name'] . '" {u2}. ' . $hpmin . ' [' . ceil( + $sx = [0 => '', 1 => 'а']; + $mas1['text'] = '{tm1} Заклинание "' . $pl['name'] . '" восстановило здоровье персонажа {u2}. ' . $hpmin . ' [' . ceil( $hp2 ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} "' . $pl['name'] . '" {u2} ' . $nmz[0] . '. ' . $hpmin . ' [' . ceil( + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и восстановил здоровье персонажа {u2} магией ' . $nmz[0] . '. ' . $hpmin . ' [' . ceil( $hp2 ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } @@ -623,7 +623,7 @@ class Priems return $rr; } - /** magicAttack + /** Проверка есть ли на персонаже призрачные защиты для рассчёта урона через magicAttack * @return array */ private function hasGhostDefence($uid) @@ -657,69 +657,69 @@ class Priems } /** - * . - * [priem]. - * @param int $attackerId - * @param int $defenderId - * @param float $damage - * @param string $damageType (?) , . - * @param bool $hasCritical , - * @return array [0|damage] int , [1|crit] bool , [2|miss] bool , [3|miss_type] int ( = 2). + * Новая функция магического заклинания с приёма. + * Работает с числовыми приёмами в папке [priem]. + * @param int $attackerId кто использует приём + * @param int $defenderId на кого использует приём + * @param float $damage базовый урон приёма + * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. + * @param bool $hasCritical флаг, что приём МОЖЕТ критовать + * @return array [0|damage] int урон, [1|crit] bool был ли крит, [2|miss] bool был ли промах, [3|miss_type] int тип промаха (всегда = 2). * @author Insallah */ public function magicAttack(Battle $btl, $attackerId, $defenderId, $damage, $damageType, $hasCritical = false) { - // , . - . + // Не так паршиво как прошлая, но всё ещё паршиво. Теперь хоть что-то понять можно. $dmgRuNames = [ - self::FIRE => '', - self::WATER => '', - self::AIR => '', - self::EARTH => '', + self::FIRE => 'огонь', + self::WATER => 'вода', + self::AIR => 'воздух', + self::EARTH => 'земля', ]; if (in_array($damageType, array_keys($dmgRuNames))) { $damageType = $dmgRuNames[$damageType]; } - // . - // pm# = . - // m11 = . - // m11a = . - // [pm# = m11 + m11a] - ! + // Мощь. + // pm# = Мф. мощности магии определенного типа + // m11 = Мф. мощности магии стихий + // m11a = Мф. мощности магии + // ОКАЗЫВАЕТСЯ [pm# = m11 + m11a] где-то выше по коду! $power = $btl->stats[$btl->uids[$attackerId]]['pm' . $this->mname[$damageType]]; - // . + // Подавление в процентах. $suppression = 0; $suppression += $btl->stats[$btl->uids[$attackerId]]['pzm']; - // , 250. + // Уязвимость магии стихий, из приёма 250. $suppression += $btl->stats[$btl->uids[$attackerId]]['yzm']; - // . + // Сколько у использующего умений числом. $skills = $btl->stats[$btl->uids[$attackerId]]['mg' . $this->mname[$damageType]]; - // - // zm# = - // zm = - // zma = - // [zm# = zm + zma] - ! + // Защита цели числом + // zm# = Защита от магии определенного типа + // zm = Защита от магии стихий + // zma = Защита от магии + // ОКАЗЫВАЕТСЯ [zm# = zm + zma] где-то выше по коду! $defence = $btl->stats[$btl->uids[$defenderId]]['zm' . $this->mname[$damageType]]; - // 100% . - // 8 - 20, : 8 10 . + // Минимум умений для 100% успеха приёма. + // У 8 екро-мага со старта 20, это очень много: 8 бьёт 10 без промаха. $requiredSkills = $btl->users[$btl->uids[$defenderId]]['level'] * 2; - // ׸ " ". + // Чёртово "Следующий каст будет критическим". $isGarantCrit = $btl->stats[$btl->uids[$attackerId]]['acestar'] > 0; - // , . + // Подавляем защиту, понижая число на процент подавления. $supressedDefence = Math::addPercent($defence, -min($suppression, 100)); - // . + // Урон зависит от умений и уровня противника. $damage *= $skills - $requiredSkills; - // , > 0. + // Увеличиваем урон, повышая число на мощь если урон > 0. $poweredDamage = $damage > 0 ? $damage + $power : 0; - // + // Шанс крита равен уровню магического навыка $isCritical = $hasCritical && $skills >= mt_rand(0, 100); if ($isGarantCrit) { @@ -739,10 +739,10 @@ class Priems $isHit = mt_rand(0, 100) > $missChance; } - // . , - . + // Для совместимости. Старая функция возвращает это значение, вдруг оно где-то используется. $pType = 0; if ($isHit) { - // = - , 0. . + // Урон = Повреждения - Защита, но не меньше 0. Округлено до целых. //$finalDamage = max(round(Math::addPercent($poweredDamage, -$supressedDefence)), 0); $finalDamage = $poweredDamage - $supressedDefence; if ($isCritical) { @@ -750,17 +750,17 @@ class Priems } } else { $finalDamage = 0; - // . , - . + // Для совместимости. Старая функция возвращает это значение, вдруг оно где-то используется. $pType = 2; } - // , . + // Призрачки, режут конечный урон после вычета защиты. $ghostDefences = $this->hasGhostDefence($defenderId); if ($ghostDefences['all']) { $finalDamage /= 4; } - // . , . + // Костыль для призрачек. Когда вызовы русских стихий уберутся, будет не нужен. if (in_array($damageType, $dmgRuNames)) { $damageType = array_search($damageType, $dmgRuNames); } @@ -771,26 +771,26 @@ class Priems $finalDamage = max(round($finalDamage), 0); - // . + // Для отладки. if ($btl->users[$btl->uids[$attackerId]]['admin'] > 0) { - $s = " : $suppression%, : $power, : $skills, -
    : damage x ($skills - $requiredSkills)
    $damageType - : ($defence -$suppression%) = $supressedDefence | - : ($damage +$power) = $poweredDamage
    - : ($poweredDamage -$supressedDefence) = $finalDamage"; - $s .= $isCritical ? ' ( *2)' : ''; + $s = "Подавление защиты: $suppression%, Бонус урона: $power, Навыки: $skills, +
    Усиление урона от уровня и скилла: damage x ($skills - $requiredSkills)
    $damageType + Его Защита: ($defence -$suppression%) = $supressedDefence | + Мой Урон: ($damage +$power) = $poweredDamage
    + Мой Удар: ($poweredDamage -$supressedDefence) = $finalDamage"; + $s .= $isCritical ? ' (крит *2)' : ''; echo "
    $s
    "; } - // !isHit . - // pType , = 0 = 2 . - . - // -damage - . + // !isHit потому что прошлая функуция возвращала Промах. + // pType ни на что не влияет, = 0 и просто становится = 2 при промахе. Зачем - загадка. + // -damage потому что где-то дальше код разворачивает результат меняя ему знак. return [ (int)$finalDamage, $isCritical, !$isHit, - $pType, // + $pType, // для совместимости 'damage' => (int)$finalDamage, 'crit' => $isCritical, 'miss' => !$isHit, @@ -798,7 +798,7 @@ class Priems ]; } - /** . . */ + /** Оставлена для совместимости. На неё ссылается куча всего. */ public function magatack($u1, $u2, $yron, $type, $krit) { global $btl; @@ -840,30 +840,30 @@ class Priems } // $prm = [ - 'ym' => $btl->stats[$btl->uids[$u1]]['mg' . $this->mname[$ymelki]], // ( ) - 'y' => $btl->stats[$btl->uids[$u1]]['a' . $this->mname[$ymelki]], // - 'yv' => 0, //, . - 'max_krit' => 0 // + 'ym' => $btl->stats[$btl->uids[$u1]]['mg' . $this->mname[$ymelki]], //умелки (магические умелки) + 'y' => $btl->stats[$btl->uids[$u1]]['a' . $this->mname[$ymelki]], //умелки + 'yv' => 0, //умения, значение коф. + 'max_krit' => 0 //вероятность крита ]; // - // ( )*2 - 7 - , + // (уровень цени)*2 - 7 - минимальное умелок, чтобы не было промахов /* - / : * 2 9 - 3%. 30% + Для магии Света/Тьмы по формуле: Уровень Цели * 2 – 9 + каждая умелка выше этой нормы увеличивает маг крит на 3%. но не больше 30% */ - // + //Рассчет урона от приема /* - b - - m - - z - [.] - p - [.] - k - ; k=250 8, k=300 9 .. +20% + b - базовый урон + m - мощь + z - защита цели [ед.] + p - подавление [ед.] + k - коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень */ - $prm['b'] = $r; // - $prm['m'] = $btl->stats[$btl->uids[$u1]]['pa' . $this->mname[$type]]; // - $prm['z'] = $btl->stats[$btl->uids[$u2]]['za' . $this->mname[$type]]; // (.) - $prm['p'] = $btl->stats[$btl->uids[$u1]]['pza' . $this->mname[$type]]; // (.) - $prm['k'] = $cof_mag[$btl->users[$btl->uids[$u1]]['level']]; // + $prm['b'] = $r; //базовый урон + $prm['m'] = $btl->stats[$btl->uids[$u1]]['pa' . $this->mname[$type]]; //мощь + $prm['z'] = $btl->stats[$btl->uids[$u2]]['za' . $this->mname[$type]]; //защита цели (ед.) + $prm['p'] = $btl->stats[$btl->uids[$u1]]['pza' . $this->mname[$type]]; //подавление (ед.) + $prm['k'] = $cof_mag[$btl->users[$btl->uids[$u1]]['level']]; //коэффицент // if ($prm['p'] * 10 > $prm['k']) { $prm['p'] = floor($prm['k'] / 10); @@ -897,7 +897,7 @@ class Priems $prm['max_krit'] = 30; } //$prm['max_krit'] = round($prm['max_krit']/2); - // + //Крит возможен if (rand(0, 100) <= $prm['max_krit']) { $krit = true; } else { @@ -909,7 +909,7 @@ class Priems $promah = false; } else { $krit = false; - // + //Вероятность промоха $prm['promah'] = 3 * ($prm['yv'] - $prm['ym']); if ($prm['promah'] < 0) { $prm['promah'] = 0; @@ -940,7 +940,7 @@ class Priems return [floor($r), $krit, $promah, $promah_type]; } - // priems + //для папки priems public function magicAtack( $ue, $hpmin, @@ -973,13 +973,13 @@ class Priems $k = 0; } if ($fiz == 0) { - // + //магический урон $hpmin = $this->testPower( $btl->stats[$btl->uids[$usu]], $btl->stats[$btl->uids[$uen]], $hpmin, $tmp, 2 ); } else { - // + //физический урон $wAp = $btl->stats[$btl->uids[$usu]]['pa' . $tmp . '']; $wAp += $btl->stats[$btl->uids[$usu]]['m10']; $wAp -= $btl->stats[$btl->uids[$uen]]['antpa' . $tmp . ''] * 1.75; @@ -991,7 +991,7 @@ class Priems ); $hpmin = round($hpmin); - if (isset($btl->stats[$btl->uids[$uen]]['zaproc']) || isset($btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])) // () + if (isset($btl->stats[$btl->uids[$uen]]['zaproc']) || isset($btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc'])) //защита от урона (призрачки) { $hpmin = floor( $hpmin / 100 * (100 - $btl->stats[$btl->uids[$uen]]['zaproc'] - $btl->stats[$btl->uids[$uen]]['za' . $fiz . 'proc']) @@ -1004,10 +1004,10 @@ class Priems } $hpmin = round($hpmin); if ($k == 1 and $krituet) { - // + //крит $hpmin = $hpmin * 2; } elseif ($k == -1) { - // + //промах $hpmin = $hpmin / 2; } if ($hpmin < $nhpmin * 0.2) { @@ -1027,11 +1027,11 @@ class Priems $hpmin = $mxx * 2; } } - $rr[0] = $hpmin; // - $rr[1] = $k; // - /* */ - // - $miny = 0; // ( ) + $rr[0] = $hpmin; //урон + $rr[1] = $k; //тип + /* проверяем приемы защиты */ + //получаем массив с приемами противника + $miny = 0; //на сколько едениц урон буде меньше (защита приема) $sp1 = mysql_query( 'SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "' . $uen . '" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25' ); @@ -1062,7 +1062,7 @@ class Priems $hp2 = floor($btl->stats[$btl->uids[$uen]]['hpNow'] - $hpmin); if ($btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp] > 0 && $fiz == 0) { - // + //Часть урона восставнавливает ману $btl->stats[$btl->uids[$usu]]['mpNow'] += round( $hpmin / 100 * $btl->stats[$btl->uids[$usu]]['yrnhealmpprocmg' . $tmp] ); @@ -1086,7 +1086,7 @@ class Priems if ($heal != 0) { if ($heal == -1) { - // + //хил на текущий урон с учетом мф $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] += $hpmin; if ($btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] < 0) { $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] = 0; @@ -1104,14 +1104,14 @@ class Priems 'UPDATE `stats` SET `hpNow` = "' . $btl->stats[$btl->uids[$eff['user_use']]]['hpNow'] . '" WHERE `id` = "' . $eff['user_use'] . '" LIMIT 1' ); } else { - // + //хил на конкретное число } } - /* */ + /* проверяем приемы ослабления */ - // + //отнимаем НР $btl->users[$btl->uids[$uen]]['hpNow'] = $hp2; $btl->stats[$btl->uids[$uen]]['hpNow'] = $hp2; @@ -1119,20 +1119,20 @@ class Priems $this->u->stats['hpNow'] = $hp2; } - // + // тяж травма для кровавых if ($btl->info['type'] == 99 and $hp2 == 0 and !$trawm_off) { //$eff['user_use'] //$sp1 = mysql_query('SELECT `e`.* FROM `eff_users` AS `e` WHERE `e`.`uid` = "'.$uen.'" AND `e`.`id_eff` = "22" AND `e`.`delete` = "0" AND `e`.`v1` = "priem" LIMIT 25'); $trawm_off = true; - //$at[2][$i]['ttravm']=' .'; + //$at[2][$i]['ttravm']='получил Тяжелую травму.'; $btl->addTravm($btl->users[$btl->uids[$uen]]['id'], 3, $btl->users[$btl->uids[$eff['user_use']]]['level']); } $upd = mysql_query( 'UPDATE `stats` SET `hpNow` = ' . $hp2 . ',`last_hp` = "' . $btl->stats[$btl->uids[$uen]]['last_hp'] . '" WHERE `id` = "' . $uen . '" LIMIT 1' ); - // + //заносим в лог боя $vLog = 'time1=' . time( ) . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; $mas1 = [ @@ -1189,7 +1189,7 @@ class Priems 5 => '006699', 6 => '006699', 7 => '006699', - ]; // + ]; //не крит $tcl = [ 1 => 'A00000', 2 => '008080', @@ -1198,34 +1198,34 @@ class Priems 5 => '006699', 6 => '006699', 7 => '006699', - ]; // + ]; //не крит $tco = $tco[$tmp]; $tcl = $tcl[$tmp]; if ($k == 1) { - // + //крит $tco = 'FF0000'; $tcl = 'FF0000'; } elseif ($k == -1) { - // + //промах $tco = 'CCCCCC'; $tcl = 'CCCCCC'; } $nmz = [ - 1 => [0 => '', 1 => ''], - 2 => [0 => '', 1 => ''], - 3 => [0 => '', 1 => ''], - 4 => [0 => '', 1 => ''], - 5 => [0 => '', 1 => ''], - 6 => [0 => '', 1 => ''], - 7 => [0 => ' ', 1 => ' '], + 1 => [0 => 'огня', 1 => 'огненный'], + 2 => [0 => 'воздуха', 1 => 'электрический'], + 3 => [0 => 'воды', 1 => 'холод'], + 4 => [0 => 'земли', 1 => 'земляной'], + 5 => [0 => 'Свет', 1 => 'Свет'], + 6 => [0 => 'Тьма', 1 => 'Тьма'], + 7 => [0 => 'Серая магия', 1 => 'Серая магия'], ]; $nmz = $nmz[$tmp]; if ($fiz > 0) { $nmz = [ - 1 => [0 => ', , ', 1 => ''], - 2 => [0 => ', , ', 1 => ''], - 3 => [0 => ', , ', 1 => ''], - 4 => [0 => ', , ', 1 => ''], + 1 => [0 => ', колющая атака , ', 1 => 'колющий'], + 2 => [0 => ', рубящая атака , ', 1 => 'рубящий'], + 3 => [0 => ', дробящая атака , ', 1 => 'дробящий'], + 4 => [0 => ', режущая атака , ', 1 => 'режущий'], ]; $nmz = $nmz[$fiz]; } @@ -1235,17 +1235,17 @@ class Priems $tcl = '000000'; $tco = '008000'; } - $sx = [0 => '', 1 => '']; - $mas1['text'] = '{tm1} {u2} ' . $sx[$btl->users[$btl->uids[$uen]]['sex']] . ' "' . $pl['name'] . '". ' . $hpmin . ' [' . ceil( + $sx = [0 => '', 1 => 'а']; + $mas1['text'] = '{tm1} {u2} утратил' . $sx[$btl->users[$btl->uids[$uen]]['sex']] . ' здоровье от "' . $pl['name'] . '". ' . $hpmin . ' [' . ceil( $hp2 ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { if ($fiz == 1) { - $mas1['text'] = '{tm1} {u1} {1x16x0} "' . $pl['name'] . '" {u2}. ' . $hpmin . ' [' . ceil( + $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '" и поразил {u2}. ' . $hpmin . ' [' . ceil( $hp2 ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } else { - $mas1['text'] = '{tm1} {u1} {1x16x0} "' . $pl['name'] . '" ' . $nmz[0] . ' {u2}. ' . $hpmin . ' [' . ceil( + $mas1['text'] = '{tm1} {u1} {1x16x0} заклинание "' . $pl['name'] . '" и поразил магией ' . $nmz[0] . ' {u2}. ' . $hpmin . ' [' . ceil( $hp2 ) . '/' . $btl->stats[$btl->uids[$uen]]['hpAll'] . ']'; } @@ -1280,23 +1280,23 @@ class Priems { global $btl, $u; $r = 0; - // -- -- + //Уровень -противника- ниже уровня -цели- if ($btl->users[$btl->uids[$u2]]['id'] != $this->u->info['id']) { if ($btl->users[$btl->uids[$u1]]['level'] < $btl->users[$btl->uids[$u2]]['level']) { $r = 1; - echo '
    '; + echo '
    Нельзя кастовать через слабого противника в сильного
    '; } elseif ($btl->users[$btl->uids[$u1]]['bot'] > 0 && $btl->users[$btl->uids[$u2]]['bot'] == 0) { - echo '
    '; + echo '
    Нельзя кастовать через монстров или зверя
    '; $r = 1; } elseif ( $btl->users[$btl->uids[$u1]]['id'] != $btl->users[$btl->uids[$u2]]['id'] && !in_array($plid, [35, 63, 64, 65, 66, 85, 86, 87, 88, 89, 90, 104, 105, 106, 107, 134, 135, 136, 137]) - ) // 90,89,88,87,86,85,35 + ) //Атака в темную 90,89,88,87,86,85,35 { $this->addPriem( $this->u->info['id'], '344', 'add_m11=-' . round($this->u->stats['m11'] * 75 / 100), 1, 77, 1, - $this->u->stats['id'], 3, '', 0, 0, 1 - ); // + $this->u->stats['id'], 3, 'тьма', 0, 0, 1 + ); //ТУТ понижение урона при уроне через персонажа } } return $r; @@ -1305,14 +1305,14 @@ class Priems public function testDie($u1) { global $btl; - // 1 2 + //Персонаж 1 погиб от рук персонаж 2 $btl->spaCheck($btl->stats[$btl->uids[$u1]]['id']); } public function pruse($id) { global $btl; - $u = $this->u; // . + $u = $this->u; // Для присоедиянемых файлов. if ($id == 100500 && $this->u->info['animal'] > 0) { $use_lst = $this->u->testAction( '`uid` = "' . $this->u->info['id'] . '" AND `vars` = "animal_use' . $btl->info['id'] . '" LIMIT 1', @@ -1325,19 +1325,19 @@ class Priems ) ); if ($this->u->stats['hpNow'] < 1) { - echo ' , '; + echo 'Вы не можете выпустить зверя, вы потеряли все НР'; } elseif (isset($a['id']) && $a['eda'] < 1) { - echo ' ...'; + echo 'Вы не накормили зверя...'; } elseif (isset($a['id'])) { - // + //Добавляем зверя в бой $tp = [ - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '', - 6 => '', - 7 => '', + 1 => 'Кот', + 2 => 'Сова', + 3 => 'Светляк', + 4 => 'Чертяка', + 5 => 'Пес', + 6 => 'Свин', + 7 => 'Дракон', ]; $id = mysql_fetch_assoc( mysql_query( @@ -1367,11 +1367,11 @@ class Priems ]; $sex = $this->u->info['sex'] === 1 ? 'a' : ''; - $mas1['text'] = "{tm1} {u1} $sex "" . $a['name'] . '"'; + $mas1['text'] = "{tm1} {u1} выпустил$sex зверя "" . $a['name'] . '"'; $btl->add_log($mas1); mysql_query( - 'UPDATE `users` SET `login` = "' . $a['name'] . ' ( ' . $this->u->info['login'] . ')",`obraz` = "' . $a['obraz'] . '.gif",`battle` = "' . $btl->info['id'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1' + 'UPDATE `users` SET `login` = "' . $a['name'] . ' (зверь ' . $this->u->info['login'] . ')",`obraz` = "' . $a['obraz'] . '.gif",`battle` = "' . $btl->info['id'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1' ); mysql_query( 'UPDATE `stats` SET `team` = "' . $this->u->info['team'] . '" WHERE `id` = "' . $b['id'] . '" LIMIT 1' @@ -1381,19 +1381,19 @@ class Priems ); $this->u->addAction(time(), 'animal_use' . $btl->info['id'], $a['level']); } else { - echo ' ...'; + echo 'Не удалось выпустить зверя...'; } } else { - // - echo '
    - ...'; + //Бот не найден + echo '
    Не удалось выпустить зверя - он боится...'; } } else { - // - echo ' ...'; + //зверь не найден + echo 'У Вас нет зверя ...'; } } else { - // - echo ' ...'; + //зверь уже выпущен + echo 'Вы уже выпускали зверя в этом бою ...'; } } else { $p = explode('|', $this->u->info['priems']); @@ -1408,7 +1408,7 @@ class Priems if ($pl['activ'] == 0) { unset($pl); } elseif ($pl['activ'] > 1) { - // + //Книжный прием if ($this->testActiv($pl['activ']) == 0) { unset($pl); } @@ -1418,7 +1418,6 @@ class Priems $notr = 0; $pl['useon_user'] = $this->u->info['enemy']; if (isset($_POST['useon']) && $_POST['useon'] != '' && $_POST['useon'] != 'none') { - $_POST['useon'] = iconv('UTF-8', 'windows-1251', $_POST['useon']); $this->ue = mysql_fetch_assoc( mysql_query( 'SELECT @@ -1472,12 +1471,12 @@ class Priems $notr++; } if ($pl['team'] == 1) { - // + //свои if ($this->u->info['team'] != $this->ue['team']) { $notr++; } } elseif ($pl['team'] == 2) { - // + //противники if ($this->u->info['team'] == $this->ue['team']) { $notr++; } @@ -1504,7 +1503,7 @@ class Priems 'UPDATE `stats` SET `last_pr` = "' . $pl['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1' ); - // + //Приемы на персонажах if ($this->ue['id'] > 0) { $btl->priemsRazmen([$this->u->info['id'], $this->ue['id']], 'fast'); mysql_query( @@ -1529,7 +1528,7 @@ class Priems if (!isset($cup)) { $this->uppz($pl, $id); - // + //Отнимаем тактики //$this->mintr($pl); if ($pl['tr_hod'] > 0) { $this->trhod($pl); @@ -1639,7 +1638,7 @@ class Priems ) ); if (isset($a1['id'])) { - // , 2 + //противник ударил, пишем что игрок 2 пропустил ход mysql_query( 'UPDATE `battle_act` SET `out2` = "1",`tpo2` = "2" WHERE `id` = "' . $a1['id'] . '" LIMIT 1' ); @@ -1649,7 +1648,7 @@ class Priems $btl->users[$this->u->info['id']]['priems_z'] = $this->u->info['priems_z']; $btl->startAtack($a1['id']); } else { - // + //бьем противника с пропуском хода mysql_query( 'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time( ) . '","1","1","2")' @@ -1663,8 +1662,8 @@ class Priems global $u; $j1 = $this->lookStatsArray($d1); $j2 = $this->lookStatsArray($this->redate($d2, $this->u->info['id'])); - $v = $this->u->lookKeys($this->redate($d2, $this->u->info['id']), 0); // 2 - // + $v = $this->u->lookKeys($this->redate($d2, $this->u->info['id']), 0); // ключи 2 + //добавляем данные друг к другу $i = 0; $inf = ''; while ($i < count($v)) { @@ -1730,11 +1729,11 @@ class Priems $pld = [0 => '']; $nc = 0; if (isset($mpr['id']) && $j['onlyOne'] == 1) { - // + //отнимаем тактики $addch = 1; $this->mintr($pl); $this->uppz($pl, $id); - // + //добавляем прием в эффекты if (isset($this->ue['id'])) { $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); } else { @@ -1757,7 +1756,7 @@ class Priems if ($pl['limit'] == -2) { $hd1 = $pl['limit']; } - if ($pl['id'] == 239) // + if ($pl['id'] == 239) //Вывод приемов которые не моментальные как бы { $btl->priemAddLogFast( $uid, 0, $pl['name'], @@ -1776,13 +1775,13 @@ class Priems ); unset($hd1, $uu); - // + //отнимаем тактики $addch = 1; $rcu = true; $nc = 1; $this->mintr($pl); //$this->uppz($pl,$id); - // + //добавляем прием в эффекты if (isset($this->ue['id'])) { $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); } else { @@ -1792,8 +1791,8 @@ class Priems if ($mpr['x'] < $j['onlyOne'] && isset($j['date3Plus'])) { $j1 = $this->lookStatsArray($mpr['data']); $j2 = $this->lookStatsArray($this->redate($pl['date3'], $this->u->info['id'])); - $v = $this->u->lookKeys($this->redate($pl['date3'], $this->u->info['id']), 0); // 2 - // + $v = $this->u->lookKeys($this->redate($pl['date3'], $this->u->info['id']), 0); // ключи 2 + //добавляем данные друг к другу $i = 0; $inf = ''; while ($i < count($v)) { @@ -1818,10 +1817,10 @@ class Priems 'UPDATE `eff_users` SET `hod` = "' . $mpr['hod'] . '",`data` = "' . $j1 . '",`x` = `x`+1 WHERE `id` = "' . $mpr['id'] . '" LIMIT 1' ); if ($upd) { - // + //отнимаем тактики $this->mintr($pl); $this->uppz($pl, $id); - // + //добавляем прием в эффекты if (isset($this->ue['id'])) { $btl->stats[$btl->uids[$uid]] = $this->u->getStats($this->ue, 0); } else { @@ -1833,7 +1832,7 @@ class Priems } } } - /* */ + /* тратим свой ход */ if ($nc == 1 && $pl['tr_hod'] > 0) { $this->trhod($pl); } @@ -1891,20 +1890,20 @@ class Priems $piz = []; while ($i < count($pe)) { if ($pl['sbr'] == 0) { - // + //все блокируем $psp = mysql_fetch_assoc( mysql_query('SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" LIMIT 1') ); } else { - // + //Только текущую школу магии $imgnm = ''; $nm = explode('_', $pl['img']); - if ($nm[0] == 'wis') { // + if ($nm[0] == 'wis') { //магия $imgnm = $nm[0] . '_' . $nm[1] . '%'; } else { $imgnm = $nm[0] . '%'; } - // + //только данной школы $psp = mysql_fetch_assoc( mysql_query( 'SELECT * FROM `priems` WHERE `id` = "' . ((int)$pe[$i]) . '" AND `img` LIKE "' . $imgnm . '" LIMIT 1' @@ -1962,7 +1961,7 @@ class Priems if ($p[$i] > 0) { if (isset($piz[$p[$i]])) { if ($pl['id'] == 281) { - // + 5 . + //Жертва воде + воздуху дает 5 ед. задержки на землю и огонь if ($p[$i] == 246 || $p[$i] == 186) { $pz[$i] = 5; } else { @@ -2002,7 +2001,7 @@ class Priems global $u, $c, $code; $p = explode('|', $this->u->info['priems']); if ($p[(int)$id] > 0) { - // + //снимаем прием $p[(int)$id] = 0; $p = implode('|', $p); mysql_query( @@ -2014,7 +2013,7 @@ class Priems } } - /** ? + /** Одеть приём в слот? * @param $id * @return void */ @@ -2044,11 +2043,11 @@ class Priems } if ($yes != -1) { - // , + //такой прием уже стоит, ничего не делаем return; } if ($non != -1) { - // + //одеваем прием $p[$non] = $pl['id']; $p = implode('|', $p); $upd = mysql_query( @@ -2058,12 +2057,12 @@ class Priems $this->u->info['priems'] = $p; } } else { - // - echo ' ...'; + //снимаем последний прием + echo 'Снимаем последний прием...'; } } - // $id - 1 ( ), 2 - + //выводим приемы $id - 1 (вне боя), 2 - в бою public function seeMy($t) { global $btl; @@ -2091,7 +2090,7 @@ class Priems } } else { if ($pl['type'] == 1) { - // + //моментально if ($pl['onUser'] == 1) { $oninuser = ''; if ($pl['team'] == 1) { @@ -2113,10 +2112,10 @@ class Priems $cl = 'href="javascript:void(0);" onClick="usepriem(' . $i . ',1,\'' . $pl['img'] . '\');"'; } } elseif ($pl['type'] == 2) { - // + //длительное $cl = 'href="javascript:void(0);" onClick="usepriem(' . $i . ',1,\'' . $pl['img'] . '\');"'; } elseif ($pl['type'] == 3) { - $cl = 'href="javascript:void(0);" onClick="alert(\' ?\');"'; + $cl = 'href="javascript:void(0);" onClick="alert(\'Возможно используем?\');"'; } } @@ -2134,7 +2133,7 @@ class Priems } else { if (isset($_GET['inv'])) { - $pr .= ''; + $pr .= ''; } else { $pr .= ''; } @@ -2149,10 +2148,10 @@ class Priems ); if (!isset($use_lst['id'])) { $cl2 = ''; - $pr .= ''; + $pr .= ''; } else { $cl2 = '" class="nopriemuse'; - $pr .= ''; + $pr .= ''; } } if ($t == 1) { @@ -2186,7 +2185,7 @@ class Priems $pl['img'], 0, 10 ) == 'wis_water_') { - // + //вода } else { $notr++; } @@ -2270,7 +2269,7 @@ class Priems } } - // + //Требует чтобы не было if (isset($tr['tr_nousepriem'])) { $x = 0; $nouse = explode(',', $tr['tr_nousepriem']); @@ -2291,7 +2290,7 @@ class Priems } if (isset($tr['tr_type_itm1'])) { - // + //требует наличие предмета определенного типа $itmt = mysql_fetch_assoc( mysql_query( 'SELECT `u`.`id` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `u`.`item_id` WHERE `m`.`type` = "' . $tr['tr_type_itm1'] . '" AND `u`.`inOdet` > 0 AND `u`.`uid` = "' . $this->u->info['id'] . '" AND `u`.`delete` = "0" LIMIT 1' @@ -2316,12 +2315,12 @@ class Priems if (isset($btl->uids[$this->u->info['id']], $btl->stats[$btl->uids[$this->u->info['id']]])) { if ($pl['trUser'] == 1) { - // - ( ) + //требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит) if (isset($btl->ga[$this->u->info['id']][$this->u->info['enemy']])) { $notr++; } } elseif ($pl['trUser'] == 2 && $o > 0) { - // - ( , ) + //требует чтобы пользователь с кем-то разменивался (при ожидании не пропадает, но не используется) $ga = mysql_fetch_assoc( mysql_query( 'SELECT * FROM `battle_act` WHERE `battle` = "' . $btl->info['id'] . '" AND `uid1` = "' . $this->u->info['id'] . '" AND `uid2` = "' . $btl->users[$btl->uids[$this->u->info['id']]]['enemy'] . '" LIMIT 1' @@ -2352,7 +2351,7 @@ class Priems $trs .= ''; $notr++; } - $trs .= '
    '; + $trs .= '
    • '; $trs .= $this->u->is[$n] . ': ' . $tr['tr_' . $n]; if ($tr['tr_' . $n] > $this->u->stats[$n]) { $trs .= '
    '; @@ -2377,29 +2376,29 @@ class Priems if ($lvar != '') { $lvar .= '
    '; } - $lvar .= ' : ' . round($pl['tt' . $j], 2) . '
    '; + $lvar .= 'Сила духа: ' . round($pl['tt' . $j], 2) . '
    '; } $lvar .= '
    '; if ($pl['zad'] > 0) { - $lvar .= ': ' . $pl['zad']; + $lvar .= 'Задержка: ' . $pl['zad']; if ($pz[$id] > 0) { - $lvar .= ' ( ' . $pz[$id] . ')'; + $lvar .= ' (еще ' . $pz[$id] . ')'; } $lvar .= '
    '; } if (isset($tr['tr_mpNow']) && $tr['tr_mpNow'] > 0) { $tr['tr_mpNow'] -= round($tr['tr_mpNow'] / 100 * $this->u->stats['min_use_mp']); if ($this->u->info['mpNow'] < $tr['tr_mpNow'] || (isset($btl->stats[$btl->uids[$this->u->info['id']]]) && $btl->stats[$btl->uids[$this->u->info['id']]]['mpNow'] < $tr['tr_mpNow'])) { - $lvar .= ' : ' . $tr['tr_mpNow'] . '
    '; + $lvar .= '• Расход маны: ' . $tr['tr_mpNow'] . '
    '; } else { - $lvar .= ' : ' . $tr['tr_mpNow'] . '
    '; + $lvar .= '• Расход маны: ' . $tr['tr_mpNow'] . '
    '; } } if ($pl['tr_hod'] > 0) { - $lvar .= '
    '; + $lvar .= '• Прием тратит ход
    '; } if ($trs != '') { - $lvar .= ':' . $trs . '

    '; + $lvar .= 'Требования:' . $trs . '

    '; } else { $lvar .= '
    '; } @@ -2409,14 +2408,14 @@ class Priems return [0 => $lvar, 1 => $pz]; } - // / / .. + //Мощность / подавление / сопротивление и т.д. public function testPower($s1, $s2, $y, $t, $t2) { global $u, $btl; $r = 0; if ($t2 == 2) { - // + //урон магией $pm = [0 => 0, 1 => 0, 2 => 0, 3 => 0]; if ($t < 5) { $pm[0] = $s1['m11']; @@ -2429,7 +2428,7 @@ class Priems $pm[3] = round($pm[3]); } - // = b*(1+m/100)*2^((p*10-z)/k) + //урон = b*(1+m/100)*2^((p*10-z)/k) $fx_vl = [ 250, 250, @@ -2456,13 +2455,13 @@ class Priems ]; $fx = [ - 'b' => $y, // - 'm' => round($s1['pm' . $t] * 1 - $s2['antpm' . $t]), // - 'z' => round($s2['zm' . $t]), // . - 'p' => round(($s1['pzm'] + $s1['pzm' . $t])), // - 'k' => $fx_vl[(0 + $s1['lvl'])] // ; k=250 8, k=300 9 .. +20% + 'b' => $y, //базовый урон + 'm' => round($s1['pm' . $t] * 1 - $s2['antpm' . $t]), //мощь + 'z' => round($s2['zm' . $t]), //защита цели ед. + 'p' => round(($s1['pzm'] + $s1['pzm' . $t])), //подавление + 'k' => $fx_vl[(0 + $s1['lvl'])] //коэффициент ; k=250 для 8ки, k=300 для 9ки и т.д. +20% на уровень ]; - if (($fx['z'] + 250) - $fx['p'] * 10 < 0) { // , 250 . + if (($fx['z'] + 250) - $fx['p'] * 10 < 0) { //защита не может уйти больше, чем в 250 ед. $fx['p'] = ($fx['z'] + 250) / 10; } $fx['p'] = 0; @@ -2478,14 +2477,14 @@ class Priems $p = $y * 10; } - if (isset($s2['zm' . $t . 'proc'])) // () + if (isset($s2['zm' . $t . 'proc'])) //защита от магии стихий (призрачки) { $p = floor($p / 100 * (100 - $s2['zm' . $t . 'proc'])); if ($p < 0) { $p = 0; } } - if (isset($s2['zmproc'])) // () + if (isset($s2['zmproc'])) //защита от магии стихий (призрачки) { if ($s2['zmproc'] >= 75) { $p = floor($p / 100 * (100 - 75)); @@ -2517,7 +2516,7 @@ class Priems return $r; } - // - 1, - 2 + //выводим все доступные приемы игроку на его уровне - 1, выводим все доступные приемы только игроку - 2 public function seePriems($mt) { global $code; @@ -2574,12 +2573,12 @@ class Priems return $num; } - /** : . - * : 34, 67, 68, 69. + /** Приём: Вспышка. + * Файлы: 34, 67, 68, 69. * @param $level * @param Battle $btl * @param $id - * pruse() . + * передаётся через pruse() в номерной файл и вызывается оттуда. * @return void */ private function fireFlash($level, Battle $btl, $id) @@ -2599,7 +2598,7 @@ class Priems list($damage, $isCrit, $isMiss) = $this->magicAttack( $btl, $this->u->info['id'], $this->ue['id'], $leveledDamage, self::FIRE, 1 ); - // + //Используем проверку на урон приемов $damage = $btl->testYronPriem( $this->u->info['id'], $this->ue['id'], 21, $damage, 5, true @@ -2626,7 +2625,7 @@ class Priems 2, $this->u->info['id'], $this->ue['id'], - " [$level]", + "Вспышка [$level]", '{tm1}' . sprintf( " %s %s [%d/%d]", $btl->addlt(1, 19, $this->u->info['sex'], null), @@ -2639,21 +2638,21 @@ class Priems ); } - /** : {} - * : 25, 26, 27, 28. + /** Приём: Цель {стихия} + * Файлы: 25, 26, 27, 28. * @param $element * @param $pl * @param $id * @param Battle $btl - * @return bool (bool) . + * @return bool (bool) достигнут ли лимит по стаку заклинаний. */ private function magicTarget($element, $pl, $id, Battle $btl) { $data = [ - self::WATER => [25, ''], - self::FIRE => [26, ''], - self::AIR => [27, ''], - self::EARTH => [28, ''], + self::WATER => [25, 'воды'], + self::FIRE => [26, 'огня'], + self::AIR => [27, 'воздуха'], + self::EARTH => [28, 'земли'], ]; if (!in_array($element, array_keys($data)) || empty($this->ue)) { return false; @@ -2665,11 +2664,11 @@ class Priems ); $stackNumStr = $stacked['x'] > 0 ? $stacked['x'] + 1 : ''; if ($stacked['x'] >= 5) { - echo " "; + echo "На пероснаже достигнуто максиальное количество целей"; return true; } - // . + // Наброс эффекта от приёма. $this->addEffPr($pl, $id); $dataStr = $stacked['x'] > 0 ? Db::getValue( @@ -2677,11 +2676,11 @@ class Priems [$stacked['id']] ) : $pl['date3']; - // . , . - $effect = " {$data[$element][1]}: " . current($this->lookStatsArray($dataStr)); + // Костыль. Будет работать, пока приём изменяет ОДИН параметр. + $effect = "Защита от магии {$data[$element][1]}: " . current($this->lookStatsArray($dataStr)); $color = $this->logColor[$element]; - $name = " {$data[$element][1]}"; + $name = "Цель {$data[$element][1]}"; if ($stacked['x'] > 0) { $name .= " x($stackNumStr)"; } @@ -2722,7 +2721,7 @@ class Priems } if ($a <= 0) { return; - }// + }//Проверяем эффект $prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0]; $pvr['data'] = $this->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']); @@ -2733,7 +2732,7 @@ class Priems $pvr['hpNow'] = floor($btl->stats[$btl->uids[$u1]]['hpNow']); $pvr['hpAll'] = $btl->stats[$btl->uids[$u1]]['hpAll']; - // + //Используем проверку на урон приемов $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, 12, $pvr['hp'], 7, true, false, 1 ); @@ -2748,7 +2747,7 @@ class Priems Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]); $color = $this->logColor[self::FIRE]; - $prv['text'] = '{u2} "{pr}" '; + $prv['text'] = '{u2} утратил здоровье от "{pr}" '; if ($pvr['promah_type'] == 2) { $pvr['hp'] = '-'; } @@ -2761,12 +2760,12 @@ class Priems ); } - /** . , . - * 5 . 5 . - * damage 5 (atgm=). - * : 33, 56, 57, 58, 59, 60. + /** Пожирающее пламя. Первичный каст на противника, на котором нет эффекта. + * Кастуется на 5 ходов. Считает сколько урона будет наноситься следующие 5 ходов. + * Конечный damage после множителей делится на 5 и пишется в БД (atgm=). + * Файлы: 33, 56, 57, 58, 59, 60. * @param $id - * @param array $pl priems. + * @param array $pl массив значений из БД priems. * @param Battle $btl * @return void */ @@ -2790,13 +2789,13 @@ class Priems $data = $this->impStats(['atgm' => max(floor($damage / 5), 1)]); $this->addPriem( - $this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, '', 0, 0, 1 + $this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, 'пожирающеепламя', 0, 0, 1 ); } - /** . ( ) 20 3 . - * . - * :267, 268. . + /** Кристаллизация. Отнимает от максимального стата (кроме выносливости) 20 на 3 хода. + * Если есть одинаковые статы из них выбирается случайный. + * Файл:267, приём 268. Понимай как хочешь. * @param $id * @param array $pl * @param Battle $btl @@ -2832,7 +2831,7 @@ class Priems } shuffle($maxKeys); $datastr = "|add_{$maxKeys[0]}=-20"; - $debuffstr = " " . mb_strtolower($this->u->is[$maxKeys[0]]); + $debuffstr = "Замороженная " . mb_strtolower($this->u->is[$maxKeys[0]]); $color = $this->logColor[self::WATER]; $logText = '{tm1}' . $btl->addlt(1, 19, $btl->users[$btl->uids[$this->u->info['id']]]['sex'], null) . '.'; diff --git a/_incl_data/class/Quests.php b/_incl_data/class/Quests.php index 1e192d46..60daaf86 100644 --- a/_incl_data/class/Quests.php +++ b/_incl_data/class/Quests.php @@ -4,7 +4,7 @@ class Quests { private $free_x = 28; - /* */ + /* Проверка доступности квеста */ public function testGood($pl) { global $u; @@ -17,12 +17,12 @@ class Quests $d1 = 0; $sp1 = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 100')); $pl1 = $pl1[0]; - // 5 + //Если уже более 5 квестов взяли if ($d1 >= $this->free_x) { $r = 0; } unset($d1, $pl1, $sp1); - // + //Если квест уже взяли $qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `id` DESC LIMIT 1')); if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') { $r = 0; @@ -30,7 +30,7 @@ class Quests unset($qlst, $qlst2); $d = $this->expl($pl['tr_date']); - // [ 1,2,3,4,5 ... + //Завершить квесты [ 1,2,3,4,5 ... if (isset($d['tr_endq'])) { $i = 0; $e = explode(',', $d['tr_endq']); @@ -43,7 +43,7 @@ class Quests } unset($qn, $qlst, $qlst2); } - // + //Задержка между выполнением квеста if (isset($d['tr_zdr'])) { $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" ORDER BY `time` DESC LIMIT 1')); if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) { @@ -51,7 +51,7 @@ class Quests } unset($qlst); } - // + //Переодичность квеста if (isset($d['tr_tm1'])) { $d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']); $d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']); @@ -59,9 +59,9 @@ class Quests $d['tr_tm2'] = str_replace('d', date('d'), $d['tr_tm2']); $d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']); $d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']); - // + //проверка интервалов } - // + //Сколько раз можно пройти квест if (isset($d['tr_raz'])) { $qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2); if ($d['tr_raz'] > 0 && $d['tr_raz'] - $qlst[0] <= 0) { @@ -69,7 +69,7 @@ class Quests } unset($qlst); } - // + //Попыток пройти квест if (isset($d['tr_raz2'])) { $qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2); if ($d['tr_raz2'] - $qlst[0] <= 0) { @@ -81,7 +81,7 @@ class Quests } public function onlyOnceQuest($quests, $uid) - { // + { // Отсеиваем одноразовые квесты $result = []; $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $uid)); foreach ($quests as $quest) { @@ -117,20 +117,20 @@ class Quests return $result; } - /* */ + /* Взять квест */ public function startq($id, $val = null) { global $c, $u; $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE (`city` = "" OR `city` = "' . $u->info['city'] . '") AND `delete` = "0" AND `min_lvl` <= ' . $u->info['level'] . ' AND `max_lvl` >= ' . $u->info['level'] . ' AND (`align` = "0" OR `align` = "' . floor($u->info['align']) . '") AND `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')); if (isset($pl['id'])) { $u->addAction(time(), 'start_quest' . $pl['id'], 'go', null, $val); - $u->error = ' "' . $pl['name'] . '"'; + $u->error = 'Вы успешно получили задание "' . $pl['name'] . '"'; } else { - $u->error = ' '; + $u->error = 'Не удалось получить данное задание'; } } - /* */ + /* Взять квест в пещере */ public function startq_dn($id, $val = null) { global $c, $u; @@ -140,13 +140,13 @@ class Quests $u->addAction(time(), 'start_quest' . $pl['id'], 'go'); else $u->addAction(time(), 'start_quest' . $pl['id'], 'go', $u->info['id'], $val); - $u->error = ' "' . $pl['name'] . '"'; + $u->error = 'Вы успешно получили задание "' . $pl['name'] . '"'; } else { - $u->error = ' '; + $u->error = 'Не удалось получить данное задание'; } } - /* */ + /* Отказаться от квеста */ public function endq($id, $tp) { global $u; @@ -155,28 +155,28 @@ class Quests if (isset($qlst['id'])) { if ($tp == 'end') { mysql_query('UPDATE `actions` SET `vals` = "end" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1'); - $u->error = ' "' . $pl['name'] . '"'; + $u->error = 'Вы успешно отказались от задания "' . $pl['name'] . '"'; } elseif ($tp == 'win') { mysql_query('UPDATE `actions` SET `vals` = "win" ,`time` = "' . time() . '" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1'); } } else { - $u->error = ' '; + $u->error = 'Не удалось отказаться от задания '; } } - /* */ + /* Инфо о квесте в пещерах */ public function infoDng($pl) { global $u; $r = 0; $xrz = 0; $qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1')); - // + //Условия задания которые должны удовлетворять текущим характеристикам //$d = $this->expl($pl['tr_date']); - // + //Действия квеста $d = $this->expl($pl['act_date']); - // NPS + //Поговорить с NPS if (isset($d['dlg_nps'])) { $i7 = 0; $x3 = explode(',', $d['dlg_nps']); @@ -190,12 +190,12 @@ class Quests unset($x1, $x3, $x4, $i7); } - // + //Убить игроков if (isset($d['kill_user'])) { $r += $d['kill_user']; } - // + //Убить ботов if (isset($d['kill_bot'])) { $x = ''; $ex = explode(',', $d['kill_bot']); @@ -221,7 +221,7 @@ class Quests unset($x, $ex, $x2, $bot2, $ex2); } - // + //Собрать ресурсы if (isset($d['tk_itm'])) { $ex = explode(',', $d['tk_itm']); $i = 0; @@ -237,7 +237,7 @@ class Quests } } - // + //Собрать трофеи if (isset($d['tkill_itm'])) { $ex = explode(',', $d['tkill_itm']); $i = 0; @@ -263,27 +263,27 @@ class Quests $xrz = $r; } $r = '
    -
    ' . $xrz . '/' . $r . '
    -
    +
    ' . $xrz . '/' . $r . '
    +
    -
    +

    '; } return $r; } - /* */ + /* Информация о квесте */ public function info($pl) { global $u; $r = ''; $t = ''; $qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1')); - // + //Условия задания которые должны удовлетворять текущим характеристикам $d = $this->expl($pl['tr_date']); - // [ 1,2,3,4,5 ... + //Завершить квесты [ 1,2,3,4,5 ... if (isset($d['tr_endq'])) { - $t .= ' : '; + $t .= 'Завершить квесты: '; $i = 0; $e = explode(',', $d['tr_endq']); while ($i <= count($e)) { @@ -299,26 +299,26 @@ class Quests $t .= '
    '; unset($qn); } - // [ idbot-itm1=%,itm2=%| + //Из ботов падают предметы [ idbot-itm1=%,itm2=%| if (isset($d['tr_botitm'])) { - $t .= ' :
      '; + $t .= 'Из ботов выпадают предметы:
        '; $e = explode('|', $d['tr_botitm']); $i = 0; while ($i < count($e)) { $j = 0; $e2 = explode('-', $e[$i]); - //$e2[0] - id + //$e2[0] - id бота if ($e2[0] > 0) { $qn = mysql_fetch_array(mysql_query('SELECT `login` FROM `test_bot` WHERE `id` = "' . $e2[0] . '" LIMIT 1')); - $t .= '    • "' . $qn['login'] . '" : '; + $t .= '    • Из "' . $qn['login'] . '" выпадает: '; } else { - $t .= '    • : '; + $t .= '    • Из любых ботов выпадает: '; } - //$e2[1] - + //$e2[1] - предметы $e3 = explode(',', $e2[1]); while ($j < count($e3)) { $e4 = explode('=', $e3[$j]); - //$e4[0] - , $e4[1] - + //$e4[0] - предмет , $e4[1] - шанс $qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1')); $t .= ' ' . $qi['name'] . ', '; $j++; @@ -329,26 +329,26 @@ class Quests $t .= '
        '; unset($qn, $qi, $e2, $e3, $e4); } - // [ type-itm1=%,itm2=%| + //При выйгрыше падают предметы [ type-itm1=%,itm2=%| if (isset($d['tr_winitm'])) { - $t .= ' :
        '; + $t .= 'После победы выпадают предметы:
        '; $e = explode('|', $d['tr_winitm']); $i = 0; while ($i < count($e)) { $e2 = explode('-', $e[$i]); $t .= '    • '; - //$e2[0] - id + //$e2[0] - id бота if ($e2[0] > 0) { - $t .= ' : '; + $t .= 'Из людей выпадает: '; } else { - $t .= ' : '; + $t .= 'Из ботов выпадает: '; } - //$e2[1] - + //$e2[1] - предметы $j = 0; $e3 = explode(',', $e2[1]); while ($j < count($e3)) { $e4 = explode('=', $e3[$j]); - //$e4[0] - , $e4[1] - + //$e4[0] - предмет , $e4[1] - шанс $qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1')); $t .= ' ' . $qi['name'] . ', '; $j++; @@ -359,17 +359,17 @@ class Quests } unset($qn, $qi, $e2, $e3, $e4); } - // + //Задержка между выполнением квеста if (isset($d['tr_zdr'])) { $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" LIMIT 1')); - $t .= ' : ' . $u->timeOut($d['tr_zdr'] * 60 * 60); + $t .= 'Задержка между выполнением задания: ' . $u->timeOut($d['tr_zdr'] * 60 * 60); if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) { - $t .= '(: ' . $u->timeOut($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time()) . ' .)'; + $t .= '(Осталось: ' . $u->timeOut($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time()) . ' ч.)'; } $t .= '
        '; unset($qlst); } - // + //Переодичность квеста if (isset($d['tr_tm1'])) { $d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']); $d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']); @@ -379,31 +379,31 @@ class Quests $d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']); $d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']); - $t .= ' : ' . $d['tr_tm1'] . ' - ' . $d['tr_tm2'] . '
        '; + $t .= 'Период квеста: ' . $d['tr_tm1'] . ' - ' . $d['tr_tm2'] . '
        '; } - // + //Сколько раз можно пройти квест if (isset($d['tr_raz'])) { if ($d['tr_raz'] == -1) { - $t .= ' :
        '; + $t .= 'Сколько еще раз можно выполнить задание: бесконечно
        '; } else { $qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2); - $t .= ' : ' . ($d['tr_raz'] - $qlst[0]) . '
        '; + $t .= 'Сколько раз можно выполнить задание: ' . ($d['tr_raz'] - $qlst[0]) . '
        '; } unset($qlst); } - // + //Попыток пройти квест if (isset($d['tr_raz2'])) { $qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2); - $t .= ' : ' . ($d['tr_raz2'] - $qlst[0]) . '
        '; + $t .= 'Осталось попыток выполнить задание: ' . ($d['tr_raz2'] - $qlst[0]) . '
        '; unset($qlst); } if ($t != '') { - $r .= ' :
        ' . $t . '
        '; + $r .= 'Условия задания:
        ' . $t . '
        '; $t = ''; } - // + //Награда за квест $d = $this->expl($pl['win_date']); if (isset($d['add_eff'])) { @@ -415,7 +415,7 @@ class Quests $x6 = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`img` FROM `eff_main` WHERE `id2` = "' . $x7[0] . '" LIMIT 1')); if (isset($x6['id2'])) { $x5 .= ' '; +Время действия: ' . $u->timeOut($x7[1]) . '"> '; } $x4++; } @@ -426,25 +426,25 @@ class Quests } if (isset($d['add_rep'])) { - $t .= ' ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '
        '; + $t .= 'Репутация ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '
        '; } if (isset($d['add_repizlom'])) { - $t .= ' : ' . $d['add_repizlom'] . '
        '; + $t .= 'Репутация Излом Хаоса: ' . $d['add_repizlom'] . '
        '; } if (isset($d['add_cr'])) { - $t .= ': ' . $d['add_cr'] . ' .
        '; + $t .= 'Деньги: ' . $d['add_cr'] . ' кр.
        '; } if ($t != '') { - $r = ':
        ' . $t . '
        ' . $r; + $r = 'Награда:
        ' . $t . '
        ' . $r; $t = ''; } - // + //Действия квеста $d = $this->expl($pl['act_date']); - // NPS + //Поговорить с NPS if (isset($d['dlg_nps'])) { $i7 = 0; $x3 = explode(',', $d['dlg_nps']); @@ -453,30 +453,30 @@ class Quests if ($x4[0] > 0) { $x1 = mysql_fetch_array(mysql_query('SELECT `text` FROM `dungeon_dialog` WHERE `id` = "' . $x4[0] . '" LIMIT 1')); if (!isset($x1['text'])) { - $x1 = ''; + $x1 = 'незивестно'; } else { $x1 = $x1['text']; } $x = 0; - $t .= ' ' . $x1 . ': ' . $x . '/1
        '; + $t .= 'Поговорить с ' . $x1 . ': ' . $x . '/1
        '; } $i7++; } unset($x1, $x3, $x4, $i7); } - // + //Убить игроков if (isset($d['kill_user'])) { - $t .= ' : 0/' . $d['kill_user'] . '
        '; + $t .= 'Убить игроков: 0/' . $d['kill_user'] . '
        '; } - // + //Убить ботов if (isset($d['kill_bot'])) { if (isset($d['all_kill']) && (int)$d['all_kill'] > 0) { $x = ''; $ex = explode(',', $d['kill_bot']); - $i = 0; # . + $i = 0; # Количество циклов для каждого типа бота. $q = ''; while ($i < count($ex)) { $ex2 = explode('=', $ex[$i]); @@ -516,12 +516,12 @@ class Quests if ($x != '') { $x = trim($x, ', '); - $t .= ' :
        ' . $x; + $t .= 'Убить ботов:
        ' . $x; } unset($x, $ex, $x2, $bot2, $ex2); } - // + //Собрать ресурсы if (isset($d['tk_itm'])) { $ex = explode(',', $d['tk_itm']); $i = 0; @@ -538,11 +538,11 @@ class Quests } if ($x != '') { $x = trim($x, ', '); - $t .= ' :
        ' . $x; + $t .= 'Собрать ресурсы:
        ' . $x; } } - // + //Собирание трофеев if (isset($d['tkill_itm'])) { $ex = explode(',', $d['tkill_itm']); $i = 0; @@ -559,17 +559,17 @@ class Quests } if ($x != '') { $x = trim($x, ', '); - $t .= ' :
        ' . $x; + $t .= 'Собрать трофеи:
        ' . $x; } } if ($t != '') { - $r = '
        :
        ' . $t . '
        ' . $r; + $r = '
        Действия задания:
        ' . $t . '
        ' . $r; $t = ''; } if ($r == '') { - $r = ' '; + $r = 'Дополнительная информация по заданию отсутствует'; } return $r; } @@ -577,35 +577,35 @@ class Quests public function testquest() { global $u; - if ($u->info['battle'] == 0 && $u->room['name'] != ' ') { + if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') { $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); while ($pl2 = mysql_fetch_array($sp)) { $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "' . (str_replace('start_quest', '', $pl2['vars'])) . '" LIMIT 1')); $g = 1; - // + //Действия квеста $d = $this->expl($pl['act_date']); - // NPS + //Поговорить с NPS if (isset($d['dlg_nps'])) { $g = 0; unset($x); } - // + //Убить игроков if (isset($d['kill_user'])) { $x = 0; if ($x < $d['kill_user']) { $g = 0; } - //$d['kill_user'] - + //$d['kill_user'] - стольких нужно убить unset($x); } - // + //Убить ботов if (isset($d['kill_bot'])) { $ex = explode(',', $d['kill_bot']); - $ii = 0; // . + $ii = 0; // Количество циклов для каждого типа бота. $q = ''; while ($ii < count($ex)) { $ex2 = explode('=', $ex[$ii]); @@ -629,11 +629,11 @@ class Quests unset($x, $ex, $x2, $x3, $bot2, $ex2); } - // + //Собрать ресурсы if (isset($d['tk_itm'])) { $g = $this->collect_01(explode(',', $d['tk_itm']), $u); } - // + //Собирание трофеев if (isset($d['tkill_itm'])) { $g = $this->collect_01(explode(',', $d['tkill_itm']), $u); } @@ -647,7 +647,7 @@ class Quests } } - private function collect_01($arr, $u){ // . , . + private function collect_01($arr, $u){ // убираю дублирование. хер пойми что проверяем, хз как назвать. $i = 0; while ($i < count($arr)) { $ex2 = explode('=', $arr[$i]); @@ -660,7 +660,7 @@ class Quests return 1; } - private function collect_02($ex, $u, $pl) { // . , . + private function collect_02($ex, $u, $pl) { // убираю дублирование. хер пойми что проверяем, хз как назвать. $i = 0; while ($i < count($ex)) { $ex2 = explode('=', $ex[$i]); @@ -680,25 +680,25 @@ class Quests return 1; } - # + # Функция отвечает за ПРОВЕРКУ на ЗАВЕРШЕНИЕ квестов для ПОДЗЕМОК public function questCheckEnd($pl) { global $u; $quest = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `time` DESC LIMIT 1')); - # , = 0 , 1 . + #Проверяем квест, завершен = 0 нет, 1 да. $r = 0; - if ($u->info['battle'] == 0 && $u->room['name'] != ' ') { + if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') { $g = 1; - # + # Действия квеста $d = $this->expl($pl['act_date']); - # NPS + # Поговорить с NPS if (isset($d['dlg_nps'])) { $g = 0; unset($x); } - # + # Убить игроков if (isset($d['kill_user'])) { $x = 0; if ($x < $d['kill_user']) { @@ -707,10 +707,10 @@ class Quests unset($x); } - # + # Убить ботов if (isset($d['kill_bot'])) { $ex = explode(',', $d['kill_bot']); - $i = 0; # . + $i = 0; # Количество циклов для каждого типа бота. $q = ''; while ($i < count($ex)) { $ex2 = explode('=', $ex[$i]); @@ -740,11 +740,11 @@ class Quests unset($x, $ex, $x2, $x3, $bot2, $ex2); } - # + # Собрать ресурсы if (isset($d['tk_itm'])) { $g = $this->collect_02(explode(',', $d['tk_itm']), $u, $pl); } - # + # Собирание трофеев if (isset($d['tkill_itm'])) { $g = $this->collect_02(explode(',', $d['tkill_itm']), $u, $pl); } @@ -753,7 +753,7 @@ class Quests return $r; } - /** */ + /** Выдача наград за пещеры */ public function questSuccesEnd($quest, $action) { global $u, $c, $magic; @@ -765,7 +765,7 @@ class Quests $d = $this->expl($quest['act_date']); $d = array_merge($d, $this->expl($quest['win_date'])); - // + // Забираем ресурсы или трофеи if (isset($d['tk_itm']) || isset($d['tkill_itm'])) { $ex = []; if (isset($d['tk_itm'])) { @@ -793,9 +793,9 @@ class Quests } $t = ''; - # , + # Получаем репутацию за квест, if (isset($d['add_rep'])) { - # . + # если это убийства ботов. if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) { $ex = explode(',', $d['kill_bot']); $ii = 0; @@ -825,7 +825,7 @@ class Quests if ($this->stats['more_awards'] >= 0) { $d['add_rep'] += $d['add_rep'] / 100 * 50; } - $t .= '' . $d['add_rep'] . ' . ' . $u->city_name[$quest['city']] . ', '; + $t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$quest['city']] . ', '; if ( $rep['rep' . $quest['city']] < 24999 && $rep['rep' . $quest['city']] + $d['add_rep'] >= 24999 && @@ -840,7 +840,7 @@ class Quests } } if (isset($d['add_repizlom'])) { - $t .= '' . $d['add_repizlom'] . ' . , '; + $t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, '; $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); $rep['repizlom'] += $d['add_repizlom']; if ($rep['repizlom'] > 24999) { @@ -859,18 +859,18 @@ class Quests } } if (isset($d['add_cr'])) { - $t .= '' . $d['add_cr'] . ' ., '; + $t .= '' . $d['add_cr'] . ' кр., '; mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } if ($t != '') { $t = rtrim($t, ', '); - $r = ' ' . $quest['name'] . ' ! : ' . $t . '.'; + $r = 'Задание ' . $quest['name'] . ' было успешно выполнено! Вы получили награду: ' . $t . '.'; unset($t); } else { - $r = ' ' . $quest['name'] . ' !'; + $r = 'Задание ' . $quest['name'] . ' было успешно выполнено!'; } $r = '' . $r . ''; - // + //Отправляем сообщение в чат mysql_query('UPDATE `actions` SET `vals` = "win" , `time` = "' . time() . '" WHERE `id` = "' . $action['id'] . '" AND `vals` = "go" LIMIT 1'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')"); @@ -894,7 +894,7 @@ class Quests die(); } - // + // Забираем ресурсы if (isset($d['tk_itm'])) { $ex = explode(',', $d['tk_itm']); $i = 0; @@ -906,7 +906,7 @@ class Quests $i++; } } - // + // Забираем трофеи if (isset($d['tkill_itm'])) { $ex = explode(',', $d['tkill_itm']); $i = 0; @@ -920,7 +920,7 @@ class Quests } $t = ''; - if (isset($d['add_rep'])) { // , . + if (isset($d['add_rep'])) { // Получаем репутацию за квест, если это убийства ботов. if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) { $ex = explode(',', $d['kill_bot']); $ii = 0; @@ -939,9 +939,9 @@ class Quests } unset($x, $i, $ii, $ex, $x2, $bot2, $ex2); if ($pl['city'] != '') { - $t .= '' . $d['add_rep'] . ' . ' . $u->city_name[$pl['city']] . ', '; + $t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$pl['city']] . ', '; $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - // + // Рыцарки /*if($rep['rep'.$pl['city']] < 10000 && $rep['rep'.$pl['city']] + $d['add_rep'] >= 10000 && $pl['kin'] != 1) { $rep['rep'.$pl['city']] = 9999; } else*/ @@ -955,7 +955,7 @@ class Quests } if (isset($d['add_repizlom'])) { - $t .= '' . $d['add_repizlom'] . ' . , '; + $t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, '; $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); $rep['repizlom'] += $d['add_repizlom']; if ($rep['repizlom'] > 24999) { @@ -976,19 +976,19 @@ class Quests } if (isset($d['add_cr'])) { - $t .= '' . $d['add_cr'] . ' ., '; + $t .= '' . $d['add_cr'] . ' кр., '; mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } if ($t != '') { $t = rtrim($t, ', '); - $r = ' ' . $pl['name'] . ' ! : ' . $t . '.'; + $r = 'Задание ' . $pl['name'] . ' было успешно выполнено! Вы получили награду: ' . $t . '.'; unset($t); } else { - $r = ' ' . $pl['name'] . ' !'; + $r = 'Задание ' . $pl['name'] . ' было успешно выполнено!'; } $r = '' . $r . ''; - // + //Отправляем сообщение в чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')"); } } diff --git a/_incl_data/class/Season.php b/_incl_data/class/Season.php index 1a425650..40c73d32 100644 --- a/_incl_data/class/Season.php +++ b/_incl_data/class/Season.php @@ -5,18 +5,18 @@ use Core\Db; class Season { public static $yy = [ - 1 => [1, '01', '', ''], - 2 => [2, '02', '', ''], - 3 => [3, '03', '', ''], - 4 => [4, '04', '', ''], - 5 => [5, '05', '', ''], - 6 => [6, '06', '', ''], - 7 => [7, '07', '', ''], - 8 => [8, '08', '', ''], - 9 => [9, '09', '', ''], - 10 => [10, '10', '', ''], - 11 => [11, '11', '', ''], - 12 => [12, '12', '', ''], + 1 => [1, '01', 'Январь', 'Январьский'], + 2 => [2, '02', 'Февраль', 'Февральский'], + 3 => [3, '03', 'Март', 'Мартовский'], + 4 => [4, '04', 'Апрель', 'Апрельский'], + 5 => [5, '05', 'Май', 'Майский'], + 6 => [6, '06', 'Июнь', 'Июньский'], + 7 => [7, '07', 'Июль', 'Июльский'], + 8 => [8, '08', 'Август', 'Августовский'], + 9 => [9, '09', 'Сентябрь', 'Сентябрьский'], + 10 => [10, '10', 'Октябрь', 'Октябрьский'], + 11 => [11, '11', 'Ноябрь', 'Ноябрьский'], + 12 => [12, '12', 'Декабрь', 'Декабрьский'], ]; public static $date = []; public static $m = []; diff --git a/_incl_data/class/Telegram.php b/_incl_data/class/Telegram.php index e9e301f9..0b7d0acd 100644 --- a/_incl_data/class/Telegram.php +++ b/_incl_data/class/Telegram.php @@ -16,7 +16,7 @@ class Telegram private function send($to, $from, $text, $fromType) { mysql_query('START TRANSACTION'); - $ins = mysql_query("INSERT INTO `telegram` (`uid`,`from`,`fromType`,`text`,`time`) VALUES ('" . $to . "','" . $from . "','" . $fromType . "','" . mysql_real_escape_string(AddSlashes(HtmlSpecialChars($text, null, 'cp1251'))) . "','" . time() . "')"); + $ins = mysql_query("INSERT INTO `telegram` (`uid`,`from`,`fromType`,`text`,`time`) VALUES ('" . $to . "','" . $from . "','" . $fromType . "','" . mysql_real_escape_string(AddSlashes(HtmlSpecialChars($text, null))) . "','" . time() . "')"); mysql_query('COMMIT'); if ($ins) { return mysql_insert_id(); @@ -89,7 +89,7 @@ class Telegram } if ($fromType == 1) { - $from = '' . $from . ''; + $from = '' . $from . ''; } elseif ($read == 0) { $from = '' . $from . ''; } @@ -98,10 +98,10 @@ class Telegram
        ' . $i1 . '
        ' . $from . ' - ' . substr($ttl, 0, 30) . '... + ' . substr($ttl, 0, 30) . '... ' . date('d.m.y H:i', $time) . ' -
        -
        +
        +
        '; @@ -114,11 +114,11 @@ class Telegram - - - - - + + + + +
        От когоЗаголовок сообщенияКогда
        Блокировка сообщений
        Удалить все прочитанные сообщения
        '; @@ -138,7 +138,7 @@ class Telegram } if ($i[0] == 0) { - echo '
        '; + echo '
        Сообщений нет
        '; } elseif ($i[0] > $maxPages) { $pages = ''; $i = 1; @@ -153,7 +153,7 @@ class Telegram echo ' - + @@ -165,6 +165,6 @@ class Telegram public function __clone() { - trigger_error(' .', E_USER_ERROR); + trigger_error('Дублирование не допускается.', E_USER_ERROR); } } diff --git a/_incl_data/class/Tournir.php b/_incl_data/class/Tournir.php index e363738f..d5def1aa 100644 --- a/_incl_data/class/Tournir.php +++ b/_incl_data/class/Tournir.php @@ -7,7 +7,7 @@ class Tournir private User $u; private array $info; private array $user; - private array $name = [0 => ' ', 1 => ' ', 2 => ' ',]; + private array $name = [0 => 'Выжить любой ценой', 1 => 'Каждый сам за себя', 2 => 'Захват ключа',]; public function __construct() { @@ -31,13 +31,13 @@ class Tournir } } else { Db::sql('update turnirs set status = 3 where id = ?', [$this->info['id']]); - // + //Создание поединка Db::sql('insert into battle (city, time_start, timeout, type, turnir) values (?,unix_timestamp(),60,1,?)', [$this->u->info['city'], $this->info['id']]); $uri = Db::lastInsertId(); - // + //Закидываем персонажей в поединок Db::sql('update users set battle = ? where inUser = 0 and inTurnirnew = ?', [$uri, $this->info['id']]); - // - die(' ""...'); + //Обозначаем завершение турнира при выходе + die('Перейтиде в раздел "поединки"...'); } } @@ -53,7 +53,7 @@ class Tournir $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1')); $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['bot'] . '" LIMIT 1')); if (isset($inf['id'], $bot['id'])) { - // . + //выдаем призы и т.д mysql_query('DELETE FROM `users` WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $bot['id'] . '" LIMIT 1000'); @@ -63,7 +63,7 @@ class Tournir if ($pl['team'] == $this->info['winner'] && $this->info['winner'] != 0) { $inf['add_expp'] = [0, 1, 5, 10, 15, 25, 35, 70, 100, 150, 200, 300, 500, 700, 1000]; - // ( 0 12 ) + //получаем опыт (с 0 по 12 лвл) $inf['add_expn'] = [10, 30, 55, 62, 92, 180, 350, 1350, 4500, 7000, 21000, 30000, 35000]; $inf['add_expn'] = $inf['add_expn'][$inf['level']]; @@ -71,7 +71,7 @@ class Tournir mysql_query('UPDATE `stats` SET `exp` = `exp` + ' . $inf['add_expn'] . ' WHERE `id` = "' . $inf['id'] . '" LIMIT 1'); $win .= '' . $inf['login'] . ', '; - $r = ' . , : ' . $inf['add_expn'] . '.'; + $r = 'Турнир завершен. Вы являетесь победителем турнира, получено опыта: ' . $inf['add_expn'] . '.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','" . $inf['room'] . "','','" . $inf['login'] . "','" . $r . "','" . time() . "','6','0')"); } elseif ($pl['team'] != $this->info['winner'] && $this->info['winner'] != 0) { @@ -89,11 +89,11 @@ class Tournir if ($win != '') { $win = rtrim($win, ', '); $lose = rtrim($lose, ', '); - $win = ' : ' . $win . '. : ' . $lose . '. ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; + $win = 'Победители турнира: ' . $win . '. Проигравшая сторона: ' . $lose . '. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; } else { - $win = ' . ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; + $win = 'Победители турнира отсутствует. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').'; } - $r = ' . ' . $win; + $r = 'Турнир завершен. ' . $win; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','" . $r . "','" . time() . "','6','0')"); } } @@ -105,7 +105,7 @@ class Tournir $tm2 = ''; $noitm = [869 => 1, 1246 => 1, 155 => 1, 1245 => 1, 678 => 1]; - // + //получение комплекта if ($this->info['step'] != 3 && $this->info['step'] != 0 && isset($_GET['gocomplect']) && $this->user['points'] < 2) { $aso = explode(',', $this->user['items']); $ast = explode('-', $_GET['gocomplect']); @@ -150,19 +150,19 @@ class Tournir } if ($noitm > 0) { - echo ' !'; + echo 'Использование багов карается законом!'; $addi = 0; } elseif (count($asg[3]) > 2) { - echo ' , '; + echo 'Вы выбрали слишком много предметов, выберите только два оружия и один щит'; $addi = 0; } elseif (count($asg[10]) > 3) { - echo ' , '; + echo 'Вы выбрали слишком много предметов, выберите только три кольца'; $addi = 0; } elseif ($j > 16) { - echo ' '; + echo 'Вы выбрали слишком много предметов'; $addi = 0; } elseif ($j < 1) { - echo ' '; + echo 'Выберите хотя бы один предмет'; $addi = 0; } @@ -211,7 +211,7 @@ class Tournir if ($this->info['step'] == 3) { $this->finishTurnir(); } elseif ($this->info['step'] == 0) { - // + //распределяем команды $po = [0, 0]; $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" AND `points` > 3 ORDER BY `points` DESC LIMIT ' . $this->info['users_in']); $tmr = rand(1, 2); @@ -252,7 +252,7 @@ class Tournir ${'tm' . $bot['team']} .= $this->u->microLogin($bot, 2) . '
        '; } } - $r .= ''; - $r .= '

        «' . $this->name[$this->info['type']] . '»


        ' . $this->u->timeOut($this->info['time'] - time()) . '! '; + $r .= '

        «' . $this->name[$this->info['type']] . '»


        Начало турнира через ' . $this->u->timeOut($this->info['time'] - time()) . '! '; if (isset($_GET['hpregenNowTurnir']) && ($this->u->stats['hpNow'] < $this->u->stats['hpAll'] || $this->u->stats['mpNow'] < $this->u->stats['mpAll'])) { mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`mpNow` = "' . $this->u->stats['mpAll'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'); } if ($this->user['points'] < 3) { - // + //Еще не получили обмундирование if ($this->user['points'] < 2) { - $r .= ''; + $r .= ''; } else { - $r .= ' '; } } else { - $r .= ' !'; - $r .= '   '; + $r .= 'Вы участвуете в турнире!'; + $r .= '   '; } - $r .= '
        '; + $r .= '
        '; if ($this->user['points'] < 3 && $this->user['items'] != '0') { $r .= '
        '; if ($this->user['items'] == '') { - // + //Выдаем предметы для выбора $ai = ''; $sp = mysql_query('SELECT `a`.*,`b`.* FROM `items_shop` AS `a` LEFT JOIN `items_main` AS `b` ON (`a`.`item_id` = `b`.`id`) WHERE `a`.`sid` = 1 AND @@ -311,10 +311,10 @@ class Tournir // $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; } elseif ($i == 14) { - // + //правая рука $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; } else { - // + //обмундирование $com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)]; if ($i == 10) { $ai .= $com[$i]['id'] . ','; @@ -338,7 +338,7 @@ class Tournir mysql_query('UPDATE `users_turnirs` SET `items` = "' . $ai . '" WHERE `id` = "' . $this->user['id'] . '" LIMIT 1'); } - // + //Выводим предметы чтобы надеть их $ai = explode(',', $this->user['items']); $i = 0; $ia = []; @@ -352,7 +352,7 @@ class Tournir } unset($ai); - $r .= ' :
        '; + $r .= 'Выберите предметы для турнира:
        '; ?> - +
        @@ -433,7 +433,7 @@ if( isset($sBot) ){ function StatsDown(){ } - // + // Характеристики $('#add_save').live('click', function(){ StatsDown(); result = ''; @@ -468,7 +468,7 @@ if( isset($sBot) ){ $.each(CharacterInfo, function( k , v ){ add_list += ''; }); - $('#editorStats').html('
        : ' . $pages . 'Страницы: ' . $pages . '
        '+text + '



        '); + $('#editorStats').html('
        '+text + '



        '); text=''; stats = $('#statsLoad').val(); stats = stats.split('|'); @@ -496,7 +496,7 @@ if( isset($sBot) ){ }); - // + // Дроп предметов $('#add_saveDrop').live('click', function(){ result = ''; $('#editorDrop #listInputs td').each(function() { @@ -524,11 +524,11 @@ if( isset($sBot) ){ text += ' [load]
        '; } }); - $('#editorDrop').html('
        '+text + '


        '); + $('#editorDrop').html('
        '+text + '


        '); } }); - // + // Обмундирование $('#add_saveUseItem').live('click', function(){ result = ''; $('#editorUseItem #listInputs td').each(function() { @@ -554,7 +554,7 @@ if( isset($sBot) ){ $.each(useItem, function( n, row ){ text += ' [load] or [lib]
        '; }); - $('#editorUseItem').html('
        '+text + '



        '); + $('#editorUseItem').html('
        '+text + '



        '); } }); diff --git a/adminion/mod/dungeon_edit.php b/adminion/mod/dungeon_edit.php index d3e6e0a4..8db5b9b5 100644 --- a/adminion/mod/dungeon_edit.php +++ b/adminion/mod/dungeon_edit.php @@ -3,7 +3,7 @@ if(!defined('GAME')){ die(); } -die(', '); +die('Ошибка, смотри файл'); $dungeon_id = isset($_GET['dungeon_id']) ? intval($_GET['dungeon_id']) : ''; @@ -34,59 +34,59 @@ if($_POST['id']){ } ?>
        -

        +

        пещеру

        - + - + - + - + - + - + - + - + - - + + - - + +
        *ID :   *ID подземелья:  
        * :   *Название пещеры:  
        *:   *Город:  
        *:   *Тэг:  
        *ID ( ):   *ID локации (вход в подземелье):    
        *ID ():   *ID локации (подземелье):    
        ID :   ID Рыцарского магазина:    
        ID :   ID комнаты для выхода:  
        :   Активна:  
        :   Включены квесты:  

        - - -

        * -

        + + +

        * - Обязательные поля

        diff --git a/adminion/mod/dungeon_editor.php b/adminion/mod/dungeon_editor.php index 6dced115..c964fc01 100644 --- a/adminion/mod/dungeon_editor.php +++ b/adminion/mod/dungeon_editor.php @@ -1,8 +1,8 @@ - - + +Документ без названия diff --git a/adminion/mod/dungeon_list.php b/adminion/mod/dungeon_list.php index 052bf835..6008e821 100644 --- a/adminion/mod/dungeon_list.php +++ b/adminion/mod/dungeon_list.php @@ -18,31 +18,31 @@ while($row = mysql_fetch_assoc($Query)){ ' . $row['id'] . ' ' . ( $row['dungeon_room'] == 0 ? '' : $row['dungeon_room']) . ' ' . ( $row['shop'] == 0 ? '' : $row['shop']) . ' - ' . ( $row['active'] == 1 ? '' : '') . ' - ' . ( $row['quest'] == 1 ? '' : ''). ' - - - + ' . ( $row['active'] == 1 ? 'Вкл' : 'Выкл') . ' + ' . ( $row['quest'] == 1 ? 'Вкл' : 'Выкл'). ' + Удалить + Изменить + Карта '; } ?>
        -

        +

        Список пещер

        -
        : +
        Пещеры: - - - - - - - + + + + + + + - +



        Пещера
        Название пещеры
        Комната
        входа
        Локация
        пещеры
        Рыцарский
        Магазин
        Доступ
        Квесты
        Возможности
        - \ No newline at end of file +Добавить пещеру \ No newline at end of file diff --git a/adminion/mult.php b/adminion/mult.php index d7b4d78a..7b43185b 100644 --- a/adminion/mult.php +++ b/adminion/mult.php @@ -26,7 +26,7 @@ while ($pl = mysql_fetch_array($sp)) { $b2 = $pl['money2'] + $b0['b']; if ($b1 < 1000) { $html .= ''; - $html .= $i . '. ' . $u->microLogin($pl['id'], 1) . ' ( ' . $b1 . ' . / ' . $b2 . ' . )
        '; + $html .= $i . '. ' . $u->microLogin($pl['id'], 1) . ' ( ' . $b1 . ' кр. / ' . $b2 . ' екр. )
        '; $html .= '
        '; $i++; } diff --git a/adminion/mults.php b/adminion/mults.php index 2f89923d..a101fe33 100644 --- a/adminion/mults.php +++ b/adminion/mults.php @@ -1,6 +1,6 @@ info['admin']) { } $sp = mysql_query('SELECT * FROM `mults`'); while ($pl = mysql_fetch_array($sp)) { - echo '' . $u->microLogin($pl['uid'], 1) . ' ' . $u->microLogin($pl['uid2'], 1) . '
        '; + echo '' . $u->microLogin($pl['uid'], 1) . ' пересечение с ' . $u->microLogin($pl['uid2'], 1) . '
        '; } diff --git a/adminion/quest_dlg_edit.php b/adminion/quest_dlg_edit.php index b29fc00e..bd3c44b8 100644 --- a/adminion/quest_dlg_edit.php +++ b/adminion/quest_dlg_edit.php @@ -2,8 +2,8 @@ # Admin Only Area /* - . - , , , , , + Ядро для обработки данных. + Обработка поединков, обработка заявок, обработка ботов, обработка пещер, обработка турниров, обработка временных генераций */ @@ -31,15 +31,15 @@ if (isset($itm['id'])) { ); die(''); } elseif (isset($_GET['delete']) && $_GET['delete'] == 'true') { - // + //Удаляем саму страницу диалога mysql_query( 'DELETE FROM `dungeon_dlg` WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' ); - // + //Удаляем ответы страницы диалога mysql_query('DELETE FROM `dungeon_dlg` WHERE `qid` = "' . mysql_real_escape_string($itm['id']) . '"'); die(''); } - echo '
        : ' . $itm['id'] . '

        '; + echo '
        Номер диалога: ' . $itm['id'] . '

        '; } else { if (isset($_POST['newdata'])) { mysql_query( @@ -55,14 +55,14 @@ if (isset($itm['id'])) { ); die(''); } elseif (isset($_GET['delete']) && $_GET['delete'] == 'true') { - // + //Удаляем саму страницу диалога mysql_query( 'DELETE FROM `dungeon_dlg` WHERE `id` = "' . mysql_real_escape_string($itm['id']) . '" LIMIT 1' ); die(''); } - echo '
        : ' . $itm['id'] . '

        :
        :
        :
        '; + echo '
        Номер варианта ответа: ' . $itm['id'] . '

        Действия:
        Требует:
        Приоритет вывода:
        '; } } else { - echo ' .'; + echo 'Диалог не найден.'; } diff --git a/adminion/recovery.php b/adminion/recovery.php index 9a762817..52536b97 100644 --- a/adminion/recovery.php +++ b/adminion/recovery.php @@ -1,7 +1,7 @@ ' . $us['login'] . ' [' . $us['level'] . ', :' . $st['upLevel'] . ']
        ' . $_GET['exp'] . ' (: ' . $lvn['nextLevel'] . ' , : ' . $lvn['upLevel'] . ').
        '; +echo 'Логин: ' . $us['login'] . ' [' . $us['level'] . ', ап:' . $st['upLevel'] . ']
        Откатываем на ' . $_GET['exp'] . ' опыта (Уровень: ' . $lvn['nextLevel'] . ' , апп: ' . $lvn['upLevel'] . ').
        '; // $r = [0, 0, 0, 0, 0, 0]; // @@ -77,13 +77,13 @@ $nst['a'] += $rep['add_stats']; $nst['s'] += $rep['add_skills']; $nst['n'] += $rep['add_skills2']; // -echo '
        : ' . ($lvn['nextLevel'] - $us['level']) . '
        '; -echo '
        : ' . $r[0]; -echo '
        : ' . $r[1]; -echo '
        : ' . $r[2]; -echo '
        : ' . $r[3]; -echo '
        : ' . $r[4]; -echo '
        : ' . $r[5]; +echo '
        Откат уровня: ' . ($lvn['nextLevel'] - $us['level']) . '
        '; +echo '
        Откат статов: ' . $r[0]; +echo '
        Откат умений: ' . $r[1]; +echo '
        Откат навыков: ' . $r[2]; +echo '
        Откат выносливости: ' . $r[3]; +echo '
        Откат духа: ' . $r[4]; +echo '
        Откат денег: ' . $r[5]; echo '
        '; // echo '
        '; @@ -111,5 +111,5 @@ if (isset($_GET['good'])) { ); // } else { - echo '
        !'; + echo '
        Откатить!'; } diff --git a/adminion/shop_editor.php b/adminion/shop_editor.php index adfe46f1..36083fd0 100644 --- a/adminion/shop_editor.php +++ b/adminion/shop_editor.php @@ -16,8 +16,8 @@ $r = round((int)$_GET['r']); - - + +Рредактор предметов в магазине @@ -155,7 +155,7 @@ while ($i < 100) { -

        ( icq : 17768719)

        +

        Создать тестовый бой (Записать icq персу и скрыть: 17768719)



        @@ -192,8 +192,8 @@ while ($i < 100) { ); $logid = mysql_insert_id(); // - $user1['login'] = $user1['login'] . ' ( ' . $logid . ')'; - $user2['login'] = $user2['login'] . ' ( ' . $logid . ')'; + $user1['login'] = $user1['login'] . ' (Бот для боя ' . $logid . ')'; + $user2['login'] = $user2['login'] . ' (Бот для боя ' . $logid . ')'; // $bot1 = $u->addNewbot(0, null, $user1, false, false); $bot2 = $u->addNewbot(0, null, $user2, false, false); @@ -210,13 +210,13 @@ while ($i < 100) { 'INSERT INTO `battle_logs` ( `time`,`battle`,`id_hod`,`type`,`text` ) VALUES ( - "' . time() . '","' . $logid . '","1","1"," ' . date( + "' . time() . '","' . $logid . '","1","1","Часы показывали ' . date( 'd.m.Y H:i:s' - ) . ', ' . $user1['login'] . ' ' . $user2['login'] . ' ." + ) . ', когда ' . $user1['login'] . ' и ' . $user2['login'] . ' бросили вызов друг другу." )' ); // - // + //Эффекты $i = 0; while ($i < 1000) { // @@ -266,9 +266,9 @@ while ($i < 100) { inuser_go_btl($user1); } // - $error = ' ' . $user1['login'] . ' [' . $user1['level'] . '] ' . $user2['login'] . ' [' . $user2['level'] . '] ! '; + $error = 'Бой между ' . $user1['login'] . ' [' . $user1['level'] . '] и ' . $user2['login'] . ' [' . $user2['level'] . '] начался! Лог боя'; } else { - $error = ' .'; + $error = 'Один из персонажей не найден в базе.'; } echo '
        ' . $error . '
        '; @@ -282,7 +282,7 @@ while ($i < 100) { while ($pl = mysql_fetch_array($sp)) { $i++; // - // + //Действие эффекта $ei = ''; $tr = ''; $t = $u->items['add']; @@ -303,7 +303,7 @@ while ($i < 100) { $ei .= $tr; } if ($e['info'] != '') { - $ei .= '
        :
        ' . $e['info']; + $ei .= '
        Информация:
        ' . $e['info']; } // $ef = ''; @@ -313,14 +313,14 @@ while ($i < 100) { // $dv = ''; $da = ''; - $dv .= ''; //$sp_m = mysql_query('SELECT * FROM `users` WHERE `icq` = "17768719" ORDER BY `id` ASC'); //icq deprecaded and removed while ($pl_m = mysql_fetch_array($sp_m)) { $dv .= ''; $da .= ''; } $dv .= ''; - $da = ''; + $da = ''; ?> @@ -329,7 +329,7 @@ while ($i < 100) {  

         

        - + - + - +
             против    

        @@ -338,12 +338,12 @@ while ($i < 100) {

         
         
         эффекты
         
         



         
        diff --git a/ajax.php b/ajax.php index f3b19498..a801837f 100644 --- a/ajax.php +++ b/ajax.php @@ -1,20 +1,20 @@ '.$_GET['test'].'
        '.$_POST['test_post'].''; + echo 'Тест 5
        '.$_GET['test'].'
        '.$_POST['test_post'].''; die(); } -echo ' 1
        '; +echo 'Тест 1
        '; ?> - 2
        +Тест 2


        - \ No newline at end of file +Протестировать запрос \ No newline at end of file diff --git a/ajax_checklogin.php b/ajax_checklogin.php index b135e1f6..5a182f47 100644 --- a/ajax_checklogin.php +++ b/ajax_checklogin.php @@ -5,17 +5,17 @@ include_once('_incl_data/class/__db_connect.php'); if(isset($_GET['login'])) { // - $_GET['login'] = htmlspecialchars($_GET['login'],NULL,'cp1251'); + $_GET['login'] = htmlspecialchars($_GET['login'],NULL); // $bad = array( - '' => 1, - '' => 1 + 'Мусорщик' => 1, + 'Мироздатель' => 1 ); // function en_ru($txt) { $g = false; $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9-- _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } @@ -23,7 +23,7 @@ if(isset($_GET['login'])) { } // function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM޸'; + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; $r = false; $i = 0; while( $i != -1 ) { @@ -53,13 +53,13 @@ if(isset($_GET['login'])) { // $login = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_GET['login']).'" LIMIT 1')); if( isset($login['id']) || isset($bad[$_GET['login']]) ) { - echo ' .'; + echo 'Логин занят.'; }else{ $true = true; // /* - 4 16 , , , '_', '-' . - '_', '-' . + Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. */ // $_GET['login'] = str_replace(' ',' ',$_GET['login']); @@ -80,14 +80,14 @@ if(isset($_GET['login'])) { $true = false; }elseif( testBad($_GET['login']) == true ) { $true = false; - }elseif( en_ru(str_replace('','',str_replace('','',$_GET['login']))) == true ) { + }elseif( en_ru(str_replace('ё','е',str_replace('Ё','Е',$_GET['login']))) == true ) { $true = false; } // if( $true == false ) { - echo ' .'; + echo 'Неверный логин.'; }else{ - echo ' !'; + echo 'Логин свободен!'; } } } diff --git a/api/learning.php b/api/learning.php deleted file mode 100644 index ab8d0a68..00000000 --- a/api/learning.php +++ /dev/null @@ -1,15 +0,0 @@ -hasLearned()) { - echo 'OK'; -} -if ($_POST['getStatus']) { - // boolean - switch ($learning->getLearningStatus()) { - case 0: echo 'should not learn'; break; - case 1: echo 'should learn'; break; - default: echo 'error: no data'; break; - } -} \ No newline at end of file diff --git a/audio/audio_1614275725.mp3 b/audio/audio_1614275725.mp3 deleted file mode 100644 index b16fa46a..00000000 Binary files a/audio/audio_1614275725.mp3 and /dev/null differ diff --git a/audio/audio_1614521605.mp3 b/audio/audio_1614521605.mp3 deleted file mode 100644 index 87bf1f78..00000000 Binary files a/audio/audio_1614521605.mp3 and /dev/null differ diff --git a/audio/audio_1614521686.mp3 b/audio/audio_1614521686.mp3 deleted file mode 100644 index 5a4dc36f..00000000 Binary files a/audio/audio_1614521686.mp3 and /dev/null differ diff --git a/audio/audio_1614523608.mp3 b/audio/audio_1614523608.mp3 deleted file mode 100644 index 2ec4651e..00000000 Binary files a/audio/audio_1614523608.mp3 and /dev/null differ diff --git a/audio/audio_1614523867.mp3 b/audio/audio_1614523867.mp3 deleted file mode 100644 index a2956806..00000000 Binary files a/audio/audio_1614523867.mp3 and /dev/null differ diff --git a/audio/audio_1614535309.mp3 b/audio/audio_1614535309.mp3 deleted file mode 100644 index 55e62df0..00000000 Binary files a/audio/audio_1614535309.mp3 and /dev/null differ diff --git a/audio/audio_1614797553.mp3 b/audio/audio_1614797553.mp3 deleted file mode 100644 index 19e5ae96..00000000 Binary files a/audio/audio_1614797553.mp3 and /dev/null differ diff --git a/audio/audio_1614797685.mp3 b/audio/audio_1614797685.mp3 deleted file mode 100644 index 7e57894d..00000000 Binary files a/audio/audio_1614797685.mp3 and /dev/null differ diff --git a/audio/audio_1614797971.mp3 b/audio/audio_1614797971.mp3 deleted file mode 100644 index e5cfe3b3..00000000 Binary files a/audio/audio_1614797971.mp3 and /dev/null differ diff --git a/audio/audio_1614798061.mp3 b/audio/audio_1614798061.mp3 deleted file mode 100644 index e1ed4167..00000000 Binary files a/audio/audio_1614798061.mp3 and /dev/null differ diff --git a/audio/audio_1614798280.mp3 b/audio/audio_1614798280.mp3 deleted file mode 100644 index e795504e..00000000 Binary files a/audio/audio_1614798280.mp3 and /dev/null differ diff --git a/audio/audio_1614798410.mp3 b/audio/audio_1614798410.mp3 deleted file mode 100644 index 7eae1d37..00000000 Binary files a/audio/audio_1614798410.mp3 and /dev/null differ diff --git a/audio/audio_1614798412.mp3 b/audio/audio_1614798412.mp3 deleted file mode 100644 index 1abf44b0..00000000 Binary files a/audio/audio_1614798412.mp3 and /dev/null differ diff --git a/audio/audio_1614798601.mp3 b/audio/audio_1614798601.mp3 deleted file mode 100644 index 8084f7be..00000000 Binary files a/audio/audio_1614798601.mp3 and /dev/null differ diff --git a/audio/audio_1614798634.mp3 b/audio/audio_1614798634.mp3 deleted file mode 100644 index 3e32d985..00000000 Binary files a/audio/audio_1614798634.mp3 and /dev/null differ diff --git a/audio/audio_1614804548.mp3 b/audio/audio_1614804548.mp3 deleted file mode 100644 index 9af74aba..00000000 Binary files a/audio/audio_1614804548.mp3 and /dev/null differ diff --git a/audio/audio_1614804700.mp3 b/audio/audio_1614804700.mp3 deleted file mode 100644 index a8340aea..00000000 Binary files a/audio/audio_1614804700.mp3 and /dev/null differ diff --git a/audio/audio_1614805144.mp3 b/audio/audio_1614805144.mp3 deleted file mode 100644 index acb0e88b..00000000 Binary files a/audio/audio_1614805144.mp3 and /dev/null differ diff --git a/audio/audio_1615219479.mp3 b/audio/audio_1615219479.mp3 deleted file mode 100644 index 913ba4cc..00000000 Binary files a/audio/audio_1615219479.mp3 and /dev/null differ diff --git a/audio/audio_1615588602.mp3 b/audio/audio_1615588602.mp3 deleted file mode 100644 index be75ac14..00000000 Binary files a/audio/audio_1615588602.mp3 and /dev/null differ diff --git a/audio/audio_1615588722.mp3 b/audio/audio_1615588722.mp3 deleted file mode 100644 index 785b172a..00000000 Binary files a/audio/audio_1615588722.mp3 and /dev/null differ diff --git a/audio/audio_1615620136.mp3 b/audio/audio_1615620136.mp3 deleted file mode 100644 index 3f9d8a03..00000000 Binary files a/audio/audio_1615620136.mp3 and /dev/null differ diff --git a/audio/audio_1615630084.mp3 b/audio/audio_1615630084.mp3 deleted file mode 100644 index f9891f66..00000000 Binary files a/audio/audio_1615630084.mp3 and /dev/null differ diff --git a/audio/audio_1616007843.mp3 b/audio/audio_1616007843.mp3 deleted file mode 100644 index bff31c66..00000000 Binary files a/audio/audio_1616007843.mp3 and /dev/null differ diff --git a/audio/audio_1616135596.mp3 b/audio/audio_1616135596.mp3 deleted file mode 100644 index a3cab828..00000000 Binary files a/audio/audio_1616135596.mp3 and /dev/null differ diff --git a/audio/audio_1616339920.mp3 b/audio/audio_1616339920.mp3 deleted file mode 100644 index 61b5630a..00000000 Binary files a/audio/audio_1616339920.mp3 and /dev/null differ diff --git a/audio/audio_1616342879.mp3 b/audio/audio_1616342879.mp3 deleted file mode 100644 index adbe1143..00000000 Binary files a/audio/audio_1616342879.mp3 and /dev/null differ diff --git a/audio/audio_1616342919.mp3 b/audio/audio_1616342919.mp3 deleted file mode 100644 index 057fa900..00000000 Binary files a/audio/audio_1616342919.mp3 and /dev/null differ diff --git a/audio/audio_1616359132.mp3 b/audio/audio_1616359132.mp3 deleted file mode 100644 index 714fa1a7..00000000 Binary files a/audio/audio_1616359132.mp3 and /dev/null differ diff --git a/audio/audio_1616676799.mp3 b/audio/audio_1616676799.mp3 deleted file mode 100644 index cae7720b..00000000 Binary files a/audio/audio_1616676799.mp3 and /dev/null differ diff --git a/audio/audio_1618124331.mp3 b/audio/audio_1618124331.mp3 deleted file mode 100644 index ad1581a5..00000000 Binary files a/audio/audio_1618124331.mp3 and /dev/null differ diff --git a/audio/audio_1618592693.mp3 b/audio/audio_1618592693.mp3 deleted file mode 100644 index af1db6b4..00000000 Binary files a/audio/audio_1618592693.mp3 and /dev/null differ diff --git a/audio/audio_1618609789.mp3 b/audio/audio_1618609789.mp3 deleted file mode 100644 index 4bede15a..00000000 Binary files a/audio/audio_1618609789.mp3 and /dev/null differ diff --git a/audio/audio_1618646143.mp3 b/audio/audio_1618646143.mp3 deleted file mode 100644 index 4ab9f28e..00000000 Binary files a/audio/audio_1618646143.mp3 and /dev/null differ diff --git a/audio/audio_1618646159.mp3 b/audio/audio_1618646159.mp3 deleted file mode 100644 index 51fc9f42..00000000 Binary files a/audio/audio_1618646159.mp3 and /dev/null differ diff --git a/audio/audio_1620849304.mp3 b/audio/audio_1620849304.mp3 deleted file mode 100644 index 726fbc74..00000000 Binary files a/audio/audio_1620849304.mp3 and /dev/null differ diff --git a/audio/audio_1621065306.mp3 b/audio/audio_1621065306.mp3 deleted file mode 100644 index 4fb28add..00000000 Binary files a/audio/audio_1621065306.mp3 and /dev/null differ diff --git a/audio/audio_1621065405.mp3 b/audio/audio_1621065405.mp3 deleted file mode 100644 index 5070d70a..00000000 Binary files a/audio/audio_1621065405.mp3 and /dev/null differ diff --git a/audio/audio_1621065617.mp3 b/audio/audio_1621065617.mp3 deleted file mode 100644 index 3255d081..00000000 Binary files a/audio/audio_1621065617.mp3 and /dev/null differ diff --git a/audio/audio_1621618986.mp3 b/audio/audio_1621618986.mp3 deleted file mode 100644 index c2944100..00000000 Binary files a/audio/audio_1621618986.mp3 and /dev/null differ diff --git a/audio/audio_1622585511.mp3 b/audio/audio_1622585511.mp3 deleted file mode 100644 index 4f87c92f..00000000 Binary files a/audio/audio_1622585511.mp3 and /dev/null differ diff --git a/audio/audio_1623098728.mp3 b/audio/audio_1623098728.mp3 deleted file mode 100644 index 5ea75f17..00000000 Binary files a/audio/audio_1623098728.mp3 and /dev/null differ diff --git a/audio/audio_1624223931.mp3 b/audio/audio_1624223931.mp3 deleted file mode 100644 index 35ec62a9..00000000 Binary files a/audio/audio_1624223931.mp3 and /dev/null differ diff --git a/audio/audio_1624226471.mp3 b/audio/audio_1624226471.mp3 deleted file mode 100644 index f3c46893..00000000 Binary files a/audio/audio_1624226471.mp3 and /dev/null differ diff --git a/audio/audio_1624561881.mp3 b/audio/audio_1624561881.mp3 deleted file mode 100644 index 09ee956b..00000000 Binary files a/audio/audio_1624561881.mp3 and /dev/null differ diff --git a/audio/audio_1624738907.mp3 b/audio/audio_1624738907.mp3 deleted file mode 100644 index beeeed93..00000000 Binary files a/audio/audio_1624738907.mp3 and /dev/null differ diff --git a/audio/audio_1624739278.mp3 b/audio/audio_1624739278.mp3 deleted file mode 100644 index 62063892..00000000 Binary files a/audio/audio_1624739278.mp3 and /dev/null differ diff --git a/audio/audio_1626435272.mp3 b/audio/audio_1626435272.mp3 deleted file mode 100644 index 7b82b030..00000000 Binary files a/audio/audio_1626435272.mp3 and /dev/null differ diff --git a/audio/audio_1628161914.mp3 b/audio/audio_1628161914.mp3 deleted file mode 100644 index 8030eb85..00000000 Binary files a/audio/audio_1628161914.mp3 and /dev/null differ diff --git a/audio/audio_1634228921.mp3 b/audio/audio_1634228921.mp3 deleted file mode 100644 index 78958cac..00000000 Binary files a/audio/audio_1634228921.mp3 and /dev/null differ diff --git a/audio/audio_1635181242.mp3 b/audio/audio_1635181242.mp3 deleted file mode 100644 index d195274a..00000000 Binary files a/audio/audio_1635181242.mp3 and /dev/null differ diff --git a/audio/audio_1656338463.mp3 b/audio/audio_1656338463.mp3 deleted file mode 100644 index 19ff5615..00000000 Binary files a/audio/audio_1656338463.mp3 and /dev/null differ diff --git a/audio/audio_1656338530.mp3 b/audio/audio_1656338530.mp3 deleted file mode 100644 index 8354f80f..00000000 Binary files a/audio/audio_1656338530.mp3 and /dev/null differ diff --git a/audio/audio_1656338605.mp3 b/audio/audio_1656338605.mp3 deleted file mode 100644 index 26439cb1..00000000 Binary files a/audio/audio_1656338605.mp3 and /dev/null differ diff --git a/audio/audio_1656357658.mp3 b/audio/audio_1656357658.mp3 deleted file mode 100644 index 58d67cf7..00000000 Binary files a/audio/audio_1656357658.mp3 and /dev/null differ diff --git a/audio/audio_1656444267.mp3 b/audio/audio_1656444267.mp3 deleted file mode 100644 index a86bd81e..00000000 Binary files a/audio/audio_1656444267.mp3 and /dev/null differ diff --git a/audio/audio_1656514170.mp3 b/audio/audio_1656514170.mp3 deleted file mode 100644 index e8e14eb0..00000000 Binary files a/audio/audio_1656514170.mp3 and /dev/null differ diff --git a/audio/audio_1656521179.mp3 b/audio/audio_1656521179.mp3 deleted file mode 100644 index 36a33d5e..00000000 Binary files a/audio/audio_1656521179.mp3 and /dev/null differ diff --git a/audio/audio_1656537767.mp3 b/audio/audio_1656537767.mp3 deleted file mode 100644 index 606fbb56..00000000 Binary files a/audio/audio_1656537767.mp3 and /dev/null differ diff --git a/audio/audio_1656620496.mp3 b/audio/audio_1656620496.mp3 deleted file mode 100644 index dba59047..00000000 Binary files a/audio/audio_1656620496.mp3 and /dev/null differ diff --git a/audio/audio_1656853059.mp3 b/audio/audio_1656853059.mp3 deleted file mode 100644 index 1ce2665b..00000000 Binary files a/audio/audio_1656853059.mp3 and /dev/null differ diff --git a/audio/audio_1657817718.mp3 b/audio/audio_1657817718.mp3 deleted file mode 100644 index c575f9e6..00000000 Binary files a/audio/audio_1657817718.mp3 and /dev/null differ diff --git a/audio/audio_1657818100.mp3 b/audio/audio_1657818100.mp3 deleted file mode 100644 index 5cf5043b..00000000 Binary files a/audio/audio_1657818100.mp3 and /dev/null differ diff --git a/audio/audio_1657820701.mp3 b/audio/audio_1657820701.mp3 deleted file mode 100644 index ffb5dfc4..00000000 Binary files a/audio/audio_1657820701.mp3 and /dev/null differ diff --git a/audio/audio_1657957570.mp3 b/audio/audio_1657957570.mp3 deleted file mode 100644 index 148368f2..00000000 Binary files a/audio/audio_1657957570.mp3 and /dev/null differ diff --git a/audio/audio_1660569694.mp3 b/audio/audio_1660569694.mp3 deleted file mode 100644 index 2e30e462..00000000 Binary files a/audio/audio_1660569694.mp3 and /dev/null differ diff --git a/audio/audio_1663086497.mp3 b/audio/audio_1663086497.mp3 deleted file mode 100644 index 608b7203..00000000 Binary files a/audio/audio_1663086497.mp3 and /dev/null differ diff --git a/audio/audio_1663087031.mp3 b/audio/audio_1663087031.mp3 deleted file mode 100644 index b4ae563c..00000000 Binary files a/audio/audio_1663087031.mp3 and /dev/null differ diff --git a/audio/audio_1668262809.mp3 b/audio/audio_1668262809.mp3 deleted file mode 100644 index 140e2f04..00000000 Binary files a/audio/audio_1668262809.mp3 and /dev/null differ diff --git a/aunitpay.php b/aunitpay.php index aab24e57..eddfac1d 100644 --- a/aunitpay.php +++ b/aunitpay.php @@ -24,24 +24,24 @@ function getResponseSuccess($message) date_default_timezone_set('Europe/Moscow'); $c = [ - /* MySQL */ - 'db_name' => 'pay_operations', // + /* MySQL База данных */ + 'db_name' => 'pay_operations', //Таблица в которую заносятся данные 'db_host' => 'localhost', 'db_user' => 'newcom1_abk', 'db_pass' => '4nWYsIM[c?}P', 'db_base' => 'newcom1_abk', - /* - 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), // ( IP) + /* Настройки платежей + 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), //Указывать через запятую (Разрешенные IP) 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID */ + 'id' => '65643' //ID проекта*/ ]; function connect_db($c) { - $db = mysql_connect($c['db_host'], $c['db_user'], $c['db_pass']) or die(' MySQL !'); - mysql_select_db($c['db_base'], $db) or die(' !'); - mysql_query('SET NAMES cp1251'); + $db = mysql_connect($c['db_host'], $c['db_user'], $c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); + mysql_select_db($c['db_base'], $db) or die('Ошибка подключения к базе данных!'); + mysql_query('SET NAMES utf8mb4'); } function getFormSignature($account, $currency, $sum, $secretKey) @@ -78,7 +78,7 @@ MERCHANT_ID SIGN intid -https://__? +https://адрес_вашего_обработчика? method=check params[account]=userId params[date]=2012-10-01 12:32:00 @@ -122,13 +122,13 @@ if ($_GET['method'] == "pay") { $r = '' . date( 'd.m.Y H:i' - ) . ' / : '; + ) . ' Алхимик Администратор / Автоматическая оплата сообщает: '; if ($user['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' ' . $user['login'] . ', ' . $nick['ekr'] . ' . !'; + $r .= ' ' . $user['login'] . ', на Ваш игровой счет зачислено ' . $nick['ekr'] . ' Еврокредитов. Благодарим Вас за покупку!'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $user['city'] . "','" . $user['room'] . "','','" . $user['login'] . "','" . $r . "','-1','5','0')" @@ -144,14 +144,13 @@ if ($_GET['method'] == "pay") { ); $r = '' . date( 'd.m.Y H:i' - ) . ' / : '; + ) . ' Алхимик Администратор / Реферальный заработок сообщает: '; if ($referal['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' ' . $referal['login'] . ', ' . $refecr . ' . !' . $user['login'] . ''; - //$str1 = iconv("cp1251","UTF-8",$r); + $r .= ' ' . $referal['login'] . ', на Ваш игровой счет зачислено ' . $refecr . ' Еврокредитов. Благодоря вашему рефералу!' . $user['login'] . ''; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $referal['city'] . "','" . $referal['room'] . "','','" . $referal['login'] . "','" . $r . "','-1','5','0')" ); diff --git a/autopay.php b/autopay.php index 216e822a..a22ca54c 100644 --- a/autopay.php +++ b/autopay.php @@ -2,23 +2,23 @@ 'pay_operations', // + /* MySQL База данных */ + 'db_name' => 'pay_operations', //Таблица в которую заносятся данные 'db_host' => 'localhost', 'db_user' => 'newcom1_abk', 'db_pass' => '4nWYsIM[c?}P', 'db_base' => 'newcom1_abk', - /* - 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), // ( IP) + /* Настройки платежей + 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), //Указывать через запятую (Разрешенные IP) 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID */ + 'id' => '65643' //ID проекта*/ ); function connect_db($c) { - $db = mysql_connect($c['db_host'],$c['db_user'],$c['db_pass']) or die(' MySQL !'); - mysql_select_db($c['db_base'],$db) or die(' !'); - mysql_query('SET NAMES cp1251'); + $db = mysql_connect($c['db_host'],$c['db_user'],$c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); + mysql_select_db($c['db_base'],$db) or die('Ошибка подключения к базе данных!'); + mysql_query('SET NAMES utf8mb4'); } //MERCHANT_ORDER_ID=142&P_PHONE=380688028300&P_EMAIL=evhenii_kula%40mail.ru&CUR_ID=94&AMOUNT=90&MERCHANT_ID=65643&SIGN=c0fc70d5446614597d44ff13f2c7a6a5&intid=29728441 @@ -40,7 +40,7 @@ date_default_timezone_set('Europe/Moscow'); { if ($nick['good']!=0) { - echo " "; + echo "Уже начисленно"; } else { @@ -51,56 +51,53 @@ date_default_timezone_set('Europe/Moscow'); //mysql_query('INSERT INTO `'.$c['db_name'].'` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("'.time().'","'.mysql_real_escape_string($type).'","'.$_SERVER['HTTP_X_REAL_IP'].'","'.mysql_real_escape_string($value).'","'.mysql_real_escape_string($money).'","'.mysql_real_escape_string($this->id).'")'); - $r = ''.date('d.m.Y H:i').' / : '; + $r = ''.date('d.m.Y H:i').' Алхимик Администратор / Автоматическая оплата сообщает: '; if($user['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' '.$user['login'].', '.$nick['ekr'].' . !'; - //$str1 = iconv("cp1251","UTF-8",$r); + $r .= ' '.$user['login'].', на Ваш игровой счет зачислено '.$nick['ekr'].' Еврокредитов. Благодарим Вас за покупку!'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$user['city']."','".$user['room']."','','".$user['login']."','".$r."','-1','5','0')"); - //echo $r."r
        "; - + if ($nick['ref'] !=0) { $refecr=round(($nick['ekr']/10)); mysql_query('UPDATE `users` SET `money2` = `money2` + '.$refecr.' WHERE `id` = "'.$nick['ref'].'" LIMIT 1'); $referal = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$nick['ref'].'" LIMIT 1')); - $r = ''.date('d.m.Y H:i').' / : '; + $r = ''.date('d.m.Y H:i').' Алхимик Администратор / Реферальный заработок сообщает: '; if($referal['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' '.$referal['login'].', '.$refecr.' . !'.$user['login'].''; - //$str1 = iconv("cp1251","UTF-8",$r); + $r .= ' '.$referal['login'].', на Ваш игровой счет зачислено '.$refecr.' Еврокредитов. Благодоря вашему рефералу!'.$user['login'].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$referal['city']."','".$referal['room']."','','".$referal['login']."','".$r."','-1','5','0')"); } - echo ": ".$user['login']." | ID: ".$nick['uid']." | : ".$nick['ekr']." | ID : ".$_POST['MERCHANT_ORDER_ID']."
        "; + echo "Покупател: ".$user['login']." | ID: ".$nick['uid']." | Сумма: ".$nick['ekr']." | ID операции: ".$_POST['MERCHANT_ORDER_ID']."
        "; if (isset ($referal['id'])) { - echo "( ): ".$referal['login']." | ID: ".$referal['id']." | : ".$refecr."
        "; + echo "Реферал(тот кто привел): ".$referal['login']." | ID: ".$referal['id']." | Сумма: ".$refecr."
        "; } else { - echo " !!"; + echo "Пользователь реферал не найден!!"; } } } else { - echo " !"; + echo "Покупатель не указан!"; } ?> diff --git a/bandit.php b/bandit.php index 858ce200..aec9cde7 100644 --- a/bandit.php +++ b/bandit.php @@ -5,11 +5,11 @@ include_once('_incl_data/__config.php'); include_once('_incl_data/class/__db_connect.php'); $u = User::start(); -if ($u->room['name'] != ' ') { +if ($u->room['name'] != 'Однорукий бандит') { die(); } -// +//Раздаем выйгрыши function get2str($key = '', $val = '') @@ -49,7 +49,7 @@ if (isset($_GET['bet'])) { $s = 3; } if ($u->bank['money2'] >= $s) { - //! + //Играем! $w1 = rand(0, 4); $w2 = rand(0, 4); $w3 = rand(0, 4); @@ -88,7 +88,7 @@ if (isset($_GET['bet'])) { } if (($n == 5 || $n == 4 || $n == 3) && rand(0, 100) >= 50) { - //! + //Играем! $w1 = rand(0, 2); $w2 = rand(0, 3); $w3 = rand(0, 3); @@ -143,9 +143,9 @@ if (isset($_GET['bet'])) { // if ($win > 0) { mysql_query( - "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','390','','','[] " . mysql_real_escape_string( + "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','390','','','[Крупье] Игрок " . mysql_real_escape_string( $u->info['login'] - ) . " " . ($s * $win) . ".00 ., : " . $s . ".00 ., " . $gid . "','" . time( + ) . " выиграл " . ($s * $win) . ".00 екр., ставка: " . $s . ".00 екр., игра №" . $gid . "','" . time( ) . "','6','0')" ); } diff --git a/blago.php b/blago.php index 957fe518..7f1cb2b3 100644 --- a/blago.php +++ b/blago.php @@ -5,8 +5,8 @@ - - +Благодать Алхимика + @@ -491,7 +491,7 @@ input[type=submit]::-moz-focus-inner { border:0; } '); } elseif (!isset($u->info['id'])) { - er(' id
        .'); + er('Возникла проблема с определением id персонажа
        Авторизируйтесь с главной страницы.'); } if ($u->info['online'] < time() - 60) { @@ -47,12 +47,12 @@ $u->stats = $u->getStats($u->info['id'], 0); - - Acombats + + Бойцовский Клуб Acombats + content="Новая браузерная игра combats версии 2. Возможность играть в Бойцовский Клуб с телефона. Играйте без донатов и вливаний в подающий надежды проект старого БК."/> + content="бойцовский клуб игра, бойцовский клуб играть, игра бойцовский клуб, старый бойцовский Клуб, бойцовский клуб онлайн игра, бойцовский клуб браузерная игра, играть в бойцовский клуб, игра бк, бк игра, старый бк, играть в бк, бк онлайн игра, новый бк, Легендарный Бойцовский Клуб, легендарный бк, combats, комбатс, combats ru, combats com, OldBK, oldbk ru, oldbk com, олдбк, old bk, олд бк, mycombats, rebk, recombats, oldcombats, obk2"/> @@ -250,7 +250,7 @@ $u->stats = $u->getStats($u->info['id'], 0); } .qel0 { - dispaly: none; + display: none; position: absolute; z-index: 100000; border: 4px solid #f5cc50; @@ -260,16 +260,16 @@ $u->stats = $u->getStats($u->info['id'], 0); - + -

        -

        -

        +

        Временно автоматический прием платежей приостановлен

        +

        Мы переходим на новую систему приема платежей

        +

        Если Вы хотите приобрести ЕКР прямо сейчас пожалуйста обратитесь к персанажу Администратор

        \ No newline at end of file diff --git a/ekr2.php b/ekr2.php index 5e096481..953a6c84 100644 --- a/ekr2.php +++ b/ekr2.php @@ -2,7 +2,7 @@ if(!isset($backdoor)) { define('GAME',true); - //10:05 ! 0.13 . ! + //10:05 Внимание! Вы успешно пополнили свой игровой счїт на 0.13 ЕКР. Приятной Вам игры! require_once('_incl_data/__config.php'); require_once('_incl_data/class/__db_connect.php'); @@ -30,15 +30,15 @@ if(!isset($backdoor)) { } if( $mnw != 0 && $mnw > $width ) { - self::$error = ' '.$mnw.' . ( '.$width.'x'.$height.')'; + self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mxw != 0 && $mxw < $width ) { - self::$error = ' '.$mxw.' . ( '.$width.'x'.$height.')'; + self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mnh != 0 && $mnh > $height ) { - self::$error = ' '.$mnh.' . ( '.$width.'x'.$height.')'; + self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mxh != 0 && $mxh < $height ) { - self::$error = ' '.$mxh.' . ( '.$width.'x'.$height.')'; + self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( !is_dir( self::$save_path ) ) { - self::$error = ' !'; + self::$error = 'Ошибка на стороне сервера!'; }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { if ( (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& @@ -53,21 +53,21 @@ if(!isset($backdoor)) { $fn2 = $cnm; } if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // , Rimage + // система изменения размера , требуется Rimage //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // + //@unlink(self::$save_path . $fn); // удаление файла return array($fn2,$fn,self::$save_path . $fn); } else { - self::$error = ' '; + self::$error = 'Ошибка загрузки файла'; } } else { - self::$error = ' . : '.$exts.''; + self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; } } else { - self::$error = ' . '.$max_mb.' '; + self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; } } else { - self::$error = ' '; + self::$error = 'Файл не найден'; } return false; } // end saveimg @@ -81,8 +81,8 @@ if(!isset($backdoor)) { $ball = 0+$ball[0]; } -$day1def = 50; // . . -$day2def = 1000 * ($u->info['level']-7); // . . +$day1def = 50; //сколько екр. в день можно менять на кр. +$day2def = 1000 * ($u->info['level']-7); //сколько кр. в день можно менять на екр. $day1 = $day1def; $day2 = $day2def; @@ -91,8 +91,8 @@ if( $day2 < 0 ) { $day2 = 0; } $timetoday = strtotime(date('d.m.Y')); // -$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); -$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); +$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); +$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; @@ -103,7 +103,7 @@ if($day1 < 0) { $day1 = 0; } if($day2 < 0) { $day2 = 0; } -$b1 = 0; // +$b1 = 0; //бонус накопительный $bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); @@ -168,9 +168,9 @@ if(!isset($backdoor)) { if(isset($_POST['do']) && $_POST['do'] == 'newShadow') { $o = mysql_fetch_array(mysql_query('SELECT * FROM `_obraz` WHERE `uid` = "'.$u->info['id'].'" AND `good` = 0 AND `cancel` = 0 AND `img` = "'.mysql_real_escape_string($_POST['ffinput']).'" LIMIT 1')); if(!isset($o['id'])) { - $u->error = ' ! !'; + $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; }elseif( $o['price'] > $u->info['money2'] ) { - $u->error = ' '; + $u->error = 'На счету недостаточно ЕКР'; }else{ // $u->info['money2'] -= $o['price']; @@ -178,13 +178,13 @@ if(!isset($backdoor)) { // mysql_query('UPDATE `_obraz` SET `good` = "'.time().'" WHERE `id` = "'.$o['id'].'" LIMIT 1'); if( $o['type'] == 1 || $o['type'] == 2 ) { - // + //Личный или Клановый copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/obraz/'.$o['sex'].'/buy'.$o['id'].'.gif'); }elseif( $o['type'] == 3 ) { - // + //Питомец copy('clan_prw/'.$o['img'],'./img.new-combats.com/pet/buy'.$o['id'].'.gif'); }elseif( $o['type'] == 5 ) { - // + //Питомец copy('clan_prw/'.$o['img'],'./img.new-combats.com/i/smile/s'.$o['id'].'.gif'); } // @@ -201,41 +201,41 @@ if(!isset($backdoor)) { } // if( $o['type'] == 1 || $o['type'] == 2 ) { - // + //Личный и клановый mysql_query('INSERT INTO `obraz` ( `sex`,`uid`,`img`,`usr_add`,`clan` ) VALUES ( "'.$o['sex'].'","'.$o['uid1'].'","buy'.$o['id'].'.gif","'.$o['uid'].'","'.$o['clan'].'" )'); }elseif( $o['type'] == 3 ) { - // + //Питомца mysql_query('INSERT INTO `obraz_pet` ( `uid`,`time`,`img` ) VALUES ( "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string('buy'.$o['id'].'.gif').'" )'); }elseif( $o['type'] == 5 ) { - // + //Смайлик $u->info['add_smiles'] .= ',s'.$o['id'].''; $u->info['add_smiles'] = ltrim($u->info['add_smiles'],','); mysql_query('UPDATE `users` SET `add_smiles` = "'.$u->info['add_smiles'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); } // if( $o['type'] == 1 ) { - $u->error = ' ! , .'; + $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; }elseif( $o['type'] == 2 ) { - $u->error = ' ! , .'; + $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; }elseif( $o['type'] == 3 ) { - $u->error = ' ! , .'; + $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; }elseif( $o['type'] == 5 ) { - $u->error = ' ! . :s'.$o['id'].':'; + $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s'.$o['id'].':'; } } }elseif(isset($_FILES['img'])) { - // + //Личный образ $ekr = 100; if( $u->info['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow1_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow1').'.gif'; // @@ -262,11 +262,11 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img5'])) { - // + //Личный смайлик $ekr = 10; $ekr_smile = 10; if( $u->info['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_smile_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#smile').'.gif'; // @@ -293,12 +293,12 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img2'])) { - // + //Клановый образ $ekr = 49.99; if( $u->info['clan'] == 0 ) { - echo '{"err":" "}'; + echo '{"err":"Вы должны состоять в клане"}'; }elseif( $u->info['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow2_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow2').'.gif'; // @@ -325,10 +325,10 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img4'])) { - // + //Питомец образ $ekr = 4.99; if( $u->info['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow3_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow3').'.gif'; // @@ -355,63 +355,63 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_POST['kr001'])) { - // . + //Обмен екр на кр. $kr = round($_POST['kr001'],2); if( $c['crtoecr'] < 0.01 ) { - $u->error = ' .'; + $u->error = 'Сегодня обменник закрыт.'; }elseif( $day2 < 0.01 ) { - $u->error = ' , .'; + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; }elseif( $kr < round($c['crtoecr']/100,2) ) { - $u->error = ' '.round($c['crtoecr']/100,2).' .'; + $u->error = 'Минимальная сумма обмена '.round($c['crtoecr']/100,2).' КР.'; }elseif( $kr > $day2 ) { - $u->error = ' '.$day2.' .'; + $u->error = 'Вы можете обменять еще '.$day2.' КР сегодня.'; }elseif( $kr > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег для обмена.'; }else{ $ekr = round($kr / $c['crtoecr'],2); - $u->error = ' '.$kr.' '.$ekr.' .'; + $u->error = 'Вы успешно обменяли '.$kr.' КР на '.$ekr.' ЕКР.'; // $u->info['money'] -= $kr; $u->info['money2'] += $ekr; // mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'"," ","'.$u->info['money'].'","'.$u->info['money2'].'" + "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'","Обмен КР на ЕКР","'.$u->info['money'].'","'.$u->info['money2'].'" )'); } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; $day1 = round($day1def+$dc1,2); $day2 = round($day2def+$dc2,2); }elseif(isset($_POST['ekr2'])) { - // . + //Обмен екр на кр. $ekr = round($_POST['ekr2'],2); if( $c['ecrtocr']*2.5 < 0.01 ) { - $u->error = ' .'; + $u->error = 'Сегодня обменник закрыт.'; }elseif( $day1 < 0.01 ) { - $u->error = ' , .'; + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; }elseif( $ekr < 0.01 ) { - $u->error = ' 0.01 .'; + $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; }elseif( $ekr > $day1 ) { - $u->error = ' '.$day1.' .'; + $u->error = 'Вы можете обменять еще '.$day1.' ЕКР сегодня.'; }elseif( $ekr > $u->info['money2']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег для обмена.'; }else{ $kr = round($ekr * $c['ecrtocr']*2.5,2); - $u->error = ' '.$ekr.' '.$kr.' .'; + $u->error = 'Вы успешно обменяли '.$ekr.' ЕКР на '.$kr.' КР.'; // $u->info['money'] += $kr; $u->info['money2'] -= $ekr; // mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'"," ","'.$u->info['money'].'","'.$u->info['money2'].'" + "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'","Обмен ЕКР на КР","'.$u->info['money'].'","'.$u->info['money2'].'" )'); } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; $day1 = round($day1def+$dc1,2); @@ -421,7 +421,7 @@ if(!isset($backdoor)) { function en_ru($txt) { $g = false; $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9-- _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } @@ -429,7 +429,7 @@ if(!isset($backdoor)) { } // function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM޿'; + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMїЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮїйцукенгшщзхъфывапролджэячсмитьбю'; $r = false; $i = 0; while( $i != -1 ) { @@ -460,11 +460,11 @@ if(!isset($backdoor)) { function is_login($login) { $r = true; // - $login = htmlspecialchars($login,NULL,'cp1251'); + $login = htmlspecialchars($login,NULL); // $bad = array( - '' => 1, - '' => 1 + 'Мусорщик' => 1, + 'Мироздатель' => 1 ); // $login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); @@ -474,8 +474,8 @@ if(!isset($backdoor)) { $true = true; // /* - 4 16 , , , '_', '-' . - '_', '-' . + Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. */ // $login = str_replace(' ',' ',$login); @@ -496,7 +496,7 @@ if(!isset($backdoor)) { $true = false; }elseif( testBad($login) == true ) { $true = false; - }elseif( en_ru(str_replace('','',str_replace('','',$login))) == true ) { + }elseif( en_ru(str_replace('ї','е',str_replace('ї','Е',$login))) == true ) { $true = false; } // @@ -509,11 +509,11 @@ if(!isset($backdoor)) { return $r; } if( $u->info['login'] == $_POST['login'] ) { - $u->error = ' ...'; + $u->error = 'Выберите другой логин...'; }elseif( $u->info['money2'] < 25 ) { - $u->error = ' .'; + $u->error = 'Недостаточно средств.'; }else{ - $login = htmlspecialchars($_POST['login'],NULL,'cp1251'); + $login = htmlspecialchars($_POST['login'],NULL); if( is_login($login) == true ) { mysql_query('INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( "'.$u->info['id'].'","'.$u->info['login'].'","'.mysql_real_escape_string($login).'","'.time().'" @@ -525,9 +525,9 @@ if(!isset($backdoor)) { mysql_query("UPDATE `items_users` SET `data` = replace( `data` , 'sudba=".$u->info['login_last']."', 'sudba=".mysql_real_escape_string($u->info['login'])."') WHERE `data` LIKE '%sudba=".mysql_real_escape_string($u->info['login_last'])."%' AND `uid` = '".$u->info['id']."'"); // mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($u->info['login']).'", `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$u->info['login'].'" .'; + $u->error = 'Вы успешно сменили логин на "'.$u->info['login'].'" перезайдите в игру с главной страницы.'; }else{ - $u->error = ' ...'; + $u->error = 'Выберите другой логин...'; } } }elseif(isset($_GET['buy_ekr'])) { @@ -543,11 +543,11 @@ if(!isset($backdoor)) { $out_ekr = 0; } $out_summ = round($out_ekr*$bt['cur'],2); - $inv_desc = ' '.$out_ekr.' ., '.$u->info['id'].', '.round((int)$_POST['ref']).''; + $inv_desc = 'Приобрести '.$out_ekr.' екр., персонаж №'.$u->info['id'].', дилер №'.round((int)$_POST['ref']).''; // $shp_item = 0; // - // , + //Бонус опытовый, первичный и накопительный $out_ekr0 = $out_ekr; // $out_ekr += round($out_ekr0/100*$bns[$b1][1],2); @@ -563,7 +563,7 @@ if(!isset($backdoor)) { $out_ekr += round($out_ekr0/100*20,2); } // - // + //Добавляем в базу mysql_query('INSERT INTO `pay_operation` ( `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` ) VALUES ( @@ -575,24 +575,24 @@ if(!isset($backdoor)) { $shp_item = mysql_insert_id(); if($shp_item > 0) { - // + //ожидаем оплаты }else{ - die(' , '); + die('Ошибка в обработке платежа, обратитесь к Администрации'); } if($out_ekr < 1) { - die(' 1 .'); + die('Минимальная сумма покупки 1 екр.'); } // - // + // предлагаемая валюта платежа // default payment e-currency $in_curr = ""; - // + // язык // language $culture = "ru"; $currency = "RUB"; - // + // формирование подписи // generate signature @@ -601,7 +601,7 @@ if(!isset($backdoor)) { //$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); $crc = md5($mrh_login.':'.$out_summ.':'.$mrh_pass1.':'.$currency.':'.$shp_item); //$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id); - // + // форма оплаты товара // payment form $url = 'https://pay.freekassa.ru/'; $url .= 'm='.$mrh_login.'&'; @@ -624,14 +624,14 @@ if(!isset($backdoor)) { '> - + */ header('location: '.$url); die(); print "". "
        ". - " : ".$out_ekr." . ". + "Сумма платежа: ".$out_ekr." Екр. ". "". "". "". @@ -640,8 +640,8 @@ if(!isset($backdoor)) { "". "". "". - "
        ". - "( )". + "
        ". + "(Все средства идут на развитие и улучшение игры)". "
        "; die(); } @@ -649,10 +649,10 @@ if(!isset($backdoor)) { ?> - - + Покупка ЕвроКредитов - Бойцовский Клуб - + @@ -681,20 +681,20 @@ if(!isset($backdoor)) {
        - info['id'])) { ?> -
        : '.$u->microLogin($u->info['id'],1).'';?>
        +
        Персонаж: '.$u->microLogin($u->info['id'],1).'';?>
        error != '' ) { echo '
        '.$u->error.'
        '; @@ -705,16 +705,16 @@ if(!isset($backdoor)) { - + @@ -660,7 +660,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        ! ,
        20% . +
        Акция! При первом пополнении баланса,
        Вы получаете дополнительно 20% ЕКР к сумме покупки БЕСПЛАТНО.
        - : % ( ) + Ваш накопительный бонус: % ( ЕКР)
        - + Покупка ЕКР -
        - :  
        + + Сумма ЕКР:  
        - +
         
         
         
        @@ -748,31 +748,31 @@ if(!isset($backdoor)) { var ekrr = ekr + ekr2 + ekr3 + ekr7; ekrr = Math.round(ekrr*100)/100; - //document.getElementById('calc').innerHTML = ekr+' + '+ekr2+' + '+ekr3+' = '+ekrr+' '; - document.getElementById('calc').innerHTML = ' : '+ekr2+'
        : '+ekr3+'
        1- : '+ekr7+'
        : '+ekrr+' '; + //document.getElementById('calc').innerHTML = ekr+' + '+ekr2+' + '+ekr3+' = '+ekrr+' ЕКР'; + document.getElementById('calc').innerHTML = 'Накопительный бонус: '+ekr2+' ЕКР
        Оптовый бонус: '+ekr3+' ЕКР
        Акция на 1-ое пополнение: '+ekr7+' ЕКР
        Итого: '+ekrr+' ЕКР'; } calc(); - - + +
        1
        1 *
        1 ЕКР Рублей
        1 ЕКР Доллара *
        - * -
        - , ! + * - зависит от текущих курсов валют
        + Доставка игровой валюты производится в автоматическом режиме, сразу же после оплаты!

        - , 1 . , FREE-KASSA. + При оплате могут возникать задержки на пополнение, обычно не более 1 часа. Если по истечению нескольких часов деньги так и не поступили на ваш баланс, то необходимо обратиться в службу поддержки FREE-KASSA.


        -
        -
        - +
        +
        +
        - , , . + Если Вы очень хотели бы положить деньги на игровой счїт, но нет подходящей платїжной системы, обратитесь за помощью к Администратору проекта.

        @@ -782,16 +782,16 @@ if(!isset($backdoor)) {
        - : info['money2']?> info['money']?> . + Ваш баланс счїта: info['money2']?> ЕКР и info['money']?> КР.
        - -
        - 1=:    
        + Обмен + + Обменять ЕКР на КР по курсу 1ЕКР=КР:    
        -
        - =1:  
        + + Обменять КР на ЕКР по курсу КР=1ЕКР:  
        - + Накопительные бонусы - - - - - - - - - - - + + + + + + + + + + +
        800 10%3 000 30%
        700 9%2 500 27%
        600 8%2 000 25%
        500 7%1 700 23%
        400 6%1 500 21%
        300 5%1 300 19%
        200 4%1 200 17%
        100 3%1 100 15%
        50 2%1 000 13%
        10 1%900 11%
        ЕКРБонусЕКРБонус
        800 ЕКР10%3 000 ЕКР 30%
        700 ЕКР9%2 500 ЕКР 27%
        600 ЕКР8%2 000 ЕКР 25%
        500 ЕКР7%1 700 ЕКР 23%
        400 ЕКР6%1 500 ЕКР 21%
        300 ЕКР5%1 300 ЕКР 19%
        200 ЕКР4%1 200 ЕКР 17%
        100 ЕКР3%1 100 ЕКР 15%
        50 ЕКР2%1 000 ЕКР 13%
        10 ЕКР1%900 ЕКР11%
        - + Оптовые бонусы - - - - + + + +
        10%10%10%10%10%
        10 20 30 40 50
        10%10%10%10%20%
        60 70 80 90 100
        Бонус10%10%10%10%10%
        Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
        Бонус10%10%10%10%20%
        Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
        @@ -862,16 +862,16 @@ if(!isset($backdoor)) {
        Коммерческие услуги
        : Страницы:
        r >= 1) { - // + //смотрим разделы ?> @@ -674,18 +674,18 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 @@ -693,7 +693,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 @@ -709,7 +709,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 @@ -722,7 +722,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 @@ -736,14 +736,14 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        user == false) { - echo '
        '; + echo 'Вы не авторизованы
        Войти на персонажа'; } else { - echo ' :
        ' . $u->microLogin( + echo 'Вы вошли как:
        ' . $u->microLogin( $u->info['id'], 1 ) . '

        '; } ?> user['align'] > 1 && $f->user['align'] < 2) || ($f->user['align'] > 3 && $f->user['align'] < 4) || $f->user['admin'] > 0) { - echo '
        [' . $mod . ']'; + echo '
        «Модерирование» [' . $mod . ']'; } if ($f->user['admin'] > 0 || $mod2 == 'on') { - echo '
        [' . $mod2 . ']'; + echo '
        «Администрирование» [' . $mod2 . ']'; } ?>
        -
        +
        Конференция
        + width="15" height="15" title="Смайлики"> Смайлики



        "' . $f->fm['name'] . '"

        ' . $f->fm['opisan']; ?>
        + echo '

        Конференция "' . $f->fm['name'] . '"



        ' . $f->fm['opisan']; ?>
        : Страницы:
        -
        : Поиск:
        + type="submit" value="найти">
        @@ -762,7 +762,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        : Страницы:
        @@ -776,16 +776,16 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        gd[$f->fm['id']] != 2 && $f->gd[$f->fm['id']] != 4 && $f->user['admin'] == 0) { - echo '



        '; + echo '

        Вы не можете создавать топики в этой конференции

        '; } elseif ($f->lst['time'] < time() - 60) { ?>
        - @@ -796,20 +796,20 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 wrap="virtual"> @@ -818,7 +818,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 @@ -952,20 +952,20 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 ); if (isset($url1['id'])) { - $url1 = '« '; + $url1 = '« предыдущая ветвь'; } else { - $url1 = '« '; + $url1 = '« предыдущая ветвь'; } if (isset($url2['id'])) { - $url2 = ' »'; + $url2 = 'следующая ветвь »'; } else { - $url2 = ' »'; + $url2 = 'следующая ветвь »'; } ?> -
        ||
        +
         | форум | 
        @@ -977,7 +977,7 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 paginator(2); ?> - @@ -991,11 +991,11 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0 user['align'] > 1.5 || $f->user['align'] > 3.05 || $f->user['admin'] > 0) && $f->mod == 1) { ?>
        - : see['nocom']]; ?>
        - + see['nocom'] == 0) { ?> see['fixed'] == 0) { ?> seeTopic(); ?>
        - @@ -1091,37 +1091,37 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        see['nocom'] > 0) { - echo '



        '; + echo '

        Обсуждение закрыто

        '; } elseif ($f->see['goodAdd'] != 1 || $f->pravasee() != 1) { - echo '

        .
        ' . round( + echo '

        Вы не можете оставлять ответы в этом топике.
        Попробуйте через ' . round( $f->lst['time'] + 62 - time() - ) . ' .

        '; + ) . ' сек.

        '; }/*elseif($f->gd[$f->see['fid']]!=3 && $f->gd[$f->see['fid']]!=4 && $f->user['admin']==0) { - echo '



        '; + echo '

        Вы не можете оставлять ответы в этом топике

        '; }*/ elseif ($f->lst['time'] < time() - 60) { ?>

        -

        - +

        Добавить свой вопрос в + форум

        + Тема сообщения
        + type="button" class="btn" value=" Ж " + title="Жирный">
        + type="button" class="btn" value=" К " + title="Наклонный">
        + type="button" class="btn" value=" Ч " + title="Подчеркнутый">
        + type="button" class="btn" value="Код" + title="Текст программы">
        user['admin'] > 0) { - echo '

        '; + echo '

        '; } ?>
        : Страницы:
        : Страницы:
        - + + value="Код" title="Текст программы"> - + echo $code; ?>">Вернуться на форум

        Добавить свой ответ

        + value=" Ж " title="Жирный">
        + value=" К " title="Наклонный">
        + value=" Ч " title="Подчеркнутый">
        @@ -1129,12 +1129,12 @@ function MM_jumpMenu(targ, selObj, restore) { //v3.0
        user['admin'] > 0) { - echo '

        '; + echo '

        '; } ?>
        : Ошибка: error; ?>
        -

        free-kassa.ru

        +

        Оплата через free-kassa.ru

        - + Введите сумму для оплаты
        - * + Номер заявки*
        - +
        diff --git a/gate.php b/gate.php index 89c58eef..105479e5 100644 --- a/gate.php +++ b/gate.php @@ -20,7 +20,7 @@ if( $md5 != $_GET['md5'] ) { unset($_GET['in']); }else{ - echo ' .. !'; + echo 'Нельзя создать т.к. не верный ключ и данные!'; } if( $_GET['exp'] > 300000 ) { @@ -51,7 +51,7 @@ if( isset($_GET['in']) ) { - // + //Создаем персонажа if( (int)$_GET['ref'] > 0 ) { mysql_query("UPDATE `users` SET `referals` = `referals` + 1 WHERE `id` = '".mysql_real_escape_string((int)$_GET['ref'])."' LIMIT 1"); } @@ -81,11 +81,11 @@ if( $uid > 0 ) { mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($login).'" WHERE `id` = "'.$uid.'" LIMIT 1'); - // + //Создаем статы персонажа mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('".$uid."','".time()."')"); mysql_query("INSERT INTO `stats` (`id`,`stats`,`exp`) VALUES ('".$uid."','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10','".mysql_real_escape_string($_GET['exp'])."')"); - // + //мульты $ipm1 = mysql_fetch_array(mysql_query('SELECT * FROM `logs_auth` WHERE `uid` = "'.mysql_real_escape_string($uid).'" AND `ip`!="'.mysql_real_escape_string(GetRealIpTest()).'" ORDER BY `id` ASC LIMIT 1')); $ppl = mysql_query('SELECT * FROM `logs_auth` WHERE `ip`!="" AND (`ip` = "'.mysql_real_escape_string(GetRealIpTest()).'" OR `ip`="'.mysql_real_escape_string($ipm1['ip']).'" OR `ip`="'.mysql_real_escape_string($_COOKIE['ip']).'")'); while($spl = mysql_fetch_array($ppl)) @@ -98,14 +98,14 @@ } mysql_query("INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('".$uid."','".mysql_real_escape_string(GetRealIpTest())."','".mysql_real_escape_string($_SERVER['HTTP_USER_AGENT'])."','1','".time()."','')"); - // + //Обновяем таблицы mysql_query("UPDATE `users` SET `online`='".time()."',`ip` = '".mysql_real_escape_string(GetRealIpTest())."' WHERE `uid` = '".$uid."' LIMIT 1"); if(!setcookie('login',$login, (time()+60*60*24*7) , '' , '.new-combats.com' ) || !setcookie('pass',$pass, (time()+60*60*24*7) , '' , '.new-combats.com' )) { - die(' cookie.'); + die('Ошибка сохранения cookie.'); }else{ /* - die(' !
        '); + die('Спасибо за регистрацию!
        '); */ } header('location: /enter.php?login='.$_GET['login'].'&pass='.$_GET['pass'].''); diff --git a/getbattle.php b/getbattle.php index c34482ee..28ca3c4f 100644 --- a/getbattle.php +++ b/getbattle.php @@ -27,10 +27,10 @@ if(isset($user['id']) && $user['battle'] > 0) { $stats['mpNow'] = $stats['mpAll']; } - // + //Получаем данные о поединке $r = ''; - // + //Проверяем размен с текущим противником $bot_go = false; $rd = ''; $sp = mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE ( `uid1` = "'.$user['id'].'" OR `uid2` = "'.$user['id'].'" ) AND `battle` = "'.$user['battle'].'" ORDER BY `time` ASC'); @@ -49,9 +49,9 @@ if(isset($user['id']) && $user['battle'] > 0) { $r .= ',"act":['.$rd.']'; unset($sp,$pl,$rd); - // + //Удары ботов if( $bot_go == true ) { - $error = ' !'; + $error = 'Обычное обновление!'; } if(isset($_GET['global'])) { @@ -59,7 +59,7 @@ if(isset($user['id']) && $user['battle'] > 0) { $bt = mysql_fetch_array(mysql_query('SELECT `id`,`timeout`,`hod` FROM `battle` WHERE `id` = "'.$user['battle'].'" LIMIT 1')); if(isset($bt['id'])) { - // . + //Получение инф. о пользователях в бою $rd = ''; $sp = mysql_query('SELECT `id`,`login`,`level`,`align`,`clan` FROM `users` WHERE `battle` = "'.$bt['id'].'"'); while( $pl = mysql_fetch_array($sp) ) { @@ -70,10 +70,10 @@ if(isset($user['id']) && $user['battle'] > 0) { $r .= ',"u":['.$rd.']'; }else{ - $error = ' ...'; + $error = 'Поединок не найден...'; } - // + //Эффекты текущего персонажа и противника $r .= ',"eff_me":['; $i = 0; $sp = mysql_query('SELECT * FROM `eff_users` WHERE ( `uid` = "'.$user['id'].'" OR `uid` = "'.$stats['enemy'].'" ) AND `delete` = "0" ORDER BY `id` DESC'); @@ -105,9 +105,9 @@ if(isset($user['id']) && $user['battle'] > 0) { // }elseif(isset($_GET['loading'])) { - // + //Загрузда дополнительных данных if(isset($_GET['uload']) && $_GET['uload'] != '0') { - // + //Загрузка пользователей $ex = explode(',',$_GET['uload']); $i = 1; $rd = ''; @@ -149,7 +149,7 @@ if(isset($user['id']) && $user['battle'] > 0) { $rd .= ',"sex":'.( 0 + $us['sex'] ).''; $rd .= ',"obraz":"'.$us['obraz'].'"'; // - // + //Предметы $ri = ''; $sp = mysql_query('SELECT `id`,`item_id`,`inOdet`,`magic_inc` FROM `items_users` WHERE `uid` = "'.$us['id'].'" AND `delete` = 0 AND `inOdet` > 0'); while( $pl = mysql_fetch_array($sp) ) { @@ -172,7 +172,7 @@ if(isset($user['id']) && $user['battle'] > 0) { $ri = ltrim($ri,','); $rd .= ',"itm":['.$ri.']'; // - // ( ) + //Эффекты (не требуется кэширование) $ri = ''; $ri = ltrim($ri,','); @@ -191,7 +191,7 @@ if(isset($user['id']) && $user['battle'] > 0) { } // if(isset($_GET['pload']) && $_GET['pload'] != '0') { - // + //Загрузка приемов $ex = explode(',',$_GET['pload']); $i = 1; $rd = ''; @@ -229,7 +229,7 @@ if(isset($user['id']) && $user['battle'] > 0) { } }else{ - $error = ' ...'; + $error = 'Пользователь в бою не найден...'; } echo '{ "btl":"'.(0+$bt['id']).'" , "hod":"'.(0+$bt['hod']).'" , "you":"'.(0+$user['id']).'" , "enemy":"'.(0+$stats['enemy']).'" , "pr": [ "'.$stats['priems'].'" , "'.$stats['priems_z'].'" , '.(0+$stats['priemslot']).' ] , "dm":"'.floor($stats['battle_yron']).'" , "to":"'.round($bt['timeout']/60,2).'" , "r":{ '.ltrim($r,',').' } , "e":"'.$error.'" , "t1":"'.$stats['tactic1'].'" , "t2":"'.$stats['tactic2'].'" , "t3":"'.$stats['tactic3'].'" , "t4":"'.$stats['tactic4'].'" , "t5":"'.$stats['tactic5'].'" , "t6":"'.$stats['tactic6'].'" , "t7":"'.$stats['tactic7'].'" }'; diff --git a/goodpay.html b/goodpay.html index 7b6f08b3..5b87f9ea 100644 --- a/goodpay.html +++ b/goodpay.html @@ -1,10 +1,10 @@ - - - - - + + Браузерная игра - Новый Бойцовский Клуб + + @@ -14,7 +14,7 @@










        -

        , .

        +

        Спасибо Ваша оплата произведена успешно, Еврокредиты начисленны на Ваш игровой аккаунт.

        \ No newline at end of file diff --git a/google1e8137940620dbf5.html b/google1e8137940620dbf5.html deleted file mode 100644 index 3030a299..00000000 --- a/google1e8137940620dbf5.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: google1e8137940620dbf5.html \ No newline at end of file diff --git a/google842f2c9d2efc56a9.html b/google842f2c9d2efc56a9.html deleted file mode 100644 index 1b27945b..00000000 --- a/google842f2c9d2efc56a9.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: google842f2c9d2efc56a9.html \ No newline at end of file diff --git a/head/ahtmlv.js b/head/ahtmlv.js index 774b114e..8b0dbd3e 100644 --- a/head/ahtmlv.js +++ b/head/ahtmlv.js @@ -28,9 +28,9 @@ else {elm['on'+evType]=fn;}}} function getHTextHtml(hti) {var html=['');} +{html.push('Показать
        ');} else -{html.push('
        ');html.push('
        ');html.push(ht.data);html.push('
        ');} +{html.push('Скрыть
        ');html.push('
        ');html.push(ht.data);html.push('
        ');} return html.join('');} function toggleHText(hti) {var ht=hiddenTexts[hti];ht.hidden=!ht.hidden;ht.elt.innerHTML=getHTextHtml(hti);hideHTextsOf(ht.elt);rebuildTabsIn(ht.elt);} diff --git a/head/dungeon.all.js b/head/dungeon.all.js index d13dfe57..161fe4d7 100644 --- a/head/dungeon.all.js +++ b/head/dungeon.all.js @@ -1,3 +1,3 @@ // JS (Akzhan+Newtonsoft) -underground.knowAbout({"KnownDungeons":[{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 "],"Name":"novice","Caption":"","Description":[" , Capital city.",""," . [4] , . ",""," 2 . [4], [5] [6] . [7] .",""," :",""," . , , [4]-[6] , . , , .",""," , ? : , , , . , ."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 ","3 ","4 ","5 "],"Name":"capital","Caption":" ","Description":[" () Capital ity, .",""," [8] . .",""," 5 . [8]-[9] . ."," , [9]-[10] . , .",""," , ."," : 24 999.",""," :",""," : , , , , , . . , . ",""," (.) . (Sand city) - 1.",""," , 3 , . ",""," 4 5 . ."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 ","3 "],"Name":"angel","Caption":"","Description":[" Angels city, .",""," [8] . .",""," 3 . , [8]-[9] .",""," ."," : 10 000.",""," :",""," . . . . . ",""," . "," , - ."," 9- 10- .",""," [9] [9] [10] . "]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 ","3 ","4 "],"Name":"sand","Caption":" ","Description":[" Sand city, .",""," [8] . 1 ( , ).",""," 4 . , [8]-[9] .",""," ."," : 10 000.",""," :",""," - : , , , . , . ",""," . , - , , . \"\" .",""," , , - (+250 ), . , , .",""," [9] [9] [10] . ",""," . . , ."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 ","3 ","4 "],"Name":"demons","Caption":"","Description":[""," Demons city, .",""," [8] . .",""," 4 . , [9]-[10] . , .",""," ."," : 24 999.",""," :"," . ",""," "," . "," [8]. , - . - . . . , , .",""," "," . /. "," , . - , . , . ",""," "," . "," - , . [9]-[10] . - , , - . "," (). ",""," "," - . . , (). ",""," [9] [10] . 4 ."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 ","2 ","3 ","4 "],"Name":"emerald","Caption":" ","Description":[""," Emeralds city, .",""," [8] . , , : (.) , (.). , 1 . 0/500 500 .",""," 4 . , [9]-[10] , .",""," ."," : 24 999.",""," :",""," , . : , . , , ."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["","","",""],"Name":"abandon","Caption":" ","Description":["
        23 2007 - Abandoned Plains.

        ","
        .
        Abandoned Plains.
        \" \", .

        P.S. , 22:00 Abandoned Plains.
        Events

        Abandoned Plains. , , ."]},{"NewLineToBR":false,"IsDungeon":false,"FloorNames":[],"Name":"altar","Caption":" ","Description":[" [6] .
        ","
        \"Devils Devils city, :","

        \"","

        . , . , , . ","

        , , . .","

        , 100 . 100 .","

        [9] [10] .","
        ","

        : , , , , .","
        ","
        ","
        ","
        "]},{"NewLineToBR":true,"IsDungeon":false,"FloorNames":[],"Name":"bookshop","Caption":" ","Description":[" , \"Capital . , , .",""," ( ) . , , . , . , , . , , , , , ( ).",""," . - , - .","",", , . , (), : 25. : 25 . , . .",""," 5 9 . .",""," : , , , ."]},{"NewLineToBR":true,"IsDungeon":false,"FloorNames":[],"Name":"temple","Caption":" ","Description":["

        11 2007 Abandoned Plains \"\" . .
        ","

        .

        ","

        , . . , 4- , .
        , . , , . . , , , . , , , .

        ","

        ?
        - ;
        -

        ","

        .
        () . . , , .

        ","

        .
        , . , . , .

        :
        - , , .
        - : , , , , , , , , , .
        - , ( )

        ","


        ","

        : , , , , .


        "]}]}); +underground.knowAbout({"KnownDungeons":[{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж"],"Name":"novice","Caption":"Канализация","Description":["Вход в Канализацию находится в Зале воинов всех городов, за исключением Capital city.",""," Это подземелье для самых маленьких. В Канализацию открыт доступ для всех игроков достигших [4] уровня, но только персонажи одинакового уровня могут собираться в группы. ",""," В Канализации 2 этажа. Посетить подземелье командой можно только на [4], [5] и [6] уровнях. Начиная с [7] уровня вам придется путешествовать в одиночку.","","Что интересного таит в себе это подземелье:",""," Всем в Канализации заправляет Лука. Он содержит магазинчик, в котором за жетоны разного достоинства, можно купить вещи для [4]-[6] уровня, а также заточки на оружие. Стоит отметить, что купленная в этом магазинчике вещь, будет связана Общей судьбой с купившим ее.",""," Вы спросите, как достать эти жетоны? Все очень просто: убиваем обитателей Канализации, собираем выпавшие из них гайки, болты, вентили и бежим к Луке. Говорят, он меняет все это на жетоны по очень хорошему курсу."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж","3 этаж","4 этаж","5 этаж"],"Name":"capital","Caption":"Пещера Тысячи Проклятий","Description":[" Вход в Пещеру Тысячи Проклятий (ПТП) находится в Capital сity, в Парке Развлечений.",""," Посетить ее могут все игроки достигшие [8] уровня. Для того чтобы попасть в подземелье Вам не надо иметь никаких дополнительных предметов.",""," В Пещере Тысячи Проклятий 5 этажей. Первые три этажа простые и рассчитаны на команду игроков [8]-[9] уровней. Выполняя задания на этих этажах у вас есть шанс получить Рыцарство первого круга.","Четвертый и пятый этажи сложны, рассчитаны на команду игроков [9]-[10] уровней. На этих этажах выполняются задания, на получение Рыцарства второго круга.",""," В данный момент есть возможность получить только рыцарство первого круга, рыцарское задание на получение рыцарства второго круга еще не введено."," Максимально возможный уровень репутации: 24 999.","","Что интересного таит в себе это подземелье:",""," В фонтанах можно найти снадобья: Океанов, Стойкости, Отрицания, Великана, Змеи, Разума и Предчувствия. Для этого у вас должны быть пустые бутылки и ингредиенты типа драгоценных камней для фонтанов третьего этажа. Некоторые фонтаны одарят эликсирами всех членов команды, а некоторые лишь самых расторопных. ",""," Из некоторых монстров кроме ингредиентов после смерти могут выпасть модифицированные (мф.) вещи или магические свитки. Маул Счастливчик после смерти может уронить пропуск в Пещеры Мглы (Sand city) - Отворяющую печать №1.",""," В Мастерской Забытых Мастеров, на 3 этаже, из найденных ингредиентов можно собрать свитки и вещи. ",""," В сундуках 4 и 5 этажей можно найти зелья Каменной Стойкости и Стража Магии. Если Вам повезет вы станете обладателем уникальных свитков для усиления вашего оружия."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж","3 этаж"],"Name":"angel","Caption":"Бездна","Description":[" Вход в Бездну находится в Angels city, на Страшилкиной улице.",""," Посетить ее могут все игроки достигшие [8] уровня. Для того чтобы попасть в подземелье Вам не надо иметь никаких дополнительных предметов.",""," В Бездне 3 этажа. Это не сложное подземелье, рассчитано на команду игроков [8]-[9] уровней.",""," В данный момент есть возможность получить только рыцарство первого круга."," Максимально возможный уровень репутации: 10 000.","","Что интересного таит в себе это подземелье:",""," В фонтане можно найти снадобье Разума. Для этого у вас должна быть пустая бутылка. В сундуках можно найти множество полезных вещей. Не забывайте заглядывать в выбоины и тележки. На третьем этаже советуем проверить все казарменные кровати. ",""," Бездна славится своей Лабораторией и Наковальней. "," В Лаборатории за ингредиенты вы можете создать свитки тактик, а если вы захватили с собой растворители ресурсов - то и сущности ресурсов."," Магия наковальни способна превращать вещи 9-го уровня в вещи 10-го уровня.",""," Наковальня забытых мастеров позволяет улучшить кольца [9] и ожерелья [9] до [10] уровня. "]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж","3 этаж","4 этаж"],"Name":"sand","Caption":"Пещеры Мглы","Description":[" Вход в Пещеры Мглы находится в Sand city, на Страшилкиной улице.",""," Посетить ее могут все игроки достигшие [8] уровня. Для того чтобы попасть в подземелье Вам необходимо иметь Отворяющую печать №1 (выпадает из Маула Счастливчика, Пещера Тысячи Проклятий).",""," В Пещерах Мглы 4 этажа. Это не сложное подземелье, рассчитано на команду игроков [8]-[9] уровней.",""," В данный момент есть возможность получить только рыцарство первого круга."," Максимально возможный уровень репутации: 10 000.","","Что интересного таит в себе это подземелье:",""," Не забудьте захватить с собой парочку пустых бутылок - в фонтанах можно получить эликсиры: Зарева, Океана, Недр, Урагана и Великое Зелье Отрицания. В сундуках можно найти драгоценные камни, зелье манны или модифицированные вещи. ",""," Фонтан Времени поможет сделать ваши мешки вечными. Правда, при его строительстве что-то пошло не так, и потому, не все мешки подвластны его магии. \"Увековечить\" мешок сможет лишь один человек из команды.",""," Кстати, если вам повезет, вы сможете получить уникальный мешок - Мешок Забытых (+250 к вместимости рюкзака), для это вам просто надо убить Рульфа Хрумпта. Правда, поговаривают, что выпадет он редко.",""," Наковальня забытых мастеров позволяет улучшить пояса [9] и наручи [9] до [10] уровня. ",""," Из подземелья существует два специальных выхода. Расположенны они на третьем и четвертом этажах. Выйдя через них, Вы сможете сразу же посетить подземелье вновь."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж","3 этаж","4 этаж"],"Name":"demons","Caption":"Катакомбы","Description":[""," Вход в Катакомбы находится в Demons city, на Центральной площади.",""," Посетить ее могут все игроки достигшие [8] уровня. Для того чтобы попасть в подземелье Вам не надо иметь никаких дополнительных предметов.",""," В Катакомбах 4 этажа. Это сложное подземелье, рассчитано на команду игроков [9]-[10] уровней. Стоить отметить, что это самое большое подземелье на просторах Бойцовского Клуба.",""," В данный момент есть возможность получить только рыцарство первого круга."," Максимально возможный уровень репутации: 24 999.","","Что интересного таит в себе это подземелье:"," Подземелье напичкано опасными ловушками и сложными противниками. ",""," Первый этаж "," Прелюдия к подземелью. "," Рассчитан на сыгранную партию из пяти персонажей [8]. Уровень наполнен дварфами, часть из которых - ожившие мертвецы. Главари - Офицер Глубин и Берсерк. Дорог на второй этаж две. Первая ведёт через Офицера Глубин и водосток к логову Епископа. Вторую дорогу, начинающуюся с трещины, охраняют Слизи и ведет она к логову Чернокнижника.",""," Второй этаж "," Место обитания главарей. Расчитан на сыгранную партию девятых уровней или восьмых с магией лечения/воскрешения. ","Чернокнижник ведет за собой мертвых, а Епископ пытается спасти живых. Там же появляются страшные обитатели Катакомб - слизни, всегда готовые напасть на отставшего. У каждого из главарей лежит половинка пирамидального ключа, который потребуется для получения могущественных свитков. ",""," Третий этаж "," Сердце Катакомб. "," Обитатели этажа - различные зомби, скелеты и ужасающие пожиратели падали парализующие свою жертву. Этаж рассчитан на персонажей [9]-[10] уровней. Хранители этажа - древний колдун, ставший Проклятым Пленником, жуткий монстр - Трупожор и Шут самого Повелителя Катакомб. ","Каждый из хранителей может уронить разряженый свиток усиления (зачарования). ",""," Четвертый этаж "," Последний этаж Катакомб - святилище Повелителя. Дошедшие до этого места могут считать себя героями. Если у них есть пирамидальный ключ и разряженые свитки, могут собрать свиток усиления (зачарования). ",""," Появилась возможность улучшить серьги [9] до [10] уровня. Сделать это можно в Наковальне забытых мастеров на 4 этаже подземелья."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["1 этаж","2 этаж","3 этаж","4 этаж"],"Name":"emerald","Caption":"Потерянный вход","Description":[""," Вход в Подземелье Потерянных находится в Emeralds city, на Центральной площади.",""," Посетить ее могут все игроки достигшие [8] уровня. Для того, чтобы попасть в подземелье, Вам необходимо иметь визу и специальные очки: (жен.) , (муж.). Визу можно купить за креды у хранителя города Бугага, а очки можно приобрести в магазине Березка за 1 екр. Очки имеют долговечность 0/500 и расчитаны на 500 посещений города.",""," В Подземелье Потерянных 4 этажа. Это подземелье повышенной сложности, рассчитано на артников или команду игроков [9]-[10] уровней, приемущественно магов.",""," В данный момент есть возможность получить только рыцарство первого круга."," Максимально возможный уровень репутации: 24 999.","","Что интересного таит в себе это подземелье:",""," В Подземелье Потерянных вас ждут новые боты, новые фонтаны и даже возможность чинить артефакты. Артефакты можно починить в трех Мастерских: на первом, втором и четвертом этажах подземелья. Причем, чем глубже расположилась мастерская, тем дешевле обойдется вам ремонт."]},{"NewLineToBR":true,"IsDungeon":true,"FloorNames":["Приемная","Зомби","Проклятья","Души"],"Name":"abandon","Caption":"Сторожевая Башня","Description":["
        23 февраля 2007 года на просторах Бойцовского Клуба был открыт новый город - Abandoned Plains.

        ","
        Враги уже на границе.
        В срочном порядке были организованы порталы в пригородную зону Abandoned Plains.
        Всем желающим принять посильное участие в обороне следует посетить \"Сторожевую Башню\", получить повестку и выполнить задание.

        P.S. По непроверенным данным, прибытие Общего Врага ожидается в 22:00 в Abandoned Plains.
        © Events

        «Сторожевая Башня» расположилась на центральной площади Abandoned Plains. Посетив ее и выполнив задание, можно получить уникальное материальное вознаграждение, которое зависит от уровня Вашего персонажа."]},{"NewLineToBR":false,"IsDungeon":false,"FloorNames":[],"Name":"altar","Caption":"Алтарь Крови","Description":["Посетить Алтарь Крови может каждый персонаж достигший [6] уровня.
        ","
        Вход в Алтарь Крови находится на Страшилкиной улице \"Devils Devils city, в здании Арены:","

        \"Алтарь","

        Атарь Крови представляет из себя магазин и жертвенный алтарь. Алтарь принимает в жертву и к обмену кровавые рубины, которые можно собрать в хаотических боях с помощью специального кольца. Пожертвовав определённое количество рубинов, становится возможным обменивать рубины на различные свитки, эликсиры и растворители ресурсов. ","

        Большая часть товаров, приобретённых в Алтаре, имеет значок подарка. Остальная часть связывается общей судьбой при покупке.","

        Существует возможность получить рыцарство Алтаря Крови, для этого необходимо принести в жертву 100 кровавых рубинов. Пожертвовать больше 100 рубинов пока не возможно.","

        Рыцарям Алтаря доступно улучшение поножей [9] до [10] уровня.","
        ","

        Более подробную информацию об Алтаре Крови вы найдете на закладках: Кольца, Сбор Рубинов, Пожертвование, Растворители и Сущности, Ассортимент.","
        ","
        ","
        ","
        "]},{"NewLineToBR":true,"IsDungeon":false,"FloorNames":[],"Name":"bookshop","Caption":"Книжный Магазин","Description":["Книжный магазин – относительная молодая локация, помещенная волей Ангелов на Торговую улицу \"Capital Столицы. Большой выбор товаров в нем, однако же не предполагает печатной продукции и занимательного чтива, но дает возможность каждому игроку выучить новые полезные приемы или же усилиться за счет Книг Саныча.","","Хронологически именно они (книги Саныча) первыми заполнили полки. Гораздо позднее, Администрация приняла манеру вводить новые приемы не «бесплатно и для всех», а завозить обучающие соответствующим приемам и заклинаниям свитки в Книжный магазин. Стоит отметить, что не все товары можно купить только лишь за креды. Для приобретения Бронзовой, Серебряной или Золотой Книги Саныча, вам потребуется соответствующая Квитанция. Свитки Приемов же, имеют в строке ценника, помимо суммы денег, требование эликсира, ресурса, предмета или заклинания (которые изымаются из вашего инвентаря при покупке).","","Все товары здесь связаны общей судьбой с первым купившим их. То есть если вы хотите приобрести какое-то заклинание и у вас нет нужного пещерного ресурса, попросить кого-то купить свиток и передать вам не получится.","","Свитки, обучающие заклинаниям, могут иметь требование на статы для начала изучения. Так, например «Хлебнуть Крови (прием)», требует «Интуиция: 25». Маленькая хитрость: вам совсем не обязательно иметь в данном случае 25 интуиции всегда. Статовыми кольцами вы можете временно поднять ее значение, начать изучение и снова одевать свой привычный комплект. Изученный прием будет доступен и при меньших значениях интуиции.","","Сам процесс изучения длится от 5 до 9 часов и замораживается на время сна в Общежитии. Каждый свиток обучения можно использовать только один раз – изученные приемы и заклинания останутся у вас навсегда.","","Более подробную информацию вы найдете на закладках: Ассортимент, Заклинания, Боевые приемы, Книги Саныча."]},{"NewLineToBR":true,"IsDungeon":false,"FloorNames":[],"Name":"temple","Caption":"Храм Знаний","Description":["

        11 сентября 2007 года в Abandoned Plains открыл свои врата \"\"Храм Знаний. Его обитатели помогут игрокам изучить древние тайны рун.
        ","

        Краткая информация о рунах.

        ","

        Руны – это таинственные предметы, обладающие магическими свойствами. Они создаются при растворении вещей и забирают в себя часть их силы. Растворять можно только вещи, начиная с 4-ого уровня, и только основные части защитной экипировки.
        Чем могущественней предмет, тем мощнее из него может получиться руна и тем более высокий уровень игрока потребуется для ее применения. Чем слабее вещь, тем больше шансов, что растворение пройдет неудачно. Игроки смогут использовать руны для улучшения своей экипировки аналогично свиткам зачаровывания. Как и чарки, руны связывают игрока и вещь общей судьбой, их можно накладывать друг на друга, с потерей свойств более старой. Сами по себе руны не привязаны к игроку, так что их можно передавать или продавать, все, за исключением особенно редких экземпляров.

        ","

        Что даст система рун игрокам?
        - возможность утилизации привязанных и ненужных предметов с пользой для себя;
        - возможность улучшить боевые характеристики своих вещей по своему вкусу

        ","

        Сотворение рун.
        Руны создаются при уничтожении (растворении) вещей в Храме Знаний. Но такая возможность появляется только при достижении игроком определенного уровня репутации в Храме Знаний . Чем выше репутация, тем более мощные руны можно извлечь из вещи – правда, мощь руны всегда ограничивается уровнем растворяемого предмета.

        ","

        Слияние рун.
        Новые руны игрок сможет получить, путем слияния старых. Из трех рун одной формы получается одна руна той же формы, но с большой вероятностью других магических свойств. Таким образом, можно будет создавать руны с более подходящими игроку параметрами.

        Некоторые моменты:
        - артефакты переполнены магической силой, растворить их невозможно, равно как и улучшить рунами.
        - растворять и улучшать рунами можно: шлем, наручи, перчатки, броню, пояс, серьги, амулет, кольца, поножи, ботинки.
        - зачарованные свитками вещи, можно улучшать рунами без потери чарок (руны и чарки не замещают друг друга)

        ","

        © Повелитель Снов

        ","

        Более подробную информацию вы найдете на закладках: О храме, О задании, Об алтарях, О рунах, О репутации.


        "]}]}); diff --git a/head/dungeon.constructor.js b/head/dungeon.constructor.js index 0eea8e6f..dba692de 100644 --- a/head/dungeon.constructor.js +++ b/head/dungeon.constructor.js @@ -1 +1 @@ -underground.loadCostructorData({"NewLineToBR":true,"Description":[],"Categories":[{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater1","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater2","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater3","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater4","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater5","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater6","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater7","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater8","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater9","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater10","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater11","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater12","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater13","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater14","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater15","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater16","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater17","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater18","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater19","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 0.3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater25","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater26","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater27","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater28","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater29","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater30","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 1 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater20","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater21","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater22","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater23","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater24","Caption":"","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater31","Caption":" ","Description":[": 1
        ",": 0/1
        ","
        ","


        "," : 3 ."]}],"Name":"mater","Caption":"","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater267","Caption":" ","Description":[": 1
        ",": 40
        ",": 0/1
        "," "]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater261","Caption":" ","Description":[": 1
        ",": 20
        ",": 0/1
        "," "]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater262","Caption":" ","Description":[": 1
        ",": 48
        ",": 0/1
        "," "]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater276","Caption":" ","Description":[": 1
        ",": 28
        ",": 0/1
        "," "]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater275","Caption":" ","Description":[": 1
        ",": 28
        ",": 0/1
        "," "]}],"Name":"mater_knshop","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater_shop7","Caption":" ","Description":[": 0.1
        ",": 0/1
        "," Angels city
        ","
        "]}],"Name":"mater_shop7","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat1","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat3","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat5","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat7","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat9","Caption":" ","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat11","Caption":" ","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat13","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat15","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat17","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat19","Caption":" ","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat23","Caption":" ","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat30","Caption":" ","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat21","Caption":" ","Description":[]}],"Name":"sp_mat","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater7","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater11","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater9","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater17","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater8","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY4","Caption":" : 4","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY5","Caption":" : 5","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]}],"Name":"sp_tacpts","Caption":" ","Description":[" . , .","","C . , - () .",""," 3 . 10 .",""]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_1","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," ",""," K7 . "," , ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_2","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," ",""," U2 . "," , ."]},{"Recipes":[{"Price":0,"PlaceName":"altar_dem","Binding":4,"RecipeParts":[{"Category":"key_cube","Item":"key_cube_1","Count":1},{"Category":"key_cube","Item":"key_cube_2","Count":1}],"Name":"key_cube_recipe","Caption":" ","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_3","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," "]}],"Name":"key_cube","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_1","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," L12 ."," , 2 ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_2","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," I12 ."," , 2 ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_3","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," L15 ."," , 2 ."]},{"Recipes":[{"Price":0,"PlaceName":"altar_cap","Binding":4,"RecipeParts":[{"Category":"key_amul","Item":"key_amul_1","Count":1},{"Category":"key_amul","Item":"key_amul_2","Count":1},{"Category":"key_amul","Item":"key_amul_3","Count":1}],"Name":"key_amul_recipe","Caption":" ","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_4","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," G2 . "]}],"Name":"key_amul","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_1","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," K15 ."," ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_2","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," I15 ."," ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_3","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," G15 ."," ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_4","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," E15 ."," ."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_5","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," C15 ."," ."]},{"Recipes":[{"Price":0,"PlaceName":"altar_cap","Binding":4,"RecipeParts":[{"Category":"key_TR","Item":"key_TR_1","Count":1},{"Category":"key_TR","Item":"key_TR_2","Count":1},{"Category":"key_TR","Item":"key_TR_3","Count":1},{"Category":"key_TR","Item":"key_TR_4","Count":1},{"Category":"key_TR","Item":"key_TR_5","Count":1}],"Name":"key_TR_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_6","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," . ."]}],"Name":"key_TR","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ","","."]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"enh_1_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," , ."," Demons city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_3_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_3_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater22","Count":1}],"Name":"enh_3_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_4_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_4_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater21","Count":1}],"Name":"enh_4_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_5_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_5_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater20","Count":1}],"Name":"enh_5_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," , ."," Demons city"," "," "]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_9_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_9_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater31","Count":1}],"Name":"enh_9_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]}],"Name":"enh","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater10","Count":1},{"Category":"mater","Item":"mater16","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater19","Count":1},{"Category":"mater","Item":"mater27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam2c","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," . : -20"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_unexprc","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," (%): -10"," : "," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":1},{"Category":"mater","Item":"mater15","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam3c","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," . : -20"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater11","Count":1},{"Category":"mater","Item":"mater14","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam1c","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," . : -20"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater26","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam4c","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," . : -20"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_unp10c","Caption":" ","Description":[": 1",": 10 . ",": 0/1"," : 6 . 0 ."," : "," :"," . : -100"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater4","Count":1},{"Category":"mater","Item":"mater14","Count":3},{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_curseb","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 70%"," : 1440 ."," :"," : 10"," : 8"," : "," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":1},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater16","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_curse","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 70%"," : 1440 ."," :"," : 10"," : 8"," : "," Capital city"," "," "]}],"Name":"spell_ug","Caption":"","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater1","Count":4},{"Category":"mater","Item":"mater5","Count":4},{"Category":"mater","Item":"mater9","Count":3},{"Category":"mater","Item":"mater16","Count":2},{"Category":"mater","Item":"mater19","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ing104","Caption":" ","Description":[": 1",": 23 . ",": 0/40"," :"," : 10 "," : 3 "," :"," : +3"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater2","Count":5},{"Category":"mater","Item":"mater11","Count":2},{"Category":"mater","Item":"mater14","Count":1},{"Category":"mater","Item":"mater15","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring83","Caption":" ","Description":[": 1",": 16 . ",": 0/40"," :"," : 10 "," : 10 "," : 2 "," :"," : +2"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater3","Count":5},{"Category":"mater","Item":"mater10","Count":2},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater19","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring85","Caption":" ","Description":[": 1",": 16 . ",": 0/40"," :"," : 10 "," : 2 "," :"," : +2"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater4","Count":3},{"Category":"mater","Item":"mater7","Count":4},{"Category":"mater","Item":"mater8","Count":4},{"Category":"mater","Item":"mater13","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring106","Caption":" ","Description":[": 1",": 20 . ",": 0/20"," :"," : 12 "," : 12 "," : 3 "," :"," (HP): +33"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":2},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring207","Caption":"Simplicity Ring","Description":[": 1",": 31 . (6 .) ",": 0/30"," :"," : 15 "," : 15 "," : 15 "," : 4 "," :"," : +2 "," : +3"," Capital city"," "," "]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater6","Count":5},{"Category":"mater","Item":"mater15","Count":2},{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring99","Caption":" ","Description":[": 1",": 61 . ",": 0/30"," :"," : 20 "," : 20 "," : 20 "," : 7 "," :"," . : +5 % "," . : +1 % "," :"," : +5"," Capital city"," "," "]}],"Name":"rings","Caption":"","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg11","Caption":" ","Description":[": 10",": 150 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," : +20"," (HP): +42"," : 13-48 (12+d36)"," : 13-48 (12+d36)"," :"," : +50"," : [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots23","Caption":" ","Description":[": 10 ",": 150 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +20"," . (%): +20"," : -2"," (HP): +66"," : 35-84 (34+d50)"," :"," : +50"," : [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi79","Caption":" ","Description":[": 1",": 130 .",": 0/30"," :"," : 15"," : 15"," : 8"," : 50"," : 45"," :"," . (%): +40"," : +3"," , : +3"," , : +3"," , : +3"," : +20"," : +1"," : [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater6","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor107","Caption":" ","Description":[": 60",": 380 .",": 0/100"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +50"," . (%): +25"," : +1"," : +30"," (HP): +99"," : +6"," : 31-90 (30+d60)"," :"," : +150",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":215,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":5},{"Category":"mater","Item":"mater6","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet81","Caption":" ","Description":[": 20",": 215 .",": 0/100"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +20"," : +1"," , : +1"," , : +1"," , : +1"," : +50"," (HP): +66"," : 36-85 (35+d50)"," :"," : +25"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet25","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +20"," : +2"," , : +2"," , : +2"," , : +2"," : +30"," (HP): +33"," : +2"," :"," : +25"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt37","Caption":" ","Description":[": 2",": 140 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," : +20"," : +25"," (HP): +99"," : 19-68 (18+d50)"," : [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip81","Caption":" ","Description":[": 1",": 200 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +40"," . (%): +40"," , : +1"," : +10"," : +25"," (HP): +66"," : 1-30 (d30)"," : 1-30 (d30)"," : 1-30 (d30)"," : 1-30 (d30)"," : [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet81","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +35"," . (%): +35"," : +40"," (HP): +99"," : +6"," : 1-25 (d25)"," : 1-25 (d25)"," : 1-25 (d25)"," : 1-25 (d25)"," : [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater21","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring117","Caption":" ","Description":[": 1",": 100 .",": 0/60"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +20"," . (%): +10"," : +25"," (HP): +33"," : 1-15 (d15)"," : 1-15 (d15)"," : 1-15 (d15)"," : 1-15 (d15)"," : [13]","",", , "]},{"Recipes":[{"Price":250,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mace68","Caption":" ","Description":[": 30",": 250 .",": 0/60"," :"," : 15"," : 15"," : 9"," , : 5"," : 50"," : 45"," :"," : +1"," :"," : 22 - 34"," . (%): +80"," . : +20"," , : +1",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword104","Caption":" ","Description":[": 17",": 220 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 5"," : 50"," : 45"," :"," . (%): +40"," : +2"," :"," : 12 - 34"," . (%): +40"," . : +10"," : +2",":"," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":9},{"Category":"mater","Item":"mater6","Count":10}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer71","Caption":" ","Description":[": 30",": 370 .",": 0/60"," :"," : 15"," : 15"," : 9"," , : 5"," : 50"," : 55"," :"," . (%): +20"," : +2"," :"," : 30 - 48"," . (%): +80"," . : +25"," , : +2"," ",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":8},{"Category":"mater","Item":"mater6","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe89","Caption":" ","Description":[": 20",": 260 .",": 0/60"," :"," : 15"," : 15"," : 9"," , : 5"," : 50"," : 45"," :"," : +2"," : +2"," :"," : 15 - 35"," . (%): +80"," . : +20"," , : +2",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife73","Caption":" ","Description":[": 10",": 220 .",": 0/50"," :"," : 20"," : 20"," : 9"," , : 5"," : 50"," : 45"," :"," . (%): +35"," . : +25"," :"," : 5 - 17"," . (%): +80"," , : +3"," . (%): +30"," ",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater19","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield84","Caption":" ","Description":[": 20",": 190 .",": 0/50"," :"," : 15"," : 15"," : 9"," : 50"," : 45"," :"," . (%): +55"," : +25"," (HP): +33"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," :"," . (%): +10",":"," : "," : "," : "," : "," : [13]"]}],"Name":"set1","Caption":"o ax p","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg12","Caption":" ","Description":[": 10 ",": 150 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +20"," . (%): +20"," . (%): +35"," : +10"," (HP): +30"," : 9-35 (8+d27)"," : 9-35 (8+d27)"," :"," : +40"," : [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots22","Caption":" ","Description":[": 10 ",": 150 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +30"," . (%): +30"," . (%): +25"," : +10"," : +25"," (HP): +33"," : +2"," : 9-35 (8+d27)"," : [13]"]},{"Recipes":[{"Price":131,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi77","Caption":" ","Description":[": 1 ",": 131 .",": 0/30"," :"," : 15"," : 50"," : 8"," : 30"," : 30"," :"," . . (%): +10"," . (%): +30"," . (%): +5"," : +3"," , : +3"," , : +3"," , : +3"," : +1"," : [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1},{"Category":"mater","Item":"mater5","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor106","Caption":" ","Description":[": 40",": 380 .",": 0/100"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +75"," . (%): +30"," . (%): +45"," : +2"," : +2"," : +40"," (HP): +66"," : +4"," : 19-54 (18+d36)"," :"," : +125",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":5},{"Category":"mater","Item":"mater5","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet80","Caption":" ","Description":[": 15 ",": 210 .",": 0/60"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +40"," . (%): +20"," . (%): +45"," : +50"," (HP): +33"," : 10-36 (9+d27)"," :"," : +50"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet24","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . . (%): +20"," . (%): +10"," . (%): +25"," : +2"," , : +2"," , : +2"," , : +2"," : +3"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt36","Caption":" ","Description":[": 1 ",": 140 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . . (%): +15"," : +20"," : +25"," : 19-63 (18+d45)"," : [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip80","Caption":" ","Description":[": 1 ",": 200 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . . (%): +25"," . (%): +35"," . (%): +70"," : +2"," : +1"," , : +1"," , : +1"," , : +1"," : +4"," : [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet80","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +65"," . (%): +45"," : +1"," : +30"," : +75"," (HP): +48"," : +1"," : [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater20","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring116","Caption":" ","Description":[": 1",": 100 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . . (%): +10"," . (%): +35"," . (%): +45"," (HP): +33"," : [13]","",", , "]},{"Recipes":[{"Price":250,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mace67","Caption":" ","Description":[": 30",": 250 .",": 0/50"," :"," : 15"," : 45"," : 9"," , : 5"," : 35"," : 40"," :"," : -2"," :"," : 22 - 34"," . (%): +60"," . (%): +60"," . : +20"," , : +1",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":" ","Description":[": 17",": 220 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 5"," : 30"," : 30"," :"," : 12 - 34"," . . (%): +10"," . (%): +50"," . (%): +80"," : +2",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":9},{"Category":"mater","Item":"mater5","Count":10}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer70","Caption":" ","Description":[": 30",": 370 .",": 0/60"," :"," : 15"," : 50"," : 9"," , : 5"," : 35"," : 45"," :"," : -1"," : +1"," :"," : 30 - 48"," . (%): +60"," . (%): +80"," . : +25"," , : +2"," ",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":9},{"Category":"mater","Item":"mater5","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe88","Caption":" ","Description":[": 20",": 260 .",": 0/50"," :"," : 30"," : 50"," : 9"," , : 5"," : 30"," : 30"," :"," : +5"," :"," : 15 - 35"," . (%): +60"," . (%): +50"," . : +10"," , : +2"," ",":"," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife72","Caption":" ","Description":[": 10",": 220 .",": 0/50"," :"," : 20"," : 55"," : 9"," , : 5"," : 30"," : 30"," :"," . . (%): +10"," . (%): +3"," : +2"," :"," : 6 - 17"," . (%): +80"," . (%): +80"," , : +3"," . (%): +25"," ",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater15","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield83","Caption":" ","Description":[": 20",": 190 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 30"," : 30"," :"," . (%): +55"," . (%): +30"," . (%): +5"," (HP): +48"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)",":"," : "," : "," : "," : "," : [13]"]}],"Name":"set2","Caption":"o poao ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater11","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg13","Caption":" ","Description":[": 10 ",": 150 .",": 0/50"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +35"," . (%): +35"," : +25"," (HP): +18"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," :"," : 30"," : [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots21","Caption":" ","Description":[": 10",": 150 .",": 0/50"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +50"," . (%): +50"," : +30"," : 10-36 (9+d27)"," :"," : 50"," : [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi76","Caption":" ","Description":[": 2",": 140 .",": 0/30"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +25"," . (%): +25"," . : +15"," : +1"," (HP): +18"," : [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1},{"Category":"mater","Item":"mater12","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor105","Caption":" ","Description":[": 35",": 380 .",": 0/50"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +40"," . (%): +70"," . (%): +10"," . (%): +80"," . (%): +10"," : +2"," : +30"," (HP): +45"," : 12-44 (11+d33)"," :"," : 75"," : [13]"]},{"Recipes":[{"Price":210,"PlaceName":"laba_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":5},{"Category":"mater","Item":"mater12","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet79","Caption":" ","Description":[": 15",": 210 .",": 0/60"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +35"," . (%): +40"," : +2"," : +1"," , : +1"," , : +1"," , : +1"," : +40"," (HP): +45"," : 10-36 (9+d27)"," :"," : +50",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi78","Caption":" ","Description":[": 1",": 130 .",": 0/30"," :"," : 50"," : 15"," : 8"," : 30"," : 30"," :"," . (%): +35"," : +4"," : +3"," , : +3"," , : +3"," , : +3"," : +1"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt35","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +45"," : +20"," (HP): +33"," : +4"," : 19-63 (18+d45)"," : [13]"]},{"Recipes":[{"Price":200,"PlaceName":"laba_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip76","Caption":" ","Description":[": 1",": 200 .",": 0/60"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +25"," . (%): +25"," . (%): +85"," . (%): +15"," : +2"," : +20"," (HP): +33"," : +4"," : [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet75","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +35"," . (%): +35"," . (%): +110"," . (%): +15"," : +30"," (HP): +66"," : +4"," : [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater23","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring110","Caption":" ","Description":[": 1",": 100 .",": 0/40"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +20"," . (%): +3"," . (%): +45"," . (%): +5"," : +15"," (HP): +18"," : +1"," : [13]","",", , "]},{"Recipes":[{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword102","Caption":" ","Description":[": 17",": 220 .",": 0/50"," :"," : 55"," : 15"," : 9"," : 5"," : 30"," : 30"," :"," . (%): +35"," . (%): +75"," : +1"," :"," : 12 - 34"," : +2"," . (%): +20"," ",":"," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":9},{"Category":"mater","Item":"mater12","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe87","Caption":" ","Description":[": 10 ",": 260 .",": 0/50"," :"," : 60"," : 15"," : 9"," , : 5"," : 30"," : 30"," :"," . (%): +65"," : +3"," :"," : 15 - 35"," . (%): +70"," . : +10"," , : +2"," . (%): +10",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife71","Caption":" ","Description":[": 10",": 220 .",": 0/50"," :"," : 50"," : 25"," : 9"," , : 5"," : 30"," : 30"," :"," . (%): +50"," . : +20"," :"," : 5 - 17"," . (%): +70"," , : +3"," . (%): +65"," ",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater18","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield82","Caption":" ","Description":[": 15 ",": 190 .",": 0/50"," :"," : 50"," : 15"," : 9"," : 30"," : 30"," :"," . (%): +80"," . (%): +35"," : +15"," (HP): +24"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)",":"," : "," : "," : "," : "," : [13]"]}],"Name":"set3","Caption":"o aa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg14","Caption":" ","Description":[": 13",": 150 .",": 0/60"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +30"," . (%): +15"," . (%): +2"," : +10"," : +10"," : -10"," (HP): +39"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," :"," : +35"," : [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots24_du2","Caption":" ","Description":[": 13",": 150 .",": 0/60"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +30"," . (%): +15"," : +10"," : -10"," (HP): +33"," : +2"," : 10-36 (9+d27)"," :"," : +75"," : [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi83_du2","Caption":" ","Description":[": 130 .",": 0/30"," :"," : 25"," : 25"," : 8"," : 30"," : 30"," :"," . (%): +30"," . (%): +4"," : +3"," , : +3"," , : +3"," , : +3"," : +2"," : [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1},{"Category":"mater","Item":"mater2","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor108_du1","Caption":" ","Description":[": 23",": 380 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +85"," . (%): +60"," . (%): +5"," : +50"," : +25"," (HP): +66"," : +5"," : 13-48 (12+d36)"," :"," : +100"," : [13]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":5},{"Category":"mater","Item":"mater2","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet82_du2","Caption":" ","Description":[": 15",": 210 .",": 0/60"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +45"," . (%): +35"," : +20"," : +10"," : -5"," (HP): +33"," : +4"," : 10-36 (9+d27)"," :"," : +75"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet26_du2","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +25"," . (%): +25"," . : +5"," : +2"," , : +2"," , : +2"," , : +2"," : +20"," (HP): +33"," : [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt38_du2","Caption":" ","Description":[" : 1",": 140 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +35"," : +10"," : +25"," : -10"," (HP): +33"," : +4"," : 19-68 (18+d50)"," : [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip82_du2","Caption":" ","Description":[": 1",": 200 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +35"," . (%): +30"," . : +10"," : +1"," , : +1"," , : +1"," , : +1"," : +30"," : +10"," : -10"," : +6"," : [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet83_du2","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +90"," . (%): +10"," : +20"," : +10"," : -10"," (HP): +66"," : +8"," : [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring119_du2","Caption":" ","Description":[": 1",": 100 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +40"," . (%): +25"," . (%): +3"," (HP): +33"," : +3"," : [13]"]},{"Recipes":[{"Price":250,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer72_du2","Caption":" ","Description":[": 30",": 250 .",": 0/100"," :"," : 30"," : 30"," : 9"," , : 5"," : 40"," : 40"," :"," : -1"," : +6"," :"," : 22 - 34"," . (%): +40"," . : +15",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":11},{"Category":"mater","Item":"mater16","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword105_du2","Caption":" ","Description":[": 17",": 220 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 5"," : 35"," : 35"," : "," :"," . (%): +55"," . (%): +3"," : +1"," : +1"," :"," : 12 - 34"," . (%): +30"," : +1"," . (%): +10",":"," : "," : "," : "," : "," : [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater2","Count":8},{"Category":"mater","Item":"mater16","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe90_du2","Caption":" ","Description":[": 15",": 260 .",": 0/50"," :"," : 35"," : 30"," : 9"," , : 5"," : 35"," : 35"," :"," . (%): +50"," . (%): +55"," : +4"," :"," : 16 - 35"," , : +2",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":11},{"Category":"mater","Item":"mater16","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife74_du2","Caption":" ","Description":[": 8",": 220 .",": 0/50"," :"," : 35"," : 35"," : 9"," , : 5"," : 35"," : 35"," :"," . (%): +15"," . (%): +15"," . (%): +10"," . : +10"," , : +1"," : +2"," :"," : 6 - 17"," . (%): +65"," ",":"," : "," : "," : [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater16","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield85_du2","Caption":" ","Description":[": 15",": 190 .",": 0/50"," :"," : 30"," : 30"," : 9"," : 35"," : 35"," :"," . (%): +60"," . (%): +6"," : +10"," (HP): +45"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : [13]"]}],"Name":"set4","Caption":"o po oa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":215,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater17","Count":5},{"Category":"mater","Item":"mater1","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet83","Caption":" ","Description":[": 5",": 215 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," : +6"," : +1"," : +30"," (HP): +60"," : +120"," : 8-8"]},{"Recipes":[{"Price":380,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater1","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"roba51","Caption":" ","Description":[": 5",": 380 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," . (%): +25"," : +3"," . : +20"," (HP): +42"," : +120"," : 5-16 (4+d12)"," :"," : 100"]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg15","Caption":" ","Description":[": 5",": 150 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," : +2"," . : +3"," (HP): +24"," : +90"," : 5-16 (4+d12)"," : 5-16 (4+d12)"," :"," : 10"]},{"Recipes":[{"Price":360,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater17","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"staff52","Caption":" ","Description":[": 5",": 360 .",": 0/50"," : 70%"," :"," : 50"," : 9"," : 3"," : 80"," : 50"," :"," : +2"," . : +15"," : +6"," : +1"," : +50"," (HP): +60"," (%): +3"," :"," : 1 - 20"," ",":"," : "]},{"Recipes":[{"Price":160,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi84","Caption":" ","Description":[": 1 ",": 160 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," : +5 "," . (%): +2 "," : +2 "," : +2 "," : +5 "," (HP): +18 "]},{"Recipes":[{"Price":140,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet27","Caption":" P","Description":[": 2",": 140 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," : +2 "," : +5 "," (HP): +60"," : +120 "]},{"Recipes":[{"Price":140,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt39","Caption":" ","Description":[": 1",": 140 .",": 0/50"," :"," : 40"," : 9"," : 10"," : 50"," :"," : +2 "," : +2"," : +130 "," : 5-16 (4+d12) "]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots25","Caption":" ","Description":[": 5",": 150 .",": 0/50"," :"," : 40"," : 9"," : 50"," :"," : +1"," . : +5"," (HP): +24"," : +60"," : 5-16 (4+d12)"," :"," : 50"]}],"Name":"set5","Caption":"oe Peoc","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg16","Caption":" ","Description":[": 10 ",": 150 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +25"," . (%): +25"," . (%): +25"," (HP): +33"," : +2"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," :"," : +30"," : [12]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots27","Caption":" ","Description":[": 10",": 150 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +50"," . (%): +30"," . (%): +25"," : +25"," (HP): +45"," : +1"," : 10-36 (9+d27)"," : [12]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi86","Caption":" ","Description":[": 1",": 130 .",": 0/30"," :"," : 15"," : 45"," : 8"," : 45"," : 35"," :"," . (%): +40"," . (%): +5"," . (%): +1"," : +3"," , : +3"," , : +3"," , : +3"," : +3"," : [12]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1},{"Category":"mater","Item":"mater3","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor109","Caption":" ","Description":[": 40",": 380 .",": 0/100"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +90"," . (%): +60"," . (%): +60"," . (%): +3"," : +20"," (HP): +78"," : +3"," : 18-53 (17+d36)"," :"," : +125",":"," : "," : "," : "," : "," : [12]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":5},{"Category":"mater","Item":"mater3","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet85","Caption":" ","Description":[": 15 ",": 210 .",": 0/60"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +45"," . (%): +70"," . (%): +50"," : +15"," (HP): +42"," : 10-36 (9+d27)"," :"," : +50"," : [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet32","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +20"," . (%): +40"," . (%): +35"," : +1"," , : +1"," , : +1"," , : +1"," : +25"," (HP): +18"," : +3"," : [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt44","Caption":" ","Description":[": 1",": 140 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +55"," : +15"," : +25"," (HP): +30"," : 19-63 (18+d45)"," : [12]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip90","Caption":" ","Description":[": 1",": 200 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +90"," . (%): +90"," : +1"," , : +1"," , : +1"," , : +1"," : +25"," (HP): +24"," : +4"," : [12]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet98","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +50"," . (%): +60"," . (%): +4"," : +30"," : +50"," (HP): +72"," : +1"," : [12]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring129","Caption":" ","Description":[": 1",": 100 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +10"," . (%): +75"," . (%): +50"," . (%): +1"," (HP): +18"," : [12]"]},{"Recipes":[{"Price":250,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer74","Caption":" ","Description":[": 25",": 250 .",": 0/50"," :"," : 15"," : 45"," : 9"," , : 5"," : 45"," : 35"," :"," , : +1"," :"," : 22 - 34"," . (%): +100"," . (%): +30"," . : +15",":"," : "," : "," : "," : [12]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword105","Caption":" ","Description":[": 17",": 220 .",": 0/50"," :"," : 15"," : 50"," : 9"," : 5"," : 30"," : 30"," :"," : +2"," :"," : 11 - 33"," . (%): +100"," . (%): +100"," : +1",":"," : "," : "," : "," : "," : [12]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater3","Count":8},{"Category":"mater","Item":"mater16","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe90","Caption":" ","Description":[": 20",": 260 .",": 0/50"," :"," : 15"," : 45"," : 9"," , : 5"," : 45"," : 35"," :"," : +2"," : +5"," :"," : 15 - 35"," . (%): +35"," . (%): +35"," . : +10"," , : +2"," ",":"," : "," : "," : "," : [12]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife77","Caption":" ","Description":[": 10",": 220 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 5"," : 45"," : 35"," :"," . (%): +7"," : +5"," :"," : 6 - 17"," . (%): +75"," . (%): +90"," : +2"," . (%): +25"," ",":"," : "," : "," : "," : "," : [12]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater16","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield86","Caption":" ","Description":[": 20",": 190 .",": 0/50"," :"," : 15"," : 45"," : 9"," : 45"," : 35"," :"," . (%): +30"," . (%): +30"," . (%): +10"," (HP): +36"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," : [12]"]}],"Name":"set6","Caption":"oe Copoa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg17","Caption":" ","Description":[": 10",": 150 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +20"," . (%): +20"," . (%): +20"," : +2"," : +2"," : +20"," : 10-36 (9+d27)"," : 10-36 (9+d27)"," :"," : +25"," : [12]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots26","Caption":" ","Description":[": 10",": 150 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +20"," . (%): +30"," . (%): +50"," : +4"," : +20"," : +20"," : 9-35 (8+d27)"," : [12]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi85","Caption":" ","Description":[": 1",": 130 .",": 0/30"," :"," : 50"," : 40"," : 8"," : 30"," : 25"," :"," . (%): +30"," . (%): +25"," : +2"," : +2"," : +3"," , : +3"," , : +3"," , : +3"," : [12]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater10","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor108","Caption":" ","Description":[": 40 ",": 380 .",": 0/100"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +55"," . (%): +50"," . (%): +60"," : +7"," : +3"," : +65"," (HP): +54"," : +2"," : 12-44 (11+d33)"," :"," : +75"," : [12]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":5},{"Category":"mater","Item":"mater10","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet84","Caption":" ","Description":[": 15",": 210 .",": 0/60"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +30"," . (%): +45"," . (%): +20"," : +2"," : +50"," (HP): +24"," : 10-36 (9+d27)"," :"," : +50"," : [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet31","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +15"," . (%): +50"," . (%): +15"," : +2"," : +2"," : +1"," , : +1"," , : +1"," , : +1"," (HP): +12"," : [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt43","Caption":" ","Description":[": 2",": 140 .",": 0/40"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +20"," . (%): +15"," : +30"," (HP): +12"," : 19-63 (18+d45)"," : [12]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip89","Caption":" ","Description":[": 1",": 200 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +95"," . (%): +100"," . (%): +10"," : +5"," : +2"," : +1"," , : +1"," , : +1"," , : +1"," : [12]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet97","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +40"," . (%): +85"," : +4"," : +50"," : +50"," (HP): +45"," : [12]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring128","Caption":" ","Description":[": 1",": 100 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +10"," . (%): +75"," . (%): +35"," : +2"," (HP): +18"," : +1"," : [12]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":8},{"Category":"mater","Item":"mater10","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword100","Caption":" ","Description":[": 25",": 330 . ",": 0/50 "," : "," : 50 "," : 40 "," : 9 "," , : 5 "," : 30 "," : 25 "," : "," : +6 "," : "," : 17 - 51 "," . (%): +180 "," "," : + ",": "," : "," : "," : "," : [0/12] ",": "," "]},{"Recipes":[{"Price":220,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife76","Caption":" ","Description":[": 10",": 220 .",": 0/50"," :"," : 50"," : 40"," : 9"," , : 5"," : 30"," : 25"," :"," . (%): +80"," : +4"," : +1"," :"," : 5 - 17"," . (%): +50"," . (%): +70"," , : +2"," . (%): +70"," ",":"," : "," : "," : [12]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":3},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield85","Caption":" ","Description":[": 15",": 190 .",": 0/50"," :"," : 50"," : 40"," : 9"," : 30"," : 25"," :"," . (%): +30"," . (%): +75"," . (%): +75"," : +10"," (HP): +36"," : 6-26 (5+d21)"," : 6-26 (5+d21)"," : 6-26 (5+d21)"," : 6-26 (5+d21)",":"," : "," : "," : "," : "," : [12]"]}],"Name":"set7","Caption":"oe ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater7","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip83","Caption":" ","Description":[": 1",": 300 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +25"," . : +35"," : +10"," : +2"," (HP): +48"," (%): +5"," : [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater7","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet86","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +40"," . : +5"," : +5"," : +30"," : +60"," : +120"," : [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater7","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring120","Caption":" ","Description":[": 1",": 150 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +10"," : +7"," : +2"," : +20"," : +80"," : [5]"]}],"Name":"set8","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3},{"Category":"mater","Item":"mater8","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip84","Caption":" ","Description":[": 1",": 300 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +35"," . : +25"," : +10"," : +2"," (HP): +90"," (%): +5"," : [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater8","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet87","Caption":" ","Description":[": 1 ",": 240 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," : +5"," : +2"," : +10"," : +35"," : +10"," (HP): +90"," : +120"," : [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater8","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring121","Caption":" ","Description":[": 1",": 150 ",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," : +5"," : +2"," (HP): +39"," : +120"," : [5]"]}],"Name":"set9","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3},{"Category":"mater","Item":"mater3","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip85","Caption":" ","Description":[": 1",": 300 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +40"," . : +15"," : +10"," : +2"," (HP): +33"," (%): +10"," : [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater3","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet88","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +45"," . : +5"," : +7"," : +25"," : +30"," (HP): +40"," : +120"," : [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring122","Caption":" ","Description":[": 1",": 150 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," : +9"," : +2"," : +90"," (%): +1"," : [5]"]}],"Name":"set10","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater4","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip82","Caption":" ","Description":[": 1",": 300 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +70"," . : +20"," : +7"," : +2"," : +35"," (HP): +42"," (%): +5"," : [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater4","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet85","Caption":" ","Description":[": 1",": 240 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," . (%): +35"," . : +5"," : +5"," : +2"," : +30"," : +90"," : +10"," : [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater4","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring119","Caption":" ","Description":[": 1",": 150 .",": 0/50"," :"," : 50"," : 9"," : 7"," : 50"," :"," : +7"," : +2"," : +30"," : +25"," : +20"," : [5]"]}],"Name":"set11","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":200,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip91","Caption":" ","Description":[": 1 ",": 200 . ",": 0/50 "," : "," : 15 "," : 15 "," : 9 "," : 50 "," : 50 "," : "," . (%): +70 "," . (%): +70 "," , : +1 "," (HP): +55 "," : +10 "]},{"Recipes":[{"Price":100,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring135","Caption":" ","Description":[": 1 ",": 100 . ",": 0/50 "," : "," : 15 "," : 15 "," : 9 "," : 50 "," : 50 "," : "," . (%): +40 "," . (%): +40 "," : +7 "]}],"Name":"set12","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater29","Count":3},{"Category":"mater","Item":"mater4","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff53","Caption":" ","Description":[": 5",": 300 . ",": 0/50 "," : "," : 75 "," : 9 "," : 3 "," : 50 "," : "," . (%): +100 "," : +5 "," : +2 "," : +40 "," : +40 "," (HP): +150 "," : "," : 1 - 20 "," ",": "," : "," : "," : "," : "]}],"Name":"staff53","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":260,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe91","Caption":" ","Description":[": 20 ",": 260 . ",": 0/50 "," : "," : 25 "," : 25 "," : 9 "," , : 5 "," : 50 "," : 50 "," : "," , : +2 "," : "," : 10 - 40 "," . . (%): 20 "," . (%): 50 "," . : 15 "," : + ",": "," : "," : "," : ",": "," ... ",""," . . : 5% ."]}],"Name":"axe91","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":220,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword106","Caption":" ","Description":[": 17 ",": 220 . ",": 0/50 "," : "," : 50 "," : 25 "," : 9 "," : 5 "," : 30 "," : 25 "," : "," . (%): +20 "," . (%): +20 "," . (%): +5 "," : "," : 15 - 30 "," . : 10 "," : 2 "," : + ",": "," : "," : "," : ",": "," , ... ","",". . : 1% . "]}],"Name":"sword106","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set1","Item":"leg11","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg11_1","Caption":"oo ax p [10]","Description":["aa: 10","a: 180 p. ","ooo: 0/50 ","p ao: "," oo: 15 "," : 15 "," po: 9 "," oo: 65 "," a: 45 "," a: "," aa o a: +25 "," po (HP): +57 "," po oa: 16-55 (15+d40) "," po o: 16-55 (15+d40) ","oa pa: "," aa o poa: 55 "," a oa: o ax p [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set1","Item":"braslet25","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet25_1","Caption":" [10] ","Description":[": 2",": 168 . ",": 0/40 "," : "," : 15 "," : 15 "," : 10 "," : 65 "," : 45 "," : "," . (%): +30 "," : +2 "," : +40 "," (HP): +41 "," : +2 "," : "," : 30 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set1","Item":"belt37","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt37_1","Caption":" [10]","Description":[": 2",": 168 . ",": 0/50 "," : "," : 15 "," : 15 "," : 10 "," : 65 "," : 45 "," : "," : +25 "," : +25 "," (HP): +121 "," : 21-80 (20+d60) "," : [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set1","Item":"clip81","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip81","Caption":" [10] ","Description":[": 1 ",": 240 . ",": 0/50 "," : "," : 10 "," : 45 "," : 15 "," : 15 "," : 65 "," : "," : +1 "," : +75 "," . : +45% "," . : +45% "," : +35 "," : +20 "," : 1-33 "," : 1-33 "," : 1-33 "," : 1-33 "," : [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set1","Item":"amulet81","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet81_1","Caption":" [10] ","Description":[": 1 ",": 288 . ",": 0/50 "," : "," : 15 "," : 15 "," : 10 "," : 65 "," : 45 "," : "," . (%): +45 "," . (%): +45 "," : +50 "," (HP): +118 "," : +6 "," : 1-30 (d30) "," : 1-30 (d30) "," : 1-30 (d30) "," : 1-30 (d30) "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set1","Item":"ring117","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring117_1","Caption":" [10] ","Description":[": 1 ",": 120 . ",": 0/60 "," : "," : 15 "," : 15 "," : 10 "," : 65 "," : 45 "," : "," . (%): +20 "," . (%): +10 "," : +25 "," (HP): +66 (33) "," : 1-15 (d15) "," : 1-15 (d15) "," : 1-15 (d15) "," : 1-15 (d15) "," : [10] [0/12] "]}],"Name":"set1_10","Caption":"o ax p [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set2","Item":"leg12","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg12_1","Caption":"oo poao [10]","Description":["aa: 10","a: 180 p. ","ooo: 0/50 ","p ao: "," oo: 15 "," : 60 "," po: 10 "," oo: 35 "," a: 35 "," a: "," . po poo apa (%): +25 "," . po pa (%): +25 "," . poo apa (%): +45 "," aa o a: +15 "," po (HP): +35 "," po oa: 11-40 (10+d30) "," po o: 11-40 (10+d30) ","oa pa: "," aa o poa: 40 "," a oa: o poao [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set2","Item":"braslet24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet24_1","Caption":" [10]","Description":[": 2",": 167 . ",": 2 ",": 0/40 "," : "," : 10 "," : 35 "," : 15 "," : 60 "," : 35 "," : "," : +3 "," : +2 "," . : +23% "," . : +40% "," . : +25% "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set2","Item":"belt36","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt36_1","Caption":" [10] ","Description":[": 1 ",": 168 . ",": 0/50 "," :"," : 10 "," : 35 "," : 15 "," : 60 "," : 35 "," : "," . : +15% "," . : +20% "," : +30 "," : +25 "," : 21-70 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set2","Item":"clip80","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip80_1","Caption":" [10] ","Description":[": 1",": 240 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 35 "," : 35 "," : "," . . (%): +30 (25) "," . (%): +45 (35) "," . (%): +100 (70) "," : +2 "," : +1 "," : +4 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set2","Item":"amulet80","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet80_1","Caption":" [10] (: 1) ","Description":[": 1",": 288 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 35 "," : 35 "," : "," . (%): +80 "," . (%): +60 "," : +1 "," : +40 "," : +85 "," (HP): +62 "," : +1 "," : [10] [0/12]"]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set2","Item":"ring116","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring116_1","Caption":" [10] ","Description":[": 1",": 120 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 35 "," : 35 "," : "," . . (%): +13 "," . (%): +35 "," . (%): +45 "," (HP): +50 "," : [10] [0/12] "]}],"Name":"set2_10","Caption":"o poao [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set3","Item":"leg13","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg13_1","Caption":"oo aa [10] ","Description":["aa: 10 ","a: 180 p. ","ooo: 0/50 ","p ao: "," oo: 60 "," : 15 "," po: 10 "," oo: 35 "," a: 35 "," a: "," . po poo apa (%): +45 "," . pa (%): +50 "," aa o a: +30 "," po (HP): +27 "," po oa: 11-40 (10+d30) "," po o: 11-40 (10+d30) ","oa pa: "," aa o poa: 35 "," a oa: o aa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set3","Item":"naruchi76","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi76_1","Caption":" [10]","Description":[": 2 ",": 168 . ",": 0/30 "," : "," : 60 "," : 15 "," : 10 "," : 35 "," : 35 "," : "," . (%): +35 "," . (%): +35 "," . : +17 "," : +1 "," (HP): +26 "," : [10] [0/12]"]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set3","Item":"belt35","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt35_1","Caption":" [10]","Description":[": 2 ",": 168 . ",": 0/40 "," :"," : 10 "," : 35 "," : 60 "," : 15 "," : 35 "," : "," : +4 "," : +41 "," . : +55% "," . : +15% "," : +25 "," : 21-70 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set3","Item":"clip76","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip76_1","Caption":" [10] ","Description":[": 1",": 240 . ",": 0/60 "," : "," : 10 "," : 35 "," : 60 "," : 15 "," : 35 "," : "," : +4 "," : +2 "," : +41 "," . : +35% "," . : +110% "," . : +35% "," . : +17% "," : +25 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set3","Item":"amulet75","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet75_1","Caption":" [10] ","Description":[": 1",": 288 . ",": 0/50 "," : "," : 60 "," : 15 "," : 10 "," : 35 "," : 35 "," : "," . (%): +45 "," . (%): +45 "," . (%): +120 "," . (%): +20 "," : +40 "," (HP): +74 (66) "," : +4 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set3","Item":"ring110","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring110_1","Caption":" [10] ","Description":[": 1",": 120 . ",": 0/40 "," : "," : 10 "," : 35 "," : 60 "," : 15 "," : 35 "," : "," : +1 "," : +30 "," . : +20% "," . : +45% "," . : +5% "," . : +5% "," : +15 "," : [10] [0/12] "]}],"Name":"set3_10","Caption":"o aa [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set4","Item":"leg14","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg14_1","Caption":"oo po oa [10] ","Description":["aa: 13","a: 180 p. ","ooo: 0/60 ","p ao: "," oo: 30 "," : 30 "," po: 10 "," oo: 45 "," a: 45 "," a: "," . po poo apa (%): +40 "," . po pa (%): +20 "," . appoa (%): +2 "," aa o a o: +15 "," aa o poa: +15 "," aa o a o: -10 "," po (HP): +45 "," po oa: 11-40 (10+d30) "," po o: 11-40 (10+d30) ","oa pa: "," aa o poa: 40 "," a oa: o po oa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set4","Item":"braslet26_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet26_du2_1","Caption":" [10] ","Description":[": 2",": 168 . ",": 0/40 "," : "," : 10 "," : 45 "," : 30 "," : 30 "," : 45 "," : "," : +2 "," : +37 "," . : +35% "," . : +35% "," . : +5% "," : +30 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set4","Item":"belt38_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt38_du2_1","Caption":" [10] ","Description":[": 1 ",": 168 . ",": 0/50 "," : "," : 30 "," : 30 "," : 10 "," : 45 "," : 45 "," : "," . (%): +40 "," : +20 "," : +30 "," : -10 "," (HP): +42 "," : +4 "," : 21-75 (20+d55) "," a oa: o po oa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set4","Item":"clip82_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip82_du2_1","Caption":" [10] ","Description":[": 1",": 240 . ",": 0/50 "," : "," : 10 "," : 45 "," : 30 "," : 30 "," : 45 "," : "," : +6 "," : +1 "," . : +45% "," . : +40% "," . : +12% "," : +40 "," : +20 "," : -10 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set4","Item":"amulet83_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet83_du2_1","Caption":" [10] ","Description":[": 1",": 288 . ",": 0/50 "," : "," : 30 "," : 30 "," : 10 "," : 45 "," : 45 "," : "," . (%): +110 "," . (%): +12 "," : +30 "," : +20 "," : -10 "," (HP): +80 "," : +8 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set4","Item":"ring119_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring119_du2_1","Caption":" [10] ","Description":[": 1 ",": 120 . ",": 0/50 "," : "," : 30 "," : 30 "," : 10 "," : 45 "," : 45 "," : "," . (%): +55 "," . (%): +35 "," . (%): +3 "," (HP): +40 "," : +3 "," : [10] [0/12]"]}],"Name":"set4_10","Caption":"o po oa [10] ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set5","Item":"leg15","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg15_1","Caption":" [10]","Description":[": 5",": 180 . ",": 0/50 "," : "," : 50 "," : 10 "," : 60 "," : "," : +2 "," . : +5 "," (HP): +25 "," : +100 "," : 6-20 (5+d15) "," : 6-20 (5+d15) "," : "," : 15 "," : [10] [0/7] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set5","Item":"braslet27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":2,"IsGift":false,"Name":"braslet27_1","Caption":" [10] ","Description":[": 2",": 168 . ",": 2 ",": 0/50 "," : "," : 10 "," : 50 "," : 60 "," : "," : +2 "," : +135 "," : +77 "," : +20 "," : [10] [0/7] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set5","Item":"belt39","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt39_1","Caption":" [10]","Description":[": 1",": 168 . ",": 0/50 "," :"," : 10 "," : 10 "," : 50 "," : 60 "," : "," : +2 "," : +150 "," : +22 "," : +2% "," : 6-20 "," : [10] [0/7] "]}],"Name":"set5_10","Caption":"oe Peoc [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set6","Item":"leg16","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg16_1","Caption":"oo Copoa [10] ","Description":["acca: 10 ","ea: 180 p. ","ooeoc: 0/50 ","peec aoe: "," ooc: 15 "," : 60 "," poe: 10 "," ococ: 50 "," Ca: 35 ","ece a: "," . po pecoo apa (%): +30 "," . po epa (%): +35 "," . pecoo apa (%): +35 "," poe (HP): +43 "," Ca: +2 "," po oca: 11-40 (10+d30) "," po o: 11-40 (10+d30) ","Coca peea: "," aa o poa: 35 "," ac oea: oe Copoa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set6","Item":"braslet32","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet32_1","Caption":" [10] ","Description":[": 2 ",": 168 . ",": 0/40 "," : "," : 15 "," : 60 "," : 10 "," : 50 "," : 35 "," : "," . (%): +30 "," . (%): +45 "," . (%): +50 "," : +1 "," : +30 "," (HP): +26 "," : +3 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set6","Item":"belt44","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt44_1","Caption":" [10] ","Description":[": 1 ",": 168 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 50 "," : 35 "," : "," . (%):+65 "," : +20 "," : +30 "," (HP): +39 "," : 21-70 (20+d50) "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set6","Item":"clip90","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip90_1","Caption":" [10] ","Description":[": 1 ",": 240 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 50 "," : 35 "," : "," . (%): +100 "," . (%): +100 "," : +1 "," : +35 "," (HP): +48 "," : +4 "," : [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set6","Item":"amulet98","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet98_1","Caption":" [10] ","Description":[": 1",": 288 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 50 "," : 35 "," : "," . (%): +60 "," . (%): +70 "," . (%): +5 "," : +40 "," : +60 "," (HP): +84 "," : +1 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set6","Item":"ring129","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring129_1","Caption":" [10]","Description":[": 1 ",": 120 . ",": 0/50 "," : "," : 15 "," : 60 "," : 10 "," : 50 "," : 35 "," : "," . (%): +15 "," . (%): +80 "," . (%): +60 "," . (%): +1 "," (HP): +31 "," : [10] [0/12] "]}],"Name":"set6_10","Caption":"oe Copoa [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set7","Item":"leg17","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg17_1","Caption":"oo oe [10] ","Description":["acca: 10 ","ea: 180 p. ","peec pee: oo oe, [Coc Pecpca]x6 ","ooeoc: 0/50 ","peec aoe: "," ooc: 60 "," : 45 "," poe: 10 "," ococ: 35 "," Ca: 25 ","ece a: "," . po pecoo apa (%): +25 "," . pecoo apa (%): +30 "," . epa (%): +30 "," ooc: +2 "," : +2 "," aa o a: +25 "," po oca: 11-40 (10+d30) "," po o: 11-40 (10+d30) ","Coca peea: "," aa o poa: 30 "," ac oea: oe oe [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set7","Item":"braslet31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet31_1","Caption":" [10] ","Description":[": 2",": 168 . ",": 0/40 "," : "," : 60 "," : 45 "," : 10 "," : 35 "," : 25 "," : "," . (%): +25 "," . (%): +65 "," . (%): +17 "," : +2 "," : +2 "," : +1 "," (HP): +24 "," : [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set7","Item":"belt43","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt43_1","Caption":" [10] ","Description":[": 1",": 168 . ",": 0/40 "," : "," : 10 "," : 25 "," : 60 "," : 45 "," : 35 "," : "," (HP): +20 "," . (%): +30% "," . (%): +17% "," : +35 "," : 21-70 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set7","Item":"clip89","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip89_1","Caption":" [10] ","Description":[": 1",": 240 . ",": 0/50 "," : "," : 10 "," : 25 "," : 60 "," : 45 "," : 35 "," : "," : +5 "," : +2 "," : +1 "," : +28 "," . : +110% "," . : +120% "," . : +12% "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set7","Item":"amulet97","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet97_1","Caption":" [10] ","Description":[": 1 ",": 288 . ",": 0/50 "," : "," : 60 "," : 45 "," : 10 "," : 35 "," : 25 "," : "," . (%): +50 "," . (%): +110 "," : +4 "," : +60 "," : +60 "," (HP): +61 "," : [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set7","Item":"ring128","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring128_1","Caption":" [10]","Description":[": 1 ",": 120 . ",": 0/50 "," : "," : 60 "," : 45 "," : 10 "," : 35 "," : 25 "," : "," . (%): +15 "," . (%): +85 "," . (%): +45 "," : +2 "," (HP): +28 "," : +1 "," : [10] [0/12] "]}],"Name":"set7_10","Caption":"oe oe [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_6","Caption":" ()","Description":[": 1",": 20 . ",": 0/1"," :"," : 7"," : 25",": 1 .",":"," , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_7","Caption":" ()","Description":[": 1",": 20 . ",": 0/1"," :"," : 7"," : 25",": 1 .",":"," , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_8","Caption":" () ","Description":[": 1",": 20 . ",": 0/1"," :"," : 25"," : 7",": 1 .",":"," , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_9","Caption":" () ","Description":[": 1",": 20 . ",": 0/1"," :"," : 25"," : 7",": 1 .",":"," ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_10","Caption":" ()","Description":[": 1",": 20 . ",": 0/1"," :"," : 7"," : 25",": 1 .",":"," , , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell5","Caption":" () ","Description":[": 1",": 20 .",": 0/1"," :"," : 25"," : 7"," : 4",": 1 .",":","... - , "," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell2","Caption":" ()","Description":[": 1",": 20 .",": 0/1"," :"," : 25"," : 7"," : 4",": 1 .",":"," ? 10% - ?"," ! "," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell3","Caption":" ()","Description":[": 1",": 20 .",": 0/1"," :"," : 25"," : 7"," : 4",": 1 .",":"," : ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell7","Caption":" ()","Description":[": 1",": 20 .",": 0/1"," :"," : 25"," : 7"," : 7",": 1 .",":"," , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell4","Caption":" ()","Description":[": 1",": 20 .",": 0/1"," :"," : 25"," : 7"," : 7",": 1 .",":"," , ."," : "]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell1","Caption":" ()","Description":[": 1",": 20 . ",": 0/1"," :"," : 25"," : 7"," : 7",": 1 .",":"," , ."," : "]}],"Name":"books","Caption":" ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater26","Count":3},{"Category":"mater","Item":"mater28","Count":3},{"Category":"mater","Item":"mater29","Count":3},{"Category":"mater","Item":"mater25","Count":3},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot9","Caption":" ( 3)","Description":[": 1",": 300 .",": 0/1"," :"," : 9",": 1 .",":"," +1 ."," ."," .",""]},{"Recipes":[{"Price":500,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":5},{"Category":"mater","Item":"mater21","Count":5},{"Category":"mater","Item":"mater22","Count":5},{"Category":"mater","Item":"mater23","Count":5},{"Category":"mater","Item":"mater24","Count":5},{"Category":"mater","Item":"mater31","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot10","Caption":" ( 4) ","Description":[": 1",": 500 .",": 0/1"," :"," : 10",": 1 .",":"," +1 ."," ."," ."]}],"Name":"slots","Caption":" ","Description":[]}],"RecipePlaces":[{"Name":"altar_blood","Caption":" ","Description":[]},{"Name":"altar_ang","Caption":" ()","Description":[]},{"Name":"altar_cap","Caption":" ()","Description":[]},{"Name":"altar_dem","Caption":" ()","Description":[]},{"Name":"laba_dem","Caption":" ()","Description":[]},{"Name":"laba_ang","Caption":" ()","Description":[]},{"Name":"laba_sand","Caption":" ( )","Description":[]},{"Name":"shop_dev","Caption":" Devils city","Description":[]},{"Name":"shop_dem","Caption":" Demons city","Description":[]},{"Name":"shop_ang","Caption":" Angels city","Description":[]},{"Name":"shop_cap","Caption":" Capital city","Description":[]},{"Name":"shop_sand","Caption":" Sandcity","Description":[]},{"Name":"shop_sun","Caption":" Suncity","Description":[]},{"Name":"shop_moon","Caption":" Mooncity","Description":[]},{"Name":"shop_em","Caption":" Emeralds city","Description":[]},{"Name":"forge_ang1","Caption":" ()","Description":[]},{"Name":"forge_ang2","Caption":" ()","Description":[]},{"Name":"forge_dem","Caption":" ()","Description":[]},{"Name":"forge_sand","Caption":" ( )","Description":[]},{"Name":"mastershop_cap","Caption":" ()","Description":[" , , ."]},{"Name":"bookshop","Caption":" ","Description":[]}]}); +underground.loadCostructorData({"NewLineToBR":true,"Description":[],"Categories":[{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater1","Caption":"Шкура пещерного оленя","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater2","Caption":"Золото","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater3","Caption":"Серебро","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater4","Caption":"Лучистое серебро","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater5","Caption":"Мифрил ","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater6","Caption":"Железное дерево","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater7","Caption":"Слиток пустынной руды","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater8","Caption":"Троекорень","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater9","Caption":"Корень змеиного дерева","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater10","Caption":"Кора змеиного дерева","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater11","Caption":"Кожа общего врага","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater12","Caption":"Сталь","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater13","Caption":"Кристалл тысячи ответов","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater14","Caption":"Сгусток эфира","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater15","Caption":"Сгусток астрала","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater16","Caption":"Глубинный камень","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater17","Caption":"Плод змеиного дерева","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater18","Caption":"Тысячелетний камень","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater19","Caption":"Кристалл времен","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 0.3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater25","Caption":"Кристалл голоса предков","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater26","Caption":"Кристалл стабильности","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater27","Caption":"Камень затаенного солнца","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater28","Caption":"Лучистый рубин","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater29","Caption":"Лучистый топаз","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater30","Caption":"Шепот гор","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 1 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater20","Caption":"Эссенция лунного света","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater21","Caption":"Эссенция глубины","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater22","Caption":"Эссенция чистоты","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater23","Caption":"Ралиэль","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater24","Caption":"Стихиалия","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater31","Caption":"Эссенция праведного гнева","Description":["Масса: 1
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту
        ","Предмет из подземелья


        ","Сдав в государственный магазин вы получите: 3 кр."]}],"Name":"mater","Caption":"Ингредиенты","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater267","Caption":"Расскаленная магма","Description":["Масса: 1
        ","Цена: 40 кр
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту"]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater261","Caption":"Слиток света","Description":["Масса: 1
        ","Цена: 20 кр
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту"]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater262","Caption":"Осколок бездны","Description":["Масса: 1
        ","Цена: 48 кр
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту"]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater276","Caption":"Песчаная руда","Description":["Масса: 1
        ","Цена: 28 кр
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту"]},{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater275","Caption":"Песок просвета","Description":["Масса: 1
        ","Цена: 28 кр
        ","Долговечность: 0/1
        ","Предмет не подлежит ремонту"]}],"Name":"mater_knshop","Caption":"Ингредиенты из рыцарских магазинов","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater_shop7","Caption":"Сущность Ресурса","Description":["Масса: 0.1
        ","Долговечность: 0/1
        ","Сделано в Angels city
        ","Предмет не подлежит ремонту
        "]}],"Name":"mater_shop7","Caption":"Сущность ресурса","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat1","Caption":"Сущность сапог","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat3","Caption":"Сущность кольца","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat5","Caption":"Сущность браслета","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat7","Caption":"Сущность амулета","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat9","Caption":"Сущность перчаток","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat11","Caption":"Сущность плаща","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat13","Caption":"Сущность пояса","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat15","Caption":"Сущность серег","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat17","Caption":"Сущность щита","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat19","Caption":"Сущность шлема","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat23","Caption":"Сущность брони","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat30","Caption":"Сущность поножей","Description":[]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"sp_mat21","Caption":"Сущность оружия","Description":[]}],"Name":"sp_mat","Caption":"Сущности Вещей","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater7","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT1","Caption":"Тактика Боя: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT2","Caption":"Тактика Боя: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT3","Caption":"Тактика Боя: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT4","Caption":"Тактика Боя: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT5","Caption":"Тактика Боя: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater11","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":"Тактика Защиты: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK2","Caption":"Тактика Защиты: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK3","Caption":"Тактика Защиты: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK4","Caption":"Тактика Защиты: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK5","Caption":"Тактика Защиты: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater9","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT1","Caption":"Тактика Крови: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT2","Caption":"Тактика Крови: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT3","Caption":"Тактика Крови: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT4","Caption":"Тактика Крови: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT5","Caption":"Тактика Крови: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5"]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR1","Caption":"Тактика Ответа: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater17","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR2","Caption":"Тактика Ответа: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR3","Caption":"Тактика Ответа: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR4","Caption":"Тактика Ответа: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR5","Caption":"Тактика Ответа: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater8","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY1","Caption":"Тактика Отражения: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY2","Caption":"Тактика Отражения: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY3","Caption":"Тактика Отражения: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY4","Caption":"Тактика Отражения: 4","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"Recipes":[{"Price":0,"PlaceName":"laba_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY5","Caption":"Тактика Отражения: 5","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]}],"Name":"sp_tacpts","Caption":"Свитки Тактик","Description":["Свитки тактик нужны для более быстрого накопления спецприемов в бою. Одеваются они также как и обычные свитки, в слоты для свитков.","","Cобираются свитки тактик в Лаборатории на первом этаже Бездны. Расположилась она за Алтарем, который охраняет один из Боссов первого этажа - Служитель Бездны (СБ) .","","Один персонаж за раз может собрать максимум 3 свитка тактики. На команду дается ровно 10 свитков тактик.",""]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_1","Caption":"Обломок Пирамидального Ключа","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти сундуке на клетке K7 второго этажа Катакомб. ","При наличии в рюкзаке, второй взять нельзя."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_2","Caption":"Осколок Пирамидального Ключа","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на клетке U2 второго этажа Катакомб. ","При наличии в рюкзаке, второй взять нельзя."]},{"Recipes":[{"Price":0,"PlaceName":"altar_dem","Binding":4,"RecipeParts":[{"Category":"key_cube","Item":"key_cube_1","Count":1},{"Category":"key_cube","Item":"key_cube_2","Count":1}],"Name":"key_cube_recipe","Caption":"Рецепт Пирамидального ключа","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_3","Caption":"Пирамидальный Ключ","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"key_cube","Caption":"Пирамидальный ключ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_1","Caption":"Верхняя Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке L12 четвертого этажа ПТП.","При наличии в рюкзаке, 2ю взять нельзя."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_2","Caption":"Правая Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке I12 четвертого этажа ПТП.","При наличии в рюкзаке, 2ю взять нельзя."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_3","Caption":"Левая Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке L15 четвертого этажа ПТП.","При наличии в рюкзаке, 2ю взять нельзя."]},{"Recipes":[{"Price":0,"PlaceName":"altar_cap","Binding":4,"RecipeParts":[{"Category":"key_amul","Item":"key_amul_1","Count":1},{"Category":"key_amul","Item":"key_amul_2","Count":1},{"Category":"key_amul","Item":"key_amul_3","Count":1}],"Name":"key_amul_recipe","Caption":"Рецепт ключ портала","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_4","Caption":"Ключ Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Необходим для работы портала на клетке G2 первого этажа ПТП. "]}],"Name":"key_amul","Caption":"Ключ Портала","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_1","Caption":"Первая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке K15 пятого этажа ПТП.","После выхода пропадает."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_2","Caption":"Вторая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке I15 пятого этажа ПТП.","После выхода пропадает."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_3","Caption":"Третья часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке G15 пятого этажа ПТП.","После выхода пропадает."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_4","Caption":"Четвёртая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке E15 пятого этажа ПТП.","После выхода пропадает."]},{"Recipes":[],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_5","Caption":"Пятая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке C15 пятого этажа ПТП.","После выхода пропадает."]},{"Recipes":[{"Price":0,"PlaceName":"altar_cap","Binding":4,"RecipeParts":[{"Category":"key_TR","Item":"key_TR_1","Count":1},{"Category":"key_TR","Item":"key_TR_2","Count":1},{"Category":"key_TR","Item":"key_TR_3","Count":1},{"Category":"key_TR","Item":"key_TR_4","Count":1},{"Category":"key_TR","Item":"key_TR_5","Count":1}],"Name":"key_TR_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_6","Caption":"Отпирающая руна","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Ключ для прохода к Гриту. После выхода из подземелья пропадает."]}],"Name":"key_TR","Caption":"Отпирающая руна ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_0","Caption":"Зачаровать Украшение [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_1","Caption":"Зачаровать Украшение [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Работает с кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_2","Caption":"Зачаровать Украшение [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Работает с для кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","."]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_1_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"enh_1_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_3","Caption":"Зачаровать Украшение [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Работает с для кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_0","Caption":"Зачаровать оружие [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_3_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_1","Caption":"Зачаровать оружие [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_3_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_2","Caption":"Зачаровать оружие [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_3_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater22","Count":1}],"Name":"enh_3_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_3","Caption":"Зачаровать оружие [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_0","Caption":"Зачаровать Броню [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_4_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_1","Caption":"Зачаровать Броню [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_4_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_2","Caption":"Зачаровать Броню [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_4_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater21","Count":1}],"Name":"enh_4_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_3","Caption":"Зачаровать Броню [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_0","Caption":"Зачаровать Перчатки [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_5_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_1","Caption":"Зачаровать Перчатки [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_5_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_2","Caption":"Зачаровать Перчатки [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_5_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater20","Count":1}],"Name":"enh_5_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_3","Caption":"Зачаровать Перчатки [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_0","Caption":"Зачаровать Шлем [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_0","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_9_1_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_1","Caption":"Зачаровать Шлем [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_1","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1}],"Name":"enh_9_2_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_2","Caption":"Зачаровать Шлем [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"laba_dem","Binding":4,"RecipeParts":[{"Category":"enh","Item":"enh_9_2","Count":3},{"Category":"key_cube","Item":"key_cube_3","Count":1},{"Category":"mater","Item":"mater31","Count":1}],"Name":"enh_9_3_recipe","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_3","Caption":"Зачаровать Шлем [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"enh","Caption":"Свитки зачарования","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater10","Count":1},{"Category":"mater","Item":"mater16","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater19","Count":1},{"Category":"mater","Item":"mater27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam2c","Caption":"Проклятье Замерзающей Воды","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Мф. мощности магии Воды: -20","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_unexprc","Caption":"Проклятье Легкого Отупения","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Получаемый опыт (%): -10","Наложены заклятия: проклятье","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":1},{"Category":"mater","Item":"mater15","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam3c","Caption":"Проклятье Стихающего Ветра","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Мф. мощности магии Воздуха: -20","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater11","Count":1},{"Category":"mater","Item":"mater14","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam1c","Caption":"Проклятье Угасающего Огня","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Мф. мощности магии Огня: -20","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater26","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_undam4c","Caption":"Проклятье Умирающей Земли","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Мф. мощности магии Земли: -20","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_ug_unp10c","Caption":"Проклятье Уязвимости","Description":["Масса: 1","Цена: 10 кр. ","Долговечность: 0/1","Продолжительность действия магии: 6 ч. 0 мин.","Наложены заклятия: проклятье","Действует на:","• Мф. мощности урона: -100","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater4","Count":1},{"Category":"mater","Item":"mater14","Count":3},{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_curseb","Caption":"Красная Метка","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 70%","Продолжительность действия магии: 1440 мин.","Требуется минимальное:","• Интеллект: 10","• Уровень: 8","Наложены заклятия: проклятье","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":1},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater16","Count":1},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_curse","Caption":"Черная Метка","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 70%","Продолжительность действия магии: 1440 мин.","Требуется минимальное:","• Интеллект: 10","• Уровень: 8","Наложены заклятия: проклятье","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"spell_ug","Caption":"Проклятья","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater1","Count":4},{"Category":"mater","Item":"mater5","Count":4},{"Category":"mater","Item":"mater9","Count":3},{"Category":"mater","Item":"mater16","Count":2},{"Category":"mater","Item":"mater19","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ing104","Caption":"Кольцо силы","Description":["Масса: 1","Цена: 23 кр. ","Долговечность: 0/40","Требуется минимальное:","• Выносливость: 10 ","• Уровень: 3 ","Действует на:","• Сила: +3","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater2","Count":5},{"Category":"mater","Item":"mater11","Count":2},{"Category":"mater","Item":"mater14","Count":1},{"Category":"mater","Item":"mater15","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring83","Caption":"Кольцо Интуиции","Description":["Масса: 1","Цена: 16 кр. ","Долговечность: 0/40","Требуется минимальное:","• Сила: 10 ","• Выносливость: 10 ","• Уровень: 2 ","Действует на:","• Интуиция: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater3","Count":5},{"Category":"mater","Item":"mater10","Count":2},{"Category":"mater","Item":"mater17","Count":1},{"Category":"mater","Item":"mater18","Count":1},{"Category":"mater","Item":"mater19","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring85","Caption":"Кольцо Ловкости","Description":["Масса: 1","Цена: 16 кр. ","Долговечность: 0/40","Требуется минимальное:","• Сила: 10 ","• Уровень: 2 ","Действует на:","• Ловкость: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater4","Count":3},{"Category":"mater","Item":"mater7","Count":4},{"Category":"mater","Item":"mater8","Count":4},{"Category":"mater","Item":"mater13","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring106","Caption":"Рубиновое Кольцо","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 12 ","• Выносливость: 12 ","• Уровень: 3 ","Действует на:","• Уровень жизни (HP): +33","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater12","Count":2},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring207","Caption":"Simplicity Ring","Description":["Масса: 1","Цена: 31 кр. (6 екр.) ","Долговечность: 0/30","Требуется минимальное:","• Сила: 15 ","• Интуиция: 15 ","• Выносливость: 15 ","• Уровень: 4 ","Действует на:","• Сила: +2 ","• Интуиция: +3","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"Recipes":[{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater6","Count":5},{"Category":"mater","Item":"mater15","Count":2},{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring99","Caption":"Синее Кольцо Учителя","Description":["Масса: 1","Цена: 61 кр. ","Долговечность: 0/30","Требуется минимальное:","• Сила: 20 ","• Ловкость: 20 ","• Выносливость: 20 ","• Уровень: 7 ","Действует на:","• Мф. парирования: +5 % ","• Мф. контрудара: +1 % ","Свойства предмета:","• Защита от урона: +5","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"rings","Caption":"Кольца","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg11","Caption":"Поножи Забытых Времен","Description":["Масса: 10","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Защита от магии: +20","• Уровень жизни (HP): +42","• Броня пояса: 13-48 (12+d36)","• Броня ног: 13-48 (12+d36)","Свойства предмета:","• Защита от урона: +50","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots23","Caption":"Сапоги Забытых Времен ","Description":["Масса: 10 ","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +20","• Мф. против увертывания (%): +20","• Ловкость: -2","• Уровень жизни (HP): +66","• Броня ног: 35-84 (34+d50)","Свойства предмета:","• Защита от урона: +50","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi79","Caption":"Перчатки Забытых Времен ","Description":["Масса: 1","Цена: 130 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 8","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +40","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Защита от магии: +20","• Сила: +1","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater6","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor107","Caption":"Броня Забытых Времен","Description":["Масса: 60","Цена: 380 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +50","• Мф. против увертывания (%): +25","• Интеллект: +1","• Защита от магии: +30","• Уровень жизни (HP): +99","• Сила: +6","• Броня корпуса: 31-90 (30+d60)","Свойства предмета:","• Защита от урона: +150","Особенности:","• Защита от дробящего урона: Хорошая","• Защита от колющего урона: Слабая","• Защита от режущего урона: Хорошая","• Защита от рубящего урона: Посредственная","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":215,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":5},{"Category":"mater","Item":"mater6","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet81","Caption":"Шлем Забытых Времен ","Description":["Масса: 20","Цена: 215 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +20","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Защита от магии: +50","• Уровень жизни (HP): +66","• Броня головы: 36-85 (35+d50)","Свойства предмета:","• Защита от урона: +25","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet25","Caption":"Наручи Забытых Времен ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против увертывания (%): +20","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","• Защита от магии: +30","• Уровень жизни (HP): +33","• Сила: +2","Свойства предмета:","• Защита от урона: +25","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt37","Caption":"Пояс Забытых Времен ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Защита от магии: +20","• Защита от дробящего урона: +25","• Уровень жизни (HP): +99","• Броня пояса: 19-68 (18+d50)","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip81","Caption":"Серьги Забытых Времен ","Description":["Масса: 1","Цена: 200 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +40","• Мф. против увертывания (%): +40","• Мастерство владения дубинами, булавами: +1","• Защита от магии: +10","• Защита от урона: +25","• Уровень жизни (HP): +66","• Броня головы: 1-30 (d30)","• Броня корпуса: 1-30 (d30)","• Броня пояса: 1-30 (d30)","• Броня ног: 1-30 (d30)","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet81","Caption":"Амулет Забытых Времен ","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +35","• Мф. против увертывания (%): +35","• Защита от магии: +40","• Уровень жизни (HP): +99","• Сила: +6","• Броня головы: 1-25 (d25)","• Броня корпуса: 1-25 (d25)","• Броня пояса: 1-25 (d25)","• Броня ног: 1-25 (d25)","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater21","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring117","Caption":"Кольцо Забытых Времен","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +20","• Мф. против увертывания (%): +10","• Защита от урона: +25","• Уровень жизни (HP): +33","• Броня головы: 1-15 (d15)","• Броня корпуса: 1-15 (d15)","• Броня пояса: 1-15 (d15)","• Броня ног: 1-15 (d15)","• Часть комплекта: Комплект Забытых Времен [13]","","Кольцо, собранное в подземелье, не подлежит ремонту"]},{"Recipes":[{"Price":250,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":2},{"Category":"mater","Item":"mater6","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mace68","Caption":"Булава Забытых Времен","Description":["Масса: 30","Цена: 250 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 50","• Сила: 45","Действует на:","• Сила: +1","Свойства предмета:","• Урон: 22 - 34","• Мф. против увертывания (%): +80","• Мф. мощности дробящего урона: +20","• Мастерство владения дубинами, булавами: +1","Особенности:","• Колющие атаки: Ничтожно редки","• Дробящие атаки: Часты","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword104","Caption":"Меч Забытых Времен ","Description":["Масса: 17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +40","• Сила: +2","Свойства предмета:","• Урон: 12 - 34","• Мф. против увертывания (%): +40","• Мф. мощности рубящего урона: +10","• Мастерство владения мечами: +2","Особенности:","• Колющие атаки: Малы","• Рубящие атаки: Временами","• Режущие атаки: Малы","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":9},{"Category":"mater","Item":"mater6","Count":10}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer71","Caption":"Молот Забытых Времен ","Description":["Масса: 30","Цена: 370 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 50","• Сила: 55","Действует на:","• Мф. против критического удара (%): +20","• Сила: +2","Свойства предмета:","• Урон: 30 - 48","• Мф. против увертывания (%): +80","• Мф. мощности дробящего урона: +25","• Мастерство владения дубинами, булавами: +2","• Двуручное оружие","Особенности:","• Колющие атаки: Ничтожно редки","• Дробящие атаки: Часты","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater19","Count":8},{"Category":"mater","Item":"mater6","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe89","Caption":"Топор Забытых Времен ","Description":["Масса: 20","Цена: 260 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Мастерство владения топорами, секирами: 5","• Выносливость: 50","• Сила: 45","Действует на:","• Ловкость: +2","• Интеллект: +2","Свойства предмета:","• Урон: 15 - 35","• Мф. против увертывания (%): +80","• Мф. мощности рубящего урона: +20","• Мастерство владения топорами, секирами: +2","Особенности:","• Рубящие атаки: Часты","• Дробящие атаки: Редки","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater6","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife73","Caption":"Кинжал Забытых Времен ","Description":["Масса: 10","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 20","• Интуиция: 20","• Уровень: 9","• Мастерство владения ножами, кастетами: 5","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +35","• Мф. мощности колющего урона: +25","Свойства предмета:","• Урон: 5 - 17","• Мф. против увертывания (%): +80","• Мастерство владения ножами, кастетами: +3","• Мф. удара сквозь броню (%): +30","• Второе оружие","Особенности:","• Колющие атаки: Временами","• Рубящие атаки: Редки","• Дробящие атаки: Ничтожно редки","• Режущие атаки: Малы","• Часть комплекта: Комплект Забытых Времен [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater25","Count":1},{"Category":"mater","Item":"mater19","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield84","Caption":"Щит Забытых Времен","Description":["Масса: 20","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 15","• Уровень: 9","• Выносливость: 50","• Сила: 45","Действует на:","• Мф. против критического удара (%): +55","• Защита от урона: +25","• Уровень жизни (HP): +33","• Броня головы: 10-36 (9+d27)","• Броня корпуса: 10-36 (9+d27)","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Мф. блока щитом (%): +10","Особенности:","• Защита от дробящего урона: Хорошая","• Защита от колющего урона: Слабая","• Защита от режущего урона: Великолепная","• Защита от рубящего урона: Посредственная","• Часть комплекта: Комплект Забытых Времен [13]"]}],"Name":"set1","Caption":"Кoмплект Зaбытыx Вpемен","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg12","Caption":"Поножи Кровавой Луны","Description":["Масса: 10 ","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +20","• Мф. против увертывания (%): +20","• Мф. критического удара (%): +35","• Защита от магии: +10","• Уровень жизни (HP): +30","• Броня пояса: 9-35 (8+d27)","• Броня ног: 9-35 (8+d27)","Свойства предмета:","• Защита от урона: +40","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots22","Caption":"Ботинки Кровавой Луны ","Description":["Масса: 10 ","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +30","• Мф. против увертывания (%): +30","• Мф. критического удара (%): +25","• Защита от магии: +10","• Защита от урона: +25","• Уровень жизни (HP): +33","• Сила: +2","• Броня ног: 9-35 (8+d27)","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":131,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi77","Caption":"Перчатки Кровавой Луны","Description":["Масса: 1 ","Цена: 131 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 8","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +10","• Мф. против увертывания (%): +30","• Мф. критического удара (%): +5","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Сила: +1","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":1},{"Category":"mater","Item":"mater5","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor106","Caption":"Броня Кровавой Луны ","Description":["Масса: 40","Цена: 380 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +75","• Мф. против увертывания (%): +30","• Мф. критического удара (%): +45","• Интуиция: +2","• Интеллект: +2","• Защита от магии: +40","• Уровень жизни (HP): +66","• Сила: +4","• Броня корпуса: 19-54 (18+d36)","Свойства предмета:","• Защита от урона: +125","Особенности:","• Защита от дробящего урона: Хорошая","• Защита от колющего урона: Посредственная","• Защита от режущего урона: Посредственная","• Защита от рубящего урона: Хорошая","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":5},{"Category":"mater","Item":"mater5","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet80","Caption":"Шлем Кровавой Луны","Description":["Масса: 15 ","Цена: 210 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +40","• Мф. против увертывания (%): +20","• Мф. критического удара (%): +45","• Защита от магии: +50","• Уровень жизни (HP): +33","• Броня головы: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +50","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet24","Caption":"Браслет Кровавой Луны ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +20","• Мф. против критического удара (%): +10","• Мф. критического удара (%): +25","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","• Сила: +3","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt36","Caption":"Пояс Кровавой Луны","Description":["Масса: 1 ","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +15","• Защита от магии: +20","• Защита от урона: +25","• Броня пояса: 19-63 (18+d45)","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip80","Caption":"Серьги Кровавой Луны","Description":["Масса: 1 ","Цена: 200 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +25","• Мф. против увертывания (%): +35","• Мф. критического удара (%): +70","• Интеллект: +2","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Сила: +4","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet80","Caption":"Амулет Кровавой Луны ","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +65","• Мф. против увертывания (%): +45","• Интеллект: +1","• Защита от магии: +30","• Защита от урона: +75","• Уровень жизни (HP): +48","• Сила: +1","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater20","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring116","Caption":"Кольцо Кровавой Луны","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +10","• Мф. против увертывания (%): +35","• Мф. критического удара (%): +45","• Уровень жизни (HP): +33","• Часть комплекта: Комплект Кровавой Луны [13]","","Кольцо, собранное в подземелье, не подлежит ремонту"]},{"Recipes":[{"Price":250,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater5","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mace67","Caption":"Булава Кровавой Луны ","Description":["Масса: 30","Цена: 250 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 35","• Сила: 40","Действует на:","• Ловкость: -2","Свойства предмета:","• Урон: 22 - 34","• Мф. против увертывания (%): +60","• Мф. критического удара (%): +60","• Мф. мощности дробящего урона: +20","• Мастерство владения дубинами, булавами: +1","Особенности:","• Дробящие атаки: Часты","• Ледяные атаки: Редки","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":"Меч Кровавой Луны ","Description":["Масса: 17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 30","• Сила: 30","Свойства предмета:","• Урон: 12 - 34","• Мф. мощности крит. удара (%): +10","• Мф. против увертывания (%): +50","• Мф. критического удара (%): +80","• Мастерство владения мечами: +2","Особенности:","• Колющие атаки: Малы","• Рубящие атаки: Временами","• Режущие атаки: Малы","• Ледяные атаки: Редки","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":9},{"Category":"mater","Item":"mater5","Count":10}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer70","Caption":"Молот Кровавой Луны ","Description":["Масса: 30","Цена: 370 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 35","• Сила: 45","Действует на:","• Ловкость: -1","• Сила: +1","Свойства предмета:","• Урон: 30 - 48","• Мф. против увертывания (%): +60","• Мф. критического удара (%): +80","• Мф. мощности дробящего урона: +25","• Мастерство владения дубинами, булавами: +2","• Двуручное оружие","Особенности:","• Дробящие атаки: Часты","• Ледяные атаки: Редки","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater15","Count":9},{"Category":"mater","Item":"mater5","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe88","Caption":"Топор Кровавой Луны","Description":["Масса: 20","Цена: 260 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 50","• Уровень: 9","• Мастерство владения топорами, секирами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Ловкость: +5","Свойства предмета:","• Урон: 15 - 35","• Мф. против увертывания (%): +60","• Мф. критического удара (%): +50","• Мф. мощности рубящего урона: +10","• Мастерство владения топорами, секирами: +2","• Второе оружие","Особенности:","• Рубящие атаки: Регулярны","• Дробящие атаки: Редки","• Ледяные атаки: Редки","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater5","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife72","Caption":"Кинжал Кровавой Луны","Description":["Масса: 10","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 20","• Интуиция: 55","• Уровень: 9","• Мастерство владения ножами, кастетами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. мощности крит. удара (%): +10","• Мф. парирования (%): +3","• Интуиция: +2","Свойства предмета:","• Урон: 6 - 17","• Мф. против увертывания (%): +80","• Мф. критического удара (%): +80","• Мастерство владения ножами, кастетами: +3","• Мф. удара сквозь броню (%): +25","• Второе оружие","Особенности:","• Колющие атаки: Регулярны","• Рубящие атаки: Редки","• Режущие атаки: Редки","• Ледяные атаки: Редки","• Часть комплекта: Комплект Кровавой Луны [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater15","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield83","Caption":"Щит Кровавой Луны ","Description":["Масса: 20","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +55","• Мф. критического удара (%): +30","• Мф. блока щитом (%): +5","• Уровень жизни (HP): +48","• Броня головы: 10-36 (9+d27)","• Броня корпуса: 10-36 (9+d27)","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Особенности:","• Защита от дробящего урона: Нормальная","• Защита от колющего урона: Слабая","• Защита от режущего урона: Великолепная","• Защита от рубящего урона: Посредственная","• Часть комплекта: Комплект Кровавой Луны [13]"]}],"Name":"set2","Caption":"Кoмплект Кpoвaвoй Луны","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater11","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg13","Caption":"Поножи Паука","Description":["Масса: 10 ","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +35","• Мф. увертывания (%): +35","• Защита от магии: +25","• Уровень жизни (HP): +18","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: 30","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots21","Caption":"Сапоги Паука","Description":["Масса: 10","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +50","• Мф. увертывания (%): +50","• Защита от магии: +30","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: 50","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi76","Caption":"Наручи Паука","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +25","• Мф. против увертывания (%): +25","• Мф. мощности урона: +15","• Интеллект: +1","• Уровень жизни (HP): +18","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1},{"Category":"mater","Item":"mater12","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor105","Caption":"Броня Паука","Description":["Масса: 35","Цена: 380 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +40","• Мф. против увертывания (%): +70","• Мф. парирования (%): +10","• Мф. увертывания (%): +80","• Мф. контрудара (%): +10","• Мастерство владения оружием: +2","• Защита от магии: +30","• Уровень жизни (HP): +45","• Броня корпуса: 12-44 (11+d33)","Свойства предмета:","• Защита от урона: 75","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":210,"PlaceName":"laba_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":5},{"Category":"mater","Item":"mater12","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet79","Caption":"Шлем Паука ","Description":["Масса: 15","Цена: 210 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +35","• Мф. увертывания (%): +40","• Интеллект: +2","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Защита от магии: +40","• Уровень жизни (HP): +45","• Броня головы: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +50","Особенности:","• Защита от дробящего урона: Хорошая","• Защита от рубящего урона: Нормальная","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi78","Caption":"Перчатки Паука","Description":["Масса: 1","Цена: 130 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 8","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +35","• Ловкость: +4","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Сила: +1","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt35","Caption":"Пояс Паука ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +45","• Защита от магии: +20","• Уровень жизни (HP): +33","• Сила: +4","• Броня пояса: 19-63 (18+d45)","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":200,"PlaceName":"laba_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip76","Caption":"Серьги Паука ","Description":["Масса: 1","Цена: 200 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +25","• Мф. против увертывания (%): +25","• Мф. увертывания (%): +85","• Мф. контрудара (%): +15","• Интеллект: +2","• Защита от магии: +20","• Уровень жизни (HP): +33","• Сила: +4","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet75","Caption":"Амулет Паука","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +35","• Мф. против увертывания (%): +35","• Мф. увертывания (%): +110","• Мф. контрудара (%): +15","• Защита от магии: +30","• Уровень жизни (HP): +66","• Сила: +4","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]},{"Price":0,"PlaceName":"mastershop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater23","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring110","Caption":"Кольцо Паука ","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +20","• Мф. парирования (%): +3","• Мф. увертывания (%): +45","• Мф. контрудара (%): +5","• Защита от урона: +15","• Уровень жизни (HP): +18","• Сила: +1","• Часть комплекта: Комплект Паука [13]","","Кольцо, собранное в подземелье, не подлежит ремонту"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword102","Caption":"Меч Паука ","Description":["Масса: 17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 55","• Интуиция: 15","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +35","• Мф. увертывания (%): +75","• Сила: +1","Свойства предмета:","• Урон: 12 - 34","• Мастерство владения мечами: +2","• Мф. удара сквозь броню (%): +20","• Второе оружие","Особенности:","• Колющие атаки: Малы","• Рубящие атаки: Временами","• Режущие атаки: Малы","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater18","Count":9},{"Category":"mater","Item":"mater12","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe87","Caption":"Топор Паука","Description":["Масса: 10 ","Цена: 260 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 60","• Интуиция: 15","• Уровень: 9","• Мастерство владения топорами, секирами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. увертывания (%): +65","• Ловкость: +3","Свойства предмета:","• Урон: 15 - 35","• Мф. против увертывания (%): +70","• Мф. мощности рубящего урона: +10","• Мастерство владения топорами, секирами: +2","• Мф. удара сквозь броню (%): +10","Особенности:","• Рубящие атаки: Часты","• Дробящие атаки: Редки","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater12","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife71","Caption":"Кинжал Паука ","Description":["Масса: 10","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 25","• Уровень: 9","• Мастерство владения ножами, кастетами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. увертывания (%): +50","• Мф. мощности колющего урона: +20","Свойства предмета:","• Урон: 5 - 17","• Мф. против увертывания (%): +70","• Мастерство владения ножами, кастетами: +3","• Мф. удара сквозь броню (%): +65","• Второе оружие","Особенности:","• Колющие атаки: Временами","• Рубящие атаки: Редки","• Дробящие атаки: Ничтожно редки","• Режущие атаки: Малы","• Часть комплекта: Комплект Паука [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater18","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield82","Caption":"Щит Паука ","Description":["Масса: 15 ","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 15","• Уровень: 9","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +80","• Мф. против увертывания (%): +35","• Защита от урона: +15","• Уровень жизни (HP): +24","• Броня головы: 10-36 (9+d27)","• Броня корпуса: 10-36 (9+d27)","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Особенности:","• Защита от дробящего урона: Нормальная","• Защита от колющего урона: Слабая","• Защита от режущего урона: Великолепная","• Защита от рубящего урона: Посредственная","• Часть комплекта: Комплект Паука [13]"]}],"Name":"set3","Caption":"Кoмплект Пaукa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg14","Caption":"Поножи Утреннего Солнца ","Description":["Масса: 13","Цена: 150 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +30","• Мф. против увертывания (%): +15","• Мф. парирования (%): +2","• Защита от магии огня: +10","• Защита от урона: +10","• Защита от магии воды: -10","• Уровень жизни (HP): +39","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +35","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots24_du2","Caption":"Сапоги Утреннего Солнца","Description":["Масса: 13","Цена: 150 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +30","• Мф. против увертывания (%): +15","• Защита от магии огня: +10","• Защита от магии воды: -10","• Уровень жизни (HP): +33","• Сила: +2","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +75","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi83_du2","Caption":"Перчатки Утреннего Солнца","Description":["Цена: 130 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 25","• Интуиция: 25","• Уровень: 8","• Выносливость: 30","• Сила: 30","Действует на:","• Мф. против критического удара (%): +30","• Мф. парирования (%): +4","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Сила: +2","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1},{"Category":"mater","Item":"mater2","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor108_du1","Caption":"Броня Утреннего Солнца","Description":["Масса: 23","Цена: 380 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +85","• Мф. против увертывания (%): +60","• Мф. парирования (%): +5","• Защита от магии: +50","• Защита от магии огня: +25","• Уровень жизни (HP): +66","• Сила: +5","• Броня корпуса: 13-48 (12+d36)","Свойства предмета:","• Защита от урона: +100","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":5},{"Category":"mater","Item":"mater2","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet82_du2","Caption":"Шлем Утреннего Солнца","Description":["Масса: 15","Цена: 210 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +45","• Мф. против увертывания (%): +35","• Защита от магии: +20","• Защита от магии огня: +10","• Защита от магии воды: -5","• Уровень жизни (HP): +33","• Сила: +4","• Броня головы: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +75","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet26_du2","Caption":"Наручи Утреннего Солнца","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +25","• Мф. против увертывания (%): +25","• Мф. мощности урона: +5","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","• Защита от магии: +20","• Уровень жизни (HP): +33","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt38_du2","Caption":"Пояс Утреннего Солнца","Description":[" Масса: 1","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +35","• Защита от магии огня: +10","• Защита от урона: +25","• Защита от магии воды: -10","• Уровень жизни (HP): +33","• Сила: +4","• Броня пояса: 19-68 (18+d50)","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip82_du2","Caption":"Серьги Утреннего Солнца ","Description":["Масса: 1","Цена: 200 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +35","• Мф. против увертывания (%): +30","• Мф. мощности урона: +10","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Защита от магии: +30","• Защита от магии огня: +10","• Защита от магии воды: -10","• Сила: +6","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet83_du2","Caption":"Ожерелье Утреннего Солнца","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +90","• Мф. парирования (%): +10","• Защита от магии: +20","• Защита от магии огня: +10","• Защита от магии воды: -10","• Уровень жизни (HP): +66","• Сила: +8","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring119_du2","Caption":"Кольцо Утреннего Солнца ","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +40","• Мф. против увертывания (%): +25","• Мф. парирования (%): +3","• Уровень жизни (HP): +33","• Сила: +3","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":250,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":2},{"Category":"mater","Item":"mater2","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer72_du2","Caption":"Молот Утреннего Солнца ","Description":["Масса: 30","Цена: 250 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 40","• Сила: 40","Действует на:","• Ловкость: -1","• Сила: +6","Свойства предмета:","• Урон: 22 - 34","• Мф. против увертывания (%): +40","• Мф. мощности дробящего урона: +15","Особенности:","• Огненные атаки: Малы","• Дробящие атаки: Регулярны","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":11},{"Category":"mater","Item":"mater16","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword105_du2","Caption":"Меч Утреннего Солнца ","Description":["Масса: 17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 35","• Сила: 35","Наложены заклятия: Огненной стихии","Действует на:","• Мф. против критического удара (%): +55","• Мф. парирования (%): +3","• Ловкость: +1","• Интуиция: +1","Свойства предмета:","• Урон: 12 - 34","• Мф. против увертывания (%): +30","• Мастерство владения мечами: +1","• Мф. удара сквозь броню (%): +10","Особенности:","• Огненные атаки: Малы","• Колющие атаки: Редки","• Рубящие атаки: Временами","• Режущие атаки: Редки","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater2","Count":8},{"Category":"mater","Item":"mater16","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe90_du2","Caption":"Топор Утреннего Солнца ","Description":["Масса: 15","Цена: 260 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 35","• Интуиция: 30","• Уровень: 9","• Мастерство владения топорами, секирами: 5","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +50","• Мф. против увертывания (%): +55","• Сила: +4","Свойства предмета:","• Урон: 16 - 35","• Мастерство владения топорами, секирами: +2","Особенности:","• Огненные атаки: Малы","• Рубящие атаки: Регулярны","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater2","Count":11},{"Category":"mater","Item":"mater16","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife74_du2","Caption":"Кинжал Утреннего Солнца ","Description":["Масса: 8","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 35","• Интуиция: 35","• Уровень: 9","• Мастерство владения ножами, кастетами: 5","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +15","• Мф. против увертывания (%): +15","• Мф. парирования (%): +10","• Мф. мощности колющего урона: +10","• Мастерство владения ножами, кастетами: +1","• Сила: +2","Свойства предмета:","• Урон: 6 - 17","• Мф. удара сквозь броню (%): +65","• Второе оружие","Особенности:","• Огненные атаки: Малы","• Колющие атаки: Регулярны","• Часть комплекта: Комплект Утреннего Солнца [13]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":1},{"Category":"mater","Item":"mater16","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield85_du2","Caption":"Щит Утреннего Солнца ","Description":["Масса: 15","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 30","• Интуиция: 30","• Уровень: 9","• Выносливость: 35","• Сила: 35","Действует на:","• Мф. против критического удара (%): +60","• Мф. блока щитом (%): +6","• Защита от магии: +10","• Уровень жизни (HP): +45","• Броня головы: 10-36 (9+d27)","• Броня корпуса: 10-36 (9+d27)","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","• Часть комплекта: Комплект Утреннего Солнца [13]"]}],"Name":"set4","Caption":"Кoмплект Утpеннегo Сoлнцa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":215,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater17","Count":5},{"Category":"mater","Item":"mater1","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet83","Caption":"Маска Решимости","Description":["Масса: 5","Цена: 215 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Интеллект: +6","• Мастерство владения магией стихий: +1","• Защита от магии: +30","• Уровень жизни (HP): +60","• Уровень маны: +120","• Броня головы: 8-8"]},{"Recipes":[{"Price":380,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater1","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"roba51","Caption":"Мантия Решимости","Description":["Масса: 5","Цена: 380 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +25","• Подавление защиты от магии: +3","• Мф. мощности магии стихий: +20","• Уровень жизни (HP): +42","• Уровень маны: +120","• Броня корпуса: 5-16 (4+d12)","Свойства предмета:","• Защита от урона: 100"]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg15","Caption":"Поножи Решимости","Description":["Масса: 5","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Подавление защиты от магии: +2","• Мф. мощности магии стихий: +3","• Уровень жизни (HP): +24","• Уровень маны: +90","• Броня пояса: 5-16 (4+d12)","• Броня ног: 5-16 (4+d12)","Свойства предмета:","• Защита от урона: 10"]},{"Recipes":[{"Price":360,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater17","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"staff52","Caption":"Посох Решимости","Description":["Масса: 5","Цена: 360 кр.","Долговечность: 0/50","Вероятность срабатывания: 70%","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения магическими посохами: 3","• Мана: 80","• Мудрость: 50","Действует на:","• Подавление защиты от магии: +2","• Мф. мощности магии стихий: +15","• Интеллект: +6","• Мастерство владения магией стихий: +1","• Защита от урона: +50","• Уровень жизни (HP): +60","• Уменьшение расхода маны (%): +3","Свойства предмета:","• Урон: 1 - 20","• Двуручное оружие","Особенности:","• Огненные атаки: Всегда"]},{"Recipes":[{"Price":160,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi84","Caption":"Перчатки Решимости","Description":["Масса: 1 ","Цена: 160 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Подавление защиты от магии: +5 ","• Мф. мощности магии стихий (%): +2 ","• Интеллект: +2 ","• Мастерство владения магическими посохами: +2 ","• Защита от магии: +5 ","• Уровень жизни (HP): +18 "]},{"Recipes":[{"Price":140,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet27","Caption":"Наручи Pешимости","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Интеллект: +2 ","• Защита от магии: +5 ","• Уровень жизни (HP): +60","• Уровень маны: +120 "]},{"Recipes":[{"Price":140,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt39","Caption":"Пояс Решимости","Description":["Масса: 1","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Сила: 10","• Мудрость: 50","Действует на:","• Подавление защиты от магии: +2 ","• Интеллект: +2","• Уровень маны: +130 ","• Броня пояса: 5-16 (4+d12) "]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater1","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots25","Caption":"Сапоги Решимости","Description":["Масса: 5","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 40","• Уровень: 9","• Мудрость: 50","Действует на:","• Подавление защиты от магии: +1","• Мф. мощности магии стихий: +5","• Уровень жизни (HP): +24","• Уровень маны: +60","• Броня ног: 5-16 (4+d12)","Свойства предмета:","• Защита от урона: 50"]}],"Name":"set5","Caption":"Кoмплeкт Peшимocти","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg16","Caption":"Поножи Скорпиона ","Description":["Масса: 10 ","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +25","• Мф. против увертывания (%): +25","• Мф. критического удара (%): +25","• Уровень жизни (HP): +33","• Сила: +2","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +30","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots27","Caption":"Ботинки Скорпиона ","Description":["Масса: 10","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +50","• Мф. против увертывания (%): +30","• Мф. критического удара (%): +25","• Защита от урона: +25","• Уровень жизни (HP): +45","• Сила: +1","• Броня ног: 10-36 (9+d27)","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi86","Caption":"Перчатки Скорпиона ","Description":["Масса: 1","Цена: 130 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 8","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против увертывания (%): +40","• Мф. критического удара (%): +5","• Мф. парирования (%): +1","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Сила: +3","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1},{"Category":"mater","Item":"mater3","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor109","Caption":"Броня Скорпиона ","Description":["Масса: 40","Цена: 380 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +90","• Мф. против увертывания (%): +60","• Мф. критического удара (%): +60","• Мф. парирования (%): +3","• Защита от магии: +20","• Уровень жизни (HP): +78","• Сила: +3","• Броня корпуса: 18-53 (17+d36)","Свойства предмета:","• Защита от урона: +125","Особенности:","• Защита от дробящего урона: Хорошая","• Защита от колющего урона: Посредственная","• Защита от режущего урона: Посредственная","• Защита от рубящего урона: Хорошая","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater16","Count":5},{"Category":"mater","Item":"mater3","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet85","Caption":"Шлем Скорпиона ","Description":["Масса: 15 ","Цена: 210 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +45","• Мф. против увертывания (%): +70","• Мф. критического удара (%): +50","• Защита от магии: +15","• Уровень жизни (HP): +42","• Броня головы: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +50","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet32","Caption":"Браслет Скорпиона ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +20","• Мф. против увертывания (%): +40","• Мф. критического удара (%): +35","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Защита от магии: +25","• Уровень жизни (HP): +18","• Сила: +3","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt44","Caption":"Пояс Скорпиона ","Description":["Масса: 1","Цена: 140 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +55","• Защита от магии: +15","• Защита от урона: +25","• Уровень жизни (HP): +30","• Броня пояса: 19-63 (18+d45)","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip90","Caption":"Серьги Скорпиона","Description":["Масса: 1","Цена: 200 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против увертывания (%): +90","• Мф. критического удара (%): +90","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Защита от урона: +25","• Уровень жизни (HP): +24","• Сила: +4","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet98","Caption":"Амулет Скорпиона","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +50","• Мф. против увертывания (%): +60","• Мф. парирования (%): +4","• Защита от магии: +30","• Защита от урона: +50","• Уровень жизни (HP): +72","• Сила: +1","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring129","Caption":"Кольцо Скорпиона ","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +10","• Мф. против увертывания (%): +75","• Мф. критического удара (%): +50","• Мф. парирования (%): +1","• Уровень жизни (HP): +18","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":250,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":2},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"hammer74","Caption":"Цеп Скорпиона ","Description":["Масса: 25","Цена: 250 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Мастерство владения дубинами, булавами: 5","• Выносливость: 45","• Сила: 35","Действует на:","• Мастерство владения дубинами, булавами: +1","Свойства предмета:","• Урон: 22 - 34","• Мф. против увертывания (%): +100","• Мф. критического удара (%): +30","• Мф. мощности дробящего урона: +15","Особенности:","• Колющие атаки: Редки","• Дробящие атаки: Регулярны","• Атаки Тьмой: Ничтожно редки","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword105","Caption":"Меч Скорпиона ","Description":["Масса: 17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 50","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Сила: +2","Свойства предмета:","• Урон: 11 - 33","• Мф. против увертывания (%): +100","• Мф. критического удара (%): +100","• Мастерство владения мечами: +1","Особенности:","• Колющие атаки: Малы","• Рубящие атаки: Временами","• Режущие атаки: Малы","• Атаки Тьмой: Ничтожно редки","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":260,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater3","Count":8},{"Category":"mater","Item":"mater16","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"axe90","Caption":"Топор Скорпиона ","Description":["Масса: 20","Цена: 260 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Мастерство владения топорами, секирами: 5","• Выносливость: 45","• Сила: 35","Действует на:","• Интуиция: +2","• Сила: +5","Свойства предмета:","• Урон: 15 - 35","• Мф. против увертывания (%): +35","• Мф. критического удара (%): +35","• Мф. мощности рубящего урона: +10","• Мастерство владения топорами, секирами: +2","• Второе оружие","Особенности:","• Рубящие атаки: Регулярны","• Дробящие атаки: Редки","• Атаки Тьмой: Ничтожно редки","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater3","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife77","Caption":"Клинок Скорпиона","Description":["Масса: 10","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. парирования (%): +7","• Интуиция: +5","Свойства предмета:","• Урон: 6 - 17","• Мф. против увертывания (%): +75","• Мф. критического удара (%): +90","• Мастерство владения мечами: +2","• Мф. удара сквозь броню (%): +25","• Второе оружие","Особенности:","• Колющие атаки: Временами","• Рубящие атаки: Редки","• Режущие атаки: Малы","• Атаки Тьмой: Ничтожно редки","• Часть комплекта: Комплект Скорпиона [12]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":1},{"Category":"mater","Item":"mater16","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield86","Caption":"Щит Скорпиона ","Description":["Масса: 20","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 15","• Интуиция: 45","• Уровень: 9","• Выносливость: 45","• Сила: 35","Действует на:","• Мф. против критического удара (%): +30","• Мф. критического удара (%): +30","• Мф. блока щитом (%): +10","• Уровень жизни (HP): +36","• Броня головы: 10-36 (9+d27)","• Броня корпуса: 10-36 (9+d27)","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","• Часть комплекта: Комплект Скорпиона [12]"]}],"Name":"set6","Caption":"Кoмплeкт Cкopпиoнa","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"leg17","Caption":"Поножи Злодеяний ","Description":["Масса: 10","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +20","• Мф. критического удара (%): +20","• Мф. увертывания (%): +20","• Ловкость: +2","• Интуиция: +2","• Защита от магии: +20","• Броня пояса: 10-36 (9+d27)","• Броня ног: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +25","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"boots26","Caption":"Ботинки Злодеяний","Description":["Масса: 10","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +20","• Мф. критического удара (%): +30","• Мф. увертывания (%): +50","• Ловкость: +4","• Защита от магии: +20","• Защита от урона: +20","• Броня ног: 9-35 (8+d27)","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":130,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"naruchi85","Caption":"Перчатки Злодеяний ","Description":["Масса: 1","Цена: 130 кр.","Долговечность: 0/30","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 8","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +30","• Мф. увертывания (%): +25","• Ловкость: +2","• Интуиция: +2","• Мастерство владения мечами: +3","• Мастерство владения дубинами, булавами: +3","• Мастерство владения ножами, кастетами: +3","• Мастерство владения топорами, секирами: +3","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":380,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater10","Count":8}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor108","Caption":"Броня Злодеяний ","Description":["Масса: 40 ","Цена: 380 кр.","Долговечность: 0/100","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +55","• Мф. критического удара (%): +50","• Мф. увертывания (%): +60","• Ловкость: +7","• Интуиция: +3","• Защита от магии: +65","• Уровень жизни (HP): +54","• Сила: +2","• Броня корпуса: 12-44 (11+d33)","Свойства предмета:","• Защита от урона: +75","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":210,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":5},{"Category":"mater","Item":"mater10","Count":6}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"helmet84","Caption":"Шлем Злодеяний ","Description":["Масса: 15","Цена: 210 кр.","Долговечность: 0/60","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +30","• Мф. критического удара (%): +45","• Мф. увертывания (%): +20","• Ловкость: +2","• Защита от магии: +50","• Уровень жизни (HP): +24","• Броня головы: 10-36 (9+d27)","Свойства предмета:","• Защита от урона: +50","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"braslet31","Caption":"Наручи Злодеяний ","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +15","• Мф. критического удара (%): +50","• Мф. контрудара (%): +15","• Ловкость: +2","• Интуиция: +2","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Уровень жизни (HP): +12","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":140,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":0,"IsGift":false,"Name":"belt43","Caption":"Пояс Злодеяний","Description":["Масса: 2","Цена: 140 кр.","Долговечность: 0/40","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +20","• Мф. контрудара (%): +15","• Защита от магии: +30","• Уровень жизни (HP): +12","• Броня пояса: 19-63 (18+d45)","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":200,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip89","Caption":"Серьги Злодеяний","Description":["Масса: 1","Цена: 200 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. критического удара (%): +95","• Мф. увертывания (%): +100","• Мф. контрудара (%): +10","• Ловкость: +5","• Интуиция: +2","• Мастерство владения мечами: +1","• Мастерство владения дубинами, булавами: +1","• Мастерство владения ножами, кастетами: +1","• Мастерство владения топорами, секирами: +1","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet97","Caption":"Амулет Злодеяний","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +40","• Мф. увертывания (%): +85","• Ловкость: +4","• Защита от магии: +50","• Защита от урона: +50","• Уровень жизни (HP): +45","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":100,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring128","Caption":"Кольцо Злодеяний ","Description":["Масса: 1","Цена: 100 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +10","• Мф. критического удара (%): +75","• Мф. увертывания (%): +35","• Ловкость: +2","• Уровень жизни (HP): +18","• Сила: +1","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":370,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":8},{"Category":"mater","Item":"mater10","Count":9}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword100","Caption":"Меч Злодеяний ","Description":["Масса: 25","Цена: 330 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 50 ","• Интуиция: 40 ","• Уровень: 9 ","• Мастерство владения ножами, кастетами: 5 ","• Выносливость: 30 ","• Сила: 25 ","Действует на: ","• Ловкость: +6 ","Свойства предмета: ","• Урон: 17 - 51 ","• Мф. критического удара (%): +180 ","• Двуручное оружие ","• Зоны блокирования: + ","Особенности: ","• Колющие атаки: Временами ","• Рубящие атаки: Малы ","• Электрические атаки: Малы ","• Часть комплекта: Комплект Злодеяний [0/12] ","Описание: ","Требует мастерство владения ножами и кастетами"]},{"Recipes":[{"Price":220,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater29","Count":1},{"Category":"mater","Item":"mater10","Count":12}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"knife76","Caption":"Кинжал Злодеяний ","Description":["Масса: 10","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Мастерство владения ножами, кастетами: 5","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. увертывания (%): +80","• Ловкость: +4","• Интуиция: +1","Свойства предмета:","• Урон: 5 - 17","• Мф. против увертывания (%): +50","• Мф. критического удара (%): +70","• Мастерство владения ножами, кастетами: +2","• Мф. удара сквозь броню (%): +70","• Второе оружие","Особенности:","• Колющие атаки: Часты","• Электрические атаки: Редки","• Часть комплекта: Комплект Злодеяний [12]"]},{"Recipes":[{"Price":190,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater14","Count":3},{"Category":"mater","Item":"mater29","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield85","Caption":"Щит Злодеяний","Description":["Масса: 15","Цена: 190 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 50","• Интуиция: 40","• Уровень: 9","• Выносливость: 30","• Сила: 25","Действует на:","• Мф. против критического удара (%): +30","• Мф. критического удара (%): +75","• Мф. увертывания (%): +75","• Защита от урона: +10","• Уровень жизни (HP): +36","• Броня головы: 6-26 (5+d21)","• Броня корпуса: 6-26 (5+d21)","• Броня пояса: 6-26 (5+d21)","• Броня ног: 6-26 (5+d21)","Особенности:","• Защита от дробящего урона: Нормальная","• Защита от колющего урона: Слабая","• Защита от режущего урона: Хорошая","• Защита от рубящего урона: Нормальная","• Часть комплекта: Комплект Злодеяний [12]"]}],"Name":"set7","Caption":"Кoмплeкт Злодеяний","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater7","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip83","Caption":"Серьги Пожирающего Пламени","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Огня: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +25","• Мф. мощности магии Огня: +35","• Интеллект: +10","• Мастерство владения стихией Огня: +2","• Уровень жизни (HP): +48","• Уменьшение расхода маны (%): +5","• Часть комплекта: Комплект Испепеления [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater7","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet86","Caption":"Амулет Пожирающего Пламени","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Огня: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +40","• Мф. мощности магии Огня: +5","• Интеллект: +5","• Защита от магии огня: +30","• Защита от урона: +60","• Уровень маны: +120","• Часть комплекта: Комплект Испепеления [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater7","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring120","Caption":"Кольцо Пожирающего Пламени","Description":["Масса: 1","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Огня: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +10","• Интеллект: +7","• Мастерство владения стихией Огня: +2","• Защита от магии: +20","• Уровень маны: +80","• Часть комплекта: Комплект Испепеления [5]"]}],"Name":"set8","Caption":"Комплект Испепеления","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3},{"Category":"mater","Item":"mater8","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip84","Caption":"Серьги Гравитации","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Земли: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +35","• Мф. мощности магии Земли: +25","• Интеллект: +10","• Мастерство владения стихией Земли: +2","• Уровень жизни (HP): +90","• Уменьшение расхода маны (%): +5","• Часть комплекта: Комплект Гравитации [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater8","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet87","Caption":"Амулет Гравитации","Description":["Масса: 1 ","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Земли: 7","• Мудрость: 50","Действует на:","• Интеллект: +5","• Мастерство владения стихией Земли: +2","• Защита от магии: +10","• Защита от урона: +35","• Защита от магии земли: +10","• Уровень жизни (HP): +90","• Уровень маны: +120","• Часть комплекта: Комплект Гравитации [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater8","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring121","Caption":"Кольцо Гравитации","Description":["Масса: 1","Цена: 150 кр","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Земли: 7","• Мудрость: 50","Действует на:","• Интеллект: +5","• Мастерство владения стихией Земли: +2","• Уровень жизни (HP): +39","• Уровень маны: +120","• Часть комплекта: Комплект Гравитации [5]"]}],"Name":"set9","Caption":"Комплект Гравитации","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3},{"Category":"mater","Item":"mater3","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip85","Caption":"Серьги Цепной Молнии","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воздуха: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +40","• Мф. мощности магии Воздуха: +15","• Интеллект: +10","• Мастерство владения стихией Воздуха: +2","• Уровень жизни (HP): +33","• Уменьшение расхода маны (%): +10","• Часть комплекта: Комплект Цепных Молний [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":2},{"Category":"mater","Item":"mater3","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet88","Caption":"Амулет Цепных Молний","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воздуха: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +45","• Мф. мощности магии Воздуха: +5","• Интеллект: +7","• Защита от урона: +25","• Защита от магии воздуха: +30","• Уровень жизни (HP): +40","• Уровень маны: +120","• Часть комплекта: Комплект Цепных Молний [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":1},{"Category":"mater","Item":"mater3","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring122","Caption":"Кольцо Цепных Молний","Description":["Масса: 1","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воздуха: 7","• Мудрость: 50","Действует на:","• Интеллект: +9","• Мастерство владения стихией Воздуха: +2","• Уровень маны: +90","• Уменьшение расхода маны (%): +1","• Часть комплекта: Комплект Цепных Молний [5]"]}],"Name":"set10","Caption":"Комплект Цепных Молний","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater4","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip82","Caption":"Серьги Оледенения","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воды: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +70","• Мф. мощности магии Воды: +20","• Интеллект: +7","• Мастерство владения стихией Воды: +2","• Защита от урона: +35","• Уровень жизни (HP): +42","• Уменьшение расхода маны (%): +5","• Часть комплекта: Комплект Оледенения [5]"]},{"Recipes":[{"Price":240,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2},{"Category":"mater","Item":"mater4","Count":4}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"amulet85","Caption":"Амулет Оледенения","Description":["Масса: 1","Цена: 240 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воды: 7","• Мудрость: 50","Действует на:","• Мф. против критического удара (%): +35","• Мф. мощности магии Воды: +5","• Интеллект: +5","• Мастерство владения стихией Воды: +2","• Защита от магии: +30","• Защита от урона: +90","• Защита от магии воды: +10","• Часть комплекта: Комплект Оледенения [5]"]},{"Recipes":[{"Price":150,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1},{"Category":"mater","Item":"mater4","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":0,"IsGift":false,"Name":"ring119","Caption":"Кольцо Оледенения","Description":["Масса: 1","Цена: 150 кр.","Долговечность: 0/50","Требуется минимальное:","• Интеллект: 50","• Уровень: 9","• Мастерство владения стихией Воды: 7","• Мудрость: 50","Действует на:","• Интеллект: +7","• Мастерство владения стихией Воды: +2","• Защита от магии: +30","• Защита от урона: +25","• Защита от магии воды: +20","• Часть комплекта: Комплект Оледенения [5]"]}],"Name":"set11","Caption":"Комплект Оледенения","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":200,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":2}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip91","Caption":"Серьги Неуемной Силы","Description":["Масса: 1 ","Цена: 200 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 9 ","• Выносливость: 50 ","• Сила: 50 ","Действует на: ","• Мф. против критического удара (%): +70 ","• Мф. против увертывания (%): +70 ","• Мастерство владения дубинами, булавами: +1 ","• Уровень жизни (HP): +55 ","• Сила: +10 "]},{"Recipes":[{"Price":100,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring135","Caption":"Кольцо Неуемной Силы","Description":["Масса: 1 ","Цена: 100 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 9 ","• Выносливость: 50 ","• Сила: 50 ","Действует на: ","• Мф. против критического удара (%): +40 ","• Мф. против увертывания (%): +40 ","• Сила: +7 "]}],"Name":"set12","Caption":"Вещи Неуемной Силы","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1},{"Category":"mater","Item":"mater29","Count":3},{"Category":"mater","Item":"mater4","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff53","Caption":"Посох Сохранения ","Description":["Масса: 5","Цена: 300 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Интеллект: 75 ","• Уровень: 9 ","• Мастерство владения магическими посохами: 3 ","• Мудрость: 50 ","Действует на: ","• Мф. против критического удара (%): +100 ","• Интеллект: +5 ","• Мастерство владения магией стихий: +2 ","• Защита от магии: +40 ","• Защита от урона: +40 ","• Уровень жизни (HP): +150 ","Свойства предмета: ","• Урон: 1 - 20 ","• Двуручное оружие ","Особенности: ","• Огненные атаки: Малы ","• Ледяные атаки: Малы ","• Электрические атаки: Малы ","• Земляные атаки: Малы "]}],"Name":"staff53","Caption":"Посох Сохранения ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":260,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]},{"Price":260,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1},{"Category":"mater","Item":"mater5","Count":5},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe91","Caption":"Топор Сострадания","Description":["Масса: 20 ","Цена: 260 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 25 ","• Интуиция: 25 ","• Уровень: 9 ","• Мастерство владения топорами, секирами: 5 ","• Выносливость: 50 ","• Сила: 50 ","Действует на: ","• Мастерство владения топорами, секирами: +2 ","Свойства предмета: ","• Урон: 10 - 40 ","• Мф. мощности крит. удара (%): 20 ","• Мф. критического удара (%): 50 ","• Мф. мощности рубящего урона: 15 ","• Зоны блокирования: + ","Особенности: ","• Рубящие атаки: Часты ","• Дробящие атаки: Редки ","Наложено заклятье: Тактика Крови ","Описание: ","Они заслужили быструю смерть... ","","Тактика Крови. Шанс получить тактику крови при атаке. Шанс срабатывания: 5% при каждом успешном ударе."]}],"Name":"axe91","Caption":"Топор Сострадания","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":220,"PlaceName":"shop_dev","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_dem","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_ang","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_cap","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_sand","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_sun","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]},{"Price":220,"PlaceName":"shop_moon","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1},{"Category":"mater","Item":"mater13","Count":3},{"Category":"mater","Item":"mater12","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword106","Caption":"Меч Сомнений","Description":["Масса: 17 ","Цена: 220 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 50 ","• Интуиция: 25 ","• Уровень: 9 ","• Мастерство владения мечами: 5 ","• Выносливость: 30 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): +20 ","• Мф. против увертывания (%): +20 ","• Мф. парирования (%): +5 ","Свойства предмета: ","• Урон: 15 - 30 ","• Мф. мощности режущего урона: 10 ","• Мастерство владения мечами: 2 ","• Зоны блокирования: + ","Особенности: ","• Колющие атаки: Малы ","• Режущие атаки: Регулярны ","Наложено заклятье: Предвидение ","Описание: ","Трудно решить, кого убить первым... ","","Предвидение. Следующий удар противника парируется. Шанс срабатывания: 1% при каждом успешном ударе. "]}],"Name":"sword106","Caption":"Меч Сомнений","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set1","Item":"leg11","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg11_1","Caption":"Пoнoжи Зaбытыx Вpемен [10]","Description":["Мaссa: 10","Ценa: 180 кp. ","Дoлгoвечнoсть: 0/50 ","Тpебуется минимaльнoе: ","• Лoвкoсть: 15 ","• Интуиция: 15 ","• Уpoвень: 9 ","• Вынoсливoсть: 65 ","• Силa: 45 ","Действует нa: ","• Зaщитa oт мaгии: +25 ","• Уpoвень жизни (HP): +57 ","• Бpoня пoясa: 16-55 (15+d40) ","• Бpoня нoг: 16-55 (15+d40) ","Свoйствa пpедметa: ","• Зaщитa oт уpoнa: 55 ","• Чaсть кoмплектa: Кoмплект Зaбытыx Вpемен [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set1","Item":"braslet25","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet25_1","Caption":"Наручи Забытых Времен [10] ","Description":["Масса: 2","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 65 ","• Сила: 45 ","Действует на: ","• Мф. против увертывания (%): +30 ","• Мастерство владения оружием: +2 ","• Защита от магии: +40 ","• Уровень жизни (HP): +41 ","• Сила: +2 ","Свойства предмета: ","• Защита от урона: 30 ","• Часть комплекта: Комплект Забытых Времен [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set1","Item":"belt37","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt37_1","Caption":"Пояс Забытых Времен [10]","Description":["Масса: 2","Цена: 168 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 65 ","• Сила: 45 ","Действует на: ","• Защита от магии: +25 ","• Защита от дробящего урона: +25 ","• Уровень жизни (HP): +121 ","• Броня пояса: 21-80 (20+d60) ","• Часть комплекта: Комплект Забытых Времен [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set1","Item":"clip81","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip81","Caption":"Серьги Забытых Времен [10] ","Description":["Масса: 1 ","Цена: 240 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 45 ","• Ловкость: 15 ","• Интуиция: 15 ","• Выносливость: 65 ","Действует на: ","• Владение молотами и дубинами: +1 ","• Уровень жизни: +75 ","• Мф. против критического удара: +45% ","• Мф. против увёртывания: +45% ","• Защита от урона: +35 ","• Защита от магии: +20 ","• Броня головы: 1-33 ","• Броня корпуса: 1-33 ","• Броня пояса: 1-33 ","• Броня ног: 1-33 ","• Часть комплекта: Комплект Забытых Времен [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set1","Item":"amulet81","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet81_1","Caption":"Амулет Забытых Времен [10] ","Description":["Масса: 1 ","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 65 ","• Сила: 45 ","Действует на: ","• Мф. против критического удара (%): +45 ","• Мф. против увертывания (%): +45 ","• Защита от магии: +50 ","• Уровень жизни (HP): +118 ","• Сила: +6 ","• Броня головы: 1-30 (d30) ","• Броня корпуса: 1-30 (d30) ","• Броня пояса: 1-30 (d30) ","• Броня ног: 1-30 (d30) ","• Часть комплекта: Комплект Забытых Времен [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set1","Item":"ring117","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring117_1","Caption":"Кольцо Забытых Времен [10] ","Description":["Масса: 1 ","Цена: 120 кр. ","Долговечность: 0/60 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 65 ","• Сила: 45 ","Действует на: ","• Мф. против критического удара (%): +20 ","• Мф. против увертывания (%): +10 ","• Защита от урона: +25 ","• Уровень жизни (HP): +66 (33) ","• Броня головы: 1-15 (d15) ","• Броня корпуса: 1-15 (d15) ","• Броня пояса: 1-15 (d15) ","• Броня ног: 1-15 (d15) ","• Часть комплекта: Забытых Времен [10] [0/12] "]}],"Name":"set1_10","Caption":"Кoмплект Зaбытыx Вpемен [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set2","Item":"leg12","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg12_1","Caption":"Пoнoжи Кpoвaвoй Луны [10]","Description":["Мaссa: 10","Ценa: 180 кp. ","Дoлгoвечнoсть: 0/50 ","Тpебуется минимaльнoе: ","• Лoвкoсть: 15 ","• Интуиция: 60 ","• Уpoвень: 10 ","• Вынoсливoсть: 35 ","• Силa: 35 ","Действует нa: ","• Мф. пpoтив кpитическoгo удapa (%): +25 ","• Мф. пpoтив увеpтывaния (%): +25 ","• Мф. кpитическoгo удapa (%): +45 ","• Зaщитa oт мaгии: +15 ","• Уpoвень жизни (HP): +35 ","• Бpoня пoясa: 11-40 (10+d30) ","• Бpoня нoг: 11-40 (10+d30) ","Свoйствa пpедметa: ","• Зaщитa oт уpoнa: 40 ","• Чaсть кoмплектa: Кoмплект Кpoвaвoй Луны [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set2","Item":"braslet24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet24_1","Caption":"Браслет Кровавой Луны [10]","Description":["Масса: 2","Цена: 167 кр. ","Вес: 2 ","Долговечность: 0/40 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 35 ","• Ловкость: 15 ","• Интуиция: 60 ","• Выносливость: 35 ","Действует на: ","• Сила: +3 ","• Владение оружием: +2 ","• Мф. мощности критического удара: +23% ","• Мф. критического удара: +40% ","• Мф. против критического удара: +25% ","• Часть комплекта: Комплект Кровавой Луны [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set2","Item":"belt36","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt36_1","Caption":"Пояс Кровавой Луны [10] ","Description":["Масса: 1 ","Цена: 168 кр. ","Долговечность: 0/50 ","Требуется минимальное:","• Уровень: 10 ","• Сила: 35 ","• Ловкость: 15 ","• Интуиция: 60 ","• Выносливость: 35 ","Действует на: ","• Мф. мощности критического удара: +15% ","• Мф. критического удара: +20% ","• Защита от урона: +30 ","• Защита от магии: +25 ","• Броня пояса: 21-70 ","• Часть комплекта: Комплект Кровавой Луны [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set2","Item":"clip80","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip80_1","Caption":"Серьги Кровавой Луны [10] ","Description":["Масса: 1","Цена: 240 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 35 ","Действует на: ","• Мф. мощности крит. удара (%): +30 (25) ","• Мф. против увертывания (%): +45 (35) ","• Мф. критического удара (%): +100 (70) ","• Интеллект: +2 ","• Мастерство владения оружием: +1 ","• Сила: +4 ","• Часть комплекта: Комплект Кровавой Луны [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set2","Item":"amulet80","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet80_1","Caption":"Амулет Кровавой Луны [10] (Масса: 1) ","Description":["Масса: 1","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +80 ","• Мф. против увертывания (%): +60 ","• Интеллект: +1 ","• Защита от магии: +40 ","• Защита от урона: +85 ","• Уровень жизни (HP): +62 ","• Сила: +1 ","• Часть комплекта: Комплект Кровавой Луны [10] [0/12]"]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set2","Item":"ring116","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring116_1","Caption":"Кольцо Кровавой Луны [10] ","Description":["Масса: 1","Цена: 120 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 35 ","Действует на: ","• Мф. мощности крит. удара (%): +13 ","• Мф. против увертывания (%): +35 ","• Мф. критического удара (%): +45 ","• Уровень жизни (HP): +50 ","• Часть комплекта: Комплект Кровавой Луны [10] [0/12] "]}],"Name":"set2_10","Caption":"Кoмплект Кpoвaвoй Луны [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set3","Item":"leg13","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg13_1","Caption":"Пoнoжи Пaукa [10] ","Description":["Мaссa: 10 ","Ценa: 180 кp. ","Дoлгoвечнoсть: 0/50 ","Тpебуется минимaльнoе: ","• Лoвкoсть: 60 ","• Интуиция: 15 ","• Уpoвень: 10 ","• Вынoсливoсть: 35 ","• Силa: 35 ","Действует нa: ","• Мф. пpoтив кpитическoгo удapa (%): +45 ","• Мф. увеpтывaния (%): +50 ","• Зaщитa oт мaгии: +30 ","• Уpoвень жизни (HP): +27 ","• Бpoня пoясa: 11-40 (10+d30) ","• Бpoня нoг: 11-40 (10+d30) ","Свoйствa пpедметa: ","• Зaщитa oт уpoнa: 35 ","• Чaсть кoмплектa: Кoмплект Пaукa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set3","Item":"naruchi76","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi76_1","Caption":"Наручи Паука [10]","Description":["Масса: 2 ","Цена: 168 кр. ","Долговечность: 0/30 ","Требуется минимальное: ","• Ловкость: 60 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +35 ","• Мф. против увертывания (%): +35 ","• Мф. мощности урона: +17 ","• Интеллект: +1 ","• Уровень жизни (HP): +26 ","• Часть комплекта: Комплект Паука [10] [0/12]"]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set3","Item":"belt35","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt35_1","Caption":"Пояс Паука [10]","Description":["Масса: 2 ","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное:","• Уровень: 10 ","• Сила: 35 ","• Ловкость: 60 ","• Интуиция: 15 ","• Выносливость: 35 ","Действует на: ","• Сила: +4 ","• Уровень жизни: +41 ","• Мф. против критического удара: +55% ","• Мф. увёртывания: +15% ","• Защита от магии: +25 ","• Броня пояса: 21-70 ","• Часть комплекта: Комплект Паука [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set3","Item":"clip76","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip76_1","Caption":"Серьги Паука [10] ","Description":["Масса: 1","Цена: 240 кр. ","Долговечность: 0/60 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 35 ","• Ловкость: 60 ","• Интуиция: 15 ","• Выносливость: 35 ","Действует на: ","• Сила: +4 ","• Интеллект: +2 ","• Уровень жизни: +41 ","• Мф. против критического удара: +35% ","• Мф. увёртывания: +110% ","• Мф. против увёртывания: +35% ","• Мф. контрудара: +17% ","• Защита от магии: +25 ","• Часть комплекта: Комплект Паука [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set3","Item":"amulet75","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet75_1","Caption":"Амулет Паука [10] ","Description":["Масса: 1","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 60 ","• Интуиция: 15 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +45 ","• Мф. против увертывания (%): +45 ","• Мф. увертывания (%): +120 ","• Мф. контрудара (%): +20 ","• Защита от магии: +40 ","• Уровень жизни (HP): +74 (66) ","• Сила: +4 ","Часть комплекта: Комплект Паука [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set3","Item":"ring110","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring110_1","Caption":"Кольцо Паука [10] ","Description":["Масса: 1","Цена: 120 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 35 ","• Ловкость: 60 ","• Интуиция: 15 ","• Выносливость: 35 ","Действует на: ","• Сила: +1 ","• Уровень жизни: +30 ","• Мф. против критического удара: +20% ","• Мф. увёртывания: +45% ","• Мф. парирования: +5% ","• Мф. контрудара: +5% ","• Защита от урона: +15 ","• Часть комплекта: Комплект Паука [10] [0/12] "]}],"Name":"set3_10","Caption":"Кoмплект Пaукa [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set4","Item":"leg14","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg14_1","Caption":"Пoнoжи Утpеннегo Сoлнцa [10] ","Description":["Мaссa: 13","Ценa: 180 кp. ","Дoлгoвечнoсть: 0/60 ","Тpебуется минимaльнoе: ","• Лoвкoсть: 30 ","• Интуиция: 30 ","• Уpoвень: 10 ","• Вынoсливoсть: 45 ","• Силa: 45 ","Действует нa: ","• Мф. пpoтив кpитическoгo удapa (%): +40 ","• Мф. пpoтив увеpтывaния (%): +20 ","• Мф. пapиpoвaния (%): +2 ","• Зaщитa oт мaгии oгня: +15 ","• Зaщитa oт уpoнa: +15 ","• Зaщитa oт мaгии вoды: -10 ","• Уpoвень жизни (HP): +45 ","• Бpoня пoясa: 11-40 (10+d30) ","• Бpoня нoг: 11-40 (10+d30) ","Свoйствa пpедметa: ","• Зaщитa oт уpoнa: 40 ","• Чaсть кoмплектa: Кoмплект Утpеннегo Сoлнцa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set4","Item":"braslet26_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet26_du2_1","Caption":"Наручи Утреннего Солнца [10] ","Description":["Масса: 2","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 45 ","• Ловкость: 30 ","• Интуиция: 30 ","• Выносливость: 45 ","Действует на: ","• Владение оружием: +2 ","• Уровень жизни: +37 ","• Мф. против критического удара: +35% ","• Мф. против увёртывания: +35% ","• Мф. мощности удара: +5% ","• Защита от магии: +30 ","• Часть комплекта: Комплект Утреннего Солнца [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set4","Item":"belt38_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt38_du2_1","Caption":"Пояс Утреннего Солнца [10] ","Description":["Масса: 1 ","Цена: 168 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 30 ","• Интуиция: 30 ","• Уровень: 10 ","• Выносливость: 45 ","• Сила: 45 ","Действует на: ","• Мф. против критического удара (%): +40 ","• Защита от магии огня: +20 ","• Защита от урона: +30 ","• Защита от магии воды: -10 ","• Уровень жизни (HP): +42 ","• Сила: +4 ","• Броня пояса: 21-75 (20+d55) ","• Чaсть кoмплектa: Кoмплект Утpеннегo Сoлнцa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set4","Item":"clip82_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip82_du2_1","Caption":"Серьги Утреннего Солнца [10] ","Description":["Масса: 1","Цена: 240 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 45 ","• Ловкость: 30 ","• Интуиция: 30 ","• Выносливость: 45 ","Действует на: ","• Сила: +6 ","• Владение оружием: +1 ","• Мф. против критического удара: +45% ","• Мф. против увёртывания: +40% ","• Мф. мощности удара: +12% ","• Защита от магии: +40 ","• Защита от магии Огня: +20 ","• Защита от магии Воды: -10 ","• Часть комплекта: Комплект Утреннего Солнца [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set4","Item":"amulet83_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet83_du2_1","Caption":"Ожерелье Утреннего Солнца [10] ","Description":["Масса: 1","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 30 ","• Интуиция: 30 ","• Уровень: 10 ","• Выносливость: 45 ","• Сила: 45 ","Действует на: ","• Мф. против критического удара (%): +110 ","• Мф. парирования (%): +12 ","• Защита от магии: +30 ","• Защита от магии огня: +20 ","• Защита от магии воды: -10 ","• Уровень жизни (HP): +80 ","• Сила: +8 ","• Часть комплекта: Комплект Утреннего Солнца [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set4","Item":"ring119_du2","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring119_du2_1","Caption":"Кольцо Утреннего Солнца [10] ","Description":["Масса: 1 ","Цена: 120 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 30 ","• Интуиция: 30 ","• Уровень: 10 ","• Выносливость: 45 ","• Сила: 45 ","Действует на: ","• Мф. против критического удара (%): +55 ","• Мф. против увертывания (%): +35 ","• Мф. парирования (%): +3 ","• Уровень жизни (HP): +40 ","• Сила: +3 ","• Часть комплекта: Комплект Утреннего Солнца [10] [0/12]"]}],"Name":"set4_10","Caption":"Кoмплект Утpеннегo Сoлнцa [10] ","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set5","Item":"leg15","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg15_1","Caption":"Штаны Решимости [10]","Description":["Масса: 5","Цена: 180 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Интеллект: 50 ","• Уровень: 10 ","• Мудрость: 60 ","Действует на: ","• Подавление защиты от магии: +2 ","• Мф. мощности магии стихий: +5 ","• Уровень жизни (HP): +25 ","• Уровень маны: +100 ","• Броня пояса: 6-20 (5+d15) ","• Броня ног: 6-20 (5+d15) ","Свойства предмета: ","• Защита от урона: 15 ","• Часть комплекта: Комплект Решимости [10] [0/7] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set5","Item":"braslet27","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":2,"IsGift":false,"Name":"braslet27_1","Caption":"Наручи Решимости [10] ","Description":["Масса: 2","Цена: 168 кр. ","Вес: 2 ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 10 ","• Интеллект: 50 ","• Мудрость: 60 ","Действует на: ","• Интеллект: +2 ","• Уровень маны: +135 ","• Уровень жизни: +77 ","• Защита от магии: +20 ","• Часть комплекта: Комплект Решимости [10] [0/7] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set5","Item":"belt39","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt39_1","Caption":"Пояс Решимости [10]","Description":["Масса: 1","Цена: 168 кр. ","Долговечность: 0/50 ","Требуется минимальное:","• Уровень: 10 ","• Сила: 10 ","• Интеллект: 50 ","• Мудрость: 60 ","Действует на: ","• Интеллект: +2 ","• Уровень маны: +150 ","• Уровень жизни: +22 ","• Понижение защиты от магии: +2% ","• Броня пояса: 6-20 ","• Часть комплекта: Комплект Решимости [10] [0/7] "]}],"Name":"set5_10","Caption":"Кoмплeкт Peшимocти [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set6","Item":"leg16","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg16_1","Caption":"Пoнoжи Cкopпиoнa [10] ","Description":["Мacca: 10 ","Цeнa: 180 кp. ","Дoлгoвeчнocть: 0/50 ","Тpeбуeтcя минимaльнoe: ","• Лoвкocть: 15 ","• Интуиция: 60 ","• Уpoвeнь: 10 ","• Вынocливocть: 50 ","• Cилa: 35 ","Дeйcтвуeт нa: ","• Мф. пpoтив кpитичecкoгo удapa (%): +30 ","• Мф. пpoтив увepтывaния (%): +35 ","• Мф. кpитичecкoгo удapa (%): +35 ","• Уpoвeнь жизни (HP): +43 ","• Cилa: +2 ","• Бpoня пoяca: 11-40 (10+d30) ","• Бpoня нoг: 11-40 (10+d30) ","Cвoйcтвa пpeдмeтa: ","• Зaщитa oт уpoнa: 35 ","• Чacть кoмплeктa: Кoмплeкт Cкopпиoнa [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set6","Item":"braslet32","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet32_1","Caption":"Браслет Скорпиона [10] ","Description":["Масса: 2 ","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 50 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +30 ","• Мф. против увертывания (%): +45 ","• Мф. критического удара (%): +50 ","• Мастерство владения оружием: +1 ","• Защита от магии: +30 ","• Уровень жизни (HP): +26 ","• Сила: +3 ","• Часть комплекта: Комплект Скорпиона [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set6","Item":"belt44","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt44_1","Caption":"Пояс Скорпиона [10] ","Description":["Масса: 1 ","Цена: 168 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 50 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%):+65 ","• Защита от магии: +20 ","• Защита от урона: +30 ","• Уровень жизни (HP): +39 ","• Броня пояса: 21-70 (20+d50) ","• Часть комплекта: Комплект Скорпиона [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set6","Item":"clip90","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip90_1","Caption":"Серьги Скорпиона [10] ","Description":["Масса: 1 ","Цена: 240 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 50 ","• Сила: 35 ","Действует на: ","• Мф. против увертывания (%): +100 ","• Мф. критического удара (%): +100 ","• Мастерство владения оружием: +1 ","• Защита от урона: +35 ","• Уровень жизни (HP): +48 ","• Сила: +4 ","• Часть комплекта: Комплект Скорпиона [10] [0/14] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set6","Item":"amulet98","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet98_1","Caption":"Амулет Скорпиона [10] ","Description":["Масса: 1","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 50 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +60 ","• Мф. против увертывания (%): +70 ","• Мф. парирования (%): +5 ","• Защита от магии: +40 ","• Защита от урона: +60 ","• Уровень жизни (HP): +84 ","• Сила: +1 ","• Часть комплекта: Комплект Скорпиона [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set6","Item":"ring129","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring129_1","Caption":"Кольцо Скорпиона [10]","Description":["Масса: 1 ","Цена: 120 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 60 ","• Уровень: 10 ","• Выносливость: 50 ","• Сила: 35 ","Действует на: ","• Мф. против критического удара (%): +15 ","• Мф. против увертывания (%): +80 ","• Мф. критического удара (%): +60 ","• Мф. парирования (%): +1 ","• Уровень жизни (HP): +31 ","• Часть комплекта: Комплект Скорпиона [10] [0/12] "]}],"Name":"set6_10","Caption":"Кoмплeкт Cкopпиoнa [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":30,"PlaceName":"altar_blood","Binding":4,"RecipeParts":[{"Category":"mater_shop7","Item":"mater_shop7","Count":6},{"Category":"set7","Item":"leg17","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg17_1","Caption":"Пoнoжи Злoдeяний [10] ","Description":["Мacca: 10 ","Цeнa: 180 кp. ","Тpeбуeтcя пpeдмeт: Пoнoжи Злoдeяний, [Cущнocть Pecуpca]x6 ","Дoлгoвeчнocть: 0/50 ","Тpeбуeтcя минимaльнoe: ","• Лoвкocть: 60 ","• Интуиция: 45 ","• Уpoвeнь: 10 ","• Вынocливocть: 35 ","• Cилa: 25 ","Дeйcтвуeт нa: ","• Мф. пpoтив кpитичecкoгo удapa (%): +25 ","• Мф. кpитичecкoгo удapa (%): +30 ","• Мф. увepтывaния (%): +30 ","• Лoвкocть: +2 ","• Интуиция: +2 ","• Зaщитa oт мaгии: +25 ","• Бpoня пoяca: 11-40 (10+d30) ","• Бpoня нoг: 11-40 (10+d30) ","Cвoйcтвa пpeдмeтa: ","• Зaщитa oт уpoнa: 30 ","• Чacть кoмплeктa: Кoмплeкт Злoдeяний [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater275","Count":1},{"Category":"sp_mat","Item":"sp_mat5","Count":1},{"Category":"set7","Item":"braslet31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet31_1","Caption":"Наручи Злодеяний [10] ","Description":["Масса: 2","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Ловкость: 60 ","• Интуиция: 45 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): +25 ","• Мф. критического удара (%): +65 ","• Мф. контрудара (%): +17 ","• Ловкость: +2 ","• Интуиция: +2 ","• Мастерство владения оружием: +1 ","• Уровень жизни (HP): +24 ","• Часть комплекта: Комплект Злодеяний [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_sand","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater276","Count":1},{"Category":"sp_mat","Item":"sp_mat13","Count":1},{"Category":"set7","Item":"belt43","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt43_1","Caption":"Пояс Злодеяний [10] ","Description":["Масса: 1","Цена: 168 кр. ","Долговечность: 0/40 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 25 ","• Ловкость: 60 ","• Интуиция: 45 ","• Выносливость: 35 ","Действует на: ","• Уровень жизни (HP): +20 ","• Мф. против критического удара (%): +30% ","• Мф. контрудара (%): +17% ","• Защита от магии: +35 ","• Броня пояса: 21-70 ","• Часть комплекта: Комплект Злодеяний [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_dem","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater267","Count":1},{"Category":"sp_mat","Item":"sp_mat15","Count":1},{"Category":"set7","Item":"clip89","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip89_1","Caption":"Серьги Злодеяний [10] ","Description":["Масса: 1","Цена: 240 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 10 ","• Сила: 25 ","• Ловкость: 60 ","• Интуиция: 45 ","• Выносливость: 35 ","Действует на: ","• Ловкость: +5 ","• Интуиция: +2 ","• Владение оружием: +1 ","• Уровень жизни: +28 ","• Мф. критического удара: +110% ","• Мф. увёртывания: +120% ","• Мф. контрудара: +12% ","• Часть комплекта: Комплект Злодеяний [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater262","Count":1},{"Category":"sp_mat","Item":"sp_mat7","Count":1},{"Category":"set7","Item":"amulet97","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet97_1","Caption":"Амулет Злодеяний [10] ","Description":["Масса: 1 ","Цена: 288 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 60 ","• Интуиция: 45 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): +50 ","• Мф. увертывания (%): +110 ","• Ловкость: +4 ","• Защита от магии: +60 ","• Защита от урона: +60 ","• Уровень жизни (HP): +61 ","• Часть комплекта: Комплект Злодеяний [10] [0/12] "]},{"Recipes":[{"Price":0,"PlaceName":"forge_ang2","Binding":4,"RecipeParts":[{"Category":"mater_knshop","Item":"mater261","Count":1},{"Category":"sp_mat","Item":"sp_mat3","Count":1},{"Category":"set7","Item":"ring128","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring128_1","Caption":"Кольцо Злодеяний [10]","Description":["Масса: 1 ","Цена: 120 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 60 ","• Интуиция: 45 ","• Уровень: 10 ","• Выносливость: 35 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): +15 ","• Мф. критического удара (%): +85 ","• Мф. увертывания (%): +45 ","• Ловкость: +2 ","• Уровень жизни (HP): +28 ","• Сила: +1 ","• Часть комплекта: Комплект Злодеяний [10] [0/12] "]}],"Name":"set7_10","Caption":"Кoмплeкт Злoдeяний [10]","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_6","Caption":"Магическая Защита (прием)","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Уровень: 7","• Выносливость: 25","Максимум: 1 ед.","Описание:","В инструкции рассказывается, как грамотной защитой можно уменьшить урон от магии стихий.","бучает приему: Магическая Защита"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater31","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_7","Caption":"Усиленные удары (прием)","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Уровень: 7","• Сила: 25","Максимум: 1 ед.","Описание:","В инструкции рассказывается, об увеличении силы ударов на короткое время.","Обучает приему: Усиленные Удары"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater28","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_8","Caption":"Жажда Крови (прием) ","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Интуиция: 25","• Уровень: 7","Максимум: 1 ед.","Описание:","Книга рассказывает, как можно увидеть больше крови.","Обучает приему: Жажда Крови"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_9","Caption":"Поступь Смерти (прием) ","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Ловкость: 25","• Уровень: 7","Максимум: 1 ед.","Описание:","Книга о превращении битвы в бойню.","Обучает приему: Поступь Смерти"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_10","Caption":"Возмездие (прием)","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Уровень: 7","• Выносливость: 25","Максимум: 1 ед.","Описание:","В инструкции рассказывается, как отомстить врагу, пробившему вашу защиту.","Обучает приему: Возмездие"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell5","Caption":"Серое Мастерство (заклинание) ","Description":["Масса: 1","Цена: 20 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения серой магией: 4","Максимум: 1 ед.","Описание:","«...только одна магия истинна - серая магия, включающая в себя все»","Обучает заклинанию: Серое Мастерство"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater22","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell2","Caption":"Защита Света (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения магией Света: 4","Максимум: 1 ед.","Описание:","Как защитить себя от ошеломления? 10% поглощения урона - много или мало?","Ответы на подобные вопросы вы найдете только в этой книге! ","Обучает приему: Защита Света"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater24","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell3","Caption":"Глаз за Глаз (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения магией Тьмы: 4","Максимум: 1 ед.","Описание:","Название гласит: Практические основы жестокой мести.","Обучает приему: Глаз за Глаз"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater26","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell7","Caption":"Каменный Удар (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения стихией Земли: 7","Максимум: 1 ед.","Описание:","В инструкции рассказывается, как наносить крушащие удары при помощи магии Земли.","Обучает приему: Каменный Удар"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater21","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell4","Caption":"Иней (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения стихией Воды: 7","Максимум: 1 ед.","Описание:","В инструкции рассказывается, как тонким слоем льда защитить себя от урона .","Обучает приему: Иней"]},{"Recipes":[{"Price":20,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater23","Count":1}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell1","Caption":"Пылающий Ужас (заклинание)","Description":["Масса: 1","Цена: 20 кр. ","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения стихией Огня: 7","Максимум: 1 ед.","Описание:","В инструкции рассказывается, как использовать страх огня у горящей цели.","Обучает приему: Пылающий Ужас"]}],"Name":"books","Caption":"Книжные приемы","Description":[]},{"ImageBasePath":"https://img.new-combats.com/i/items/","NewLineToBR":true,"Items":[{"Recipes":[{"Price":300,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater27","Count":3},{"Category":"mater","Item":"mater26","Count":3},{"Category":"mater","Item":"mater28","Count":3},{"Category":"mater","Item":"mater29","Count":3},{"Category":"mater","Item":"mater25","Count":3},{"Category":"mater","Item":"mater30","Count":3}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot9","Caption":"Тайное Знание (том 3)","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/1","Требуется минимальное:","• Уровень: 9","Максимум: 1 ед.","Описание:","Добавляет +1 дополнительный слот для приемов.","Каждый том может быть использован лишь один раз.","Для изучения требуется знание второго тома.",""]},{"Recipes":[{"Price":500,"PlaceName":"bookshop","Binding":4,"RecipeParts":[{"Category":"mater","Item":"mater20","Count":5},{"Category":"mater","Item":"mater21","Count":5},{"Category":"mater","Item":"mater22","Count":5},{"Category":"mater","Item":"mater23","Count":5},{"Category":"mater","Item":"mater24","Count":5},{"Category":"mater","Item":"mater31","Count":5}],"Name":"","Caption":"","Description":[]}],"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot10","Caption":"Тайное Знание (том 4) ","Description":["Масса: 1","Цена: 500 кр.","Долговечность: 0/1","Требуется минимальное:","• Уровень: 10","Максимум: 1 ед.","Описание:","Добавляет +1 дополнительный слот для приемов.","Каждый том может быть использован лишь один раз.","Для изучения требуется знание третьего тома."]}],"Name":"slots","Caption":"Слоты под приемы","Description":[]}],"RecipePlaces":[{"Name":"altar_blood","Caption":"Алтарь Крови","Description":[]},{"Name":"altar_ang","Caption":"Алтарь (Бездна)","Description":[]},{"Name":"altar_cap","Caption":"Алтарь Осколков (ПТП)","Description":[]},{"Name":"altar_dem","Caption":"Алтарь Единения (Катакомбы)","Description":[]},{"Name":"laba_dem","Caption":"Лаборатория (Катакомбы)","Description":[]},{"Name":"laba_ang","Caption":"Лаборатория (Бездна)","Description":[]},{"Name":"laba_sand","Caption":"Лаборатория (Пещеры Мглы)","Description":[]},{"Name":"shop_dev","Caption":"Магазин Devils city","Description":[]},{"Name":"shop_dem","Caption":"Магазин Demons city","Description":[]},{"Name":"shop_ang","Caption":"Магазин Angels city","Description":[]},{"Name":"shop_cap","Caption":"Магазин Capital city","Description":[]},{"Name":"shop_sand","Caption":"Магазин Sandcity","Description":[]},{"Name":"shop_sun","Caption":"Магазин Suncity","Description":[]},{"Name":"shop_moon","Caption":"Магазин Mooncity","Description":[]},{"Name":"shop_em","Caption":"Магазин Emeralds city","Description":[]},{"Name":"forge_ang1","Caption":"Наковальня (Бездна)","Description":[]},{"Name":"forge_ang2","Caption":"Наковальня забытых мастеров (Бездна)","Description":[]},{"Name":"forge_dem","Caption":"Наковальня забытых мастеров (Катакомбы)","Description":[]},{"Name":"forge_sand","Caption":"Наковальня забытых мастеров (Пещеры Мглы)","Description":[]},{"Name":"mastershop_cap","Caption":"Мастерская забытых мастеров (ПТП)","Description":["Используя ингредиенты, собранные в многочасовых походах по подземельям, в Мастерской забытых мастеров можно получить множество полезных вещей."]},{"Name":"bookshop","Caption":"Книжный магазин","Description":[]}]}); diff --git a/head/dungeon.offlinedata.js b/head/dungeon.offlinedata.js index 77177085..8eedca64 100644 --- a/head/dungeon.offlinedata.js +++ b/head/dungeon.offlinedata.js @@ -1,46 +1,46 @@ // JS (Akzhan+Newtonsoft) -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sl","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . . "," . . ",""," : ","\"\" - + 25HP. ",""," . ."],"Strength":53,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":30,"BirthPlace":"Devils city"},{"Image":"sl","Level":9,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . . "," . . ",""," : ","\"\" - + 35HP. ","\"\"",""," . ."],"Strength":55,"Dexterity":30,"Intuition":55,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":60,"BirthPlace":"Devils city"}],"Name":"sl","Caption":"","Description":[]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":[" :"," . 1 2 . , \"\", . 5 . ",""," : \" \" - (: -40). "," : \" \" - . 2- 4- , 30-70 . "," : \" \" - (: -20, : -20, : -20). "," : \"\" - +180. "," : \"\" - (: -40). "," [2700HP] . "," : \" \" "," [2000HP] . ",""," \"\". "],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":1800,"Reward":45,"BirthPlace":""},{"Image":"kz","Level":10,"Align":"0","Tag":"hp2000","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":100,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":""},{"Image":"kz","Level":10,"Align":"0","Tag":"hp2700","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2700,"Reward":0,"BirthPlace":""},{"Image":"kza","Level":10,"Align":"9","Tag":"","Move":false,"Description":[" :","\"\" . 1 2 . , \"\", . 5 . ",""," : \" \" - (: -40). "," : \" \" - . 2- 4- , 30-70 . "," [2160HP 2880HP]: \" \" - (: -20, : -20, : -20). "," [2160HP 2880HP]: \"\" - +216 ( +288HP). "," : \"\" - (: -40). "," [3060HP] . "," [2340HP 2700HP]: \" \" "," [2360HP] . ",""," \"\". "],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2160,"Reward":0,"BirthPlace":""}],"Name":"zm","Caption":"","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1074_qu1639458937.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":90,"BirthPlace":""},{"Image":"proka","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1100,"Reward":0,"BirthPlace":""},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1200","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":""},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1300","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1300,"Reward":0,"BirthPlace":""},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1400","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":""},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1600","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":0,"BirthPlace":""}],"Name":"prokl","Caption":"","Description":[" :"," . 2 2 . "," . ",""," :\"\""," :\"\""," :\"\", \" \" - \" \""," : \"\""," : \"\", \" \""," : \"\",\" \", \" \"",""," \"\".",""," \"\" . 100HP. , , , , 1100HP 1400HP, 1300HP 1600HP."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":45,"BirthPlace":""}],"Name":"bzomb","Caption":" ","Description":[" :"," 1 2 . ."," .",""," : "," \" \" - (: -25, : -25), 2- .",""," \"\"."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1005.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":8000,"Reward":150,"BirthPlace":""},{"Image":"drsa","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":8800,"Reward":0,"BirthPlace":""},{"Image":"drsa","Level":10,"Align":"9","Tag":" 10 ","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":10400,"Reward":0,"BirthPlace":""}],"Name":"drstr","Caption":" ","Description":[" :"," 1 2 , : .",""," : ","\" \" - .","\"\" ",""," , \"\", 7- ."]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":25,"Intuition":25,"Endurance":70,"Intellect":10,"Wisdom":0,"HitPoints":1501,"Reward":350,"BirthPlace":""}],"Name":"brsk","Caption":"","Description":[" :"," , 2 . ",""," : ","\" \" - \" \".","\" \"","\"\" - +75 .","\"\"",""," ( 300% ), () ."]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":8,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":500,"BirthPlace":"Devils city"}],"Name":"zsl","Caption":" ","Description":[" :"," 2 2 . . "," . .",""," : ","\"\" - +50 HP.","\" \" - 100-800 . .","\" \""]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":9,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":35,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":500,"BirthPlace":""}],"Name":"hsl","Caption":" ","Description":[" :"," 2 2 . . "," . .",""," : ","\"\" - +75.","\" \" - ( : -100), 5 .","\" \" - 100 - 800 . .","\" \"","\" \"","\"\""]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1031_jw3759278305.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":20,"Dexterity":65,"Intuition":33,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":700,"BirthPlace":""}],"Name":"chkng","Caption":"","Description":[" :"," 1 2 . .",""," : ","\" \" - , . 3 . ","\" \" - (: -5, : -50, : -5, : -5)","\" \" - .","\"\"","\"\"",""," , , \"\" -3."]},{"SmImg":"sba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"sb","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":100,"Intuition":55,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":700,"BirthPlace":""}],"Name":"ep","Caption":"","Description":[" :"," 1 2 , : .",""," : ","\"\" - +300 HP, .","\" \" - ( : -125, : -125).","\" \" - , , , . 1 1 \" \".","\"\" ","\" \"","\"\"",""," , , +3.","","* J2"]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1032_tp9475823958.png","Instances":[{"Image":"","Level":8,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1350,"Reward":350,"BirthPlace":""}],"Name":"og","Caption":" ","Description":[" :"," 1 2 , : . ",""," :","\" \" - c +500 HP.","\" \" (: -7, : -7, : -7). 5 .","\" \"","\" \"","\"\"",""," ()."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1050_pq6472859128.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":60,"Dexterity":30,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":900,"Reward":60,"BirthPlace":""}],"Name":"pp","Caption":" ","Description":[" :"," 2 2 . "," . . . ",""," : ","\" \" - , 100 . , .","\"\"",""," \"\"."]},{"SmImg":"btm","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":25,"Intuition":25,"Endurance":55,"Intellect":10,"Wisdom":0,"HitPoints":3400,"Reward":0,"BirthPlace":""},{"Image":"btmb","Level":9,"Align":"3","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":25,"Intuition":25,"Endurance":55,"Intellect":10,"Wisdom":0,"HitPoints":1700,"Reward":0,"BirthPlace":""}],"Name":"stglb","Caption":" ","Description":[" :"," 1 2 .",": . ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1082_9dh7ka.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":120,"Dexterity":30,"Intuition":30,"Endurance":45,"Intellect":0,"Wisdom":0,"HitPoints":5000,"Reward":800,"BirthPlace":""}],"Name":"trp","Caption":"","Description":[" :"," 1 2 . ",""," : ","\"\" - (. (%): -500, . (%): -1000), 3 , . .","\" \" - ( -50, (HP): -10%), 5 .","\"\" - (- HP - HP ).","\"\"","\" \"","\"\"",""," , \"\" ."]},{"SmImg":"prpa","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1001.png","Instances":[{"Image":"prpa","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":75,"Intuition":40,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":800,"BirthPlace":""}],"Name":"plen","Caption":" ","Description":[" :",". - 2 . ",""," : ","\" \" - c , .","\" \" - 600 1 1 . , .","\" \" - , . ","\" \" - .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1076_nu1697563487.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":120,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":800,"BirthPlace":""}],"Name":"shtpvl","Caption":" ","Description":[" :"," 1 2 . . .",""," : ","\" \" - . , P , 1HP. , , , 33% HP, . \" \", \" \" \"\".","\" \" - ( , , , / , ). .","\" \"","\"\"","\"\"",""," , \"\" ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1015.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":180,"Intuition":225,"Endurance":240,"Intellect":0,"Wisdom":0,"HitPoints":10000,"Reward":1750,"BirthPlace":""}],"Name":"pvlt","Caption":"","Description":[" :"," 1 2 . ",", C3, B3.",""," 4 : ","1.\"\". (. (%): +250, : +15, : +30, : +60, . (%): +250, . (%): +100),","2.\"\". (. (%): +100, : +30, . (%): +300, : +60, : +15, . (%): -400), ","3.\"\". (. (%): +300, : +30, : +60, : +15, : +50, . (%): -400),","4.\"\". (. (%): +500, : +40, : +40, : +40, : +40, . (%): -250)."," \"\" . ",""," :","\" \"","\" \"","\" \"","\"\"","\"\"","\" \"","\"\"","\"\"",""," , ."]}],"Objects":[{"SmImg":"teleport05","ImageUrl":"https://img.new-combats.com/i/objects/teleport05.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B1","Name":"orangeteleport","Caption":" ","Description":[" , ."," B1 ."]}],"Name":"orangeteleport","Caption":" ","Description":[]},{"SmImg":"teleport07","ImageUrl":"https://img.new-combats.com/i/objects/teleport07.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.4","ClickPoint":"K9","Name":"violetteleport1","Caption":" ","Description":[" , ."," K9 ."]}],"Name":"violetteleport","Caption":" ","Description":[]},{"SmImg":"well02","ImageUrl":"https://img.new-combats.com/i/objects/well02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain1","Caption":" ","Description":[" . ."," , .",""," ' , '. : , , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"well03","Caption":" ","Description":[" . ."," , .",""," ' , '. : , , .",""]}],"Name":"well05","Caption":"","Description":[]},{"SmImg":"well07","ImageUrl":"https://img.new-combats.com/i/objects/well07.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain7","Caption":" ","Description":[", :( HP (%): +80).",""," 99% , , :","\" \" -( HP(%):-80)","\" 2\" -( HP(%):-160)","\" 3\" -( HP(%):-240)","\" 4\" -( HP(%):-320)","\" 5\" - ( HP(%)-400)",""," -3 .",""]}],"Name":"fountain7","Caption":" 7","Description":[]},{"SmImg":"smag_collect1_4","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_41","Caption":"","Description":[" ."," \"\" . ."]}],"Name":"sunduk_4","Caption":" ","Description":[]},{"SmImg":"kamen1","ImageUrl":"https://img.new-combats.com/i/objects/kamen1.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kamen1","Caption":"","Description":[" : , , , , , ."," \"\" ."]}],"Name":"kamen1","Caption":" 1","Description":[]},{"SmImg":"drain_bottom","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":1,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"B2","Name":"drain1","Caption":" ","Description":[" . "," , ."," B2 ."]}],"Name":"drain_lowering","Caption":" - ","Description":[]},{"SmImg":"proboina2","ImageUrl":"https://img.new-combats.com/i/objects/proboina2.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B20","Name":"proboina2","Caption":" ","Description":[" - ."," B20 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"M11","Name":"proboina21","Caption":" ","Description":[" - ."," M11 ."]}],"Name":"proboina2","Caption":" 2","Description":[]},{"SmImg":"throne01","ImageUrl":"https://img.new-combats.com/i/objects/throne01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"throne11","Caption":" ","Description":[" ..."]}],"Name":"throne1","Caption":"","Description":[]},{"SmImg":"landslip01","ImageUrl":"https://img.new-combats.com/i/objects/2/landslip01.png","Rotate":false,"Importance":1,"BW":126,"BH":87,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"landslip11","Caption":"","Description":[" - . ..."]}],"Name":"landslip1","Caption":"","Description":[]},{"SmImg":"skelet1","ImageUrl":"https://img.new-combats.com/i/objects/skelet1.png","Rotate":false,"Importance":1,"BW":120,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"skelet11","Caption":" ","Description":[", 1000 HP."," . , ?!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"skelet12","Caption":" ","Description":[", , , . "]}],"Name":"skelet1","Caption":"","Description":[]},{"SmImg":"kk_stone_3_4","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_3_4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_3_4","Caption":" ","Description":[" , ( , Q9), 4 . "," K9 ."," , ."]}],"Name":"kk_stone_3_4","Caption":" ","Description":[]},{"SmImg":"kk_stone_2_3e","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_2_3e.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_2_3e","Caption":" ","Description":[" , ( , O9), 3 . "," B1 ."," , ."]}],"Name":"kk_stone_2_3e","Caption":" ","Description":[]},{"SmImg":"kk_stone_2_3ch","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_2_3ch.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_2_3ch","Caption":" ","Description":[" , ( , P10), 3 . "," B20 ."," , ."]}],"Name":"kk_stone_2_3ch","Caption":" ","Description":[]},{"SmImg":"stat1","ImageUrl":"https://img.new-combats.com/i/objects/stat1.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat1","Caption":" ","Description":["."]}],"Name":"stat1","Caption":" ","Description":[]},{"SmImg":"stat2","ImageUrl":"https://img.new-combats.com/i/objects/stat2.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat2","Caption":"","Description":["."]}],"Name":"stat2","Caption":" 2","Description":[]},{"SmImg":"stat3","ImageUrl":"https://img.new-combats.com/i/objects/stat3.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat3","Caption":"","Description":["."]}],"Name":"stat3","Caption":" 3","Description":[]},{"SmImg":"barrikada","ImageUrl":"https://img.new-combats.com/i/objects/barrikada.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"barrikada","Caption":"","Description":[", . "]}],"Name":"barrikada","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1025_zh2021090523.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":60,"Endurance":30,"Intellect":5,"Wisdom":0,"HitPoints":650,"Reward":25,"BirthPlace":""}],"Name":"rg","Caption":" ","Description":[" :"," 1 2 , : "," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1024_kv8409230530.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : ."," ."],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":10,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : ."," , ."],"Strength":50,"Dexterity":50,"Intuition":20,"Endurance":30,"Intellect":10,"Wisdom":0,"HitPoints":600,"Reward":25,"BirthPlace":""}],"Name":"ng","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1026_vh8728572092.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . "," ."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":5,"BirthPlace":""},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . ","."],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":""}],"Name":"lit","Caption":"","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1028_mm0939431234.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":12,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":30,"BirthPlace":""},{"Image":"sga","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":""}],"Name":"sg","Caption":" ","Description":[" :"," 1 2 , : . "," . .",""," : ","\" \" - .","\" \""]}],"Objects":[{"SmImg":"chalice01","ImageUrl":"https://img.new-combats.com/i/objects/chalice01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"halice1","Caption":" ","Description":[" ."," 2 ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"halice2","Caption":"","Description":[" .",", , . , ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"halice3","Caption":"","Description":[" .",", , . , , ."," ."]}],"Name":"chalice","Caption":"","Description":[]},{"SmImg":"bed","ImageUrl":"https://img.new-combats.com/i/objects/bed01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed1","Caption":"","Description":[" : , , , , , , : 3 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed2","Caption":"","Description":["..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed3","Caption":"","Description":[" , , : , , , , , ."]}],"Name":"bed","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":35,"BirthPlace":""}],"Name":"sb","Caption":" ","Description":[" :"," 1 2 , : ."," .",""," : ","\" \" - .","\" \" - \" \".","\"\" - . .","\" \" - + 45HP.","\"\""]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1425,"Reward":0,"BirthPlace":""}],"Name":"btm","Caption":" ","Description":[" :"," 1 2 . .",""," : :","\" \"","\" \"","\"\"","\"\""]},{"SmImg":"sk","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1020_vf3369140625.png","Instances":[{"Image":"sk","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":20,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":""}],"Name":"sd","Caption":" ","Description":[" :"," 5 2 "," . ",""," : ","\" \" - \" \".","\" \"","\" \"","\"\"","\" \"","\" \" - +45HP.",""," ()."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1060_ms8259273602.png","Instances":[{"Image":"","Level":12,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":100,"Intuition":150,"Endurance":200,"Intellect":0,"Wisdom":0,"HitPoints":4500,"Reward":0,"BirthPlace":""}],"Name":"kg","Caption":" ","Description":[" :"," 2 2 .","- .",""," : ","\" \" - .","\" \" - \" \".","\"\" - \" \".","\"\"","\"\"",""," ()."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1027_er8653875623.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":""}],"Name":"gjs","Caption":" ","Description":[" :"," 1 2 . - .",""," : ","\" \"","\"\"","\"\"","\" \"","\" \" - +45HP.",""," ()(+5 ). "]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/10015.png","Instances":[{"Image":"olgrta","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":90,"Intellect":0,"Wisdom":0,"HitPoints":10000,"Reward":0,"BirthPlace":""}],"Name":"olgvirt","Caption":" ","Description":[" :"," 1 3 . ",""," : ","\" \" - . .","\" \" - . .","\" \"","\" \"","\"\"","\"\"","\"\"","\"\"","\"\" - 1% 1% . - , 33%. 85%.","\" \" - \" \" . 8-10 . 8 10 , . ."]}],"Objects":[{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest1","Caption":"","Description":[" 3 5 . \"\" ."]}],"Name":"chest1_blendy","Caption":" 1, ","Description":[]},{"SmImg":"chest03","ImageUrl":"https://img.new-combats.com/i/objects/chest03.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest31","Caption":" - ","Description":[" ... ."," , , ."," \"\" . "]}],"Name":"chest3_bledny","Caption":" 3, ","Description":[]},{"SmImg":"duffer","ImageUrl":"https://img.new-combats.com/i/objects/2/duffer.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer1","Caption":"","Description":[" : , , . - ."]}],"Name":"duffer","Caption":"","Description":[]},{"SmImg":"duffer","ImageUrl":"https://img.new-combats.com/i/objects/2/duffer.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer21","Caption":"","Description":[" , . , , K4. ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer22","Caption":"","Description":[" . , K5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer23","Caption":"","Description":[" . , K3."]}],"Name":"duffer2","Caption":" - ","Description":[]},{"SmImg":"kamen","ImageUrl":"https://img.new-combats.com/i/objects/kamen.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kamen","Caption":"","Description":[" . . "]}],"Name":"kamen","Caption":"","Description":[]},{"SmImg":"pot","ImageUrl":"https://img.new-combats.com/i/objects/boiler01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"boiler1","Caption":"","Description":[" , ..."," , ."]}],"Name":"boiler","Caption":"","Description":[]},{"SmImg":"vagon","ImageUrl":"https://img.new-combats.com/i/objects/lorry01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lorry1","Caption":"","Description":["..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lorry2","Caption":"","Description":[" c."]}],"Name":"lorry","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pg","Level":6,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 ."," . / ."," ."],"Strength":30,"Dexterity":20,"Intuition":20,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":250,"Reward":2,"BirthPlace":""},{"Image":"pg","Level":7,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 ."," . / ."," . .",""," , ."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":6,"BirthPlace":""},{"Image":"pga","Level":7,"Align":"9","Tag":"","Move":true,"Description":[" :"," 1 2 ."," . / ."," . .",""," , ."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":""},{"Image":"pg","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":9,"BirthPlace":""},{"Image":"pg","Level":9,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":20,"BirthPlace":""},{"Image":"pga","Level":9,"Align":"9","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":""},{"Image":"pg","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," , . . / ."," . .",""," , ."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":0,"BirthPlace":""}],"Name":"pg","Caption":" ","Description":[]}],"Objects":[{"SmImg":"arrow3","ImageUrl":"/i/ugobj/arrow3.gif","Rotate":false,"Importance":1,"BW":23,"BH":38,"ML":9,"MT":1,"MW":23,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":" ","Description":[" - . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"H1","Name":"arrow2","Caption":" ","Description":[" , . "," ."]}],"Name":"arrowdown","Caption":" ()","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"pg","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pg","Level":7,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":6,"BirthPlace":""},{"Image":"pg","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":10,"BirthPlace":""},{"Image":"pg","Level":9,"Align":"0","Tag":"","Move":true,"Description":[" :"," 1 2 , : ."," . / ."," . .",""," , ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":25,"BirthPlace":""}],"Name":"pg_sand","Caption":" ","Description":[]},{"SmImg":"sba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"sba","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":100,"Intuition":55,"Endurance":30,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":""}],"Name":"krpt","Caption":"","Description":[" :"," 1 2 , : . ",""," : ","\" \"","\" \" - \" \".","\" \" - 600 1 1 . , .","\" \" - ( : -125, : -125).","\"\"","\" \"","\"\"",""," , C ."]},{"SmImg":"strmgl","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1003.png","Instances":[{"Image":"strmgl","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1900,"Reward":0,"BirthPlace":""}],"Name":"strkl","Caption":" ","Description":[" :"," 1 2 , : . ",""," : ","\" \"","\" \" - \" \"","\" \"","\"\""]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":25,"Intuition":25,"Endurance":70,"Intellect":0,"Wisdom":0,"HitPoints":1501,"Reward":0,"BirthPlace":""}],"Name":"hroch","Caption":" ","Description":[" :"," 1 2 . ",""," : ","\" \"","\"\"","\" \""]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":60,"Endurance":30,"Intellect":5,"Wisdom":0,"HitPoints":1950,"Reward":0,"BirthPlace":" "}],"Name":"rh","Caption":" ","Description":[" :"," 1 2 , : . ",""," : ","\" \"","\" \"","\"\"","\"\"",""," ."]}],"Objects":[{"SmImg":"key2","ImageUrl":"https://img.new-combats.com/i/objects/Key22.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key2_21","Caption":" 2","Description":[" , D11."]}],"Name":"key2_2","Caption":" 2","Description":[]},{"SmImg":"sar2","ImageUrl":"https://img.new-combats.com/i/objects/2/sar2.png","Rotate":false,"Importance":1,"BW":63,"BH":52,"ML":7,"MT":12,"MW":26,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sar21","Caption":" ","Description":[" . , ."," 3. "," J4 , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.4","ClickPoint":"D11","Name":"sar22","Caption":" ","Description":[" ."," , D11 ."]}],"Name":"sar2","Caption":" ","Description":[]},{"SmImg":"sign1","ImageUrl":"https://img.new-combats.com/i/objects/2/sign1.png","Rotate":false,"Importance":0,"BW":67,"BH":45,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sign11","Caption":"","Description":[" - , - ."]}],"Name":"sign1","Caption":"","Description":[]},{"SmImg":"strslpr","ImageUrl":"/i/ugobj/strslprbig.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"strslpr1","Caption":" ","Description":[" ."]}],"Name":"strslpr","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"pg","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : .",""," , ."," / ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":""}],"Name":"pg_abadon","Caption":" ","Description":[]},{"SmImg":"dkr","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[" :"," 2 2 . . . . "," , .",""],"Strength":70,"Dexterity":100,"Intuition":100,"Endurance":100,"Intellect":100,"Wisdom":100,"HitPoints":1350,"Reward":0,"BirthPlace":""}],"Name":"dkr_abadon","Caption":" ","Description":[]},{"SmImg":"51","ImageUrl":"https://img.new-combats.com/i/chars/d/0/51.png","Instances":[{"Image":"","Level":12,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"voenkom","Caption":"","Description":[]},{"SmImg":"16","ImageUrl":"https://img.new-combats.com/i/chars/d/0/16.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"serjant","Caption":"","Description":[]}],"Objects":[]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1017.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[" :"," 2 2 , : . ",". ."],"Strength":30,"Dexterity":20,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":200,"Reward":2,"BirthPlace":""},{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . ",". ."],"Strength":35,"Dexterity":20,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":5,"BirthPlace":""},{"Image":"pma","Level":7,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : . ",". ."],"Strength":35,"Dexterity":20,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":""},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . ",". ."],"Strength":70,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":10,"BirthPlace":""},{"Image":"pma","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : . ",". ."],"Strength":70,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":""}],"Name":"pm","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1016.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 . ",". ."],"Strength":30,"Dexterity":10,"Intuition":40,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":250,"Reward":2,"BirthPlace":""},{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 . ","."],"Strength":50,"Dexterity":25,"Intuition":25,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":5,"BirthPlace":""},{"Image":"pua","Level":7,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 .","."],"Strength":50,"Dexterity":25,"Intuition":25,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":0,"BirthPlace":""},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : .","."],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":""},{"Image":"pua","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : .","."],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":""}],"Name":"pu","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1018.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . "," . ",""," : ","\" \"","\" \""],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":20,"BirthPlace":""},{"Image":"paa","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : . "," . ",""," : ","\" \"","\" \""],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":0,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : . "," . .",""," : ","\" \"","\" \""],"Strength":50,"Dexterity":55,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":550,"Reward":50,"BirthPlace":""},{"Image":"paa","Level":9,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : . "," . .",""," : ","\" \"","\" \""],"Strength":50,"Dexterity":55,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1100,"Reward":0,"BirthPlace":""}],"Name":"pa","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":8,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":25,"Intuition":15,"Endurance":30,"Intellect":100,"Wisdom":100,"HitPoints":1800,"Reward":300,"BirthPlace":""}],"Name":"dk","Caption":" ","Description":[" :"," 1 2 , : . "," . ",""," : ","\" \" - . . ","\" \" ","\"\" ","\"\""," \" \" - + 40HP. "," , , +600 HP."," .",""," () ()."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1011.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":70,"Intellect":0,"Wisdom":0,"HitPoints":2200,"Reward":300,"BirthPlace":""}],"Name":"im","Caption":" ","Description":[" :"," 1 2 , : ."," . ",""," : ","\" \" - c +45HP.","\" \"","\" \" - \" \".","\" \"","\" \"","\" \"","\"\"","\"\"",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1020_vf3369140625.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":60,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":250,"BirthPlace":""}],"Name":"sk","Caption":" ","Description":[" :"," 5 2 , : . "," .",""," : ","\" \" - \" \".","\" \"","\" \"","\" \" - +45.","\"\"","\"\"",""," ()."]},{"SmImg":"pua","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1016.png","Instances":[{"Image":"pua","Level":8,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":60,"Dexterity":55,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":200,"BirthPlace":""}],"Name":"ms","Caption":" ","Description":[" :"," 1 2 , : ."," , .",""," : ","\" \" - \" \".","\" \"","\" \"","\"\"","\"\"",""," 1 ( , Sand city), - ."]},{"SmImg":"pga","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pga","Level":9,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":450,"BirthPlace":""}],"Name":"dpg","Caption":" ","Description":[" :"," 1 2 , : ."," ."," .",""," : ","\" \"- \" \".","\"\" - \" \".","\" \"","\" \"","\"\"","\"\"","\" \" - +18HP.",""," ()."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1042a_ru2300519285.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":1,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":10,"BirthPlace":""}],"Name":"duhhr","Caption":"-","Description":[" :"," 1 2 , . ",", , . "," . . ",""," : ","\" \" - , - 2 .",""," c ."]},{"SmImg":"mhub","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095a_nu2987456891.png","Instances":[{"Image":"mhub","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":80,"Dexterity":45,"Intuition":45,"Endurance":45,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":40,"BirthPlace":""}],"Name":"mhub","Caption":" ","Description":[" :"," 1 2 ."," , . "," . , 10 .",""," : "," : ","\"\" - 5%, 5 , , 5%.","\" \" - - , , 0.5% HP , , (5% ) . . - 10 000 ",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1094a_jw2305972054.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":20,"Intuition":0,"Endurance":55,"Intellect":0,"Wisdom":0,"HitPoints":7000,"Reward":250,"BirthPlace":""}],"Name":"kamstr","Caption":" ","Description":[" :"," 1 2 . ",", M15.",""," : ","\"\" - .","\"\" - , . 3 . 3 , - 10 , - 30 .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1026a_rq2360403311.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":30,"Intuition":30,"Endurance":40,"Intellect":40,"Wisdom":15,"HitPoints":1530,"Reward":15,"BirthPlace":""}],"Name":"mhk","Caption":"","Description":[" :"," 1 2 . ",""," : ","\"\" - 200-400 .",""," ."]},{"SmImg":"mhgol","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095_hw4984572354.png","Instances":[{"Image":"mhgol","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":15,"BirthPlace":""}],"Name":"mhohr","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\"\" - .","\"\" - \"\".","\"\" - . \" \"."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095_hw4984572354.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":0,"Intuition":75,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":15,"BirthPlace":""}],"Name":"mhgol","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\"\" - .","\"\" - \"\".","\"\" - . \" \"."]},{"SmImg":"strsokra","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1094g_bn3894752896.png","Instances":[{"Image":"strsokra","Level":11,"Align":"9","Tag":"- ","Move":false,"Description":[" :"," 1 2 , : . ",""," : ","\"\" - \"\". ","\" \" - (: -60). 50% HP. \" \".","\"\" - .","\" \" - - .",""," : ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":80,"BirthPlace":""},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-","Move":false,"Description":[" :"," 1 2 , : . ",""," : ","\"\" - \"\". ","\" \" - (: -60). 50% HP. \" \".","\"\" - .","\" \" - - .",""," : ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":""},{"Image":"strsokra","Level":11,"Align":"9","Tag":"- ","Move":false,"Description":[" :"," 1 2 , : . ",""," : ","\"\" - \"\". ","\" \" - (: -60). 50% HP. \" \".","\"\" - .","\" \" - - .",""," : ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":""},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-","Move":false,"Description":[" :"," 1 2 , : . ",""," : ","\"\" - \"\". ","\" \" - (: -60). 50% HP. \" \".","\"\" - .","\" \" - - .",""," : ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":""},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-","Move":false,"Description":[" :"," 1 2 , : . ",""," : ","\"\" - \"\". ","\" \" - (: -60). 50% HP. \" \".","\"\" - .","\" \" - - .",""," : ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":""}],"Name":"strsokr","Caption":" ","Description":[]},{"SmImg":"mgrta","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1096_nr34185697153.png","Instances":[{"Image":"mgrta","Level":11,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":25,"Intuition":25,"Endurance":25,"Intellect":25,"Wisdom":0,"HitPoints":3000,"Reward":450,"BirthPlace":""}],"Name":"mgrt","Caption":" ","Description":[" :"," 1 2 . ",""," : ","\" \"","\" \"","\" \"","\"\"","\"c \" - (: +90, (HP): +3700) - .","\"\"- .","\" \" ","\" \"",""," :***."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":100,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":""}],"Name":"kzm","Caption":" ","Description":[" :"," 1 2 .",", L11.",""," \"\"."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2700,"Reward":0,"BirthPlace":""}],"Name":"gzm","Caption":" ","Description":[" :"," 1 2 .",", L11.",""," \"\"."]}],"Objects":[{"SmImg":"chest02","ImageUrl":"https://img.new-combats.com/i/objects/chest02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":1,"MW":28,"MH":25,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest21","Caption":" ","Description":[" , ."," \"\" ."]}],"Name":"chest2_small","Caption":" 2 - .","Description":[]},{"SmImg":"chest04","ImageUrl":"https://img.new-combats.com/i/objects/chest04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":20,"MW":28,"MH":22,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest41","Caption":" ","Description":[" . "," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest42","Caption":" ","Description":[" . "," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest43","Caption":" ","Description":[" . "," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest44","Caption":" ","Description":[" . "," \"\" ."]}],"Name":"chest4_small","Caption":" 4 - .","Description":[]},{"SmImg":"weap3","ImageUrl":"https://img.new-combats.com/i/objects/2/weap3.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":4,"MT":5,"MW":27,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"weap31","Caption":"","Description":["..."]}],"Name":"weap3","Caption":" ","Description":[]},{"SmImg":"zer","ImageUrl":"https://img.new-combats.com/i/objects/2/zer.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":9,"MT":5,"MW":21,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"zer1","Caption":"","Description":["..."]}],"Name":"zer","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040a_dr8472409823.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":true,"Description":[" :",", 2 ."," , ."," . . ",""," : ","\" \" - 100-115 . .","\" \" - 70-80 . .","\"\" - \" \".",""," c ."],"Strength":10,"Dexterity":25,"Intuition":25,"Endurance":40,"Intellect":25,"Wisdom":40,"HitPoints":900,"Reward":10,"BirthPlace":""},{"Image":"","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :",", 2 . ",""," : ","\"Ҹ \" - 100-200 . .",""," 3, . 4- . "],"Strength":25,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":50,"HitPoints":950,"Reward":0,"BirthPlace":""}],"Name":"zbldsh","Caption":" ","Description":[]}],"Objects":[{"SmImg":"well03","ImageUrl":"https://img.new-combats.com/i/objects/well03.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain21","Caption":" ","Description":[" ."," 1."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain22","Caption":" ","Description":[" ."," ."]}],"Name":"well03","Caption":" 2","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key11","Caption":" 1","Description":[" ."," . , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key12","Caption":" 1","Description":[" :"," 1"," ( F8 )"," ( F4 )"]}],"Name":"key1","Caption":" 1","Description":[]},{"SmImg":"key21","ImageUrl":"https://img.new-combats.com/i/objects/Key2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key21","Caption":" 2","Description":[" I6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key22","Caption":" 2","Description":[" :"," 2 "," ( F8 )"," ( F4 )"," ( C6 )"," ( C4 )"]}],"Name":"key2","Caption":" 2","Description":[]},{"SmImg":"well08","ImageUrl":"https://img.new-combats.com/i/objects/well08.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"workshop1","Caption":" ","Description":[" , , .",", , 3. H6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"workshop2","Caption":" ","Description":[" ."," , ."," ."]}],"Name":"workshop","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1002.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 ."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":5,"BirthPlace":"Demons city"},{"Image":"rma","Level":7,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 ."," ."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1350,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : ."],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":"Demons city"},{"Image":"rma","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 ."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : ."," , ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":25,"BirthPlace":"Demons city"},{"Image":"rma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : "," . . ."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":6000,"Reward":0,"BirthPlace":"Demons cuty"}],"Name":"rabmgl","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1003.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 . ","."],"Strength":30,"Dexterity":30,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":400,"Reward":5,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 . ","."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":700,"Reward":10,"BirthPlace":"Demons city"},{"Image":"sma","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 . ","."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":"Demons city"},{"Image":"strmgl","Level":8,"Align":"0","Tag":"hp800","Move":false,"Description":[" :"," 1 2 , : ."," ."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":0,"BirthPlace":"Demons city"},{"Image":"sma","Level":8,"Align":"9","Tag":"hp1600","Move":false,"Description":[" :"," 1 2 , : ."," . ."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":0,"BirthPlace":"Demons city"}],"Name":"strmgl","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1004.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : .",", ."],"Strength":15,"Dexterity":35,"Intuition":35,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":300,"Reward":5,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 , : .",", ."],"Strength":50,"Dexterity":50,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":350,"Reward":10,"BirthPlace":"Demons city"},{"Image":"smma","Level":8,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 , : .",", ."," . "],"Strength":50,"Dexterity":50,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 .",", ."," ."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":600,"Reward":25,"BirthPlace":"Demons city"},{"Image":"smma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[" :"," 1 2 .",", ."," ."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":"Demons city"},{"Image":"smma","Level":9,"Align":"9","Tag":"hp2400","Move":false,"Description":[" :"," 1 2 . "," . ."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":2400,"Reward":0,"BirthPlace":"Demons city"}],"Name":"smotrmgl","Caption":" ","Description":[]}],"Objects":[{"SmImg":"well04","ImageUrl":"https://img.new-combats.com/i/objects/well04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain42","Caption":" ","Description":[" ."," 2. F5 ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain43","Caption":" ","Description":[" . ."]}],"Name":"fountain4","Caption":" 4","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1041_rk0170592363.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[" :"," 1 2 .",". ."],"Strength":70,"Dexterity":40,"Intuition":40,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":25,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :"," 2 2 .",". ."],"Strength":95,"Dexterity":65,"Intuition":65,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":50,"BirthPlace":""},{"Image":"skra","Level":9,"Align":"9","Tag":"","Move":false,"Description":[" :"," 2 2 .",". ."],"Strength":95,"Dexterity":65,"Intuition":65,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":0,"BirthPlace":""},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[" :"," 2 2 .",". ."],"Strength":125,"Dexterity":65,"Intuition":65,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":100,"BirthPlace":""},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[" :"," 2 2 .",". ."],"Strength":160,"Dexterity":85,"Intuition":85,"Endurance":120,"Intellect":0,"Wisdom":0,"HitPoints":2400,"Reward":200,"BirthPlace":""}],"Name":"skr","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1042_zh6184692382.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":75,"Intuition":75,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":25,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":100,"Intuition":100,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":50,"BirthPlace":""},{"Image":"bkra","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":100,"Intuition":100,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":3600,"Reward":0,"BirthPlace":""},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":120,"Dexterity":120,"Intuition":120,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":100,"BirthPlace":""},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":150,"Intuition":150,"Endurance":120,"Intellect":0,"Wisdom":0,"HitPoints":4000,"Reward":200,"BirthPlace":""}],"Name":"bkr","Caption":" ","Description":[" :"," 1 2 .",", , 150 500. ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . ."," .",""," : ","\" \" - . 200 . . ","\" \"","\"\" - + 47HP. "],"Strength":25,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":50,"HitPoints":950,"Reward":30,"BirthPlace":""},{"Image":"","Level":9,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . . . "," .",""," : ","\" \" - . 200 . . ","\" \"","\"\" - + 57HP. "],"Strength":50,"Dexterity":60,"Intuition":60,"Endurance":60,"Intellect":60,"Wisdom":60,"HitPoints":1150,"Reward":60,"BirthPlace":""},{"Image":"dkra","Level":9,"Align":"9","Tag":"","Move":true,"Description":[" :"," 2 2 . . ."," .",""," : ","\" \" - . 200-400 . . ","\" \"","\"\" - + 57HP. "],"Strength":50,"Dexterity":60,"Intuition":60,"Endurance":60,"Intellect":60,"Wisdom":60,"HitPoints":2300,"Reward":0,"BirthPlace":""},{"Image":"","Level":10,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . . . "," .",""," : ","\" \" - . 500 . . ","\" \"","\"\" - + 67HP. "],"Strength":70,"Dexterity":100,"Intuition":100,"Endurance":100,"Intellect":100,"Wisdom":100,"HitPoints":1350,"Reward":120,"BirthPlace":""},{"Image":"","Level":11,"Align":"0","Tag":"","Move":true,"Description":[" :"," 2 2 . . . "," .",""," : ","\" \" - . 500 . . ","\" \"","\"\" - + 90HP. "],"Strength":90,"Dexterity":120,"Intuition":120,"Endurance":120,"Intellect":120,"Wisdom":120,"HitPoints":1800,"Reward":250,"BirthPlace":""}],"Name":"dkr","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1043_ro9557495117.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[" :",". . ",""," : ","\" \" - . 200 . .","\" \" - ( +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":100,"Wisdom":65,"HitPoints":2500,"Reward":60,"BirthPlace":""},{"Image":"pkra","Level":9,"Align":"9","Tag":"","Move":false,"Description":[" :",". . ",""," : ","\" \" - . 200 . .","\" \" - ( +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":100,"Wisdom":65,"HitPoints":5000,"Reward":0,"BirthPlace":""},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[" :",". . ",""," : ","\" \" - . 500 . .","\" \" - ( +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":65,"HitPoints":2000,"Reward":120,"BirthPlace":""},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[" :",". . ",""," : ","\" \" - . 500 . .","\" \" - ( +600 HP)."],"Strength":60,"Dexterity":70,"Intuition":70,"Endurance":70,"Intellect":100,"Wisdom":80,"HitPoints":2500,"Reward":250,"BirthPlace":""}],"Name":"pkr","Caption":" ","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1044_kv7870496581.png","Instances":[{"Image":"","Level":14,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":200,"Dexterity":200,"Intuition":200,"Endurance":200,"Intellect":0,"Wisdom":0,"HitPoints":6000,"Reward":0,"BirthPlace":""}],"Name":"kv","Caption":" ","Description":[" :"," 2 2 . "," .",""," : ","\" \"","\" \"","\" \"","\" \" - +600.","\"\"","\" \"","\"\"","\"\"","\"\"",""," ."]}],"Objects":[{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":16,"MH":16,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport1","Caption":" ","Description":[" K7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":" ","Description":[" C6."]}],"Name":"redteleport_small_left","Caption":" , ","Description":[]},{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":21,"MT":5,"MW":16,"MH":16,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport1","Caption":" ","Description":[" H4."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":" ","Description":[" J10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport3","Caption":" ","Description":[" L9."]}],"Name":"redteleport_small_right","Caption":" , ","Description":[]},{"SmImg":"door2","ImageUrl":"https://img.new-combats.com/i/objects/1_front_door.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"frontdoor1","Caption":" ","Description":[" ."]}],"Name":"frontdoor","Caption":" ","Description":[]},{"SmImg":"well04","ImageUrl":"https://img.new-combats.com/i/objects/well04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":17,"MH":20,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain41","Caption":" ","Description":[" . ."]}],"Name":"fountain4_small","Caption":" 4 - .","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"kza","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kza","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":0,"BirthPlace":""}],"Name":"luka","Caption":"","Description":[" :"," 1 2 . ",""," : ","\" \" - .","\"\" - 7-10.","\" \" - \"\"","\" \" - \"\" ",""," .",""," , , ."]},{"SmImg":"kza","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kza","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":900,"Reward":0,"BirthPlace":""}],"Name":"martn","Caption":" ","Description":[" :"," 1 2 . ",""," : ","\" \" - .","\"\" - 8-12HP.","\" \" - 2 . 1% .","\" \" - \"\".","\" \" - \"\".",""," ."]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":20,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":600,"Reward":0,"BirthPlace":""}],"Name":"gmrz","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 . .","\" \" - .","\"\" - 8-12.","\"\" - , .",""," ."]},{"SmImg":"pp","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1050_pq6472859128.png","Instances":[{"Image":"pp","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":18,"Dexterity":25,"Intuition":20,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":540,"Reward":0,"BirthPlace":""}],"Name":"tungad","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 . .","\"\" - 8-12 .",""," ."]},{"SmImg":"trp","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1082_9dh7ka.png","Instances":[{"Image":"trp","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":10,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":300,"Reward":0,"BirthPlace":""}],"Name":"obpodv","Caption":" ","Description":[" :"," 1 2 . ",""," : ","\" \" - .","\" \" - \"\".","\"\" - , .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1021_rz7360376769.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":5,"Dexterity":20,"Intuition":8,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":60,"Reward":0,"BirthPlace":""}],"Name":"pauk","Caption":"","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 . .","\"\" - \" \".",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1023_tv2330604720.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":7,"Dexterity":25,"Intuition":10,"Endurance":10,"Intellect":0,"Wisdom":0,"HitPoints":120,"Reward":0,"BirthPlace":""}],"Name":"stpauk","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 . .","\"\" - \" \".",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1071_es6482658226.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":10,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":200,"Reward":0,"BirthPlace":""}],"Name":"santzm","Caption":"-","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 . .","\" \" - \"\".","\" \"",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1022_ht7629239682.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":10,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":100,"Reward":0,"BirthPlace":""}],"Name":"kanzuk","Caption":" ","Description":[" :"," 1 3 . ",""," : ","\" \" - \"\".","\" \" - \"\".",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1102_njsojmlanai.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":25,"Intuition":35,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":240,"Reward":0,"BirthPlace":""}],"Name":"kanpauk","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - 2 .","\"\" - , . 1-3 . . 2-5 , .","\" \" - 1-3 . .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1129_uuzyzugyv.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":312,"Reward":0,"BirthPlace":""}],"Name":"bzgsnt","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - 3 . 10 .","\" \" - \"\"",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1135_jhilayhqjy.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":25,"Intuition":25,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":360,"Reward":0,"BirthPlace":""}],"Name":"strkr","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\"\" - 10-20 . .","\"\" - \" \".","\"\" - 1-3 . . , \"\" .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1123_cprywpvgu.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":20,"Dexterity":35,"Intuition":40,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":270,"Reward":0,"BirthPlace":""}],"Name":"letb","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \" - \"\".","\"\" - 10-20 . .",""," ."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1131_wguwqcui.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":20,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":0,"BirthPlace":""}],"Name":"slzm","Caption":" - ","Description":[" :"," 1 2 . ",""," : ","\" \" - 2 .","\"\" - 10 . 5 .","\" \"",""," ."]},{"SmImg":"hozkana","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1132_bkiowybc.png","Instances":[{"Image":"hozkana","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":40,"Dexterity":35,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":""}],"Name":"hozkan","Caption":" ","Description":[" :"," 1 3 . ",""," : ","\" \" - 30-50 . .","\" \"","\" \" - 2 .","\"\" - , . .",""," ."]},{"SmImg":"mstngtla","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1128_cstfzebj.png","Instances":[{"Image":"mstngtla","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":35,"Intuition":35,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":0,"BirthPlace":""}],"Name":"mstngtl","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \"","\" \" - \"\".","\"\" - .","\"\" - , .","\" \" - 20-30 . .",""," ",""," \" \" :","\" \" - 460","\" \" - 550 ","\" \" - 900","\" \" - 550."]},{"SmImg":"glprba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1115_czyethrbsk.png","Instances":[{"Image":"glprba","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":35,"Dexterity":25,"Intuition":25,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":""}],"Name":"glprb","Caption":" ","Description":[" :"," 2 2 . ",""," : ","\" \"","\" \" - 2 .","\" \" - 1.5 , 2 , 3 .","\"\" - 50 HP , 10-15 . 2-3 . .",""," ."]},{"SmImg":"strgla","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1133_zgdtcylqfy.png","Instances":[{"Image":"strgla","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":20,"Intuition":35,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":960,"Reward":0,"BirthPlace":""}],"Name":"strgl","Caption":"","Description":[" :"," 2 2 . ",""," : ","\" \" - 20-30 . .","\" \" - \"\".","\" \" - 30-50 . .",""," ."]}],"Objects":[{"SmImg":"door3","ImageUrl":"https://img.new-combats.com/i/objects/1_front_door2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lukadoor1","Caption":" ","Description":[" . ."]}],"Name":"lukadoor","Caption":" ","Description":[]},{"SmImg":"ladder02","ImageUrl":"https://img.new-combats.com/i/objects/ladder02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"ladder21","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"novice.2","ClickPoint":"E16","Name":"ladder22","Caption":"","Description":[" E16 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"novice.1","ClickPoint":"L12","Name":"ladder23","Caption":"","Description":[" L12 ."]}],"Name":"ladder2","Caption":" ()","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key11","Caption":" 1","Description":[" 2- ."]}],"Name":"key1_small","Caption":" 1 - .","Description":[]},{"SmImg":"key21","ImageUrl":"https://img.new-combats.com/i/objects/Key2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":1,"MT":1,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key21","Caption":" 2","Description":[" 3- ."]}],"Name":"key2_small","Caption":" 2 - .","Description":[]},{"SmImg":"key3","ImageUrl":"https://img.new-combats.com/i/objects/Key3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key31","Caption":" 3","Description":[" 4- ."]}],"Name":"key3_small","Caption":" 3 - .","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key41","Caption":" 4","Description":[" 4- ."]}],"Name":"key4_small","Caption":" 4 - .","Description":[]},{"SmImg":"key5","ImageUrl":"https://img.new-combats.com/i/objects/Key5.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key51","Caption":" 5","Description":[" ."]}],"Name":"key5","Caption":" 5","Description":[]},{"SmImg":"key6","ImageUrl":"https://img.new-combats.com/i/objects/Key6.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key61","Caption":" 6","Description":[" ."]}],"Name":"key6","Caption":" 6","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key7.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":19,"MH":19,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key71","Caption":" 7","Description":[" ."]}],"Name":"key7_small","Caption":" 7 - .","Description":[]},{"SmImg":"key8","ImageUrl":"https://img.new-combats.com/i/objects/Key8.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key81","Caption":" 8","Description":[" ."]}],"Name":"key8","Caption":" 8","Description":[]},{"SmImg":"key9","ImageUrl":"https://img.new-combats.com/i/objects/Key9.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key91","Caption":" 9","Description":[" ."]}],"Name":"key9","Caption":" 9","Description":[]},{"SmImg":"smag_collect1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":20,"MH":20,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"smag_collect1","Caption":" ","Description":[" ."," \"\" ."]}],"Name":"sunduk_small","Caption":" - .","Description":[]},{"SmImg":"smag_collect1_2","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_21","Caption":" ","Description":[" ."," \"\" ."]}],"Name":"sunduk_2","Caption":" ","Description":[]},{"SmImg":"smag_collect1_2","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_2.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_21","Caption":" ","Description":[" ."," \"\" ."]}],"Name":"sunduk_2_blendy","Caption":" , ","Description":[]},{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":22,"MH":22,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":" ","Description":[" ."," \"\" ."]}],"Name":"chest1_small","Caption":" 1 - .","Description":[]},{"SmImg":"grate02","ImageUrl":"https://img.new-combats.com/i/objects/grate02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate21","Caption":"","Description":[" 4- ."," 3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate22","Caption":"","Description":[" 4- ."," 4."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate23","Caption":"","Description":[" ."," 8."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate24","Caption":"","Description":[" ."," 9."]}],"Name":"grate2","Caption":" 2","Description":[]},{"SmImg":"1_front_walll_tr","ImageUrl":"https://img.new-combats.com/i/objects/1_front_walll_tr.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"front_walll_tr1","Caption":"","Description":[" , , ."," ."]}],"Name":"front_walll_tr","Caption":"","Description":[]},{"SmImg":"drain_bottom1","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":0,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain1","Caption":"","Description":["..."]},{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain2","Caption":"","Description":["..."," ."]}],"Name":"drain_bottom1","Caption":" ( )","Description":[]},{"SmImg":"trash01","ImageUrl":"https://img.new-combats.com/i/objects/trash01.png","Rotate":false,"Importance":1,"BW":102,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash11","Caption":" ","Description":[" ."]}],"Name":"trash1","Caption":" ","Description":[]},{"SmImg":"full_rune_vial","ImageUrl":"https://img.new-combats.com/i/items/full_rune_vial.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"OrangeRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"full_rune_via1","Caption":" ","Description":[" , ."," .",""]}],"Name":"full_rune_vial","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1130_mcqzbnqy.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":35,"Dexterity":35,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":390,"Reward":0,"BirthPlace":""}],"Name":"krsnt","Caption":" ","Description":[" :"," 1 3 . ",""," : ","\" \" - \"\".","\" \"","\"\" - 10-30 . . , \"\" .","\" \" - 3 . 10 .",""," ."]}],"Objects":[]}); -underground.installMobs({"Mobs":[{"SmImg":"mhgol","ImageUrl":"https://img.new-combats.com/i/objects/anvil_golem.png","Instances":[{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"zabgol","Caption":"","Description":[]}],"Objects":[{"SmImg":"kuzn","ImageUrl":"https://img.new-combats.com/i/objects/forge01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge1","Caption":"","Description":[" ... 9- 10 . ... ",", - C . ",", , .",""," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge2","Caption":" ","Description":[" ... [9] [10] ."," .",""," :"," [10] "," [10] "," [10] "," [10] "," [10] "," [10] ",""," :"," [10] "," [10] "," [10] "," [10] "," [10] "," [10] "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge3","Caption":" ","Description":[" ... [9] [10] ."," .",""," :"," [10] "," [10] "," [10] "," [10] "," [10] "," [10] "," [10] ",""," :"," [10] "," [10] "," [10] "," [10] "," [10] "," [10] "," [10] "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge4","Caption":" ","Description":[" ... [9] [10] ."," .",""," :"," [10] "," [10] "," [10] "," [10] "," [10] "," [10] "]}],"Name":"forge","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"vxod","ImageUrl":"/i/ugobj/vxod.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":0,"MT":0,"MW":38,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter","Caption":"","Description":[]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"V2","Name":"ladder02","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"J2","Name":"enter3","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter2","Caption":" ","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.1","ClickPoint":"I2","Name":"enter4","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I6","Name":"enter5","Caption":"","Description":[" ."," , , I6 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.1","ClickPoint":"F10","Name":"enter6","Caption":" ","Description":[" ."," , : , F10 , B15."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.1","ClickPoint":"H2","Name":"enter7","Caption":" ","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.2","ClickPoint":"L8","Name":"enter8","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.1","ClickPoint":"R13","Name":"enter9","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"7","Name":"enter10","Caption":" ","Description":[" ."]}],"Name":"entrancepoint_green1","Caption":" ","Description":[]},{"SmImg":"vyxod","ImageUrl":"/i/ugobj/vyxod.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":2,"MW":34,"MH":34,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"escape","Caption":" ","Description":[]}],"Name":"escapepoint_blue1","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport01","ImageUrl":"https://img.new-combats.com/i/objects/teleport01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"H8","Name":"blueteleport1","Caption":"","Description":[" 4 ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport2","Caption":"","Description":[" D5. "," , E5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport3","Caption":" - ","Description":[" H4. "," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport4","Caption":" - ","Description":[" ..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.4","ClickPoint":"K11","Name":"blueteleport5","Caption":"","Description":[" 4 ."," K11 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport6","Caption":"","Description":[" G4."," 1."," , ."]}],"Name":"blueteleport","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"B7","Name":"redteleport1","Caption":" ","Description":[" B7 ."," 2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":" ","Description":[" D11."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"K16","Name":"redteleport3","Caption":" - ","Description":[" K16 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport4","Caption":" ","Description":[" K5 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport5","Caption":" ","Description":[" I7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport6","Caption":" ","Description":[" F6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport7","Caption":" ","Description":[" . H4, K7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport8","Caption":" ","Description":[" . C6, J10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport9","Caption":" ","Description":[" J4."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"K11","Name":"redteleport10","Caption":"","Description":[" ..."," K11 . . "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"K11","Name":"redteleport11","Caption":"","Description":[" K11 ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport12","Caption":"","Description":[" G10 ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.4","ClickPoint":"E10","Name":"redteleport13","Caption":" ()","Description":[" , ."]}],"Name":"redteleport","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport04","ImageUrl":"https://img.new-combats.com/i/objects/teleport04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grteleport1","Caption":" ","Description":[" , H8."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.2","ClickPoint":"C6","Name":"grteleport2","Caption":" ()","Description":[" , ."]}],"Name":"greenteleport","Caption":" ","Description":[]},{"SmImg":"weap2","ImageUrl":"https://img.new-combats.com/i/objects/2/weap2.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":31,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"weap21","Caption":"","Description":["..."]}],"Name":"weap2","Caption":" ","Description":[]},{"SmImg":"arrow2","ImageUrl":"/i/ugobj/arrow2.gif","Rotate":false,"Importance":1,"BW":38,"BH":23,"ML":1,"MT":9,"MW":38,"MH":23,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":" ","Description":[" - . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow2","Caption":"","Description":[]}],"Name":"arrowright","Caption":" ()","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport06","ImageUrl":"https://img.new-combats.com/i/objects/teleport06.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"yellowteleport1","Caption":"","Description":[" G13."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"C21","Name":"yellowtelepor2","Caption":" ","Description":[" , ."," C21 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.3","ClickPoint":"C6","Name":"yellowtelepor3","Caption":"","Description":[" , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.1","ClickPoint":"D7","Name":"yellowtelepor4","Caption":" ","Description":[" ."]}],"Name":"yellowteleport","Caption":" ","Description":[]},{"SmImg":"vumpel01","ImageUrl":"https://img.new-combats.com/i/objects/2/polot.png","Rotate":false,"Importance":0,"BW":70,"BH":62,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"vumpel11","Caption":"","Description":["..."]}],"Name":"vumpel1","Caption":" ","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"danger2","ImageUrl":"/i/ugobj/danger2_big.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport1","Caption":" - ","Description":[", , H6."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport2","Caption":" - ","Description":[", , I4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport3","Caption":" - ","Description":[", , I4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport4","Caption":" - ","Description":[", , E7."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport5","Caption":" - ","Description":[", , F6."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport6","Caption":" - ","Description":[", , H2."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport7","Caption":" - ","Description":[", , Q11."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport8","Caption":" - ","Description":[", , Q4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport9","Caption":" - ","Description":[", , R4."]}],"Name":"dangerteleport","Caption":" - ","Description":[]},{"SmImg":"smag_collect1_1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_11","Caption":" ","Description":[" , ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_12","Caption":"","Description":[" 4, ."," ... ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_13","Caption":"","Description":[" ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_14","Caption":"","Description":[" ."," ."]}],"Name":"sunduk_1","Caption":" ","Description":[]},{"SmImg":"chest04","ImageUrl":"https://img.new-combats.com/i/objects/chest04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest12","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest13","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest14","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest15","Caption":"","Description":[" - ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest16","Caption":" - ","Description":[" - , . !"]}],"Name":"chest4","Caption":" 4","Description":[]},{"SmImg":"gobelin01","ImageUrl":"https://img.new-combats.com/i/objects/2/dec_gobelin02.png","Rotate":false,"Importance":0,"BW":85,"BH":48,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"gobelin11","Caption":"","Description":["..."]}],"Name":"gobelin1","Caption":" 1","Description":[]},{"SmImg":"gobelin02","ImageUrl":"https://img.new-combats.com/i/objects/2/dec_gobelin01.png","Rotate":false,"Importance":0,"BW":85,"BH":48,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"gobelin2","Caption":"","Description":["..."]}],"Name":"gobelin2","Caption":" 2","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"enter1","ImageUrl":"https://img.new-combats.com/i/objects/les1up1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":10,"MT":5,"MW":21,"MH":30,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter1","Caption":"","Description":[]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter2","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I2","Name":"enter3","Caption":" ","Description":[" ."," , - , I2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"G7","Name":"enter4","Caption":"","Description":[" ."," , , G7 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.1","ClickPoint":"E2","Name":"enter5","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.2","ClickPoint":"G2","Name":"enter6","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.1","ClickPoint":"G2","Name":"enter7","Caption":"","Description":[" ."," , - 1 , G2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.1","ClickPoint":"J2","Name":"enter8","Caption":"","Description":[" ."," , - 2 , G2 , D6 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"I2","Name":"enter9","Caption":"","Description":[" ."," , -, I2 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"B2","Name":"enter10","Caption":"","Description":[" ."," , , B2 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"G2","Name":"enter11","Caption":"","Description":[" ."," , , G2 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.3","ClickPoint":"J5","Name":"enter12","Caption":"","Description":[" ."]}],"Name":"enter","Caption":" ","Description":[]},{"SmImg":"ladder1","ImageUrl":"https://img.new-combats.com/i/objects/les1down1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":34,"MH":29,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I11","Name":"ladder1","Caption":" ","Description":[", I11 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"I7","Name":"ladder2","Caption":" ","Description":[", I7 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.2","ClickPoint":"F10","Name":"ladder3","Caption":" ","Description":[", F10 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.3","ClickPoint":"I12","Name":"ladder4","Caption":" ","Description":[", I12 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.4","ClickPoint":"E6","Name":"ladder5","Caption":" ","Description":[" , E6 . "," , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.2","ClickPoint":"G11","Name":"ladder6","Caption":" ","Description":[", G11 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.3","ClickPoint":"F11","Name":"ladder7","Caption":" ","Description":[", F11 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"C11","Name":"ladder8","Caption":" 1","Description":[" .",", C11 ."," 1!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"K11","Name":"ladder9","Caption":" 2","Description":[" .",", K11 ."," 2!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"F11","Name":"ladder10","Caption":" ","Description":[", F11 ."]}],"Name":"ladder","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"door1","ImageUrl":"https://img.new-combats.com/i/objects/1/door2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor1","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor2","Caption":" ","Description":[" 3."," J4 , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor3","Caption":" ","Description":[" 4."," , ..."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor4","Caption":"","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor5","Caption":"","Description":[" 3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor6","Caption":"","Description":[]}],"Name":"enterdoor","Caption":", ","Description":[]},{"SmImg":"key3","ImageUrl":"https://img.new-combats.com/i/objects/Key3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key31","Caption":" 3","Description":[" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key32","Caption":" 3","Description":[" :"," , "," "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key33","Caption":" 3","Description":[" , G6."]}],"Name":"key3","Caption":" 3","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"well05","ImageUrl":"https://img.new-combats.com/i/objects/well05.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain51","Caption":" ","Description":[" , , ."," , ."," ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain52","Caption":" ","Description":[" , . "," . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain53","Caption":" ","Description":[" ."," 1 2. "," F5 H8 ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain54","Caption":" ","Description":[" ."," 1 2. "," F5 H8 ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain55","Caption":" ","Description":[" , , ."," , ."]}],"Name":"fountain5","Caption":" 5","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"well06","ImageUrl":"https://img.new-combats.com/i/objects/well06.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain61","Caption":" ","Description":[" . ... ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain62","Caption":" ","Description":[" ."," , ."," ... , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain63","Caption":" ","Description":[" ."," ."," .",""," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain64","Caption":" ","Description":[" , , , , . "," . . "]}],"Name":"fountain6","Caption":" 6","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"smag_collect1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":6,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk1","Caption":"","Description":[" : , (), (), (), , ..."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk2","Caption":"","Description":[" ..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk3","Caption":"","Description":[" : , ()."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk4","Caption":"","Description":[" ... , ."," , (), () (), ..."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk5","Caption":"","Description":[" ... , ."," , (), () (), ..."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk6","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk7","Caption":"","Description":[" : , , , \" \". ."," - !"]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk8","Caption":" - ","Description":[", , , ..."," , ..."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk9","Caption":"","Description":[" ."," : , , . "]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk10","Caption":"","Description":[" ."," : , - . ."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk11","Caption":"","Description":[" ."," 1. , F4.",""," , ."," ."]}],"Name":"smag_collect1","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"smag_collect1_3","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_31","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_32","Caption":"","Description":[" 4."," \"\" . ."]}],"Name":"sunduk_3","Caption":" ","Description":[]},{"SmImg":"drain_bottom","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":0,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain1","Caption":"","Description":["..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain2","Caption":"","Description":["..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain3","Caption":"","Description":["..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.1","ClickPoint":"G1","Name":"drain4","Caption":" ","Description":[" ."," , \"\" ( G1 )."]},{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain5","Caption":"","Description":[" [0/1] ."," ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain6","Caption":" - ","Description":[" , , 80% HP."," . , ."]}],"Name":"drain_bottom","Caption":"","Description":[]},{"SmImg":"drain_top","ImageUrl":"https://img.new-combats.com/i/objects/drain_top.png","Rotate":false,"Importance":0,"BW":70,"BH":40,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain_top1","Caption":"","Description":[" ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain_top2","Caption":"","Description":[]}],"Name":"drain_top","Caption":" - ","Description":[]},{"SmImg":"proboina","ImageUrl":"https://img.new-combats.com/i/objects/proboina.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina1","Caption":"","Description":[" , J14."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina2","Caption":"","Description":[" , F16."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina3","Caption":"","Description":[" ..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B1","Name":"proboina4","Caption":" ","Description":[" - ."," B1 ."," , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina5","Caption":"","Description":[" , I21 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina6","Caption":" ","Description":[" - ."," M19 ."]}],"Name":"proboina","Caption":"","Description":[]},{"SmImg":"trash2","ImageUrl":"https://img.new-combats.com/i/objects/trash02.png","Rotate":false,"Importance":1,"BW":102,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash21","Caption":" ","Description":[" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash22","Caption":" ","Description":[" ... ",", .","",":","\" \" - (: -6), 6 .","\" \" - (: -6), 6 .","\" \" - (: -6), 6 .","\" \" - (: -2, : -2, : -2), 3 .","\"\" - ( : -10), 3 .","\" \" - (. -20%, . -25%, . -30%, . -25%), 36 .",""," :","\" \" - HP(%):-40","",": , .",""," - ( ) ."]}],"Name":"trash2","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest12","Caption":"","Description":[" , , 400 , ..."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest15","Caption":"","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest13","Caption":"","Description":[" - ..., , 10 .","! ."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest14","Caption":"","Description":[" , +60HP, , 10 . ","! , . , ."," \"\" ."]}],"Name":"chest1","Caption":" 1","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest02","ImageUrl":"https://img.new-combats.com/i/objects/chest02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest21","Caption":" ","Description":[" , ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest22","Caption":"","Description":[" 3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest23","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest24","Caption":" - ","Description":[" [6]-[7] ."," ! , 1000 HP."," \"\" ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest25","Caption":"","Description":[" - . , , - ...","! ."," \"\" ."]}],"Name":"chest01","Caption":" 2","Description":[]},{"SmImg":"attentionpoint_red1","ImageUrl":"/i/ugobj/attentionpoint_red1.gif","Rotate":false,"Importance":1,"BW":40,"BH":40,"ML":0,"MT":0,"MW":38,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger1","Caption":"","Description":[" - c ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger2","Caption":"","Description":[" - . , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger3","Caption":"","Description":[" , 90% , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger4","Caption":"","Description":[" - . , !"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger5","Caption":"","Description":[" - ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger6","Caption":"","Description":[" , 90% , ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger7","Caption":"","Description":[" - R10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger8","Caption":"","Description":[" - 1000 . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger9","Caption":"","Description":[" - 1000 . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger10","Caption":"","Description":[" - ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger11","Caption":"","Description":[" - ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger12","Caption":"","Description":[" - , ."]}],"Name":"attentionpoint_red1","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest03","ImageUrl":"https://img.new-combats.com/i/objects/chest03.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":34,"MH":34,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest31","Caption":" ","Description":[" . C G12."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest32","Caption":"","Description":[" , , oca, Aea, ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest33","Caption":" ","Description":[" ."," \"\" ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest34","Caption":" ","Description":[" ."," \"\" ."]}],"Name":"chest3","Caption":" 3","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"altar","ImageUrl":"https://img.new-combats.com/i/objects/altar01.png","Rotate":false,"Importance":2,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar1","Caption":" ","Description":[" ."," , - . \"\" ..."," - , 4 ."," - , 5 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar2","Caption":"","Description":[" - . ."," B5. ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar3","Caption":" - ","Description":[" , 3 6 . : 2, 3, 4, 5. ",""," : ","\" \" - ( +25), 3.","\"\" - ( (HP) +30), 6 .","\"\" - ( HP (%): +50), 3 . ","\"\" (: +5), 6 .","\"\" (: +5), 6 .","\"\" (: +5), 6 . ",""," :","\" \" - ( : +25, : -25), 3 . ","\"\" - ( (HP) -30), 6 .","\"\" - ( HP (%): -50), 3 .","\"\" - (: -5), 6 .","\"\" - (: -5), 6 .","\"\" - (: -5), 6 . ",""," : , , , , ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar4","Caption":" ","Description":[" ."," ."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar5","Caption":" ","Description":[" . ( 700-701 HP). "," : , , , , ."]}],"Name":"altar","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"grate","ImageUrl":"https://img.new-combats.com/i/objects/grate.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate1","Caption":"","Description":[" 3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate2","Caption":"","Description":[" 2."," F5 ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate3","Caption":" ","Description":[]}],"Name":"grate","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"grate01","ImageUrl":"https://img.new-combats.com/i/objects/grate01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate11","Caption":"","Description":[" ."," , J1..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate12","Caption":"","Description":[" ."," 5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate13","Caption":"","Description":[" 2- ."," 1."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate14","Caption":"","Description":[" 3- ."," 2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate15","Caption":"","Description":[" 1."," 7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate16","Caption":"","Description":[" 2."," 7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate17","Caption":"","Description":[" 3."," 7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate18","Caption":"","Description":[" 4."," 7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate19","Caption":"","Description":[" ."," 6."]}],"Name":"grate1","Caption":" 1","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"lab","ImageUrl":"https://img.new-combats.com/i/objects/lab01.png","Rotate":false,"Importance":2,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab1","Caption":"","Description":[" , 3 10 ."," , . ( B4)."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab2","Caption":"","Description":[" . : , , (5 .)."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab3","Caption":" ","Description":[" , ."," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab4","Caption":"","Description":[" , ."," ."]}],"Name":"lab","Caption":"","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"arrow1","ImageUrl":"/i/ugobj/arrow1.gif","Rotate":false,"Importance":1,"BW":23,"BH":38,"ML":9,"MT":1,"MW":23,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":" ","Description":[" - . ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.5","ClickPoint":"S5","Name":"arrow2","Caption":" ","Description":[" , . "," ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow3","Caption":"","Description":[]}],"Name":"arrowup","Caption":" ()","Description":[]}]}); -underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"arrow4","ImageUrl":"/i/ugobj/arrow4.gif","Rotate":false,"Importance":1,"BW":38,"BH":23,"ML":1,"MT":9,"MW":38,"MH":23,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":" ","Description":[" - . ."]}],"Name":"arrowleft","Caption":" ()","Description":[]}]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.novice.js","dungeon.data.abandon.novice.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.demons.novice.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.capital.novice.js","dungeon.data.angel.demons.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#EBEBD3","CellBorderColorString":"#9E965C","Jobs":{"CollectiveJobs":[],"CapturedJobs":[{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater247.gif","ItemReward":0,"Description":[" .",""," . "," ."],"DefCount":1}],"KillingJobs":[{"MobName":"strgl","Unique":false,"Description":[" , .",""," 3 ."],"DefCount":1},{"MobName":"hozkan","Unique":false,"Description":[" , , ",""," 3 ."],"DefCount":1},{"MobName":"glprb","Unique":false,"Description":[" , , ",""," 3 ."],"DefCount":1}]},"Floors":[{"Cells":[{"X":2,"Y":14,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate22"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":11,"Y":4}]}]},{"X":6,"Y":14,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest33"}],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest23"}],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"martn","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest23"}],"HotSpots":[]},{"X":6,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":9,"Y":13}]}]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":5}]}]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[{"ObjectName":"drain_top","InstanceName":"drain_top1"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key5","InstanceName":"key51"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":11}]}]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":8,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"ladder2","InstanceName":"ladder21"}],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"luka","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"front_walll_tr","InstanceName":"front_walll_tr1"}],"HotSpots":[]},{"X":12,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab3"}],"HotSpots":[]},{"X":11,"Y":11,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder2","InstanceName":"ladder22"}],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"tungad","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1_small","InstanceName":"chest11"},{"ObjectName":"key4_small","InstanceName":"key41"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":14}]}]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"obpodv","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1_small","InstanceName":"key11"},{"ObjectName":"chest1_small","InstanceName":"chest11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":4}]}]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain2"}],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate14"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate13"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":0}]}]},{"X":7,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"obpodv","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lukadoor","InstanceName":"lukadoor1"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"gmrz","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2_small","InstanceName":"key21"},{"ObjectName":"key3_small","InstanceName":"key31"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":13},{"X":6,"Y":4}]}]},{"X":4,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"full_rune_vial","InstanceName":"full_rune_via1"}],"HotSpots":[]}],"LookDirection":3,"Width":15,"Height":17,"DataBounds":"0, 0, 14, 16","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":0,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_small","InstanceName":"smag_collect1"},{"ObjectName":"key7_small","InstanceName":"key71"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":11},{"X":7,"Y":11},{"X":7,"Y":15},{"X":9,"Y":15}]}]},{"X":1,"Y":0,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hozkan","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":1,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate19"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":5}]}]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":3},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key6","InstanceName":"key61"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":2}]}]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strgl","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest34"}],"HotSpots":[]},{"X":14,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":12,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":12,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key9","InstanceName":"key91"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":15,"Y":13}]}]},{"X":11,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":15,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk6"}],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":12,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate24"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":10}]}]},{"X":11,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate23"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":10}]}]},{"X":10,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate18"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":10}]}]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":10}]}]},{"X":6,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":7,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate16"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":7,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate15"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":7,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":16}]}]},{"X":9,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate17"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":9,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":16}]}]},{"X":8,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder2","InstanceName":"ladder23"}],"HotSpots":[]},{"X":5,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":15,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_3","InstanceName":"sunduk_31"}],"HotSpots":[]},{"X":16,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":16,"Y":16,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":16,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"glprb","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":18,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":17,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":12,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk6"}],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key8","InstanceName":"key81"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":11,"Y":13}]}]}],"LookDirection":3,"Width":17,"Height":20,"DataBounds":"0, 0, 17, 20","Name":"floor2","Caption":"2 ","Description":[" : . "," - c 5- . "," - c 6- . ",""," . "]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet99","Caption":" ","Description":[": 1
        ",": 90 .
        ",": 0/30
        "," :
        "," : 4
        "," : 15
        "," :
        "," . (%): +27
        "," . (%): +27
        "," (HP): +33
        "," : +3
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)

        "]},{"NewLineToBR":false,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet100","Caption":" ","Description":[": 1
        ",": 90 .
        ",": 0/30
        "," :
        "," : 15
        "," : 4
        "," :
        "," . (%): +27
        "," : +3
        "," (HP): +30
        "," : +30
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)
        "," : 4-6 (3+d3)

        "]}],"Name":"amulet","Caption":"","Description":[""," ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl4_reward","Caption":"","Description":[": 0.1 ",": 0/1 "," "," ",""," , , , , ."," : , H4, E7 ( ) ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl5_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," , ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl6_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," , ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl4_reward","Caption":"","Description":[": 0.1 ",": 0/1 "," "," ",""," . "," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl5_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," . "," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl6_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," , - , ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl4_reward","Caption":"","Description":[": 0.1 ",": 0/1 "," "," ",""," . "," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl5_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," . "," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl6_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," ",""," . "," ."]}],"Name":"maters","Caption":", , ","Description":[""," ."]},{"NewLineToBR":false,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl4_reward","Caption":"","Description":[": 0.1 ",": 0/1 "," "," "]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl5_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," "]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl6_reward","Caption":" ","Description":[": 0.1 ",": 0/1 "," "," "]}],"Name":"mater_coin","Caption":"","Description":[""," , . "," , , !"," , , , !",""," 3 C .",""," [4]-[6] ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP100_20","Caption":" ","Description":[": 5",": 1 . ",": 0/7"," : 30 . ",": 100 .",""," , J12."," ."]}],"Name":"pot_base","Caption":"","Description":[]},{"NewLineToBR":false,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater247","Caption":"","Description":[""," ."," . , ."]}],"Name":"key","Caption":"","Description":[" .
        "," ."]}],"Name":"maters","Caption":"","Description":["

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife54","Caption":" ","Description":[": 5
        : 0.00 .
        : []x8
        : 0/40
        :
        : 17
        : 17
        : 4
        , : 3
        : 9
        :
        : 3 - 9
        . (%): +20
        . (%): +30
        . (%): +20

        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife56","Caption":" ","Description":[": 6
        : 0.00 .
        : []x9
        : 0/30
        :
        : 17
        : 17
        : 4
        , : 3
        : 9
        :
        : 3 - 9
        . (%): +10
        . (%): +50

        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife58","Caption":" ","Description":[": 4
        : 0.00 .
        : []x14
        : 0/40
        :
        : 21
        : 21
        : 4
        , : 3
        : 11
        :
        . (%): +60
        :
        : 4 - 11
        . (%): +40
        . (%): +20
        . (%): +5

        : +
        :
        :
        :
        :
        :
        "]}],"Name":"knife","Caption":", ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe60","Caption":" ","Description":[": 10
        : 0.00 .
        : []x12
        : 0/50
        :
        : 13
        : 4
        , : 3
        : 13
        : 13
        :
        : +2
        :
        : 8 - 14

        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe84","Caption":" ","Description":[": 8
        : 0.00 .
        : []x13
        : 0/30
        :
        : 15
        : 4
        , : 3
        : 15
        : 15
        :
        : +1
        :
        : 7 - 13
        . (%): +30
        . (%): +20

        : +
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe63","Caption":" ","Description":[": 10
        : 0.00 .
        : []x15
        : 0/50
        :
        : 13
        : 4
        , : 3
        : 13
        : 13
        :
        . (%): +5
        : -1
        :
        : 8 - 15

        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe70","Caption":" ","Description":[": 13
        : 0.00 .
        : []x16
        : 0/50
        :
        : 13
        : 2
        : 4
        , : 3
        : 13
        : 13
        :
        : 8 - 15
        : +
        :
        :
        :
        :
        :
        :
        10-20 .
        : 20% ."]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe79","Caption":" ","Description":[": 12
        : 0.00 .
        : []x16
        : 0/50
        :
        : 13
        : 2
        : 4
        , : 3
        : 13
        : 13
        :
        : 8 - 15

        : +
        :
        :
        :
        :
        :
        :
        10-20 .
        : 20% ."]}],"Name":"axe","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer50","Caption":"","Description":[": 18
        : 0.00 .
        : []x15
        : 0/50
        :
        : 4
        , : 3
        : 16
        : 20
        :
        : -1
        :
        : 10 - 18
        . (%): +7
        . (%): +20
        : +
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer65","Caption":" ","Description":[": 19
        : 0.00 .
        : []x15
        : 0/50
        :
        : 4
        , : 3
        : 16
        : 20
        :
        : -2
        :
        : 10 - 18
        . (%): +15
        . (%): +20
        : +
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace55","Caption":" ","Description":[": 7
        : 0.00 .
        : []x17
        : 0/50
        :
        : 4
        , : 3
        : 16
        : 20
        :
        : -1
        :
        : 10 - 18
        . (%): +50
        . (%): +20
        :
        :
        :
        : "]}],"Name":"hammer","Caption":", ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword61","Caption":" ","Description":[": 10
        : 0.00 .
        : []x12
        : 0/50
        :
        : 13
        : 4
        : 3
        : 13
        : 13
        :
        : 7 - 18
        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword62","Caption":" ","Description":[": 12
        : 0.00 .
        : []x12
        : 0/50
        :
        : 10
        : 4
        : 3
        : 10
        : 10
        :
        . (%): -20
        . (%): +5
        :
        : 5 - 18
        . (%): +20
        : +
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword55","Caption":" ","Description":[": 13
        : 0.00 .
        : []x13
        : 0/50
        :
        : 13
        : 4
        : 3
        : 13
        : 13
        :
        . (%): +15
        . (%): +10
        : -1
        : +1
        :
        : 8 - 15
        : +
        :
        :
        :
        :
        : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword54","Caption":" ","Description":[": 11
        : 0.00 .
        : []x13
        : 0/50
        :
        : 13
        : 4
        : 3
        : 13
        : 13
        :
        . (%): +20
        :
        : 8 - 15
        . (%): +20

        : +
        :
        :
        :
        :
        : "]}],"Name":"sword","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff1","Caption":" ","Description":[": 4
        : 0.00 .
        : []x20
        : 0/30
        :
        : 20
        : 4
        : 1
        :
        : +1
        (HP): +30
        : +100
        :
        : 1 - 10

        : +
        :
        :
        : "]}],"Name":"staff","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots10","Caption":" ","Description":[": 4
        : 0.00 .
        : []x8
        : 0/20
        :
        : 4
        : 15
        : 15
        :
        . (%): +20
        . (%): +25
        (HP): +15
        : 2-10 (1+d9)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots210","Caption":" ","Description":[": 4
        : 0.00 .
        : []x8
        : 0/30
        :
        : 20
        : 4
        :
        . (%): +20
        (HP): +15
        : +30
        : 2-2"]}],"Name":"boots","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi54","Caption":" ","Description":[": 3
        : 0.00 .
        : []x6
        : 0/30
        :
        : 15
        : 4
        : 20
        :
        . (%): +5
        (HP): +18
        : +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi61","Caption":" ","Description":[": 3
        : 0.00 .
        : []x6
        : 0/30
        :
        : 25
        : 4
        : 15
        :
        . (%): +15
        . (%): +30
        : +1"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi70","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 20
        : 4
        : 20
        :
        : +1
        : +6
        : +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"gloves1","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 20
        : 4
        :
        : +1
        (HP): +6
        : +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi65","Caption":" ","Description":[": 2
        : 0.00 .
        : []x7
        : 0/20
        :
        : 10
        : 4
        : 15
        : 15
        :
        . (%): +5
        (HP): +45"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi58","Caption":" ","Description":[": 3
        : 0.00 .
        : []x7
        : 0/30
        :
        : 25
        : 4
        : 10
        :
        . (%): +5
        . (%): +5
        . (%): +5
        : +1"]}],"Name":"gloves","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba14","Caption":" ","Description":[": 2
        : 0.00 .
        : []x3
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        : +10
        : +5
        : +5
        : +5
        (HP): +3"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba17","Caption":" ","Description":[": 5
        : 0.00 .
        : []x20
        : 0/50
        :
        : 20
        : 4
        :
        . (%): +10
        : +1
        (HP): +30
        : +80
        : 6-10 (5+d5)"]}],"Name":"roba","Caption":" , ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor61","Caption":" ","Description":[": 10
        : 0.00 .
        : []x18
        : 0/50
        :
        : 5
        : 5
        : 4
        : 17
        : 17
        :
        . (%): +15
        . (%): -10
        , : +1
        (HP): +24
        : 7-24 (6+d18)
        :
        : +100"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor64","Caption":" ","Description":[": 18
        : 0.00 .
        : []x18
        : 0/50
        :
        : 7
        : 7
        : 4
        : 22
        : 22
        :
        . (%): +15
        . (%): +15
        : +2
        (HP): +33
        : 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor52","Caption":" ","Description":[": 14
        : 0.00 .
        : []x20
        : 0/40
        :
        : 15
        : 4
        : 15
        : 15
        :
        . (%): +15
        . (%): +5
        . (%): +15
        : +2
        : +2
        (HP): +12
        : +4
        : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor83","Caption":" ","Description":[": 17
        : 0.00 .
        : []x21
        : 0/50
        :
        : 7
        : 7
        : 4
        : 22
        : 22
        :
        . (%): +25
        . (%): +30
        . (%): +45
        : +2
        (HP): +33
        : 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor98","Caption":" ","Description":[": 9
        : 0.00 .
        : []x22
        : 0/50
        :
        : 22
        : 22
        : 4
        : 7
        : 7
        :
        . (%): +30
        . : +5
        , : +2
        (HP): +18
        : +3
        : 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor82","Caption":" ","Description":[": 15
        : 0.00 .
        : []x22
        : 0/50
        :
        : 7
        : 7
        : 4
        : 20
        : 20
        :
        . (%): +20
        . (%): +20
        . (%): +20
        (HP): +6
        . (%): +20
        : +4
        : 7-24 (6+d18)"]}],"Name":"armor","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg18","Caption":" ","Description":[": 2
        : 0.00 .
        : []x8
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        . (%): +5
        . (%): +5
        . (%): +5
        . (%): +5
        (HP): +27
        : 1-12 (d12)
        : 1-12 (d12)"]}],"Name":"leg","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet61","Caption":" ","Description":[": 5
        : 0.00 .
        : []x9
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        . (%): +15
        . (%): +30
        (HP): +21
        : 2-10 (1+d9)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet34","Caption":" ","Description":[": 10
        : 0.00 .
        : []x9
        : 0/40
        :
        : 4
        : 15
        : 15
        :
        . (%): +20
        (HP): +30
        : 5-22 (4+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet30","Caption":" ","Description":[": 8
        : 0.00 .
        : []x9
        : 0/40
        :
        : 4
        : 15
        : 15
        :
        . (%): +15
        (HP): +18
        : +2
        : 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet32","Caption":" ","Description":[": 4
        : 0.00 .
        : []x9
        : 0/30
        :
        : 4
        :
        . (%): +25
        : +2
        : +2
        : 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet52","Caption":" ","Description":[": 10
        : 0.00 .
        : []x9
        : 0/35
        :
        : 4
        : 15
        : 15
        :
        . (%): +10
        : +2
        : +20
        : 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"whelmet4","Caption":" ","Description":[": 4
        : 0.00 .
        : []x9
        : 0/30
        :
        : 20
        : 4
        :
        (HP): +24
        : +45
        : 3-3"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet48","Caption":" ","Description":[": 5
        : 0.00 .
        : []x10
        : 0/30
        :
        : 10
        : 10
        : 4
        : 10
        : 10
        :
        : +1
        : +1
        : +1
        (HP): +12
        : +1
        : 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet49","Caption":" ","Description":[": 7
        : 0.00 .
        : []x10
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        . (%): +10
        : +4
        : 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet77","Caption":" ","Description":[": 5
        : 0.00 .
        : []x10
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        . (%): +30
        : +2
        : +2
        : 3-10 (2+d8)"]}],"Name":"helmet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield12","Caption":" ","Description":[": 8
        : 0.00 .
        : []x11
        : 0/30
        :
        : 12
        : 4
        : 15
        : 15
        :
        . (%): +25
        : +1
        : 3-14 (2+d12)
        : 4-15 (3+d12)
        : 3-14 (2+d12)
        : 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield10","Caption":" ","Description":[": 10
        : 0.00 .
        : []x12
        : 0/40
        :
        : 12
        : 4
        : 15
        : 15
        :
        . (%): +25
        : +3
        : +2
        : 3-14 (2+d12)
        : 4-15 (3+d12)
        : 3-14 (2+d12)
        : 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield19","Caption":" ","Description":[": 10
        : 0.00 .
        : []x13
        : 0/30
        :
        : 12
        : 4
        : 15
        : 15
        :
        . (%): +20
        : +1
        (HP): +15
        : 3-14 (2+d12)
        : 4-15 (3+d12)
        : 3-14 (2+d12)
        : 3-14 (2+d12)"]}],"Name":"shield","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet6","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/20
        :
        : 15
        : 4
        : 10
        : 10
        :
        . (%): +10
        . (%): +15
        : +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet9","Caption":" ","Description":[": 5
        : 0.00 .
        : []x6
        : 0/30
        :
        : 15
        : 4
        : 10
        : 10
        :
        . (%): +10
        . (%): +25
        : +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet26","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 20
        : 4
        :
        (HP): +12
        : +35"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet10","Caption":" ","Description":[": 2
        : 0.00 .
        : []x13
        : 0/30
        :
        : 10
        : 10
        : 4
        : 10
        : 10
        :
        : +2
        : +2
        (HP): +18
        : +3"]}],"Name":"braslet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt5","Caption":" ","Description":[": 2
        : 0.00 .
        : []x4
        : 0/30
        :
        : 10
        : 10
        : 4
        : 10
        : 10
        :
        : +1
        : +1
        : 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt40","Caption":" ","Description":[": 2
        : 0.00 .
        : []x4
        : 0/20
        :
        : 20
        : 4
        :
        : +30
        : 3-3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt31","Caption":" ","Description":[": 2
        : 0.00 .
        : []x5
        : 0/30
        :
        : 15
        : 4
        : 15
        :
        : +2
        : 1-12 (d12)"]}],"Name":"belt","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip53","Caption":" ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/30
        :
        : 12
        : 4
        : 12
        : 12
        :
        . (%): +30
        . (%): +30
        . (%): +15
        . (%): +15
        : +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip57","Caption":" ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/40
        :
        : 18
        : 4
        : 10
        : 10
        :
        . (%): +20
        . (%): +55
        . (%): +3
        : +2"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip86","Caption":" ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/50
        :
        : 20
        : 4
        :
        . (%): +10
        (HP): +36
        : +50"]}],"Name":"clip","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet53","Caption":" - -","Description":[": 1
        : 0.00 .
        : []x12
        : 0/30
        :
        : 15
        : 4
        : 15
        : 15
        :
        . (%): +25
        : +3
        (HP): +33"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet90","Caption":" ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/50
        :
        : 20
        : 4
        :
        . (%): +30
        : +2
        (HP): +18
        : +25"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet63","Caption":" ","Description":[": 1
        : 0.00 .
        : []x13
        : 0/50
        :
        : 4
        : 15
        : 15
        :
        . (%): +30
        : +25
        (HP): +18"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet67","Caption":" ","Description":[": 1
        : 0.00 .
        : []x13
        : 0/50
        :
        : 4
        : 20
        : 10
        :
        (HP): +99"]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring108","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        . (%): +5
        . (%): +2
        . (%): -5
        (HP): +33"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring81","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 4
        : 20
        : 20
        :
        : 1-15 (d15)
        : 1-15 (d15)
        : 1-15 (d15)
        : 1-15 (d15)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring54","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/30
        :
        : 4
        : 15
        : 15
        :
        : +21
        : +25"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring123","Caption":" ","Description":[": 1
        : 0.00 .
        : []x6
        : 0/50
        :
        : 20
        : 4
        :
        : +1
        : +35"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring101","Caption":" ","Description":[": 1
        : 0.00 .
        : []x7
        : 0/30
        :
        : 17
        : 4
        : 10
        : 10
        :
        . (%): +10
        . (%): +3
        . (%): +2"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring55","Caption":" ","Description":[": 1
        : 0.00 .
        : []x7
        : 0/30
        :
        : 10
        : 10
        : 4
        : 10
        : 10
        :
        . (%): +10
        . (%): +5
        . (%): +15
        : +1
        : +1"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring60","Caption":" ","Description":[": 1
        : 0.00 .
        : []x7
        : 0/30
        :
        : 12
        : 4
        : 10
        : 10
        :
        . (%): +30
        : +20"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring73","Caption":" ","Description":[": 1
        : 0.00 .
        : []x9
        : 0/20
        :
        : 4
        : 1
        : 10
        : 10
        :
        . (%): +25
        :
        10-15 .
        : 30% ."]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring66","Caption":" ","Description":[": 1
        : 0.00 .
        : []x9
        : 0/20
        :
        : 4
        : 1
        : 10
        : 10
        :
        . (%): +25
        :
        1-24 .
        : 30% . "]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring91","Caption":" ","Description":[": 1
        : 0.00 .
        : []x9
        : 0/20
        :
        : 4
        : 10
        : 15
        :
        . (%): +25
        :
        10-15 .
        : 30% ."]}],"Name":"ring","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_1","Caption":" 1: ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/1
        : 50%
        :
        : 4
        , : 1
        :
        : +1
        : +1
        :
        , , . . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_1","Caption":" 1: ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/1
        : 50%
        :
        : 4
        , : 1
        :
        : +1
        : +1
        :
        , , . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_1","Caption":" 1: , , ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/1
        : 50%
        :
        : 4
        , : 1
        :
        : +1
        : +1
        :
        , , . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_1","Caption":" 1: ","Description":[": 1
        : 0.00 .
        : []x12
        : 0/1
        : 50%
        :
        : 4
        : 1
        :
        : +1
        : +1
        :
        , , . . "]}],"Name":"svitki","Caption":"","Description":[]}],"Name":"noviceshop1","Caption":"","Description":["

        , . .


        ","

        , \"\" , \"\" , \"\" ? \"\" .

        ","","","","","","","","","","","
        [4]-[6] [7] [8]
        3 = 1
        1 = 1
        1 = 3
        9 = 1
        3 = 1
        1 = 1
        15 = 1
        5 = 1
        5 = 3

        ","


        ","

        , , [4] .

        ","

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife66","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x14
        : 0/50
        :
        •: 21
        •: 21
        •: 5
        • , : 3
        •: 11
        :
        •. (%): +20
        •: +1
        •: +1
        :
        •: 4 - 11
        •. (%): 20
        •. (%): 20
        •. (%): 20
        • : +
        :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife62","Caption":"","Description":[": 6
        : 0.00 .
        : [ ]x14
        : 0/40
        :
        •: 18
        •: 18
        •: 5
        • , : 3
        :
        •. (%): +5
        :
        •: 4 - 11
        •. (%): 35

        • : +
        :
        • :
        • :
        • :
        • : "]}],"Name":"knife","Caption":", ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe52","Caption":" ","Description":[": 15
        : 0.00 .
        : [ ]x17
        : 0/50
        :
        •: 16
        •: 5
        • , : 3
        •: 16
        •: 16
        :
        •: -1
        :
        •: 10 - 18
        •. (%): 40
        •. : 8
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe67","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • , : 3
        •: 16
        •: 16
        :
        •. (%): +20
        :
        •: 10 - 18
        •. (%): 20
        •. (%): 20

        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe71","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • , : 3
        •: 16
        •: 16
        :
        •: 10 - 18
        •. (%): 50
        •. (%): 20
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe57","Caption":" ","Description":[": 15
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • , : 3
        •: 16
        •: 16
        :
        •: +2
        :
        •: 10 - 18
        •. (%): 25
        • : +
        :
        • :
        • :
        • :
        • : "]}],"Name":"axe","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer51","Caption":" ","Description":[": 23
        : 0.00 .
        : [ ]x19
        : 0/50
        :
        •: 5
        • , : 3
        •: 20
        •: 25
        :
        •: -2
        •: +1
        :
        •: 13 - 22
        •. (%): 30
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace60","Caption":" ","Description":[": 21
        : 0.00 .
        : [ ]x19
        : 0/50
        :
        •: 5
        • , : 3
        •: 20
        •: 25
        :
        •. (%): -20
        •. (%): +20
        •. (%): -20
        :
        •: 13 - 22
        •. (%): 35
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer52","Caption":" ","Description":[": 24
        : 0.00 .
        : [ ]x20
        : 0/50
        :
        •: 5
        • , : 3
        •: 20
        •: 25
        :
        •. (%): -15
        •: -1
        •: +1
        :
        •: 13 - 23
        •. (%): 15
        •. (%): 15
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace54","Caption":" ","Description":[": 22
        : 0.00 .
        : [ ]x20
        : 0/50
        :
        •: 5
        • , : 3
        •: 20
        •: 25
        :
        •: -2
        :
        •: 13 - 22
        •. . (%): 10
        •. (%): 15
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer4","Caption":" ","Description":[": 20
        : 0.00 .
        : [ ]x22
        : 0/50
        :
        •: 10
        •: 10
        •: 5
        • , : 3
        •: 20
        •: 20
        :
        •: -2
        :
        •: 13 - 25
        •. (%): 50
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace53","Caption":" ","Description":[": 9
        : 0.00 .
        : [ ]x24
        : 0/50
        :
        •: 5
        • , : 3
        •: 20
        •: 25
        :
        •: 13 - 22
        •. (%): 70
        •. (%): 15
        • :
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer60","Caption":" ","Description":[": 29
        : 0.00 .
        : [ ]x31
        : 0/50
        :
        •: 5
        • , : 4
        •: 20
        •: 25
        :
        •. (%): -20
        •: -1
        :
        •: 20 - 27
        •. (%): 30
        •. (%): 45
        • , : 1

        • : +
        :
        • :
        • : "]}],"Name":"hammer","Caption":", , ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword79","Caption":" --","Description":[": 16
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •: 8 - 21
        •. (%): 50
        •. (%): 10
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword81","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        • : 5
        • : 3
        • : 16
        • : 16
        :
        • . (%): -10
        • . (%): -30
        • : +1
        • : -1
        • (HP): +20
        • : +1
        :
        • : 10 - 18
        • . (%): 40
        • . (%): 25
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword73","Caption":" ̸","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •. (%): +40
        •: -1
        •: +1
        :
        •: 10 - 18
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword50","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •. (%): +20
        •. (%): +30
        :
        •: 10 - 18
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword56","Caption":" --","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •: 7 - 23
        •. (%): 25
        •. (%): 25
        • : +
        :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword87","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 16
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •. (%): +10
        •. (%): +10
        •: +1
        :
        •: 10 - 18
        •. (%): 10
        •. (%): 10

        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword57","Caption":" ","Description":[": 11
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 14
        •: 14
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •. (%): +20
        •. (%): +20
        •: -1
        •: -1
        •: +1
        :
        •: 10 - 18
        •. (%): 30
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword69","Caption":" ","Description":[": 15
        : 0.00 .
        : [ ]x24
        : 0/50
        :
        •: 16
        •: 2
        •: 5
        • : 3
        •: 16
        •: 16
        :
        •. (%): -20
        •. (%): +20
        :
        •: 10 - 18
        •. (%): 20
        • : +
        :
        • :
        • :
        • :
        • :
        :
        20-30 .
        : 30% "]}],"Name":"sword","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots7","Caption":" ","Description":[": 6
        : 0.00 .
        : [ ]x7
        : 0/40
        :
        •: 5
        •: 17
        •: 17
        :
        •. (%): +25
        • (HP): +12
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots11","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x9
        : 0/50
        :
        •: 5
        •: 17
        •: 17
        :
        • (HP): +45
        •: +1
        • : 6-20 (5+d15)"]}],"Name":"boots","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi51","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x7
        : 0/50
        :
        •: 20
        •: 5
        •: 15
        :
        • : +1
        • (HP): +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi57","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 20
        •: 5
        •: 20
        :
        • : +20
        • : +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"gloves2","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x11
        : 0/30
        :
        •: 25
        •: 5
        •: 10
        :
        •: +1
        • : +1
        • : +10
        • (HP): +12
        • : +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi63","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x11
        : 0/30
        :
        •: 15
        •: 5
        •: 25
        :
        •. : +3
        • , : +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi64","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x11
        : 0/30
        :
        •: 25
        •: 5
        •: 15
        :
        •. : +6
        • , : +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi68","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x11
        : 0/30
        :
        •: 20
        •: 5
        •: 20
        :
        •. : +4
        •. : +2
        • : +3"]}],"Name":"gloves","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor51","Caption":" ","Description":[": 23
        : 0.00 .
        : [ ]x20
        : 0/80
        :
        •: 5
        •: 25
        •: 25
        :
        •. (%): +20
        • : +25
        • (HP): +27
        •: +1
        • : 6-26 (5+d21)
        :
        • : 25"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor53","Caption":" ","Description":[": 16
        : 0.00 .
        : [ ]x25
        : 0/40
        :
        •: 25
        •: 5
        •: 10
        •: 15
        :
        •. (%): +15
        •. (%): +25
        •. (%): +5
        •. (%): +50
        •: +2
        • (HP): +18
        •: +2
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor55","Caption":" ","Description":[": 25
        : 0.00 .
        : [ ]x25
        : 0/80
        :
        •: 5
        •: 25
        •: 25
        :
        •. (%): +40
        • (HP): +33
        • : 7-30 (6+d24)
        :
        • : 75"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor56","Caption":" ","Description":[": 24
        : 0.00 .
        : [ ]x25
        : 0/70
        :
        •: 20
        •: 5
        •: 25
        •: 25
        :
        •. . (%): +5
        •. (%): +30
        •. (%): +40
        • (HP): +33
        •: +4
        • : 8-28 (7+d21)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor60","Caption":" ","Description":[": 18
        : 0.00 .
        : [ ]x26
        : 0/50
        :
        •: 7
        •: 7
        •: 5
        •: 25
        •: 25
        :
        •. (%): +30
        •. (%): +20
        • , : +1
        • (HP): +33
        •: +1
        • : 8-31 (7+d24)
        :
        • : 100"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor102","Caption":" ","Description":[": 20
        : 0.00 .
        : [ ]x26
        : 0/80
        :
        •: 20
        •: 20
        •: 5
        •: 15
        •: 15
        :
        •. (%): +20
        •. (%): +20
        •. : +25
        • (HP): +24
        • : 8-28 (7+d21)"]}],"Name":"armor","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg32","Caption":"","Description":[": 7
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        •: 5
        •: 18
        •: 18
        :
        • (HP): +27
        •: +1
        • : 7-18 (6+d12)
        • : 7-18 (6+d12)"]}],"Name":"leg","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet63","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x10
        : 0/40
        :
        •: 5
        •: 18
        •: 18
        :
        •. (%): +50
        • (HP): +12
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet35","Caption":" ","Description":[": 12
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        •: 20
        •: 5
        •: 20
        •: 20
        :
        •. (%): +35
        •. (%): +35
        • (HP): +12
        • : 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet67","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x10
        : 0/30
        :
        •: 5
        •: 18
        •: 18
        :
        •. (%): +15
        •: +1
        • (HP): +18
        •: +2
        • : 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet72","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x10
        : 0/20
        :
        •: 5
        •: 18
        •: 18
        :
        •: +1
        • : +30
        • (HP): +33
        •: +1"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet38","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x11
        : 0/30
        :
        •: 20
        •: 5
        •: 20
        •: 20
        :
        •. . (%): +20
        •. (%): -25
        •. (%): +20
        •. (%): -25
        • : 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet43","Caption":" ","Description":[": 8
        : 0.00 .
        : [ ]x15
        : 0/40
        :
        •: 5
        •: 18
        •: 18
        :
        •. (%): +20
        •. (%): -10
        • (HP): +27
        •: +2
        • : 7-24 (6+d18)
        :
        • : 25
        • : 25"]}],"Name":"helmet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield7","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x14
        : 0/30
        :
        •: 15
        •: 5
        •: 18
        •: 18
        :
        •. (%): +25
        •. (%): +20
        • (HP): +15
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield79","Caption":" ","Description":[": 15
        : 0.00 .
        : [ ]x16
        : 0/50
        :
        •: 15
        •: 5
        •: 18
        •: 18
        :
        •. (%): +10
        •. (%): +15
        • : +50
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)
        • : 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield13","Caption":" ","Description":[": 15
        : 0.00 .
        : [ ]x17
        : 0/50
        :
        •: 15
        •: 5
        •: 18
        •: 18
        :
        • (HP): +18
        • : 8-31 (7+d24)
        • : 9-32 (8+d24)
        • : 8-31 (7+d24)
        • : 8-31 (7+d24)"]}],"Name":"shield","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi81","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 21
        •: 5
        •: 20
        •: 20
        :
        •. (%): +10
        •. (%): +10
        •. (%): +20
        •: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet28","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x9
        : 0/30
        :
        •: 25
        •: 5
        •: 10
        :
        •: +1
        • (HP): +21
        • : +40"]}],"Name":"braslet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt25","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x6
        : 0/30
        \t :
        • : 15
        • : 5
        • : 15
        :
        • . (%): +15
        • . (%): +25
        • : 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt26","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x6
        : 0/20
        :
        •: 5
        •: 15
        •: 20
        :
        •. (%): +5
        •. (%): +5
        • : +10
        • (HP): +18
        • : 3-17 (2+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt3","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x6
        : 0/30
        :
        •: 20
        •: 5
        •: 10
        •: 20
        :
        •. (%): +5
        •. (%): +10
        •: +1
        •: +1
        • : 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt20","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x6
        : 0/30
        :
        •: 25
        •: 5
        •: 10
        •: 10
        :
        •. (%): +5
        •. (%): +25
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt23","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x6
        : 0/20
        :
        •: 5
        •: 20
        •: 20
        :
        • (HP): +45
        • : 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt41","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x6
        : 0/20
        :
        •: 25
        •: 5
        •: 10
        :
        • : +45
        • : 4-9 (3+d6)"]}],"Name":"belt","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip63","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x14
        : 0/50
        :
        •: 5
        •: 20
        •: 20
        :
        • (HP): +120"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip55","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x15
        : 0/50
        :
        •: 5
        •: 17
        •: 17
        :
        •. (%): +15
        •. (%): +30
        • (HP): +33
        •: +2
        • : 1-9 (d9)
        • : 1-9 (d9)
        • : 1-9 (d9)
        • : 1-9 (d9)"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip54","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x15
        : 0/30
        :
        •: 10
        •: 10
        •: 5
        •: 10
        •: 10
        :
        •: +2
        •: +2
        •: +2
        • (HP): +33
        •: +2"]}],"Name":"clip","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet54","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x17
        : 0/50
        :
        •: 10
        •: 10
        •: 5
        •: 10
        •: 10
        :
        •: +4
        •: +4
        •: +4"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet56","Caption":" - -","Description":[": 1
        : 0.00 .
        : [ ]x17
        : 0/60
        :
        •: 20
        •: 5
        •: 10
        •: 10
        :
        •. (%): +25
        •. (%): +25
        •. (%): +45
        •. (%): +5
        •: +3"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet65","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x18
        : 0/50
        :
        •: 5
        •: 20
        •: 20
        :
        •. (%): +25
        •. (%): +25
        •: +2
        •: +2
        •: +5"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet60","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x18
        : 0/30
        :
        •: 15
        •: 15
        •: 5
        •: 15
        •: 15
        :
        •. (%): +25
        •. (%): +25
        •. (%): +25
        •. (%): +25
        •: +1
        •: +1
        • (HP): +6
        •: +1
        • : 1-6 (d6)
        • : 1-6 (d6)
        • : 1-6 (d6)
        • : 1-6 (d6)"]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring67","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x7
        : 0/50
        :
        •: 5
        •: 15
        •: 15
        :
        •: +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring70","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x7
        : 0/50
        :
        •: 5
        •: 15
        •: 15
        :
        •: +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring124","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/50
        :
        •: 25
        •: 5
        :
        •. : +1
        •: +1
        • : +40"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring50","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/50
        :
        •: 25
        •: 5
        •: 15
        :
        •: +5
        • (HP): +3"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring77","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 20
        •: 5
        •: 15
        •: 15
        :
        •. . (%): +6
        •. (%): +25
        • : 1-3 (d3)
        • : 1-3 (d3)
        • : 1-3 (d3)
        • : 1-3 (d3)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring78","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 5
        •: 15
        •: 15
        :
        •. (%): +15
        •. (%): +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring59","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/40
        :
        •: 10
        •: 10
        •: 5
        •: 10
        •: 10
        :
        •: +1
        •: +1
        •: +1
        • (HP): +18
        •: +1"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring62","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 5
        •: 20
        •: 20
        :
        •. (%): +5
        •. (%): +7
        • (HP): +12"]}],"Name":"ring","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_2","Caption":" 2: ","Description":[": 1
        : 0.00 .
        : [ ]x24
        : 0/1
        : 60%
        :
        : 4
        , : 2
        :
        : +2
        : +2
        :
        , , . . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_2","Caption":" 2: ","Description":[": 1
        : 0.00 .
        : [ ]x24
        : 0/1
        : 60%
        :
        : 4
        , : 2
        :
        : +2
        : +2
        :
        , , . . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_2","Caption":" 2: , , ","Description":[": 1
        : 0.00 .
        : [ ]x24
        : 0/1
        : 60%
        :
        : 4
        , : 2
        :
        : +2
        : +2
        :
        , , . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_2","Caption":" 2: ","Description":[": 1
        : 0.00 .
        : [ ]x24
        : 0/1
        : 50%
        :
        : 4
        : 2
        :
        : +2
        : +2
        :
        , , . . "]}],"Name":"svitki","Caption":"","Description":[]}],"Name":"noviceshop2","Caption":"","Description":["

        , . .


        ","","

        \"\" , \"\" \"\" \"\" .

        ","","","","","","","","","","","
        [4]-[6] [7] [8]
        3 = 1
        1 = 1
        1 = 3
        9 = 1
        3 = 1
        1 = 1
        15 = 1
        5 = 1
        5 = 3

        ","


        ","

        , , [5] .

        ","

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"dagger70","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x19
        : 0/50
        :
        •: 34
        •: 25
        •: 6
        • , : 4
        •: 13
        :
        •: 4 - 12
        •. (%): 45
        •. : 15
        •. (%): 50

        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife57","Caption":" ","Description":[": 6
        : 0.00 .
        : [ ]x20
        : 0/40
        :
        •: 25
        •: 25
        •: 5
        •: 6
        • , : 4
        •: 13
        :
        •: 4 - 13
        •. (%): 20
        •. (%): 30

        • : +
        :
        • :
        • :
        • :
        • :
        :
        10-16 .
        : 50% "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife68","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x20
        : 0/40
        :
        •: 25
        •: 25
        •: 5
        •: 6
        • , : 4
        •: 13
        :
        •. (%): +20
        :
        •: 4 - 12
        •. (%): 20

        • : +
        :
        • :
        • :
        • :
        • :
        :
        10-16 .
        : 50% "]}],"Name":"knife","Caption":", ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe76","Caption":" ","Description":[": 17
        : 0.00 .
        : [ ]x22
        : 0/50
        :
        •: 16
        •: 6
        • , : 4
        •: 16
        •: 16
        :
        •. (%): +20
        •: +2
        •: +1
        :
        •: 11 - 19
        •. (%): 15
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe58","Caption":" ","Description":[": 19
        : 0.00 .
        : [ ]x23
        : 0/50
        :
        •: 19
        •: 6
        • , : 4
        •: 19
        •: 19
        :
        •. (%): +30
        • , : +1
        :
        •: 11 - 21
        •. (%): 40
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe59","Caption":" ","Description":[": 16
        : 0.00 .
        : [ ]x23
        : 0/50
        :
        •: 19
        •: 6
        • , : 4
        •: 19
        •: 19
        :
        •: 12 - 21
        •. . (%): 10
        •. (%): 30

        • : +
        :
        • :
        • :
        • :
        • : "]}],"Name":"axe","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"molot1","Caption":" ","Description":[": 10
        : 0.00 .
        : [ ]x25
        : 0/50
        :
        •: 15
        •: 6
        • , : 3
        •: 20
        •: 20
        :
        •: -2
        •: +5
        :
        •: 10 - 22
        •. (%): 25
        •. (%): 35
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace56","Caption":" Ҹ ","Description":[": 25
        : 0.00 .
        : [ ]x26
        : 0/50
        :
        •: 6
        • , : 4
        •: 24
        •: 30
        :
        •. (%): -20
        :
        •: 15 - 25
        •. (%): 50
        •. (%): 30
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer59","Caption":"˸ ","Description":[": 27
        : 0.00 .
        : [ ]x27
        : 0/40
        :
        •: 6
        • , : 4
        •: 24
        •: 30
        :
        •: +1
        :
        •: 15 - 25
        • , : 2
        • : +
        :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace62","Caption":" ","Description":[": 9
        : 0.00 .
        : [ ]x29
        : 0/50
        :
        •: 6
        • , : 4
        •: 24
        •: 30
        :
        •: 15 - 25
        •. (%): 70
        •. (%): 40
        • :
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace59","Caption":" ","Description":[": 25
        : 0.00 .
        : [ ]x29
        : 0/50
        :
        •: 6
        • , : 4
        •: 24
        •: 30
        :
        •: 15 - 25
        •. (%): -10
        •. (%): 25
        •. : 15
        • : +
        :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer54","Caption":" ","Description":[": 24
        : 0.00 .
        : [ ]x32
        : 0/50
        :
        •: 6
        • , : 4
        •: 24
        •: 30
        :
        •. . (%): +10
        •: -3
        •: +1
        •: +3
        :
        •: 15 - 25
        •. (%): 30
        • : +
        :
        • :
        • : "]}],"Name":"hammer","Caption":", , ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword96","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x22
        : 0/50
        :
        •: 19
        •: 6
        • : 4
        •: 19
        •: 19
        :
        •: +4
        :
        •: 11 - 21
        •. . (%): -10
        •. (%): 25
        •. (%): 30
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword70","Caption":" ","Description":[": 16
        : 0.00 .
        : [ ]x22
        : 0/50
        :
        •: 18
        •: 6
        • : 4
        •: 18
        •: 18
        :
        •. (%): +1
        •: +3
        • (HP): +15
        :
        •: 11 - 21
        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword83","Caption":" ","Description":[": 10
        : 0.00 .
        : [ ]x23
        : 0/50
        :
        •: 16
        •: 6
        • : 4
        •: 16
        •: 16
        :
        •. (%): +60
        :
        •: 9 - 24
        •. (%): 10

        • : +
        :
        • :
        • :
        • :
        • : "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword58","Caption":" ","Description":[": 22
        : 0.00 .
        : [ ]x32
        : 0/50
        :
        •: 19
        •: 6
        • : 5
        •: 22
        •: 22
        :
        •: -2
        :
        •: 14 - 32
        •. : 20

        • : +
        :
        • :
        • :
        • : "]}],"Name":"sword","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff2","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x30
        : 0/30
        :
        •: 30
        •: 6
        • : 2
        :
        •. : +5
        • : +1
        • (HP): +33
        • : +100
        :
        •: 1 - 15

        • : +
        :
        • :
        • : "]}],"Name":"staff","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots17","Caption":" ","Description":[": 6
        : 0.00 .
        : [ ]x12
        : 0/40
        :
        •: 6
        •: 20
        •: 20
        :
        •. (%): +50
        •: +2
        • : 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots15","Caption":" ","Description":[": 6
        : 0.00 .
        : [ ]x13
        : 0/30
        :
        •: 6
        •: 20
        •: 20
        :
        •. (%): +15
        •. (%): +15
        •. (%): +5
        •. (%): +15
        •: +4
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots19","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x13
        : 0/50
        :
        •: 15
        •: 6
        •: 20
        •: 20
        :
        •. (%): +25
        •. (%): +20
        •: +4
        • : 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots211","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x14
        : 0/30
        :
        •: 30
        •: 6
        •: 15
        •: 10
        :
        •. (%): +25
        •: +1
        • (HP): +18
        • : +50
        • : 4-12 (3+d9)"]}],"Name":"boots","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi66","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        • : 15
        •: 6
        •: 15
        :
        • : +10
        :
        20-25 .
        : 20% "]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi71","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        • : 15
        •: 6
        •: 15
        :
        • : +10
        :
        1-44 .
        : 20% "]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi72","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        • : 15
        •: 6
        •: 15
        :
        • : +20
        :
        20-25 .
        : 20% "]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi74","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x14
        : 0/50
        :
        •: 30
        •: 30
        •: 6
        •: 10
        •: 10
        :
        • , : +4"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi53","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x20
        : 0/50
        :
        •: 20
        •: 6
        •: 15
        :
        •. (%): +5
        •. (%): +5
        •. (%): +5
        •. (%): +5
        • : +2
        • (HP): +72
        •: +1"]}],"Name":"gloves","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba18","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x34
        : 0/50
        :
        •: 30
        •: 6
        •: 15
        •: 10
        :
        •. (%): +15
        •. : +5
        • : +1
        • (HP): +48
        • : +90
        • : 4-10 (3+d7)
        :
        • : 25"]}],"Name":"roba","Caption":" , ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor74","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x33
        : 0/50
        :
        •: 17
        •: 17
        •: 6
        :
        •. (%): +25
        •. (%): +30
        •. (%): +50
        •: +4
        • : +90
        • : +25
        • (HP): +33
        • : 9-32 (8+d24)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor65","Caption":" ","Description":[": 14
        : 0.00 .
        : [ ]x33
        : 0/50
        :
        •: 34
        •: 34
        •: 6
        •: 11
        •: 11
        :
        •. (%): +25
        •. (%): +65
        •: +10
        • : +2
        • (HP): +18
        • : 4-11 (3+d8)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor57","Caption":" ","Description":[": 23
        : 0.00 .
        : [ ]x34
        : 0/60
        :
        •: 20
        •: 15
        •: 6
        •: 20
        •: 20
        :
        •. . (%): +5
        •. (%): +30
        •. (%): +30
        •. (%): +20
        •. (%): +5
        • : +25
        • (HP): +33
        •: +1
        • : 8-28 (7+d21)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor76","Caption":" ","Description":[": 33
        : 0.00 .
        : [ ]x34
        : 0/50
        :
        •: 11
        •: 11
        •: 6
        •: 30
        •: 30
        :
        •. (%): +40
        •. (%): +40
        •. : +20
        • (HP): +33
        •: +3
        • : 9-32 (8+d24)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor79","Caption":" ","Description":[": 28
        : 0.00 .
        : [ ]x34
        : 0/60
        :
        •: 15
        •: 15
        •: 6
        •: 25
        •: 25
        :
        •. (%): +40
        •. (%): +40
        •: +2
        • : 9-32 (8+d24)
        :
        • : 200"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor90","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x34
        : 0/50
        :
        •: 34
        •: 34
        •: 6
        •: 11
        •: 11
        :
        •. (%): +30
        •. (%): +10
        •. (%): +95
        •. (%): +15
        • : 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor54","Caption":" ","Description":[": 21
        : 0.00 .
        : [ ]x34
        : 0/50
        :
        •: 6
        •: 12
        •: 20
        :
        •. (%): +25
        •. (%): +25
        •. (%): +5
        •. (%): +40
        •. (%): +5
        •: +1
        • (HP): +33
        •: +2
        • : 7-24 (6+d18)
        :
        • : 25"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor70","Caption":" ","Description":[": 33
        : 0.00 .
        : [ ]x38
        : 0/50
        :
        •: 11
        •: 11
        •: 6
        •: 30
        •: 30
        :
        •. (%): +30
        •. (%): +30
        •. (%): +45
        •: +2
        •: +2
        • : +30
        • (HP): +45
        • : 9-32 (8+d24)"]}],"Name":"armor","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg19","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x13
        : 0/30
        :
        •: 10
        •: 6
        •: 25
        •: 10
        :
        •. (%): +10
        •. (%): +10
        • (HP): +36
        • : 3-20 (2+d18)
        • : 3-20 (2+d18)
        :
        • : 10"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg21","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x13
        : 0/30
        :
        •: 10
        •: 6
        •: 25
        •: 10
        :
        •. (%): +25
        •. (%): +25
        • (HP): +18
        • : 3-20 (2+d18)
        • : 3-20 (2+d18)
        :
        • : 10"]}],"Name":"leg","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet45","Caption":" ","Description":[": 10
        : 0.00 .
        : [ ]x13
        : 0/40
        :
        •: 6
        •: 21
        •: 21
        :
        •. (%): +35
        •. (%): +25
        • : +1
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"whelmet5","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x14
        : 0/30
        :
        •: 30
        •: 6
        •: 15
        •: 10
        :
        •. : +3
        • (HP): +30
        • : +50
        • : 4-4"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet39","Caption":" ","Description":[": 8
        : 0.00 .
        : [ ]x14
        : 0/40
        :
        •: 6
        •: 21
        •: 21
        :
        •: +4
        •: +4
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet50","Caption":" ","Description":[": 10
        : 0.00 .
        : [ ]x14
        : 0/50
        :
        •: 6
        •: 21
        •: 21
        :
        •. . (%): +8
        •. : +10
        • : 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet75","Caption":" ","Description":[": 5
        : 0.00 .
        : [ ]x14
        : 0/30
        :
        •: 6
        •: 21
        •: 21
        :
        •. (%): +15
        •. (%): +20
        •. (%): +20
        •: +4
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet70","Caption":" ","Description":[": 7
        : 0.00 .
        : [ ]x14
        : 0/50
        :
        •: 20
        •: 6
        •: 20
        •: 20
        :
        •. (%): +25
        •. (%): +25
        •. (%): +5
        • : 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet51","Caption":" ","Description":[": 13
        : 0.00 .
        : [ ]x15
        : 0/40
        :
        •: 6
        •: 25
        •: 25
        :
        •. (%): +10
        •. (%): +5
        • : +2
        • (HP): +6
        • : 7-27 (6+d21)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet66","Caption":" ","Description":[": 4
        : 0.00 .
        : [ ]x15
        : 0/30
        :
        •: 6
        •: 21
        •: 21
        :
        •. (%): +25
        •. : +10
        • (HP): +33
        • : 5-22 (4+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet47","Caption":" ","Description":[": 18
        : 0.00 .
        : [ ]x17
        : 0/60
        :
        •: 24
        •: 6
        •: 21
        •: 21
        :
        • : +40
        • : 21-60 (20+d40)"]}],"Name":"helmet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield9","Caption":" ","Description":[": 10
        : 0.00 .
        : [ ]x19
        : 0/40
        :
        •: 18
        •: 6
        •: 21
        •: 21
        :
        •. (%): +45
        • : +3
        • : +2
        • : 6-23 (5+d18)
        • : 7-24 (6+d18)
        • : 6-23 (5+d18)
        • : 6-23 (5+d18)"]}],"Name":"shield","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet8","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x12
        : 0/30
        :
        •: 6
        •: 25
        •: 30
        :
        • : +35
        • : 1-9 (d9)
        • : 1-9 (d9)
        • : 1-9 (d9)
        • : 1-9 (d9)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet11","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x12
        : 0/40
        :
        •: 15
        •: 6
        •: 15
        •: 15
        :
        •. (%): +15
        •. (%): +10
        • : +25
        •: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet23","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x12
        : 0/60
        :
        •: 6
        •: 15
        •: 15
        :
        •. : +5
        •: +6"]}],"Name":"braslet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt13","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 6
        •: 15
        •: 24
        :
        •: +4
        • : 4-21 (3+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt24","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 12
        •: 12
        •: 6
        •: 12
        •: 12
        :
        •. (%): +5
        •. (%): +6
        •. (%): +5
        •. (%): +6
        •: +2
        • : 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt8","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 18
        •: 18
        •: 6
        •: 15
        •: 15
        :
        •: +1
        •: +1
        • (HP): +12
        •: +1
        • : 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt14","Caption":" ","Description":[": 2
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 24
        •: 6
        •: 24
        :
        •. . (%): +10
        • : 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt29","Caption":" ","Description":[": 3
        : 0.00 .
        : [ ]x8
        : 0/30
        :
        •: 25
        •: 25
        •: 6
        •: 10
        •: 10
        :
        •. : +10
        • : 5-16 (4+d12)"]}],"Name":"belt","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip62","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x17
        : 0/50
        :
        •: 25
        •: 6
        •: 20
        •: 20
        :
        •. . (%): +10
        •. (%): +50
        • (HP): +33
        •: +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip60","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x19
        : 0/50
        :
        •: 6
        •: 16
        •: 15
        :
        •. (%): +30
        •. (%): +30
        •. (%): +30
        •. (%): +30
        •: +4"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip87","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x20
        : 0/50
        :
        •: 30
        •: 6
        •: 15
        •: 10
        :
        •. (%): +15
        •. : +2
        • : +1
        • (HP): +36
        • : +60"]}],"Name":"clip","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet82","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x24
        : 0/60
        :
        •: 10
        •: 10
        •: 6
        •: 25
        •: 25
        :
        •. (%): +30
        •: +1
        •: +1
        •: +1
        • : +25
        • (HP): +21
        •: +1
        • : 1-15 (d15)
        • : 1-15 (d15)
        • : 1-15 (d15)
        • : 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet55","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x26
        : 0/60
        :
        •: 25
        •: 6
        •: 15
        •: 15
        :
        •. . (%): +40
        •: +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet91","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x26
        : 0/50
        :
        •: 30
        •: 6
        •: 15
        •: 10
        :
        •. (%): +35
        •. : +5
        •: +2
        • : +1
        • (HP): +24
        • : +50"]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring52","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x9
        : 0/50
        :
        •: 10
        •: 6
        •: 15
        •: 15
        :
        •. (%): -5
        •. (%): -5
        •. (%): -5
        •. (%): -5
        •: +4
        •: +4"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring65","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x10
        : 0/30
        :
        •: 6
        •: 20
        •: 20
        :
        • (HP): +9
        •: +6"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring68","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x10
        : 0/30
        :
        •: 15
        •: 6
        •: 10
        •: 15
        :
        •: +2
        • (HP): +9
        •: +4"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring71","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x10
        : 0/30
        :
        •: 6
        •: 20
        •: 20
        :
        • : +10
        • (HP): +45
        •: +2"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring86","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x10
        : 0/30
        :
        •: 6
        •: 25
        •: 25
        :
        •. (%): +20
        •. (%): +20
        •. (%): +20
        •. (%): +20
        • : 1-3 (d3)
        • : 1-3 (d3)
        • : 1-3 (d3)
        • : 1-3 (d3)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring87","Caption":" ","Description":[": 1
        : 0.00 .
        : [ ]x10
        : 0/50
        :
        •: 6
        •: 25
        •: 25
        :
        •. (%): +2
        •. (%): +1
        • : +4
        • : +25"]}],"Name":"ring","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_3","Caption":" 3: ","Description":[": 1
        : 0.00 .
        : [ ]x48
        : 0/1
        : 70%
        :
        : 4
        , : 3
        :
        : +3
        : +3
        :
        , , . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_3","Caption":" 3: ","Description":[": 1
        : 0.00 .
        : [ ]x48
        : 0/1
        : 70%
        :
        : 4
        , : 3
        :
        : +3
        : +3
        :
        , , . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_3","Caption":" 3: , , ","Description":[": 1
        : 0.00 .
        : [ ]x48
        : 0/1
        : 70%
        :
        : 4
        , :3
        :
        : +3
        : +3
        :
        , , . . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_3","Caption":" 3: ","Description":[": 1
        : 0.00 .
        : [ ]x48
        : 0/1
        : 70%
        :
        : 4
        : 3
        :
        : +3
        : +3
        :
        , , . ."]}],"Name":"svitki","Caption":"","Description":[]}],"Name":"noviceshop3","Caption":"","Description":["

        , . .


        ","","

        \"\" , \"\" \"\" \"\" .

        ","","","","","","","","","","","","","
        [4]-[6] [7] [8]
        3 = 1
        1 = 1
        1 = 3
        9 = 1
        3 = 1
        1 = 1
        15 = 1
        5 = 1
        5 = 3
        3 =

        ","


        ","

        , , [6] .

        ","

        "]}],"IsDungeon":true,"Name":"novice","Caption":"","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.angel.capital.js","dungeon.data.capital.js","dungeon.data.capital.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.abandon.capital.js","dungeon.data.abandon.capital.demons.js","dungeon.data.capital.demons.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.capital.novice.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":[" \" \" . \" \" , . ... "],"DefCount":25},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":[" , , \"\" . \" \" , ."],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":[" , \" \" . \" \" , . ..."],"DefCount":5},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":[" , , \"\" . \" \".",""],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":[" , \" \" . \" \" . ..."],"DefCount":30},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater244.gif","ItemReward":12,"Description":[" , \"\" . \" \". , ..."],"DefCount":30},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater245.gif","ItemReward":12,"Description":[" , \" \" . \" \" , . ...",""],"DefCount":32}],"CapturedJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater205.gif","ItemReward":15,"Description":[" , \" \" . \" \". ! ",""," , , 1-2 ."],"DefCount":12},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater215.gif","ItemReward":10,"Description":[" , \" \" . \"\" \" \". ... ",""," , [8}-[9] , 1-2 ."],"DefCount":14},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":[" , , \" \" . \" \". ... "],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":[" , \"\" . \" \". ",""," . 2 ."],"DefCount":15},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater242.gif","ItemReward":20,"Description":[" , \" \" . \" \". ! ",""," , 1 ."],"DefCount":15},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater243.gif","ItemReward":75,"Description":[" , , \" \" . \" \" , . ... ",""," C C, ."],"DefCount":5},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater241.gif","ItemReward":15,"Description":[" , \" \" . \" \". , ... ",""," ."],"DefCount":23},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater240.gif","ItemReward":15,"Description":[" , , \"\" . \" \". ...",""," ... "],"DefCount":17}],"KillingJobs":[{"MobName":"pa","Unique":false,"Description":[" , \" \". \" \". ..."],"DefCount":2},{"MobName":"pm","Unique":false,"Description":[" , , \" \". \" \""],"DefCount":14},{"MobName":"pu","Unique":false,"Description":[" , \" \". \" \". , "],"DefCount":13},{"MobName":"pg","Unique":false,"Description":[" , \" \", \" \". ... "],"DefCount":12},{"MobName":"dk","Unique":true,"Description":[" \" \". , , , , . \" \" .",": \" \". "],"DefCount":1},{"MobName":"ms","Unique":true,"Description":[" , \" \". \" \"."],"DefCount":1},{"MobName":"sk","Unique":true,"Description":[" \" \", \" \". , - , .",": \" \"."],"DefCount":1},{"MobName":"im","Unique":true,"Description":[" \" \" \" \". , .",": \" \"."],"DefCount":1},{"MobName":"dpg","Unique":true,"Description":[" , . \" \", ."],"DefCount":1},{"MobName":"duhhr","Unique":false,"Description":[" , \"-\". \" \". ..."],"DefCount":25},{"MobName":"zbldsh","Unique":false,"Description":[" , \" \". \" \"."],"DefCount":25},{"MobName":"mhohr","Unique":false,"Description":[" , \" \", \" \". ..."],"DefCount":20},{"MobName":"mhgol","Unique":false,"Description":[" , \" \". \" \". ..."],"DefCount":17},{"MobName":"mhub","Unique":false,"Description":[" , \" \". \" \"."],"DefCount":10},{"MobName":"mhk","Unique":false,"Description":[" , : , \"\". , \" \"."],"DefCount":17},{"MobName":"mgrt","Unique":true,"Description":[" , \" \". , \" \". "],"DefCount":1},{"MobName":"strsokr","Unique":false,"Description":[" , \" \", \" \". ..."],"DefCount":5},{"MobName":"kamstr","Unique":true,"Description":[" , \" \". \" \". . "],"DefCount":1}]},"Floors":[{"Cells":[{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"pm","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well03","InstanceName":"fountain21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":5}]}]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":6,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":6,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":1},{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":6,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder1"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport1"}],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1","InstanceName":"key11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":6}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":6},{"X":10,"Y":6},{"X":10,"Y":4},{"X":9,"Y":4},{"X":9,"Y":5}]}]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":6,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":11,"DataBounds":"1, 1, 10, 9","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":2,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key2","InstanceName":"key21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":5}]}]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pm","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain61"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5}]}]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter4"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport2"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":9},{"X":4,"Y":8},{"X":4,"Y":7},{"X":5,"Y":9},{"X":6,"Y":9},{"X":6,"Y":8},{"X":6,"Y":7},{"X":5,"Y":7},{"X":5,"Y":8}]},{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":3,"Y":10}]}]},{"X":5,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport1"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":10}]}]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder2"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"im","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk1"}],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":2,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":1,"Y":10}]}]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dk","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":3,"Y":4}]}]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor2","Caption":"2 ","Description":[]},{"Cells":[{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport4"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sk","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport3"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter3"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ms","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pa","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pu","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pu","Level":7,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key31"},{"ObjectName":"fountain5","InstanceName":"fountain51"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":3,"Y":4}]}]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"workshop","InstanceName":"workshop1"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":5}]}]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain62"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":2},{"X":7,"Y":2},{"X":7,"Y":1},{"X":5,"Y":1},{"X":5,"Y":2}]}]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter5"}],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":8,"DataBounds":"1, 1, 10, 6","Name":"floor3","Caption":"3 ","Description":[]},{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"arrowup","InstanceName":"arrow2"}],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":3}]}]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":13,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":1,"Y":14}]}]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":5}]}]},{"X":7,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest42"}],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"gzm","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger1"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":10},{"X":12,"Y":10}]}]},{"X":12,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kzm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest41"}],"HotSpots":[]},{"X":12,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":13,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":3}]}]},{"X":12,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger2"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":12,"Y":15}]}]},{"X":13,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":11,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest11"}],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kamstr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":12}]}]},{"X":6,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":6,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":5,"Y":11}]}]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter4"}],"HotSpots":[]},{"X":1,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"greenteleport","InstanceName":"grteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":7}]}]},{"X":9,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":4},{"Name":"pg","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin2","InstanceName":"gobelin2"}],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":3},{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"","Count":4},{"Name":"dpg","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":15,"Height":17,"DataBounds":"1, 0, 13, 16","Name":"floor4","Caption":"4 ","Description":[]},{"Cells":[{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":0,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger11"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":9,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest31"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":11}]}]},{"X":8,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_11"}],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":11,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar1"}],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":0}]}]},{"X":6,"Y":12,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"- ","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest13"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest14"}],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest44"}],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest12"}],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest43"}],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":3},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger12"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":6},{"X":11,"Y":7}]}]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":13,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":15,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":16,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":17,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":1},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"arrowdown","InstanceName":"arrow2"}],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"- ","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mgrt","Level":11,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":20,"Height":16,"DataBounds":"0, 0, 19, 15","Name":"floor5","Caption":"5 ","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"capitalknightugsol","Caption":"","Description":["

        ,

        ","
        Capital ity 9999, :

        ","
        ","
        . , ? \" \" 1000 .
        ","
        ","

        ","
        .
        ","
        ","
        \"\" (), .","
        : 4- 66 \"\" ( ) \"\" (). 30-60 , \"\", . , .","
        1000 \"\", .","
        , \"\" \"\" : .


        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key21","Caption":" 1","Description":[": 1",": 0/1"," Capital city"," "," ",""," , Sandcity."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_1","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," L12 ."," , 2- ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_2","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," I12 ."," , 2- ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_3","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," L15 ."," , 2- ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_4","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," F10."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_1","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," K15 ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_2","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," I15 ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_3","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," G15 ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_4","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," E15 ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_5","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," C15 ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_6","Caption":" ","Description":[": 1",": 0/1 "," Capital city "," "," ",""," . ."]}],"Name":"key","Caption":"","Description":[" , A12 .",""," , - ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet84","Caption":" ","Description":[": 1",": 290 .",": 0/40"," :"," : 15"," : 15"," : 9"," : 36"," : 35"," :"," : +80"," : +100"," (HP): +120"," apital city"," "," ",""," ."]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : "," :"," . : +25 %"," (HP): +10"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : "," :"," . : +25 %"," : +1"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : "," :"," . : +25 %"," : +2"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1 "," : "," :"," . : +25 %"," (HP): +10 "," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1 "," : "," :"," . : +25 %"," : +2"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1 "," : "," :"," . : +25 %"," : +2"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1"," : "," :"," . : +25 %"," (HP): +10 "," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1"," : "," :"," . : +25 %"," : +1"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":" ()","Description":[": 1",": 45 . ",": 0/20"," :"," : 15 "," : 10 "," : 4 "," : 1"," : "," :"," . : +25 %"," : +2"," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring71","Caption":" ()","Description":[": 1",": 30 . ",": 0/50"," :"," : 20 "," : 20 "," : 6 "," :"," : +2 "," (HP): +60"," :"," : +2"," Capital city"," "," ",""," ."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring80","Caption":" ()","Description":[": 1",": 82 .",": 0/60"," :"," : 40 "," : 40 "," : 8 ","
        :
        "," : +5"," : 1-12 (d12) "," : 1-12 (d12) "," : 1-12 (d12) "," : 1-12 (d12) "," . : +10 % "," . : +20 % "," (HP): +33 "," :"," : +15"," Capital city"," "," ",""," ."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring80","Caption":" ()","Description":[": 1",": 82 .",": 0/60"," :"," : 30 "," : 30 "," : 8 ","
        :
        "," : 1-12 (d12) "," : 1-12 (d12) "," : 1-12 (d12) "," : 1-12 (d12) "," . : +10 % "," . : +20 % "," (HP): +66"," :"," : +15"," Capital city"," "," ",""," ."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring93","Caption":" ()","Description":[": 1",": 78 . ",": 0/50"," :"," : 25 "," : 15 "," : 8 "," :"," : +2 "," (HP): +6"," . : +20 %"," . : +45 %"," . : +5 %"," . : +2 %"," : [0/6]"," Capital city"," "," ",""," ."]}],"Name":"rings","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"dispell1","Caption":" ","Description":[": 1",": 10 .",": 0/1"," : 99%",":"," "," Capital city"," "," ",""," , K3."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat24","Caption":"","Description":[": 1",": 1 .",": 0/1"," : 99%",":"," 24 ."," Capital city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 99%"," 5 . ",":"," 6 ."," Capital city"," "," ",""," ."]}],"Name":"spell","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 1% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 2% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 3% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 1% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 2% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 3% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 1% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 2% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 3% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 50 HP 5 . : 1% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 50 HP 5 . : 2% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 50 HP 5 . : 3% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 1% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 2% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," : ",": "," ."," Capital city"," "," ",""," 30 5 . : 3% ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff1","Caption":" : 1","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," :"," : +10 ",": "," (+20). "," Capital city"," "," ",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff2","Caption":" : 2","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," :"," : +20 ",": "," (+40). "," Capital city"," "," ",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff3","Caption":" : 3","Description":[": 1 ",": 1 . ",": 0/1 "," : 99%"," :"," : +30 ",": "," (+60). "," Capital city"," "," ",""]}],"Name":"enhp","Caption":" ","Description":[" , . .",""," ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_waterproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1 "," : 20 . "," : 3 . 0 . "," : "," : 4 "," : "," : +75"," apital city"," "," ",""," , B7."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," apital city"," "," ",""," , H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," apital city"," "," ",""," , H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," apital city"," "," ",""," , H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +10 "," apital city"," "," ",""," , H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_alldmg2","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 20 . "," : 3 . 0 . "," :"," : 7"," :"," : +75"," apital city"," "," ",""," , F9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 20 . "," : 3 . 0 . "," :"," : 7"," :"," : +75 "," apital city"," "," ",""," , G2."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_str","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 21 . "," : 6 . 0 . "," :"," : 8"," :"," : +12",":"," - . "," apital city"," "," ",""," . [1] ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_dex","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 21 . "," : 6 . 0 . "," :"," : 8"," :"," : +12",":"," ... ... "," apital city"," "," ",""," . [1] ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_inst","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 21 . "," : 6 . 0 . "," :"," : 8"," :"," : +12",":"," ... (?) ... "," apital city"," "," ",""," . [1] ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_alldmg2_p1k","Caption":" ","Description":[": 1",": 1 . ",": 0/3"," : 14 . "," : 4 . 0 . "," :"," : 8"," :"," : +120"," apital city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2_p1k","Caption":" ","Description":[": 1",": 1 . ",": 0/3"," : 14 . "," : 4 . 0 . "," :"," : 8"," :"," : +120"," apital city"," "," ",""," ."]}],"Name":"pot_base","Caption":"","Description":[]}],"Name":"maters","Caption":"","Description":["

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2","Caption":" [1]","Description":[": 200 .
        : 0/100
        :
        : 8
        Capital City: 10 000
        : 2 1 . ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_1","Caption":" [1]","Description":[": 200 .
        : 0/100
        :
        : 8
        Capital City: 10 000
        T : 3 1 . ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_2","Caption":" [1]","Description":[": 200 .
        : 0/100
        :
        : 8
        Capital City: 10 000
        : 1 1 . ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_3","Caption":" [1]","Description":[": 200 .
        : 0/100
        :
        : 8
        Capital City: 10 000
        : 2 1 . ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_4","Caption":" [1]","Description":[": 200 .
        : 0/100
        :
        : 8
        Capital City: 10 000
        : 2 1 . ."]}],"Name":"Cloaks","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_5_dampen_all_1","Caption":" : 1","Description":[": 50 .
        : , []x3
        : 0/1
        : 30 .
        :
        :
        .
        .
        "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"cureHP120","Caption":" 120HP","Description":[": 20 .
        : 0/5
        : 70%
        :
        : 10
        : 8
        : 3
        : "]}],"Name":"Svitki","Caption":"","Description":[]}],"Name":"capitalknightshop","Caption":"","Description":["

        ,


        ","

        Capital ity 10 000, .

        "]}],"IsDungeon":true,"Name":"capital","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.angel.demons.js","dungeon.data.angel.js","dungeon.data.angel.capital.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.angel.sand.js","dungeon.data.angel.demons.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E0EBF0","CellBorderColorString":"#608399","Jobs":{"CollectiveJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":[" \" \" . \"\" , . ..."],"DefCount":25},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":[" , , \" \" . \"\". ",""," . "],"DefCount":5},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":[" , \"\" . \"\" . ...",""," ."],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":[" , , \"\" . \"\" , . ",""," 2-3 ."],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":[" , \" \" . \"\"."],"DefCount":35}],"CapturedJobs":[{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":[" , \"\" . \"\". ",""," ."],"DefCount":11},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater201.gif","ItemReward":10,"Description":[" , \"\" . \"\". , ... ",""," ."],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater227.gif","ItemReward":10,"Description":[" , \"\" . \"\". , ...",""," ."],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":6,"Description":[" , \"\" . \"\". ! ",""," , "],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater207.gif","ItemReward":14,"Description":[" , \"\" . \"\". ! ",""," , "],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":[" , , \" \" . \"\". ..."],"DefCount":11}],"KillingJobs":[{"MobName":"lit","Unique":false,"Description":[" , \"\" . \"\". ..."],"DefCount":14},{"MobName":"rg","Unique":false,"Description":[" , \"\". , \"\"."],"DefCount":15},{"MobName":"ng","Unique":false,"Description":[" , \" \". \"\". "],"DefCount":13},{"MobName":"sg","Unique":false,"Description":[" , \" \", \"\".","","9 : 4 8 5 9 ."],"DefCount":9},{"MobName":"sb","Unique":false,"Description":[" , \" \". \"\". , ",""," 2 , 3- 5. 8- ( , ). "],"DefCount":7}]},"Floors":[{"Cells":[{"X":4,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sd","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":1},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowdown","InstanceName":"arrow1"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder6"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"halice1"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":6},{"X":6,"Y":6}]}]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest32"}],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab1"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":1,"Y":4}]}]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3_bledny","InstanceName":"chest31"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":12,"DataBounds":"1, 1, 8, 10","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"olgvirt","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen","InstanceName":"kamen"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"boiler","InstanceName":"boiler1"}],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[{"ObjectName":"lorry","InstanceName":"lorry2"}],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge1"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":7}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lorry","InstanceName":"lorry1"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer23"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":2}]}]},{"X":10,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer22"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer21"}],"HotSpots":[{"HighlightColorString":"","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":3}]}]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder7"}],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter5"}],"HotSpots":[]}],"LookDirection":3,"Width":13,"Height":12,"DataBounds":"1, 1, 11, 10","Name":"floor2","Caption":"2 ","Description":[]},{"Cells":[{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter6"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"gjs","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest12"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest15"}],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kg","Level":12,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate1"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger3"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest22"}],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge2"}],"HotSpots":[]}],"LookDirection":3,"Width":11,"Height":12,"DataBounds":"1, 1, 9, 10","Name":"floor3","Caption":"3 ","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"angelsknightugsol","Caption":"","Description":["

        ,

        ","
        Angels city 9999, c :

        ","
        ","
        . . \"\", . . .
        ","
        ","

        ","
        \"\" . ","
        . ","
        , (1 .), : \"\" \"\" .
        ","


        ","
        , , .","
        , \"\" J5. ","

        \"\"
        ","
        \"\" . 180 , . ","

        \"\"
        ","
        .","
        K4 (). .
        ","
        : ( L3) - . , , , , . ","
        . \"\" \"\" [10]. .
        ","
        :
        , :","
        85% \"\" \"\" \"\", 1% 1% - - , 33%.
        ","
        5% , \"\" \"\" \" \" ( ). 8-10 , . .","
        \"\" , \"\" . , . , - \"\" .
        ","
        : , .
        ","
        A10, . ","
        \"\" \"\" : 1 .","
        ","
        ","
        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key23","Caption":" 3","Description":[": 1",": 0/1"," Angels city"," "," ",""," , H7."]}],"Name":"key","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 99%"," 5 . ",":"," 6 ."," Angels city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":" 5 . ","Description":[": 1 ",": 5 .",": 0/1"," Angels city"," "," ",""," ."," . . , . "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":" 400 . ","Description":[": 1 ",": 400 . ",": 0/1"," Angels city"," "," ",""," , , , H4."," . . , . "]}],"Name":"spell","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet81","Caption":" . ","Description":[": 1 ",": 240 ",": 0/50 "," : ",": 9 ",": 45 ",": 15 ",": 15 ",": 50 "," : "," : 1-25 "," : 1-25 "," : 1-25 "," : 1-25 ",". (%): +35 "," : +10 "," : +250 "," : +20 ",": ",". (%): +35 "," : "," (13)"," Angels city"," "," ",""," ."]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":" +5 ()","Description":[": 13",": 220 . ",": 0/50"," :"," : 30 "," : 15 "," : 50 "," : 30 "," : 9 "," :"," : +5 "," :"," : 17 - 39"," . : +50 % "," . : +80 % "," . . : +10 % "," : +2 ",":"," : "," : "," : "," : "," : +"," Angels city"," "," ",""," ."]}],"Name":"sword","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield14","Caption":" ","Description":[": 10 ",": 173 . ",": 0/50 "," : "," : 18 "," : 35 "," : 8 "," : 25 "," : 25 "," : "," . (%): -5 "," . (%): +65 "," . (%): +5 "," : +15 "," : +10 "," : 5-22 (4+d18) "," : 6-23 (5+d18) "," : 5-22 (4+d18) "," : 5-22 (4+d18) ",": "," : "," : "," : "," : "," Angels city"," "," ",""," , I4."]}],"Name":"shield","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Angels city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Angels city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Angels city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +10 "," Angels city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +10 "," Angels city"," "," ",""," , E7."]}],"Name":"pot_base","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat1","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , , H4."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat3","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat5","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat7","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat13","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat15","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat17","Caption":" ","Description":[": 1 ",": 0/1"," Angels city"," "," ",""," , , G7."," , , , H4."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat19","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat23","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat30","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat21","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat11","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat9","Caption":" ","Description":[" ."]}],"Name":"sp_mat","Caption":" ","Description":[" , ."," , .",""," [9] [10] . () (, , ).",""," , ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR4","Caption":" : 4","Description":[": 1 ",": 40 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR5","Caption":" : 5","Description":[": 1 ",": 50 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY1","Caption":" : 1","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY2","Caption":" : 2","Description":[": 1 ",": 20 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY3","Caption":" : 3","Description":[": 1 ",": 30 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY4","Caption":" : 4","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY5","Caption":" : 5","Description":[": 1 ",": 10 . ",": 0/1"," : 3 ."," "," :"," : 5"," Angels city"," "," ",""," +5 "]}],"Name":"sp_tacpts","Caption":" ","Description":[" . , .","","C . , - () .",""," 3 . 10 .",""," ."]}],"Name":"maters","Caption":"","Description":["

        "]},{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_5_defend_all_1","Caption":" : 1","Description":[": 50 .
        : []x1, []x3
        : 0/1
        : 30 .
        :
        :
        40% .
        .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_all_7","Caption":" 7: ","Description":[": 1000 .
        : 0/1
        :
        : 8
        :
        : +7
        : +7
        :
        .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"preservation","Caption":" [1]","Description":[": 30 .
        : 0/1
        : 70%
        : 2 .
        :
        : 5
        : 8
        "]}],"Name":"svitki","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat3","Caption":" ","Description":[": 1",": 300 . ",": 0/1 "," ",":"," [10] , ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat7","Caption":" ","Description":[": 1",": 300 . ",": 0/1 "," ",":"," [10] , ."]}],"Name":"sp_mat","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater1","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater2","Caption":"","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater3","Caption":"","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater4","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater5","Caption":"","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater6","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater7","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater8","Caption":"","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater9","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater10","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater11","Caption":" ","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater12","Caption":"","Description":[": 0,15
        : 1
        : [ ]x3
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater13","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater14","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater15","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater16","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater17","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater18","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater19","Caption":" ","Description":[": 0,5
        : 1
        : [ ]x10
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater25","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater26","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater27","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater28","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater29","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater30","Caption":" ","Description":[": 1,5
        : 1
        : [ ]x30
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater20","Caption":" ","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater21","Caption":" ","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater22","Caption":" ","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater31","Caption":" ","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater23","Caption":"","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater24","Caption":"","Description":[": 5
        : 1
        : [ ]x100
        : 0/1

        "]}],"Name":"mater","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater_battery","Caption":" ","Description":[": 1 .
        : 1
        : ,
        : 0/1

        :
        .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater261","Caption":" ","Description":[": 20 .
        : 1
        : [ ]x4
        : 0/1

        :
        [10] , .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater262","Caption":" ","Description":[": 48 .
        : 1
        : [ ]x10
        : 0/1

        :
        [10] , .
        "]}],"Name":"other","Caption":". ","Description":[]}],"Name":"angelsknightshop","Caption":"","Description":["

        ,

        ","

        , 10 000 , .

        "]}],"IsDungeon":true,"Name":"angel","Caption":"","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.sand.js","dungeon.data.capital.sand.js","dungeon.data.demons.sand.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.angel.sand.js","dungeon.data.angel.demons.novice.sand.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E8E7D1","CellBorderColorString":"#978C6E","Jobs":{"CollectiveJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":[" \" \" . \" \", , . ...",""," ."],"DefCount":25},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":[" , , \" \" . \" \"."],"DefCount":5},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":[" , \"\" . \" \". "],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":[" , , \"\" . \" \" , . ",""," 2-3 ."],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":[" , \" \" . \" \" . ... ",""," ."],"DefCount":35}],"CapturedJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater208.gif","ItemReward":6,"Description":[" , \" \" . \" \". ... ",""," , ."],"DefCount":10},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater220.gif","ItemReward":15,"Description":[" , \" \" . \" \". !",""," ."],"DefCount":12},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater207.gif","ItemReward":14,"Description":[" , \"\" . \" \". , ... ",""," , ."],"DefCount":15},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":[" , , \" \" . \" \". ... "],"DefCount":15},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":[" , \"\" . \" \". ",""," , . 1-2 ."],"DefCount":14},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":6,"Description":[" , \"\" . \" \". !",""," , . , ."],"DefCount":13}],"KillingJobs":[{"MobName":"pg_sand","Unique":false,"Description":[" , \" \", \" \". ..."],"DefCount":12},{"MobName":"strmgl","Unique":false,"Description":[" , \" \". \" \". "],"DefCount":13},{"MobName":"smotrmgl","Unique":false,"Description":[" , \" \". \" \". "],"DefCount":12},{"MobName":"rabmgl","Unique":false,"Description":[" , \" \", \" \". ",""],"DefCount":13}]},"Floors":[{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder8"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":7}]}]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder9"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":4}]}]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2","InstanceName":"key22"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":1}]}]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk3"}],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport10"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well03","InstanceName":"fountain22"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":3},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1","InstanceName":"key12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":1}]}]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":2,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter7"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":25}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk4"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk5"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"hp1600","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport12"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":9}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":9},{"X":1,"Y":9},{"X":3,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":1,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":1,"Y":8}]}]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5},{"X":3,"Y":5},{"X":1,"Y":4},{"X":1,"Y":3},{"X":2,"Y":3},{"X":3,"Y":4},{"X":2,"Y":4},{"X":3,"Y":3},{"X":1,"Y":5}]}]},{"X":5,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain54"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain53"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder10"}],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key32"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":9}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter8"}],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"","Count":10},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor2","Caption":"2 ","Description":[]},{"Cells":[{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rh","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate2"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain64"}],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar22"}],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"workshop","InstanceName":"workshop2"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar21"}],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":2},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter10"}],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"hp2400","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter9"}],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4","InstanceName":"fountain42"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":5},{"Name":"pg_sand","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2_2","InstanceName":"key2_21"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":10}]}]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor3","Caption":"3 ","Description":[]},{"Cells":[{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar21"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter11"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sign1","InstanceName":"sign11"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strkl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"strslpr","InstanceName":"strslpr1"}],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strkl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krpt","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate3"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor2"}],"HotSpots":[]},{"X":5,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge3"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":12,"DataBounds":"1, 0, 8, 11","Name":"floor4","Caption":"4 ","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"sandknightugsol","Caption":"","Description":["

        ,


        Sand city 9999, :

        ","
        ","

        ? ! , , \" \". . !
        ","

        ","
        \"\" 10 \"\" , , : \"\" , \"\" , \"\" , \"\" (5 .)
        ","
        . , . ","

        , :
        ","
        (10 .) ","
        (10 .)","
        (10 .) ","
        (50 .)
        ","
        :
        (), , 10 c .
        ","


        ","
        \"\" :

        ","
        ","

        , -. , ... , , ... , .
        ","
        .
        , . ( )
        ---
        ? ... , . , ... , . - ... - . 10 . , . , . . ","
        ---
        ? ... , , , . , , ... : , , ,

        ","
        : 10 \"\" . . ","
        . , \"\" .
        ","
        : , , .
        ","
        , ( G3 ). ","
        : \"\" 3. J4 , [8]. ","
        \"\" . \"\" , , , . , . ","

        : , 10- 4 . B10 \"\" , , . ","
        ( ) \"\" \"\" .

        ","
        ","

        ... , ! , .
        .
        , ... ( )","
        ---
        x 10 ","
        ---
        , , ... . ","
        , . ( )

        ","

        , .","
        \"\" \"\" : +12. ","

        :
        \"\" , . . , .
        ","
        .
        ","
        , , .


        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key22","Caption":" 2","Description":[": 1",": 0/1"," Sandcity"," "," ",""," E2 ."]}],"Name":"key","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":2,"IsGift":false,"Name":"amulet67","Caption":" ()","Description":[": 1",": 62 . ",": 0/50"," :"," : 10 "," : 20 "," : 4 "," :"," (HP): +150"," Sandcity"," "," ",""," , J7."]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword94","Caption":" ()","Description":[": 19",": 174 . ",": 0/50"," :"," : 25 "," : 25 "," : 25 "," : 25 "," : 8 "," : 2 "," : 5 "," :"," : +1 "," . : +25 % "," . : +45 % "," . : +5 % "," : 27 "," : 15 ",":"," : "," : "," Sandcity"," "," ",""," , B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword93","Caption":" ()","Description":[": 18",": 177 . ",": 0/80"," :"," : 25 "," : 25 "," : 25 "," : 8 "," : 5 "," :"," : +3 "," : +1 "," . : +20 % "," . : +80 % "," : 30 "," : 11 ",":"," : "," : "," : "," Sandcity"," "," ",""," , B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword74","Caption":" ()","Description":[": 28",": 260 . ",": 0/50"," :"," : 30 "," : 25 "," : 30 "," : 8 "," : 5 "," :"," : +1 "," . : +25 % "," . : +50 % "," . . : +15 % "," . : +10 % "," : +1 "," : 40 "," : 21 "," :"," ",":"," : "," : "," : "," : "," Sandcity"," "," ",""," , B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword104","Caption":" ()","Description":[": 17",": 220 . ",": 0/50"," :"," : 45 "," : 15 "," : 15 "," : 50 "," : 9 "," : 5 "," :"," : +2 "," : +2 "," . : +40 % "," . : +40 % "," . : +10 % "," : +2 "," : +34 "," : +12 ",":"," : "," : "," : "," Sandcity"," "," ",""," , D5."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":" ()","Description":[": 13",": 220 . ",": 0/50"," :"," : 30 "," : 15 "," : 50 "," : 30 "," : 9 "," :"," : +2 "," . : +50 % "," . : +80 % "," . . : +10 % "," : +2 "," : 34 "," : 12 ",":"," : "," : "," : "," : "," Sandcity"," "," ",""," , D5."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword102","Caption":" ()","Description":[":17",": 220 .",": 0/50"," :"," : 55"," : 15"," : 9"," : 5"," : 30"," : 30"," :"," : +2 "," . (%): +35"," . (%): +75"," : +1"," :"," : 12 - 34"," : 2"," . (%): 20"," ",":"," : "," : "," : "," Sandcity"," "," ",""," , D5."]}],"Name":"sword","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_curemana200_30","Caption":" ","Description":[": 1",": 4 .",": 0/2"," : 30 . "," :"," 7",": . "," Sandcity"," "," ",""," , J7."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_fireproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1 "," : 20 . "," : 3 . 0 . "," : "," : 4 "," : "," : +75"," Sandcity"," "," ",""," , B6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_earthproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1 "," : 20 . "," : 3 . 0 . "," : "," : 4 "," : "," : +75"," Sandcity"," "," ",""," , F4."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_airproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1 "," : 20 . "," : 3 . 0 . "," : "," : 4 "," : "," : +75"," Sandcity"," "," ",""," , C6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_waterproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1 "," : 20 . "," : 3 . 0 . "," : "," : 4 "," : "," : +75"," Sandcity"," "," ",""," , F8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2","Caption":" ","Description":[": 5",": 1 . ",": 0/1"," : 20 . "," : 3 . 0 . "," :"," : 7"," :"," : +75"," Sandcity"," "," ",""," , H3."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot_pm1","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 30 ."," : 3 . 0 ."," :"," : 40"," :"," : +20"," Sandcity"," "," ",""," . "," : , , (5 )."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot_pm2","Caption":" ","Description":[": 1",": 0/1"," : 30 ."," : 3 . 0 ."," :"," : 45"," :"," : +25"," Sandcity"," "," ",""," . 10 "]}],"Name":"pot_base","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mesh1","Caption":" ","Description":[": 1",": 2000 . ",": 0/1 "," : 180 ."," :"," : 4"," : 15"," :"," : +250"," Sandcity"," "," ",""," ."]}],"Name":"mesh","Caption":"","Description":[]}],"Name":"maters","Caption":"","Description":["

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_13_pm_revard","Caption":" : +12","Description":[": 50 .
        : , [ ]x3
        : 0/1
        :
        (HP): +12
        :
        , 12
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"weap_enc_4_1","Caption":" [1]","Description":[": 10 .
        : 0/10
        : 99%

        :
        : 8
        :
        :
        .
        "]}],"Name":"svitki","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba16","Caption":" ","Description":[": 65 .
        :
        (HP): +99"]}],"Name":"roba","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat5","Caption":" ","Description":[": 1",": 300 . ",": 0/1 "," ",":"," [10] , ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat13","Caption":" ","Description":[": 1",": 300 . ",": 0/1 "," ",":"," [10] , ."]}],"Name":"sp_mat","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater275","Caption":" ","Description":[": 28 .
        : 1
        : [ ]x6
        : 0/1

        :
        [10] , .
        "]},{"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater276","Caption":" ","Description":[": 28 .
        : 1
        : [ ]x5
        : 0/1

        :
        [10] , .
        "]}],"Name":"other","Caption":". ","Description":[]}],"Name":"sandknightshop","Caption":"","Description":["

        ,


        ","

        Sand ity 10 000, .

        "]}],"IsDungeon":true,"Name":"sand","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.demons.js","dungeon.data.angel.demons.js","dungeon.data.demons.sand.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.demons.js","dungeon.data.capital.demons.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.demons.novice.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.angel.demons.novice.sand.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E9D7D7","CellBorderColorString":"#906C6C","Jobs":{"CollectiveJobs":[],"CapturedJobs":[{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater227.gif","ItemReward":20,"Description":[" - , - ..., \"\" . \"\". ..",""," ."],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":25,"Description":[" , , \"\" . \"\" , . ... ",""," ."],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater215.gif","ItemReward":25,"Description":[" , , \" \" . \"\" \"\".",""," ."],"DefCount":13}],"KillingJobs":[{"MobName":"sl","Unique":false,"Description":[" , : \"\". \"\"."],"DefCount":10},{"MobName":"pp","Unique":false,"Description":[" , \" \". , \"\". , ... "],"DefCount":4},{"MobName":"zm","Unique":false,"Description":[" , ... \"\". \"\". ...",""," , ..."],"DefCount":3},{"MobName":"drstr","Unique":false,"Description":[" , \" \". \"\"."],"DefCount":2},{"MobName":"prokl","Unique":false,"Description":[" , \" \". \"\"."],"DefCount":3},{"MobName":"brsk","Unique":true,"Description":[" , : \"\". a \"\", . ..."],"DefCount":1},{"MobName":"og","Unique":true,"Description":[" , \" \", \"\". ..."],"DefCount":1},{"MobName":"zsl","Unique":true,"Description":[" , \" \". \"\", . "],"DefCount":1},{"MobName":"hsl","Unique":true,"Description":[" , \" \". Ÿ \"\". !"],"DefCount":1},{"MobName":"chkng","Unique":true,"Description":[" , \"\" . \"\"."],"DefCount":1},{"MobName":"ep","Unique":true,"Description":[" , \"\" . a \"\", ."],"DefCount":1},{"MobName":"shtpvl","Unique":true,"Description":[" , ... \" \". \"\", . ..."],"DefCount":1},{"MobName":"trp","Unique":true,"Description":[" , \"\". \"\". ..."],"DefCount":1},{"MobName":"plen","Unique":true,"Description":[" , \" \". \"\". ... "],"DefCount":1},{"MobName":"pvlt","Unique":true,"Description":[" , \"\". \"\". "],"DefCount":1}]},"Floors":[{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":3}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":10}]}]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"drain_lowering","InstanceName":"drain1"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor6"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger9"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest25"}],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest13"}],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key33"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":5}]}]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor5"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":4}]}]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"og","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed3"}],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":3}]}]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"barrikada","InstanceName":"barrikada"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk9"}],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"brsk","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest14"}],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4","InstanceName":"fountain43"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk10"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_top","InstanceName":"drain_top2"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain6"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":11}]}]},{"X":5,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet11"}],"HotSpots":[]},{"X":9,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat1","InstanceName":"stat1"}],"HotSpots":[]},{"X":7,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":7,"Y":19,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":8,"Y":20,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina","InstanceName":"proboina6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":12,"Y":18}]}]},{"X":9,"Y":20,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":20,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":4,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":3,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":16,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"violetteleport","InstanceName":"violetteleport1"}],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor2"}],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"orangeteleport","InstanceName":"orangeteleport"}],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":1,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":18,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain5"}],"HotSpots":[]},{"X":2,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":20,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":12,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina5"}],"HotSpots":[]},{"X":15,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":12,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":7}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":15,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain7","InstanceName":"fountain7"}],"HotSpots":[]},{"X":15,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zsl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet12"}],"HotSpots":[]},{"X":16,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina2","InstanceName":"proboina21"}],"HotSpots":[]},{"X":15,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":21,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor4"}],"HotSpots":[]}],"LookDirection":2,"Width":19,"Height":22,"DataBounds":"1, 0, 17, 22","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"drain_bottom","InstanceName":"drain4"}],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":1},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well05","InstanceName":"fountain1"}],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":1}]}]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat3","InstanceName":"stat3"}],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat2","InstanceName":"stat2"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":1},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_2_3e","InstanceName":"kk_stone_2_3e"}],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina","InstanceName":"proboina4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":7}]}]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"sg","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ep","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_13"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"halice3"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport8"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":16,"Y":3}]}]},{"X":15,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat3","InstanceName":"stat3"}],"HotSpots":[]},{"X":15,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":14,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"hp1600","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest13"}],"HotSpots":[]},{"X":14,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter9"}],"HotSpots":[]},{"X":15,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport7"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":16,"Y":10}]}]},{"X":16,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger7"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":17,"Y":9}]}]},{"X":15,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":17,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport9"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":17,"Y":3}]}]},{"X":17,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":21,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":20,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat1","InstanceName":"stat1"}],"HotSpots":[]},{"X":20,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well05","InstanceName":"well03"}],"HotSpots":[]},{"X":19,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":20,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hsl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":21,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest25"}],"HotSpots":[]},{"X":19,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_2_3ch","InstanceName":"kk_stone_2_3ch"}],"HotSpots":[]},{"X":21,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina2","InstanceName":"proboina2"}],"HotSpots":[]},{"X":20,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_14"}],"HotSpots":[]},{"X":19,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"chkng","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar5"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk8"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger8"}],"HotSpots":[]}],"LookDirection":2,"Width":23,"Height":12,"DataBounds":"1, 1, 21, 10","Name":"floor2","Caption":"2 ","Description":[]},{"Cells":[{"X":1,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter3"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain55"}],"HotSpots":[]},{"X":4,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger6"}],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"trp","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_3_4","InstanceName":"kk_stone_3_4"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"blueteleport","InstanceName":"blueteleport5"}],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"shtpvl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport5"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":5}]}]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":1},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport4"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":4,"Y":6}]}]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet11"}],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":10,"Y":11,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"prokl","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":9,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina3"}],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"halice2"}],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"plen","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":18,"Border":{"Left":0,"Top":1,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":9,"Y":18,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":19,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest24"}],"HotSpots":[]},{"X":8,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":17,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":19,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"ladder02"}],"HotSpots":[]},{"X":2,"Y":20,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]}],"LookDirection":2,"Width":12,"Height":21,"DataBounds":"1, 0, 10, 21","Name":"floor3","Caption":"3 ","Description":[]},{"Cells":[{"X":1,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab4"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":8},{"X":1,"Y":10},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":9},{"X":4,"Y":10},{"X":4,"Y":9},{"X":4,"Y":8},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}]}]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter10"}],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger10"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":3},{"X":10,"Y":1},{"X":8,"Y":1},{"X":8,"Y":3}]}]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":" 10 ","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor3"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":1}]}]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin2","InstanceName":"gobelin2"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"throne1","InstanceName":"throne11"}],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_3","InstanceName":"sunduk_32"}],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pvlt","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger5"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":3}]}]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger5"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":3}]}]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar4"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":1}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":8},{"X":1,"Y":9},{"X":1,"Y":10},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":9},{"X":4,"Y":10},{"X":4,"Y":9},{"X":4,"Y":8},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}]}]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_4","InstanceName":"sunduk_41"}],"HotSpots":[]},{"X":0,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge4"}],"HotSpots":[]}],"LookDirection":2,"Width":12,"Height":12,"DataBounds":"0, 1, 11, 10","Name":"floor4","Caption":"4 ","Description":[]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key24","Caption":" 4","Description":[": 1",": 0/1"," Demons city"," "," ",""," , B4."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_2_3ch","Caption":" ","Description":[": 1",": 0/1"," : 7 ."," Demons city"," "," ",""," U3 ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_2_3e","Caption":" ","Description":[": 1",": 0/1"," : 7 ."," Demons city"," "," ",""," K3 ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_3_4","Caption":" ","Description":[": 1",": 0/1"," : 7 .",": 1 ."," Demons city"," "," ",""," 7 ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_1","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," ",""," K7/b> . "," , ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_2","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," ",""," U2 . "," , ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_3","Caption":" ","Description":[": 1",": 0/1"," Demons city"," "," "]}],"Name":"key","Caption":"","Description":[" : ( E14), ( D13) ( C14). K .",""," . , J2 ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":" ","Description":[": 1",": 1 .",": 0/1"," : 99%"," 5 . ",":"," 6 ."," Demons city"," "," ",""," , C11."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":" 10 . ","Description":[": 1 ",": 10 .",": 0/1"," Demons city"," "," ",""," , K4, K7, K11."," . . , . "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"preservation","Caption":"","Description":[": 1 ",": 1 . "," : 99% "," : "," : "," ..."," Demons city"," "," ",""," , B20."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_powerHPup3","Caption":" +3","Description":[": 1 ",": 20 . ",": 0/3 "," : 50% "," : 120 . "," : "," : 7"," Demons city"," "," ",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_powerHPdn3","Caption":" 3","Description":[": 1 ",": 10 . ",": 0/3 "," : 50% "," : 120 . "," : "," : 7"," Demons city"," "," "]}],"Name":"spell","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""," ."," , D4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," , ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""," ."," , D4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""," ."," , D4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""," ."," , D4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . , ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," , ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_0","Caption":" [0]","Description":[": 1 ",": 5 . ",": 0/1 ",":"," - . ..."," Demons city"," "," ",""," ."," , D4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_1","Caption":" [1]","Description":[": 1 ",": 15 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_2","Caption":" [2]","Description":[": 1 ",": 50 . ",": 0/1 "," : 99%",":"," - . ."," Demons city"," "," "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_3","Caption":" [3]","Description":[": 1 ",": 150 . "," : 99%",": 0/1 ",":"," ."," Demons city"," "," "]}],"Name":"enh","Caption":" ","Description":[" , B10.",""," , , .",""," ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring120_si8","Caption":" ","Description":[": 1 ",": 100 . ",": 0/50 "," : "," : 9 "," : 3 "," : 25 "," : 25 "," : "," : "," . (%): +50"," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring121_si8","Caption":" ","Description":[": 1 ",": 100 . ",": 0/50 "," : "," : 9 "," : 3 "," : 25 "," : 25 "," : "," : "," . (%): +25 "," . (%): +25"," Demons city"," "," ",""," ."]}],"Name":"rings","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"aamulet2_hs3hg2","Caption":" ","Description":[": 1",": 415 . ",": 0/100"," :"," : 50 "," : 20 "," : 20 "," : 35 "," : 10 "," :"," : +4 "," : +4"," : +15"," : +10"," (HP): +120 "," . : +125%"," . : +125%"," : +2"," , : +2"," , : +2"," , : +2"," Demons city"," "," ",""," ."]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"ashield6_7dk29as","Caption":" ","Description":[": 390 .",": 0/100"," :"," : 10"," : 20"," : 20"," : 50"," : 75"," :"," . (%): +75"," . (%): +45"," : +10"," (HP): +90"," : +4"," : 14-52 (13+d39)"," : 14-52 (13+d39)"," : 14-52 (13+d39)"," : 14-52 (13+d39)"," :"," . (%): +25"," Demons city"," "," ",""," ."]}],"Name":"shield","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":40,"Binding":3,"IsGift":false,"Name":"aboots2_dk2kd9","Caption":" ","Description":[": 10",": 310 . ",": 0/100"," :"," : 50 "," : 50 "," : 20 "," : 35 "," : 10 "," :"," : +6 "," : +2 "," : +20 "," (HP): +54"," : 14-52 (13+d39) "," . : +70 % "," . : +70 % "," :"," : +15"," Demons city"," "," ",""," , ."]}],"Name":"boots","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":2,"IsGift":false,"Name":"hammer71","Caption":" ()","Description":[": 30 ",": 370 . ",": 0/60 "," : "," : 15 "," : 15 "," : 9 "," , : 5 "," : 50 "," : 55 "," : "," . (%): +20 "," : +2 "," : "," : 34 - 52"," . (%): +80 "," . (%): +25 "," , : +2 "," "," : + ",": "," : "," : "," : [0/13] "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword106_kki8","Caption":" ","Description":[": 20",": 280 . ",": 0/70"," :"," : 50 "," : 25 "," : 25 "," : 35 "," : 10 "," : 5 "," :"," . (%): +10"," :"," : 14 - 38"," . : +80 % "," . : +10 % "," : +3"," : ",":"," : "," : "," : "," : "," Demons city"," "," ",""," ."]}],"Name":"arms","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword8","Caption":" ","Description":[": 8 ",": 0 . ",": 0/3 "," : "," : 4 "," : 20 "," : 20 "," : "," : 7 - 18 "," . (%): +50 "," : + ",": "," : "," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword11","Caption":" ","Description":[": 8 ",": 0 . ",": 0/3 "," : "," : 3 "," : 15 "," : 15 "," : "," . (%): +50 "," : "," : 5 - 16 "," . (%): +50 "," : +2 "," : + ",": "," : "," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor8","Caption":"c ","Description":[": 25 ",": 0/3 "," : "," : 5 "," : 25 "," : 25 "," : "," . (%): +25 "," . (%): +20 "," . (%): +25 "," : +1 "," : +1 "," , : +1 "," , : +1 "," , : +1 "," (HP): +33 "," : +4 "," : 1-18 (d18)"," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip8","Caption":" ","Description":[": 1 ",": 0 . ",": 0/3 "," : "," : 3 "," : 15 "," : 15 "," : "," . (%): +20 "," . (%): +20 "," . (%): +20 "," . (%): +20"," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip7","Caption":" ","Description":[": 1 ",": 0 . ",": 0/3 "," : "," : 2 "," : 8 "," : 8 "," : "," : +3 "," : +3 "," : +3 "," : +3"," Demons city"," "," "]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip1","Caption":" ","Description":[": 1 ",": 0 . ",": 0/3 "," : "," : 4 "," : 15 "," : 20 "," : "," : +12 "," . (%): +50"," Demons city"," "," ",""]}],"Name":"rar","Caption":" ","Description":[" ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":false,"Name":"armor109_ppwa","Caption":" ","Description":[": 45",": 525 . ",": 0/100"," :"," : 45 "," : 40 "," : 10 "," :"," : +4 "," : +35"," : +25"," (HP): +200"," . (%): +60 +75 "," . : +100%"," . : +65%"," : +2"," , : +2"," , : +2"," , : +2"," :"," : +25",":"," : "," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":false,"Name":"armor109_ppwa","Caption":" ","Description":[": 45",": 525 . ",": 0/100"," :"," : 45 "," : 40 "," : 10 "," :"," : +4 "," : +35"," : +25"," (HP): +200"," . (%): +60 +75 "," . : +100%"," . : +65%"," : +2"," , : +2"," , : +2"," , : +2"," :"," : +25",":"," : "," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":" ","Description":[": 35",": 420 . ",": 0/100"," :"," : 10 "," : 5 "," : 40 "," : 40 "," :"," . (%): +100 "," : +9 +12 "," :"," : 30 - 48 "," : +3 "," "," : + ",":"," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":" ","Description":[": 35",": 420 . ",": 0/100"," :"," : 10 "," : 5 "," : 40 "," : 40 "," :"," . (%): +100 "," : +9 +12 "," :"," : 30 - 48 "," : +3 "," "," : + ",":"," : "," : "," : "," Demons city"," "," ",""," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":" ","Description":[": 35",": 420 . ",": 0/100"," :"," : 10 "," : 5 "," : 40 "," : 40 "," :"," . (%): +100 "," : +9 +12 "," :"," : 30 - 48 "," : +3 "," "," : + ",":"," : "," : "," : "," Demons city"," "," ",""," ."]}],"Name":"armorsword","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Demons city"," "," ",""," ."," , C11."," , B11 , U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," Demons city"," "," ",""," , D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Demons city"," "," ",""," ."," , C11."," , B11 , U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," Demons city"," "," ",""," , D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +15 "," Demons city"," "," ",""," ."," , C11."," , B11 , U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +15 "," Demons city"," "," ",""," , D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 1 . 30 . ","e : "," : +10 "," Demons city"," "," ",""," ."," , C11."," , B11 , U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":" ","Description":[": 1 ",": 1 . ","e: 0/1 "," o: 30 . ","e : 3 . 0 . ","e : "," : +10 "," Demons city"," "," ",""," , D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_fireproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1"," : 30 ."," : 1 . 30 . "," : "," : 4 "," : "," : +50 "," Demons city"," "," ",""," , F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_earthproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1"," : 30 ."," : 1 . 30 . "," : "," : 4 "," : "," : +50 "," Demons city"," "," ",""," , F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_airproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1"," : 30 ."," : 1 . 30 . "," : "," : 4 "," : "," : +50 "," Demons city"," "," ",""," , F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_waterproof","Caption":" ","Description":[": 5 ",": 1 . ",": 0/1"," : 30 ."," : 1 . 30 . "," : "," : 4 "," : "," : +50 "," Demons city"," "," ",""," , F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_anti_poison_5","Caption":" [5]","Description":[": 1",": 1 . ",": 0/3-5"," : 30 ."," : ",":"," ."," Demons city"," "," ",""," , H11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_anti_disease_5","Caption":" [5]","Description":[": 1",": 1 . ",": 0/3-5"," : 30 ."," : ",":"," "," Demons city"," "," ",""," , I15."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP600_50","Caption":" ","Description":[": 1 ",": 1 . ",": 0/1"," : 30 . ",":"," 600 ."," Demons city"," "," ",""," , J8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_regeneration","Caption":" ","Description":[": 5 ",": 10 . ",": 0/10 "," : 15 . "," : 120 "," : "," HP: +300%"," Demons city"," "," ",""," ."]}],"Name":"pot_base","Caption":"","Description":[", , ."]}],"Name":"maters","Caption":"","Description":["

        "]},{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat15","Caption":" ","Description":[": 1",": 300 . ",": 0/1 "," ",":"," [10] , ."]}],"Name":"sp_mat","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater267","Caption":" ","Description":[": 40 .
        : 1
        : [ ]x8
        : 0/1

        :
        [10] , .
        "]}],"Name":"other","Caption":". ","Description":[]}],"Name":"demonsknightshop","Caption":"","Description":["

        ,


        ","

        Demons ity 10 000, .

        "]}],"IsDungeon":true,"Name":"demons","Caption":"","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.emerald.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#C4E5C1","CellBorderColorString":"#70906A","Jobs":{"CollectiveJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":[" \" \" . \" \", , . ..."],"DefCount":25},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":[" , , \" \" . \" \"."],"DefCount":5},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":[" , \"\" . \" \". "],"DefCount":13},{"Caption":"","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":[" , , \"\" . \" \", , . "],"DefCount":13},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":[" , \" \" . \" \" . ... "],"DefCount":35}],"CapturedJobs":[{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater225.gif","ItemReward":50,"Description":[" , \" \" . c \" \". ... ",""," [10] ."],"DefCount":10},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater226.gif","ItemReward":50,"Description":[" , \" \" . \" \". ",""," [10] ."],"DefCount":10},{"Caption":" ","ImageUrl":"https://img.new-combats.com/i/items/mater219.gif","ItemReward":25,"Description":[" , \" \" . \" \". , ... ",""," ."],"DefCount":13}],"KillingJobs":[{"MobName":"skr","Unique":false,"Description":[" , \" \", \" \"."],"DefCount":10},{"MobName":"bkr","Unique":false,"Description":[" , \" \", \" \". , ..."],"DefCount":10},{"MobName":"pkr","Unique":false,"Description":[" , \" \", \" \". "],"DefCount":8},{"MobName":"dkr","Unique":false,"Description":[" , \" \", \" \"."],"DefCount":8}]},"Floors":[{"Cells":[{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter2"}],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain52"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":4,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1}]}]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder3"}],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":3,"Y":1}]}]},{"X":1,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":3}]},{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":5}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":4,"Y":2},{"X":2,"Y":1},{"X":4,"Y":1}]}]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":11,"Height":12,"DataBounds":"1, 1, 9, 10","Name":"floor1","Caption":"1 ","Description":[]},{"Cells":[{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport4"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1},{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter7"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport5"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":6}]}]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":8,"Y":4}]}]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport9"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":9,"Y":3}]}]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport_small_left","InstanceName":"redteleport2"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":2,"Y":5},{"X":9,"Y":9}]}]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":7,"Y":1}]}]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport_small_left","InstanceName":"redteleport1"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":3},{"X":10,"Y":6}]}]},{"X":10,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4_small","InstanceName":"fountain41"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":11,"Y":8}]}]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":6,"Y":7}]}]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":8,"Y":4}]}]},{"X":9,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":5}]}]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":9,"Y":1}]}]},{"X":11,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder4"}],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]}],"LookDirection":3,"Width":13,"Height":11,"DataBounds":"1, 1, 11, 9","Name":"floor2","Caption":"2 ","Description":[]},{"Cells":[{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain63"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":6},{"X":2,"Y":7},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":7},{"X":3,"Y":6}]},{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5}]}]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kv","Level":14,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"DarkGreen","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":8,"Y":5},{"X":9,"Y":5},{"X":9,"Y":4},{"X":9,"Y":6},{"X":8,"Y":11},{"X":7,"Y":6},{"X":6,"Y":6},{"X":5,"Y":4},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk2"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":7}]}]},{"X":6,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder5"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":12}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":1}]}]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter8"}],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":11,"Align":"0","Tag":"","Count":2},{"Name":"pkr","Level":11,"Align":"0","Tag":"","Count":2},{"Name":"skr","Level":11,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":5}]}]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4}]}]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":13,"DataBounds":"1, 1, 10, 11","Name":"floor3","Caption":"3 ","Description":[]},{"Cells":[{"X":4,"Y":3,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter12"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":10,"DataBounds":"4, 3, 1, 3","Name":"floor4","Caption":"4 ","Description":[]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_1","Caption":" 1","Description":[": 1 ",": 1 .",": 0/1"," Emeralds city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_3","Caption":" 3","Description":[": 1 ",": 1 .",": 0/1"," Emeralds city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_5","Caption":" 5","Description":[": 1 ",": 1 .",": 0/1"," Emeralds city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_7","Caption":" 7","Description":[": 1 ",": 1 .",": 0/1"," Emeralds city"," "," ",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_10","Caption":" 10","Description":[": 1 ",": 1 .",": 0/1"," Emeralds city"," "," ",""," ."]}],"Name":"spell_repare","Caption":" ","Description":[" .",""," ( ), . ., , ."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_godprotect10","Caption":" ","Description":[": 1 ",": 1 . ",": 0/1"," : 99%"," : 120 ."," :"," : 7"," Emeralds city"," "," ",""," F2 ."," ."]}],"Name":"spell","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":" ","Description":[": 1",": 1 . ",": 0/1"," : 15 ."," : 3 . 0 . "," :"," : 4 "," :"," : +10 "," : +1 +5 "," Emeralds city"," "," ",""," , D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":" ","Description":[": 1",": 1 . ",": 0/1"," : 15 ."," : 3 . 0 . "," :"," : 4 "," :"," : +10 "," : +1 +5 "," Emeralds city"," "," ",""," , D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":" ","Description":[": 1",": 1 . ",": 0/1"," : 15 ."," : 3 . 0 . "," :"," : 4 "," :"," : +10 "," : +1 +5 "," Emeralds city"," "," ",""," , D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_master","Caption":" ","Description":[": 1",": 1 . ",": 0/1"," : 15 ."," : 3 . 0 ."," :"," : 4"," :"," . : +33"," . : +33"," : +50"," : +25"," Emeralds city"," "," ",""," ."," ."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP600_50","Caption":" ","Description":[": 1 ",": 1 . ",": 0/1"," : 30 . ",":"," 600 ."," Emeralds city"," "," ",""," , K5."]}],"Name":"pot_base","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater_izumrud","Caption":" ","Description":[": 1",": 0/1",": 1 ."," Emeralds city"," "," ",""," ."]}],"Name":"maters","Caption":". ","Description":[]}],"Name":"maters","Caption":"","Description":["

        "]}],"IsDungeon":true,"Name":"emerald","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":["dungeon.data.abandon.js","dungeon.data.abandon.novice.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.abandon.capital.js","dungeon.data.abandon.capital.demons.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#D8D8D8","CellBorderColorString":"#75778A","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[{"MobName":"krsnt","Unique":false,"Description":["[4]-[7] ","",", : , . 30 . . , . !"],"DefCount":30},{"MobName":"pg_abadon","Unique":false,"Description":["[8]-[9] ","",", : , . 30 . . , . !"],"DefCount":30},{"MobName":"dkr_abadon","Unique":false,"Description":["[10] +","",", : , . 15 . . , . !"],"DefCount":15}]},"Floors":[{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"voenkom","Level":12,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"greenteleport","InstanceName":"grteleport2"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport13"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"serjant","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor3"}],"HotSpots":[]}],"LookDirection":2,"Width":11,"Height":9,"DataBounds":"2, 2, 7, 5","Name":"floor1","Caption":"","Description":[]},{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor4"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":2,"Width":10,"Height":8,"DataBounds":"2, 2, 6, 4","Name":"floor2","Caption":"","Description":[]},{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow2"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":2,"Width":9,"Height":8,"DataBounds":"2, 2, 5, 4","Name":"floor3","Caption":"","Description":[]},{"Cells":[{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor4"}],"HotSpots":[]}],"LookDirection":2,"Width":9,"Height":12,"DataBounds":"2, 2, 5, 8","Name":"floor4","Caption":"","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"kvest","Caption":" ","Description":["

        ,




        . , .



        ","


        Abandoned Plains, . ( \"\"Capital city, ). , 1 .

        .

        : , .

        , . .

        : .

        , .

        \"\" [12] . ","

        : ","
        , ! , ! , ! , , !

        ! !
        , . ( )
        _________________________________


        ! ( ) , .

        ! ( )

        :
        ","
        ","
        ","","","","","
        ","","","","","
        (: 1)
        : 0 .
        : 0/1
        : 7 .
        : 1 .



        \"\". :
        ","
        : ","
        ! ! , ! , : , . 30 . . , . !

        !
        . ( )
        _________________________________
        \"\"
        .

        ","


        . , : ","

          ","
        • [4]-[7] - 30 [6]
        • ","
        • [8]-[9] - 30 [9]
        • ","
        • [10]-[11] - 15 [10]

        , , . . , ( )
        ","


        , . ( - ) ( ).

        , .
        ","
        : ","
        ! ! , ! , ?

        !
        ! !
        , .

        ","

        :
        1 , .
        3 . .
        .
        .
        , , .
        , .

        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":3,"IsGift":true,"Name":"ring23f","Caption":" ","Description":[": 1 ",": 62 . ",": 0/50 "," : "," : 4 "," : "," (HP): +100 ",": 1 . "," Abandoned Plain "]}],"Name":"bonuses47","Caption":" [4]-[7] ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":true,"Name":"cloak23f1","Caption":" ","Description":[": 1",": 100 . ",": 0/100"," :"," : 8"," :"," (HP): +6",": 1 ."," Abandoned Plain "]}],"Name":"bonuses89","Caption":" [8]-[9] ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":true,"Name":"cloak23f2","Caption":" ","Description":[": 1",": 300 .",": 0/100"," :"," : 10"," :"," : +1"," : +1"," : +1"," (HP): +6"," : +1",": 1 . "," Abandoned Plain "]}],"Name":"bonuses10","Caption":" [10] +","Description":[]}],"Name":"bonus","Caption":"","Description":["

        "," , . ."]}],"IsDungeon":true,"Name":"abandon","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":false,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"rings","Caption":"","Description":["


        ","
        ","
        , :","

        ","
        ","","","","","","","
        : 1 . 1
        ",":
        ","
        "," :
        "," : 6
        ",": 1 .
        "," \" 1 .

        ",":
        15

        ","
        : 1 . 1
        "," : [ ]x30,
        ",": 0/50
        ","
        "," :
        "," : 7
        ",": 1 .
        "," \" 6 .

        ",":
        10
        ","
        ","
        : \" \" , . ","
        ","
        - , . , 15 . 30 , , .

        ","
        ","
        ","
        ","
        ","
        100 , . , . Demons city.
        ","
        (2 , U11) .
        ","
        (2 , B11) .","

        ","
        ","","","","","","","","","","","
        : 1 . 1
        ",": 0/50
        ","
        "," :
        "," : 7
        :
        "," . : +10
        "," (HP): +36
        ",": 1 .
        "," \" 6 .
        ","
        : 1 . 1
        ",": 0/50
        ","
        "," :
        "," : 7
        :
        "," . : +10
        "," : +36
        : 1 .
        "," \" 6 .
        ","
        : ' '
        ' , '
        : ' '
        ' , '
        ","
        , 6 .","
        ","
        ",": , , , .","
        ","
        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","
        .
        .
        ","
        ","
        ","
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"rubins","Caption":" ","Description":["


        ","
        - ","
        ","
        . . 15, . \" \". . 1 . 30 , .","
        ","
        ","
        ","
        - ","
        ","
        , [ ]x30, . . 5, . \" \". .","
        ","
        . , , . 6 . . .","

        ! , , :\"C ...\"","
        ","
        ! \" \" \" \" .","
        ","
        ! .","
        ","
        ! , . / \" \"/.","
        ","
        ! \" \", , .","
        ","

        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","
        .
        .
        ","
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"donation","Caption":"","Description":["


        ","
        , \"\" . . .","
        ","
        , , .","
        : , , . ","
        ","
        100 .","
        ","
        100 .","
        ","
        ","
        ","
        ","","","","","","","","","","","","","","
        .
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"smelt_maters","Caption":" ","Description":["


        ","
        .","
        ","
        \"AngelsAngelscity, , , ( , B4) . C , . ","
        ","
        : 0/3, 3 .","
        ","
        . , .","
        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","
        -
        \"
        [1]
        \"","\"\"","\"\"","\"","\"\"","\"","
        \"","\"\"","\"","\"","\"","\"\"
        \"
        1 .
        \"
        [2]
        \"","\"","\"","\"","\"","\"","\"\"
        3 .
        \"
        [3]
        \"","\"","\"","\"","\"","\"\"
        10 .
        \"
        [4]
        \"","\"","\"","\"\"","\"\"","\"\"
        30 .
        ","
        ","
        \"Angels Angelscity . , , .","
        : Angelscity 10 000 .","
        ","

        ","","","","","","","","","","","","","","","","","","","","","","","
        -
        \"
        3 .
        + 0,15.
        \"","\"\"","\"\"","\"","\"\"","\"","
        \"","\"\"","\"","\"","\"","\"\"
        \"
        10 .
        + 0,5.
        \"","\"","\"","\"","\"","\"","\"
        \"
        30 .
        + 1,5.
        \"","\"","\"","\"","\"","\"
        \"
        100 .
        + 5.
        \"","\"","\"","\"\"","\"\"","\"
        ","
        \" , , .","
        ","
        ","
        ","
        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":0,"IsGift":true,"Name":"ring127","Caption":" ","Description":[": 1
        : 1 . 1
        ",":
        ","
        "," :
        "," : 6
        "," \" 1 .

        "," 15
        Devils city","
        "]},{"NewLineToBR":false,"W":20,"H":20,"Binding":0,"IsGift":true,"Name":"ring126","Caption":" ","Description":[": 1
        : 1 . 1
        "," : [ ]x30,
        ",": 0/50
        ","
        "," :
        "," : 7
        "," \" 6 .

        "," 10
        Devils city"]}],"Name":"rings","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP30","Caption":" 30HP","Description":[": 1
        : 0.01 .
        : [ ]
        : 0/1

        :
        : 1
        : 7

        C ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureMana50","Caption":" 50","Description":[": 1
        : 0.01 .
        : [ ]
        : 0/1

        :
        : 1
        : 7

        C ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"elementalcrit","Caption":" ","Description":[": 1
        : 0.02 .
        : [ ]x2
        : 0/1
        :
        : 3
        : 7
        : 50
        :

        , 5 .

        C 20 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_powerup10","Caption":"","Description":[": 1
        : 0.02 .
        : [ ]x2.
        : 0/1
        : 60 .
        :
        : 2
        : 7

        C 20 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP60","Caption":" 60HP","Description":[": 1
        : 0.02 .
        : [ ]x2
        : 0/1

        :
        : 2
        : 7

        C 20 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_unprotect","Caption":" ","Description":[": 1
        : 0.02 .
        : [ ]x2
        : 0/4

        : 60 .
        :
        : 2
        : 7

        C 20 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_unprotect10","Caption":" ","Description":[": 1
        : 0.02 .
        : [ ]x2
        : 0/4

        : 60 .
        :
        : 2
        : 7

        C 20 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureMana100","Caption":" 100","Description":[": 1
        : 0.02 .
        : [ ]x2
        : 0/1

        :
        : 2
        : 7

        C 20 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_powerHPup3","Caption":" +3","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 120 .
        :
        : 3
        : 7

        C 50 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP120","Caption":" 120HP","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1

        :
        : 3
        : 7

        C 50 .
        "]}],"Name":"svitki","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinew1","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x25
        : 0/1
        :
        . : +1
        (HP): +6
        :
        .


        C 50 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinem1","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x25
        : 0/1
        :
        . : +1
        (HP): +6
        :
        .


        C 50 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinew2","Caption":" [2]","Description":[": 1
        : 1 .
        : [ ]x50
        : 0/1
        :
        . : +2
        (HP): +12
        :
        .


        C 100 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinem2","Caption":" [2]","Description":[": 1
        : 1 .
        : [ ]x50
        : 0/1
        :
        . : +2
        (HP): +12
        :
        .


        C 100 ."]}],"Name":"charki","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_KRT1","Caption":" : 1","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 3 .

        :
        : 7

        C 50 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":" : 1","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 3 .

        :
        : 7

        C 50 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_CNTR1","Caption":" : 1","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 3 .

        :
        : 7

        C 50 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_PRY1","Caption":" : 1","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 3 .

        :
        : 7

        C 50 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_HIT1","Caption":" : 1","Description":[": 1
        : 0.03 .
        : [ ]x4
        : 0/1
        : 3 .

        :
        : 7

        C 50 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_KRT2","Caption":" : 2","Description":[": 1
        : 0.04 .
        : [ ]x6
        : 0/1
        : 3 .

        :
        : 7

        C 100 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_BLK2","Caption":" : 2","Description":[": 1
        : 0.04 .
        : [ ]x6
        : 0/1
        : 3 .

        :
        : 7

        C 100 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_CNTR2","Caption":" : 2","Description":[": 1
        : 0.04 .
        : [ ]x6
        : 0/1
        : 3 .

        :
        : 7

        C 100 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_PRY2","Caption":" : 2","Description":[": 1
        : 0.04 .
        : [ ]x6
        : 0/1
        : 3 .

        :
        : 7

        C 100 .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_HIT2","Caption":" : 2","Description":[": 1
        : 0.04 .
        : [ ]x6
        : 0/1
        : 3 .

        :
        : 7

        C 100 .
        "]}],"Name":"taktiki","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_intel2","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x3
        : 0/1
        : 15 .
        : 6 . 0 .
        :
        : 7
        :
        : +15

        20 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_str2","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x3
        : 0/1
        : 15 .
        : 6 . 0 .
        :
        : 7
        :
        : +15

        20 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_inst2","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x3
        : 0/1
        : 15 .
        : 6 . 0 .
        :
        : 7
        :
        : +15

        20 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_dex2","Caption":" ","Description":[": 1
        : 1 .
        : [ ]x3
        : 0/1
        : 15 .
        : 6 . 0 .
        :
        : 7
        :
        : +15

        20 .
        "]}],"Name":"pot","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"mater_shop1","Caption":" ","Description":[": 1
        : 5 .
        : [ ]x40
        : 0/1
        :


        100 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"mater_shop2","Caption":" ","Description":[": 1
        : 5 .
        : [ ]x40
        : 0/1
        :


        100 .
        "]}],"Name":"eski","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater1","Caption":" [1]","Description":[": 1
        : 0.5 .
        : [ ]
        : 0/3
        :


        ."]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater3","Caption":" [2]","Description":[": 1
        : 1.5 .
        : [ ]3
        : 0/3
        :


        20 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater10","Caption":" [3]","Description":[": 1
        : 5 .
        : [ ]10
        : 0/3
        :


        50 .
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater30","Caption":" [4]","Description":[": 1
        : 10 .
        : [ ]30
        : 0/3
        :


        100 .
        "]}],"Name":"smelt","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet102","Caption":" ","Description":[": 1 .
        "," : [ ]x75
        ",": 0/50
        "," :
        "," : 30
        "," : 9
        "," : 30
        "," :
        "," . (%): +50
        "," . : +20
        "," (HP): +100
        "," : +100
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet101","Caption":" ","Description":[": 1 .
        "," : [ ]x75
        ",": 0/50
        "," :
        "," : 9
        "," : 30
        "," : 30
        "," :
        "," . (%): +50
        "," . (%): +50
        "," . : +20
        "," (HP): +150
        "," 100 ."]}],"Name":"amulet","Caption":"","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg11","Caption":"oo ax p [10]","Description":[": 10
        : 30 .
        : oo ax p, [o Ppa]x6","
        : 0/50
        ","p ao:
        "," oo: 15
        "," : 15
        "," po: 9
        "," oo: 65
        "," a: 45
        "," :
        "," aa o a: +25
        "," po (HP): +57
        "," po oa: 16-55 (15+d40)
        "," po o: 16-55 (15+d40)
        ","oa pa:
        "," aa o poa: 55
        "," a oa: o ax p [10] [0/12]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg12","Caption":"oo poao [10] ","Description":[": 10
        : 30 .
        : oo poao , [o Ppa]x6","
        : 0/50
        ","p ao:
        "," oo: 15
        "," : 60
        "," po: 10
        "," oo: 35
        "," a: 35
        "," :
        "," . po poo apa (%): +25
        "," . po pa (%): +25
        "," . poo apa (%): +45
        "," aa o a: +15
        "," po (HP): +35
        "," po oa: 11-40 (10+d30)
        "," po o: 11-40 (10+d30)
        ","oa pa:
        "," aa o poa: 40
        "," a oa: o poao [10] [0/12]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg13","Caption":"oo aa [10] ","Description":[": 10
        : 30 .
        : oo aa, [o Ppa]x6","
        : 0/50
        ","p ao:
        "," oo: 60
        "," : 15
        "," po: 10
        "," oo: 35
        "," a: 35
        "," :
        "," . po poo apa (%): +45
        "," . pa (%): +50
        "," aa o a: +30
        "," po (HP): +27
        "," po oa: 11-40 (10+d30)
        "," po o: 11-40 (10+d30)
        ","oa pa:
        "," aa o poa: 35
        "," a oa: o aa [10] [0/12]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg14","Caption":"oo po oa [10]","Description":[": 13
        : 30 .
        : oo po oa, [o Ppa]x6","
        : 0/60
        ","p ao:
        "," oo: 30
        "," : 30
        "," po: 10
        "," oo: 45
        "," a: 45
        "," :
        "," . po poo apa (%): +40
        "," . po pa (%): +20
        "," . appoa (%): +2
        "," aa o a o: +15
        "," aa o poa: +15
        "," aa o a o: -10
        "," po (HP): +45
        "," po oa: 11-40 (10+d30)
        "," po o: 11-40 (10+d30)
        ","oa pa:
        "," aa o poa: 40
        "," a oa: o po oa [10] [0/12]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg15","Caption":"a Peoc [10]","Description":[": 5
        : 30 .
        : a Peoc, [o Ppa]x6","
        : 0/50
        ","p ao:
        "," ee: 50
        "," poe: 10
        "," poc: 60
        "," :
        "," oaee a o a: +2
        "," . ooc a cx: +5
        "," poe (HP): +25
        "," poe a: +100
        "," po oca: 6-20 (5+d15)
        "," po o: 6-20 (5+d15)
        ","oa pa:
        "," aa o poa: 15
        "," ac oea: oe Peoc [10] [0/7]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg16","Caption":"oo Copoa [10]","Description":[": 10
        : 30 .
        : oo Copoa, [o Ppa]x6","
        : 0/50
        ","p ao:
        "," ooc: 15
        "," : 60
        "," poe: 10
        "," ococ: 50
        "," Ca: 35
        "," :
        "," . po pecoo apa (%): +30
        "," . po epa (%): +35
        "," . pecoo apa (%): +35
        "," poe (HP): +43
        "," Ca: +2
        "," po oca: 11-40 (10+d30)
        "," po o: 11-40 (10+d30)
        ","oa pa:
        "," aa o poa: 35
        "," ac oea: oe Copoa [10] [0/12]
        "," 100 ."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg17","Caption":"oo oe [10]","Description":[": 10
        : 30 .
        : oo oe, [o Ppa]x6","
        : 0/50
        ","p ao:
        "," ooc: 60
        "," : 45
        "," poe: 10
        "," ococ: 35
        "," Ca: 25
        "," :
        "," . po pecoo apa (%): +25
        "," . pecoo apa (%): +30
        "," . epa (%): +30
        "," ooc: +2
        "," : +2
        "," aa o a: +25
        "," po oca: 11-40 (10+d30)
        "," po o: 11-40 (10+d30)
        ","oa pa:
        "," aa o poa: 30
        "," ac oea: oe [10] [0/12]
        "," 100 ."]}],"Name":"leg","Caption":"","Description":[]}],"Name":"altarshop","Caption":"","Description":["

        ",""," , , . ","","! [10] ( )."]}],"IsDungeon":false,"Name":"altar","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[],"Shops":[{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook1","Caption":" ","Description":[": 15 .
        "," :
        "," - 5 .
        "," - 360
        "," : 50
        "," : +1
        "," (HP): +10
        "," +1 ( )","
        .","
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook2","Caption":" ","Description":[": 30 .
        "," :
        "," - 360
        "," : 75
        "," : +2
        "," (HP): +20
        "," .","
        .","
        ","
        ","
        , . 1 3 .","
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook3","Caption":" ","Description":[": 100 .
        "," :
        "," - 3 .
        "," - 360
        "," : 100
        "," : +3
        "," (HP): +30
        "," . . (%): +1
        "," . (%): +1
        "," . (%): +1
        "," : +1
        "," . (%): +1
        "," . (%): +1
        "," . (%): +1
        "," . (%): +1
        "," (%): +1
        "," .","
        .","
        ","

        .","
        "]}],"Name":"abooks","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot7","Caption":" ( 1)","Description":[": 1
        : 120 .
        : 0/1
        :
        : 7
        : 1 .
        :
        +1 .
        .

        4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot8","Caption":" ( 2)","Description":[": 1
        : 200 .
        : [ ]x15
        : 0/1
        :
        : 8
        : 1 .
        :
        +1 .
        .
        .

        5 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot9","Caption":" ( 3)","Description":[": 1
        : 300 .
        : [ ]x3, [ ]x3, [ ]x3, [ ]x3, [ ]x3, [ ]x3
        : 0/1
        :
        : 9
        : 1 .
        :
        +1 .
        .
        .

        7 10
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot10","Caption":" ( 4)","Description":[": 1
        : 500 .
        : []x5, [ ]x5, [ ]x5, [ ]x5, [ ]x5, []x5
        : 0/1
        :
        : 10
        : 1 .
        :
        +1 .
        .
        .

        8 35
        "]}],"Name":"booklearn_slots","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_1","Caption":" ()","Description":[": 1
        : 22.5 .
        : [ ]x5
        : 0/1
        :
        : 25
        : 6
        : 1 .
        :

        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_2","Caption":" ()","Description":[": 1
        : 15 .
        : ,
        : 0/1
        :
        : 25
        : 7
        :

        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_3","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 7
        : 25
        : 25
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_4","Caption":" ()","Description":[": 1
        : 27 .
        : [ 60HP]x2
        : 0/1
        :
        : 7
        : 30
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_5","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 7
        : 30
        : 20
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_6","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 7
        : 25
        : 1 .
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_7","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 7
        : 25
        : 1 .
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_8","Caption":" ()","Description":[": 1
        : 20 .
        : [ ]x3
        : 0/1
        :
        : 25
        : 7
        : 1 .
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_9","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 1 .
        :
        .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_10","Caption":" ()","Description":[": 1
        : 20 .
        : [ ]x3
        : 0/1
        :
        : 7
        : 25
        : 1 .
        :

        , , .
        :

        : 4 55
        "]}],"Name":"booklearn","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell1","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell8","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        , 33%. 125%
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell10","Caption":" ()","Description":[": 1
        : 20 .
        : [ ]x3
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        +100 . . .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell9","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        . 4 33%
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell13","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 30
        : 7
        : 7
        : 1 .
        :
        10%HP, 20% .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell12","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        33%, . .
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell14","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        5% +2% . . .
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell11","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        50% 2 , . .
        :

        : 5 54
        "]}],"Name":"booklearn_spell_fire","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell4","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        , .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell16","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        2 3 .
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell17","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        10% 5 , 30%.
        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell19","Caption":": ! ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        . ,
        : : !

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell21","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :

        :

        : 4 55
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell18","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        . 15. ,
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell20","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        , , 5
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell22","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        .
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell23","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        .
        :

        : 5 54
        "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell15","Caption":" ()","Description":[": 1
        : 25 .
        : [ ]x2
        : 0/1
        :
        : 35
        : 8
        : 8
        : 1 .
        :
        , . .
        :

        : 5 54
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell24","Caption":" ()","Description":[": 1
        : 45 .
        : [ ]x3
        : 0/1
        :
        : 75
        : 9
        : 9
        : 1 .
        :
        10%. 5 .
        :

        : 7 59
        "]}],"Name":"booklearn_spell_water","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell25","Caption":" ()","Description":[": 1",": 50 .",": 0/1"," :"," : 60"," : 8"," : 8",": 1 .",":"," 1-95 "," : "," "," : 4 55 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell26","Caption":" ( )","Description":[": 1",": 100 ."," : [ ]x4",": 0/1"," :"," : 40"," : 7"," : 7",": 1 .",":"," , "," : , : , : , : "," "," : 4 55 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell27","Caption":" ()","Description":[": 1",": 10 ."," : [ ]x5",": 0/1"," :"," : 80"," : 9"," : 9",": 1 .",":"," , 1-0 . ."," ."," ."," : "," "," : 4 55 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell28","Caption":" ()","Description":[": 1",": 20 ."," : ",": 0/1"," :"," : 25"," : 7"," : 7",": 1 .",":"," 25 . 4 ."," : "," "," : 4 55 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell29","Caption":" ()","Description":[": 1",": 30 ."," : [ ]x2",": 0/1"," :"," : 60"," : 8"," : 8",": 1 .",":"," ."," : "," "," : 4 55 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell30","Caption":" ()","Description":[": 1",": 20 ."," : ",": 0/1"," :"," : 25"," : 7"," : 11",": 1 .",":"," 1 - 10% . 5 ."," : "," "," : 4 55 "]}],"Name":"booklearn_spell_air","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell7","Caption":" ()","Description":[": 1
        : 20 .
        : [ ]x3
        : 0/1
        :
        : 25
        : 7
        : 7
        : 1 .
        :
        , .
        :

        : 4 55
        "]}],"Name":"booklearn_spell_earth","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell3","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 4
        : 1 .
        :
        : .
        :

        : 4 55
        "]}],"Name":"booklearn_spell_black","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell2","Caption":" ()","Description":[": 1
        : 20 .
        :
        : 0/1
        :
        : 25
        : 7
        : 4
        : 1 .
        :
        ? 10% - ?
        !
        :

        : 4 55
        "]}],"Name":"booklearn_spell_white","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell5","Caption":" ()","Description":[": 1
        : 20 .
        : [ ]x3
        : 0/1
        :
        : 25
        : 7
        : 4
        : 1 .
        :
        ... - ,
        :

        : 4 55
        "]}],"Name":"booklearn_spell_gray","Caption":" ","Description":[]}],"Name":"shop","Caption":"","Description":["

        "," , . , ."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/misc/icons/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flameshock","Caption":" ","Description":[" : 83
        : 10

        :
        • : 7
        • : 40
        • : 7

        . 75% 2 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_boost","Caption":"","Description":[" : 20
        : 5


        :
        • : 7
        • : 40
        • : 7

        +100 . .
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":" [8]","Description":[" : 129
        : 3


        :
        • : 8
        • : 50
        • : 8

        3% . +2% . 200 . , ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":" [9]","Description":[" : 155
        : 3


        :
        • : 9
        • : 60
        • : 9

        3% . +2% . 250 . , ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":" [10]","Description":[" : 185
        : 3


        :
        • : 10
        • : 75
        • : 10

        3% . +2% . 300 . , ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flamedeath","Caption":" ","Description":[" : 83
        : 5

        :
        • : 7
        • : 40
        • : 7

        , 33%. 150% ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_sacrifice","Caption":" ","Description":[" 5  
        : 4
        : 5

        :
        • : 7
        • : 40
        • HP: 10%
        • : 7

        10%HP, 20% ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_hiddenpower","Caption":" ","Description":[" : 41


        :
        • : 8
        • : 50
        • : 8

        33%, . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_shield","Caption":" ","Description":[" : 124
        : 10

        :
        • : 8
        • : 50
        • : 8

        50% 2 , .
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flamedestroy","Caption":" ","Description":[" : 83
        : 5

        :
        • : 7
        • : 40
        • : 7

        . 4 33% ."]}],"Name":"booklearn_spell_fire","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_icegrap","Caption":" ","Description":[" : 83
        : 10

        :
        • : 40
        • : 7
        • : 7

        2 3 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_break","Caption":": !","Description":[" : 167
        : 5


        :
        • : 40
        • : 7
        • : 7

        ?? ???, 65."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_cleance","Caption":" ","Description":[" : 83
        : 5

        :
        • : 50
        • : 8
        • : 8

        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_crystalize","Caption":"","Description":[" : 178
        : 5

        :
        • : 50
        • : 8
        • : 8

        10*( ).
        ( ) .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_hiddenpower","Caption":" ","Description":[" : 166
        : 10


        :
        • : 50
        • : 8
        • : 8

        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_sacrifice","Caption":" ","Description":[" 5  
        : 4
        : 10

        :
        • : 40
        • : 7
        • : 7

        10% 5 , 50%."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":" [7]","Description":[" : 83
        : 8

        :
        • : 40
        • : 7
        • : 7

        25% 4 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":" [8]","Description":[" : 124
        : 8

        :
        • : 50
        • : 8
        • : 8

        25% 4 , .
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":" [9]","Description":[" : 182
        : 8

        :
        • : 60
        • : 9
        • : 9

        25% 4 , .
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_spirit","Caption":" ","Description":[" 4  
        : 5
        : 4
        : 10

        :
        • : 50
        • : 8
        • : 8

        . 15. , ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_strike","Caption":" ","Description":[" : 134
        : 3


        :
        • : 40
        • : 7
        • : 7

        ??? . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_tempheal","Caption":" ","Description":[" 1  
        : 139
        : 5

        :
        • : 50
        • : 8
        • : 8

        , ???HP , 5 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_aheal","Caption":"","Description":[" 1
        : 70

        :
        : 60
        : 9
        : 9

        10%
        5 "]}],"Name":"booklearn_spell_water","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_spark","Caption":"","Description":[" : 83",": 10",""," :","• : 50","• : 8","• : 8",""," 1-57 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_shield","Caption":" ","Description":[" : 127",": 12","• ",""," :","• : 60","• : 9","• : 9",""," , 1-190 . . "," . "," . "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_sacrifice","Caption":" ","Description":[" 5"," : 7 ",": 10 ",""," :","• : 25","• : 7","• : 7",""," 25 . 4 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_speed","Caption":" ","Description":[" : 4"," : 70"," : 5",": 10",""," :","• : 50","• : 8","• : 8",""," ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge","Caption":"","Description":[" : 1"," : 20",""," :","• : 40","• : 7","• : 7","",", , , , , 1%. ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_shock","Caption":": ","Description":[" 1",": 3 ",""," :","• : 40","• : 7","• : 7",""," , 5 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_dmg","Caption":": ","Description":[" 1",": 3 ",""," :","• : 40","• : 7","• : 7",""," 1-2% . 200 . ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_gain","Caption":": ","Description":[" 1",": 3 ",""," :","• : 40","• : 7","• : 7",""," 8 ."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_manaheal","Caption":" ","Description":[" : 3",": 10","• ",""," :","• : 10","• : 11","• : 7",""," 1-10% . 5 ."]}],"Name":"booklearn_spell_air","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":" [7]","Description":[" : 78


        :
        • : 40
        • : 7
        • : 7

        346 . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":" [8]","Description":[" : 93


        :
        • : 50
        • : 8
        • : 8

        415 . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":" [9]","Description":[" : 112


        :
        • : 60
        • : 9
        • : 9

        498 . "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":" [10]","Description":[" : 134


        :
        • : 75
        • : 10
        • : 10

        597 . "]}],"Name":"booklearn_spell_earth","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_dark_eyeforeye","Caption":" ","Description":[" : 166
        : 10

        :
        • : 4
        • : 40
        • : 7

        , ( 500 . )"]}],"Name":"booklearn_spell_black","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_light_shield","Caption":" ","Description":[" : 166
        : 10

        :
        • : 4
        • : 40
        • : 7

        10%, 1 ."]}],"Name":"booklearn_spell_white","Caption":" ","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_gray_mastery","Caption":" ","Description":[" : 2
        : 41
        : 5

        :
        • : 40
        • : 4
        • : 7

        , 5 . 5 * ( ) ."]}],"Name":"booklearn_spell_gray","Caption":" ","Description":[]}],"Name":"shop1","Caption":"","Description":["

        "," ."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/misc/icons/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"krit_blooddrink","Caption":" ","Description":[" 7   3  
        : 2

        :
        • : 6

        , 89HP 7 /107HP 8 /128HP 9 /154HP 10 . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"block_magicshield","Caption":" ","Description":[" 3  

        :
        • : 7

        1 , ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"krit_bloodlust","Caption":" ","Description":[" 2   3  

        :
        • : 7

        . 50 . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"counter_deathwalk","Caption":" ","Description":[" 5

        :
        : 7

        1*(). . 1*() ., 10*() . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"multi_rollback","Caption":"","Description":[" 3 3

        :
        : 7
        : 25
        : 25

        .
        1 ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"block_revenge","Caption":"","Description":[" 5

        :
        : 7

        6* ( ) . ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spirit_survive","Caption":"","Description":[" : 10

        :
        : 7
        : 30

        , .
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"counter_ward","Caption":"","Description":[" 2
        : 3

        :
        : 7
        : 30
        : 20

        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"parry_supreme","Caption":"","Description":[" 3 1

        :
        : 7

        .
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"hit_empower","Caption":" ","Description":[" 3

        :
        : 7

        5* () . ."]}],"Name":"fighter","Caption":" ","Description":[]}],"Name":"shop2","Caption":" ","Description":["

        "," ."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[],"Name":"shop3","Caption":" ","Description":["


        - , . , \"Capital Capital city.

        . . , - src=\"https://img.new-combats.com/i/align50.gif\" Talenor , src=\"https://img.new-combats.com/i/align50.gif\" Cptn src=\"https://img.new-combats.com/i/align50.gif\" Enchanter . , , Capital city. ","

        New! .","

        - 28 . ( ), 24.95 . ( )
        - 55 . ( ), 49.95 . ( )
        - 550 . ( ), 499.55 . ( )

        , , \"\" .

        ","","","","","","","","","









        .

        :
        : +1
        (HP): +10

        +1 , .










        .

        :
        : +2
        (HP): +20

        , - , .









        .

        :
        . . (%): +1
        . (%): +1
        . (%): +1
        : +1
        . (%): +1
        . (%): +1
        . (%): +1
        : +3
        (HP): +30
        . (%): +1
        (%): +1

        HP HP .


        , .. - , 30 .
        \" . \"\".

        . , .

        , - . : , \"\" , , .

        50 ( 1 50) .

        ","","","","","","","


        - -
        (: 1)
        : 0/1
        :
        * *
        :

        50 .

        (: 1)
        : 0/1
        :
        * *
        :




        ","
        , \"\" . , .
        ","
        \" .
        ","
        \" \", , , , .



        "]}],"IsDungeon":false,"Name":"bookshop","Caption":" ","Description":[]}); -underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"page1","Caption":" ","Description":["
        ","

        ...

        ","
        \"

        - [13]. - :
        ","
        ","
        , , , ! . , , , , . , ?

        ?
        , , ?
        , . ( )

        : ","
        ","
        , , , , - , . , , , , .


        , : ","
        ","
        . , , . , .

        : ","
        ","
        , . , , . . , .

        ***

        - , . , . , . .

        ","
        \" \"


        :","
        ","
        , ?

        ?


        , , .


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page2","Caption":" ","Description":["
        ","

        ","

        , , . , [13].
        ","

        ","
        , , , , ... , . , . . .

        : \" \" . \" \".

        :
        ","
        ","
        ","","","","","
        ","","","","","
        (: 1)
        : 0/1
        : 1 .
        :
        .
        Abandoned Plain

        . , , \"\" , E11 . .
        ","
        ","
        ","","","","","
        ","","","","","
        ' ' ' '

        ! . .
        ","
        ","
        , , , ! , ... ! , .

        ***

        \" \"
        0 .

        ","

        , . , .


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page3","Caption":" ","Description":["
        ","

        \" \" "," . .

        "," [4]-[6] .

        :

        ","
        \"


        \"\".

        "," , 1 . : ","
        ","
        \" \" \" ","\".

        . , ",": ","
        ","
        \" \" .

        "," , , ",", \"\". , ...

        ","
        ","
        : , , , , , , , , , . ","
        : , , , , . ","
        ","
        ","
        , , ",".


        :
        "," .
        .
        : . . "," . , . , , "," - , , .
        ","
        ","

        ","\" "," \" . "," .

        :

        ","
        \"


        :
        1 , "," , . , . "," , 3 \" \" , , "," ( ).

        :
        - , "," . , ( "," ). . "," ( ). \"\" .


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page4","Caption":" ","Description":["
        ","




        "," , . , , . "," . , - .

        "," \"\" ",", , .



        - .

        ",", . . ., , "," . . , . , . , + , + hp, "," . /, /. , \"\" .

        :

        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","
        ","
        ","
        ","
        ","
        ","

        [4]
        : +5
        . : +1
        . : +5
        "," : +5
        . : +1
        : +5
        . : +1
        . : +5
        ",": +5
        . : +1
        : +5
        . : +1
        . : +5
        "," : +5
        . : +1
        : +5
        . : +1
        . : +5
        "," : +5
        . : +1
        ","

        [7]
        : +1
        : +10
        . : +3
        . ",": +10
        : +10
        . : +3
        : +1
        : +10
        . : +3
        . : +10
        "," : +10
        . : +3
        : +1
        : +10
        . : +3
        . : ","+10
        : +10
        . : +3
        : +1
        : +10
        . : +3
        . : ","+10
        : +10
        . : +3
        ","

        [9]
        : +2
        : +20
        : +20
        . : +5
        . "," : +20
        : +20
        . : +5
        : +2
        : +20
        : +20
        . : +5
        ",". : +20
        : +20
        . : +5
        : +2
        : +20
        . : +5
        . : ","+20
        : +20
        . : +5
        . : +3
        . . ",": +5
        : +2
        : +20
        . : +5
        . : ","+20
        : +20
        . : +5
        (HP): ","+20




        ",", \"\" . , . "," .

        ","
        ","","","","","","","","","","","
        ","

        https://img.new-combats.com/i/items/rune_super_2.gif

        ","

        (: 1)
        : 0/1
        :
        : 7
        : ","
        : +25
        :

        Abandoned Plain
        ","

        ","

        ","

        (: 1)
        : 0/1
        ",":
        : 7
        :
        : +50
        : ","

        Abandoned ","Plain

        ","

        ","

        (: 1)
        : 0/1
        ",":
        : 7
        :
        . : +5

        ","

        :

        ","Abandoned Plain

        ","

        ","

        (: 1)
        : 0/1
        ",":
        : 7
        :
        : +4
        :
        ","
        Abandoned Plain
        ","

        ","

        ","

        (: 1)
        : 0/1
        ",":
        : 7
        :
        : +4
        :
        ","
        Abandoned Plain
        ","

        ","

        ","

        (: 1)
        : 0/1
        ",":
        : 7
        :
        : +4
        :
        ","

        ","

        Abandoned Plain
        ","

        ","

        ","

        (: 1)
        : 0/1
        :
        : 7
        : ","
        : +4
        :

        Abandoned Plain


        ","



        ","
        ","

        ","

        . , "," . . - ; "," - . , , .

        ",":
        - , ;
        - , ;
        - , ;
        - ",", .

        :
        () - , ;
        () - , ",";
        () - , .

        :
        [] - ;
        [] - ",";
        [] - ;
        [] - ;
        [] - ;
        [] - ;
        [] ","-;
        [] - ;
        [] - ;
        [] - .

        : ","()[] . ()[] - ",".

        by Andre_be ","[10] \"\"




        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page5","Caption":" ","Description":["
        ","


        ?

        ","

        .

        ","

        ","
        , , .
        ","


        ","

        1 . , \" \" .

        ","

        :

        ","


        . 1 ..
        . 2 . , , 1 . . .


        100 \"\" .
        1000 \"\" .



        ?

        . , .

        [4]-[6] .

        [4]-[8] .

        [4]-[10] .



        "]}],"Shops":[],"IsDungeon":false,"Name":"temple","Caption":" ","Description":[]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sl","Level":8,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Сильный критовик. ","Может напасть сама. Боится огненных и водных атак. ","","Использует приёмы: ","\"Регенерация\" - восстанавливает уровень жизни + 25HP. ","","После смерти могут выпасть Рассыпающиеся Царские Серьги. При выходе из подземелья рассыпаются."],"Strength":53,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":30,"BirthPlace":"Devils city"},{"Image":"sl","Level":9,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Сильный критовик. ","Может напасть сама. Боится огненных и водных атак. ","","Использует приёмы: ","\"Регенерация\" - восстанавливает уровень жизни + 35HP. ","\"Ярость\"","","После смерти могут выпасть Рассыпающиеся Царские Серьги. При выходе из подземелья рассыпаются."],"Strength":55,"Dexterity":30,"Intuition":55,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":60,"BirthPlace":"Devils city"}],"Name":"sl","Caption":"Слизь","Description":[]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Семейство Зомби. Использует 1 удар и 2 зоны блока. Каждый вид Зомби, помимо приема \"Ярость\", использует свои приемы. Приемы могут использоваться до 5 раз на одну цель. ","","Окоченелый Зомби: \"Стылое Касание\" - понижает статы противника (Ловкость: -40). ","Зубастый Зомби: \"Ядовитый Укус\" - мгновенно отравляет противника. Отравление длится от 2-х до 4-х ходов, нанося 30-70 ед урона каждый ход. ","Голодный Зомби: \"Проклятье голодного мертвеца\" - понижает статы противника (Сила: -20, Интуиция: -20, Ловкость: -20). ","Живучий Зомби: \"Регенерация\" - восстанавливает уровень жизни +180НР. ","Загадочный Зомби: \"Ошеломить\" - понижает статы противника (Интуиция: -40). ","Жирный Зомби [2700HP] не имеет своих приемов. ","Древний Зомби: \"Сильный удар\" ","Каменный Зомби [2000HP] не имеет своих приемов. ","","После смерти может выпасть предмет из комплекта \"Решимости\". "],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":1800,"Reward":45,"BirthPlace":"Катакомбы"},{"Image":"kz","Level":10,"Align":"0","Tag":"hp2000","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":100,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"kz","Level":10,"Align":"0","Tag":"hp2700","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2700,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"kza","Level":10,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","\"\"Семейство Зомби. Использует 1 удар и 2 зоны блока. Каждый вид Зомби, помимо приема \"Ярость\", использует свои приемы. Приемы могут использоваться до 5 раз на одну цель. ","","Окоченелый Зомби: \"Стылое Касание\" - понижает статы противника (Ловкость: -40). ","Зубастый Зомби: \"Ядовитый Укус\" - мгновенно отравляет противника. Отравление длится от 2-х до 4-х ходов, нанося 30-70 ед урона каждый ход. ","Голодный Зомби [2160HP или 2880HP]: \"Проклятье голодного мертвеца\" - понижает статы противника (Сила: -20, Интуиция: -20, Ловкость: -20). ","Живучий Зомби [2160HP или 2880HP]: \"Регенерация\" - восстанавливает уровень жизни +216НР (сильная марка восстанавливает +288HP). ","Загадочный Зомби: \"Ошеломить\" - понижает статы противника (Интуиция: -40). ","Жирный Зомби [3060HP] не имеет своих приемов. ","Древний Зомби [2340HP или 2700HP]: \"Сильный удар\" ","Каменный Зомби [2360HP] не имеет своих приемов. ","","После смерти может выпасть предмет из комплекта \"Решимости\". "],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2160,"Reward":0,"BirthPlace":"Катакомбы"}],"Name":"zm","Caption":"Зомби","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1074_qu1639458937.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"проклы","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":90,"BirthPlace":"Катакомбы"},{"Image":"proka","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1100,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1200","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1300","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1300,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1400","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"proka","Level":10,"Align":"9","Tag":"hp1600","Move":false,"Description":[],"Strength":50,"Dexterity":240,"Intuition":75,"Endurance":60,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":0,"BirthPlace":"Катакомбы"}],"Name":"prokl","Caption":"Проклятый","Description":["Общая информация:","Семейство Проклятых. Использует 2 удара и 2 зоны блока. ","Каждый вид Проклятых использует свои приемы. ","","Проклятый Оруженосец:\"Ярость\"","Проклятый Страж:\"Ярость\"","Проклятый Убийца:\"Ярость\", \"Удар Убийцы\" - аналог приема \"Сокрушающий удар\"","Проклятый Пламеносец: \"Ярость\"","Проклятый Скиталец: \"Ярость\", \"Полная защита\"","Проклятый Защитник: \"Ярость\",\"Абсолютная защита\", \"Активная защита\"","","После смерти может выпасть предмет из комплекта \"Решимости\".","","У \"\"марочных ботов уровень жизни варьируется. Интервал составляет 100HP. Оруженосцы, Убийцы, Пламеносцы, Скитальцы, Защитники имеют от 1100HP до 1400HP, а Стражи от 1300HP до 1600HP."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":45,"BirthPlace":"Катакомбы"}],"Name":"bzomb","Caption":"Бродячий Зомби","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. Очень часты дробящие атаки.","Может напасть первым.","","Использует приёмы: "," \"Проклятье бродячего мертвеца\" - понижает статы противника (Интуиция: -25, Ловкость: -25), может использовать до 2-ух раз на одну цель.","","После смерти может выпасть предмет из комплекта \"Решимости\"."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1005.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"обычный","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":8000,"Reward":150,"BirthPlace":"Катакомбы"},{"Image":"drsa","Level":10,"Align":"9","Tag":"марка","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":8800,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"drsa","Level":10,"Align":"9","Tag":"марка 10к нр","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":105,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":10400,"Reward":0,"BirthPlace":"Катакомбы"}],"Name":"drstr","Caption":"Древний Страж","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийгые атаки: огнем.","","Использует приёмы: ","\"Пламенная Вспышка\" - наносит моментальный урон огнём по всем членам команды.","\"Стойкость\" ","","После смерти может выпасть Кольцо Бушующего Пламени, предмет из комплекта \"Решимости\", вещь для 7-го уровня или ингредиент."]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":25,"Intuition":25,"Endurance":70,"Intellect":10,"Wisdom":0,"HitPoints":1501,"Reward":350,"BirthPlace":"Катакомбы"}],"Name":"brsk","Caption":"Берсерк","Description":["Общая информация:","Использует двуручный молот, 2 зоны блока. ","","Использует приёмы: ","\"Раздробить череп\" - аналог \"Точного удара\".","\"Удачный удар\"","\"Регенерация\" - восстанавливает свой уровень жизни +75 НР.","\"Ярость\"","","После смерти может выпасть Эликсир Восстановления( 300% НР), Молот Забытых Времен (мф) или Испортившийся Эликсир."]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":8,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":500,"BirthPlace":"Devils city"}],"Name":"zsl","Caption":"Зубастая Слизь","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Сильный критовик. ","Может напасть первой. Боится огненный и водных атак.","","Использует приёмы: ","\"Регенерация\" - восстанавливает свой уровень жизни +50 HP.","\"Кислотный Плевок\" - наносит моментальный удар в 100-800 ед. урона.","\"Хлебнуть Крови\""]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":9,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":35,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":500,"BirthPlace":"Катакомбы"}],"Name":"hsl","Caption":"Хищная Слизь","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Сильный критовик. ","Не нападает. Боится огненных и водных атак.","","Использует приёмы: ","\"Регенерация\" - восстанавливает свой уровнь жизни +75НР.","\"Поцелуй Слизи\" - (Защита от урона: -100), может использовать до 5 раз.","\"Кислотный Плевок\" - наносит моментальный удар в 100 - 800 ед. урона.","\"Воля к победе\"","\"Удачный удар\"","\"Ярость\""]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1031_jw3759278305.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":20,"Dexterity":65,"Intuition":33,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":700,"BirthPlace":"Катакомбы"}],"Name":"chkng","Caption":"Чернокнижник","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. Кроме обычных ударов использует магию.","","Использует приёмы: ","\"Выпить Душу\" - восстанавливает свой уровень жизни, взаимствуя здоровье у противника. Действует 3 хода. ","\"Проклятье Тьмы\" - (Сила: -5, Защита от магии: -50, Интуиция: -5, Ловкость: -5)","\"Касание Тьмы\" - наносит моментальный урон магией.","\"Ярость\"","\"Стойкость\"","","После смерти может выпасть Кольцо Северного Ветра, Кольцо Бушующего Пламени, предмет из комплекта \"Решимости\" или свиток Иссушение -3."]},{"SmImg":"sba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"sb","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":100,"Intuition":55,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":700,"BirthPlace":"Катакомбы"}],"Name":"ep","Caption":"Епископ","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: светом.","","Использует приёмы: ","\"Лечение\" - восстанавливает свой уровень жизни +300 HP, может использовать несколько раз за бой.","\"Святая Ярость\" - (Защита от магии: -125, Защита от урона: -125).","\"Праведный гнев\" - в течении одного хода, все члены команды, находящиеся в бою, наносят удары друг по другу. Если бой 1 на 1 то приём действует как \"Коварный уход\".","\"Обреченность\" ","\"Активная защита\"","\"Ярость\"","","После смерти может выпасть Кольцо Северного Ветра, Кольцо Бушующего Пламени, Жажда Жизни +3.","","*Необходимо убить для работы Подозрительной трещины на клетке J2"]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1032_tp9475823958.png","Instances":[{"Image":"","Level":8,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1350,"Reward":350,"BirthPlace":"Катакомбы"}],"Name":"og","Caption":"Офицер Глубин","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: тьмой. ","","Использует приёмы:","\"Эликсир Лечения\" - воcстанавливает свой уровень жизни +500 HP.","\"Сонный яд\" (Сила: -7, Интуиция: -7, Ловкость: -7). Может использовать до 5 раз на одну цель.","\"Шокирующий удар\"","\"Танец лезвий\"","\"Ярость\"","","После смерти может выпасть Кольцо Бликов (мф)."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1050_pq6472859128.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":60,"Dexterity":30,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":900,"Reward":60,"BirthPlace":"Катакомбы"}],"Name":"pp","Caption":"Пожиратель Падали","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","Может напасть первым. Боится огненных и водных атак. Сильный крит. ","","Использует приемы: ","\"Парализующий Укус\" - парализует действия противника, действует 100 ходов. Прием использует один раз за бой, обычно не первого вошедшего.","\"Ярость\"","","После смерти может выпасть предмет из комплекта \"Решимости\"."]},{"SmImg":"btm","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"марка","Move":false,"Description":[],"Strength":75,"Dexterity":25,"Intuition":25,"Endurance":55,"Intellect":10,"Wisdom":0,"HitPoints":3400,"Reward":0,"BirthPlace":"Катакомбы"},{"Image":"btmb","Level":9,"Align":"3","Tag":"тёмный","Move":false,"Description":[],"Strength":75,"Dexterity":25,"Intuition":25,"Endurance":55,"Intellect":10,"Wisdom":0,"HitPoints":1700,"Reward":0,"BirthPlace":"Катакомбы"}],"Name":"stglb","Caption":"Страж глубин","Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Оружие: двуручный молот. Практически не пропускает критические удары."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1082_9dh7ka.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":120,"Dexterity":30,"Intuition":30,"Endurance":45,"Intellect":0,"Wisdom":0,"HitPoints":5000,"Reward":800,"BirthPlace":"Катакомбы"}],"Name":"trp","Caption":"Трупожор","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приемы: ","\"Пришпилить\" - (Мф. против критического удара (%): -500, Мф. увертывания (%): -1000), действует 3 минуты, можно переждать. Оглушает противника лишая его возможности использовать приемы и набирать очки тактики на три хода.","\"Гнилое Дыхание\" - (защита урона -50, Уровень жизни (HP): -10%), может использовать до 5 раз.","\"Сожрать\" - восстанавливает свой уровнь жизни за счет умершего в бою (кол-во восстановленных HP равно кол-ву HP жертвы на момент смерти).","\"Искалечить\"","\"Удачный удар\"","\"Ярость\"","","После смерти может выпасть свиток Зачарования, предмет из комплекта \"Решимости\" или ингредиент."]},{"SmImg":"prpa","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1001.png","Instances":[{"Image":"prpa","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":75,"Intuition":40,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":800,"BirthPlace":"Катакомбы"}],"Name":"plen","Caption":"Проклятый Пленник","Description":["Общая информация:","Маг. За ход - 2 зоны блока. ","","Использует приёмы: ","\"Теневой Двойник\" - cоздает клона противника, который вмешивается за Проклятого Пленника.","\"Медленный Взрыв\" - наносит 600 урона магией тьмы по всем противникам через 1 минуту или 1 ход цели. Можно переждать, тем самым избежав урона.","\"Выявить Грехи\" - восстанавливает свой уровень жизни, взаимствуя здоровье у противника. ","\"Слово Боли\" - наносит моментальный урон.","","После смерти может выпасть свиток Зачарования или ингредиент."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1076_nu1697563487.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":120,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":800,"BirthPlace":"Катакомбы"}],"Name":"shtpvl","Caption":"Шут Повелителя","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. Сильный уворотчик. Кроме обычных ударов использует магию.","","Использует приёмы: ","\"Украсть Душу\" - крадет активные приемы противника. Восстанавливает свой уровень жизни, воруя все НP у противника, оставляя жертве 1HP. Прием вешается на противника, выставившего удар, в момент, когда у Шута остается 33% HP, в это время рекомендуется выпускать зверей. Действие приема может быть заблокировано приемами \"Полная защита\", \"Магическая защита\" или его можно \"Отменить\".","\"Честная игра\" - отменяет действие всех эффектов на жертве (снимаются все усиления, ослабления, бонусы от зверей, проклятья/благословения с алтарей, не снимается только действие эликсиров). Действует в течении боя.","\"Шокирующий Удар\"","\"Ярость\"","\"Стойкость\"","","После смерти может выпасть свиток Зачарования, предмет из комплекта \"Решимости\" или ингредиент."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1015.png","Instances":[{"Image":"","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":180,"Intuition":225,"Endurance":240,"Intellect":0,"Wisdom":0,"HitPoints":10000,"Reward":1750,"BirthPlace":"Катакомбы"}],"Name":"pvlt","Caption":"Повелитель","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Нападает, если наступить на ловушки на клетках C3, B3.","","В ходе боя имеет 4 состояния: ","1.\"Стремительность\". (Мф. против критического удара (%): +250, Выносливость: +15, Интуиция: +30, Ловкость: +60, Мф. против увертывания (%): +250, Мф. увертывания (%): +100),","2.\"Смертоносность\". (Мф. против критического удара (%): +100, Сила: +30, Мф. критического удара (%): +300, Интуиция: +60, Ловкость: +15, Мф. увертывания (%): -400), ","3.\"Стойкость\". (Мф. против критического удара (%): +300, Сила: +30, Выносливость: +60, Интуиция: +15, Защита от урона: +50, Мф. увертывания (%): -400),","4.\"Равновесие\". (Мф. против критического удара (%): +500, Сила: +40, Выносливость: +40, Интуиция: +40, Ловкость: +40, Мф. увертывания (%): -250).","Во время действия приёма \"Стойкость\"у Повелителя появляется дополнительный блок. ","","Использует приёмы:","\"Удачный Удар\"","\"Полная Защита\"","\"Хлебнуть Крови\"","\"Обреченность\"","\"Превосходство\"","\"Второе Дыхание\"","\"Стойкость\"","\"Ярость\"","","После смерти может выпасть Броня Повелителя, Меч Повелителя или ингредиент."]}],"Objects":[{"SmImg":"teleport05","ImageUrl":"https://img.new-combats.com/i/objects/teleport05.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B1","Name":"orangeteleport","Caption":"Портал Епископа","Description":["Имея при себе Камень Портала Епископа, можно попасть сразу на третий этаж.","Вы окажетесь на клетке B1 третьего этажа."]}],"Name":"orangeteleport","Caption":"Оранжевый телепорт","Description":[]},{"SmImg":"teleport07","ImageUrl":"https://img.new-combats.com/i/objects/teleport07.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.4","ClickPoint":"K9","Name":"violetteleport1","Caption":"Портал Шута","Description":["Имея при себе Камень Портала Шута, можно попасть сразу на четвертый этаж.","Вы окажетесь на клетке K9 четвертого этажа."]}],"Name":"violetteleport","Caption":"Фиолетовый телепорт","Description":[]},{"SmImg":"well02","ImageUrl":"https://img.new-combats.com/i/objects/well02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain1","Caption":"Фонтан Призрачного ума","Description":["Можно наполнить пустую бутылку Снадобьем Разума или Снадобьем Предчувствия. Но смогут это сделать лишь два человека из команды.","При выходе из подземелья, эликсир пропадает.","","В фонтане можно получить Мистическое Кольцо Алтаря за 'Кольцо Алтаря, Эссенция Разума'. Важно: Вы должны быть среди первых двух счастливчиков, которые кликнут на фонтан и у вас не должно быть при себе пустых бутылок, иначе вы просто получите эликсир."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"well03","Caption":"Фонтан Призрачной силы","Description":["Можно наполнить пустую бутылку Снадобьем Великана или Снадобьем Змеи. Но смогут это сделать лишь два человека из команды.","При выходе из подземелья, эликсир пропадает.","","В фонтане можно получить Воинское Кольцо Алтаря за 'Кольцо Алтаря, Эссенция Силы'. Важно: Вы должны быть среди первых двух счастливчиков, которые кликнут на фонтан и у вас не должно быть при себе пустых бутылок, иначе вы просто получите эликсир.",""]}],"Name":"well05","Caption":"Фонтан","Description":[]},{"SmImg":"well07","ImageUrl":"https://img.new-combats.com/i/objects/well07.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain7","Caption":"Фонтан Воспоминаний","Description":["Дотронувшись, можно получить бонус:(Восстановление HP (%): +80).","","Но в 99% случаев, напоровшись на опасную ловушку, выпьете яда:","\"Грязная Кровь\" -(Восстановление HP(%):-80)","\"Грязная Кровь х2\" -(Восстановление HP(%):-160)","\"Грязная Кровь х3\" -(Восстановление HP(%):-240)","\"Грязная Кровь х4\" -(Восстановление HP(%):-320)","\"Грязная Кровь х5\" - (Восстановление HP(%)-400)","","Длительность эффекта -3 часа.",""]}],"Name":"fountain7","Caption":"Фонтан 7","Description":[]},{"SmImg":"smag_collect1_4","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_41","Caption":"Сундук","Description":["В сундуке вы найдете свиток Зачарования.","Сундук может \"открыть\" лишь один человек из команды. Свиток разыгрывается."]}],"Name":"sunduk_4","Caption":"темный сундук","Description":[]},{"SmImg":"kamen1","ImageUrl":"https://img.new-combats.com/i/objects/kamen1.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kamen1","Caption":"Камень","Description":["Под камней можно найти: Бутерброд, Снадобье Разума, Снадобье Великана, Снадобье Змеи, Снадобье Предчуствия, Испортившийся эликсир или пустую бутылку.","Под камнем может \"поискать\" лишь один человек из команды."]}],"Name":"kamen1","Caption":"Камень 1","Description":[]},{"SmImg":"drain_bottom","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":1,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"B2","Name":"drain1","Caption":"Ржавый водосток","Description":["Спуск на второй этаж. ","Для того что бы спуститься, необходимо нажать на решетку.","Вы окажетесь на клетке B2 второго этажа."]}],"Name":"drain_lowering","Caption":"Водосток - спуск","Description":[]},{"SmImg":"proboina2","ImageUrl":"https://img.new-combats.com/i/objects/proboina2.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B20","Name":"proboina2","Caption":"Подозрительная трещина","Description":["Как только вы шагнете на эту клетку - вы провалитесь на третий этаж.","Вы окажетесь на клетке B20 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"M11","Name":"proboina21","Caption":"Подозрительная трещина","Description":["Как только вы шагнете на эту клетку - вы провалитесь на второй этаж.","Вы окажетесь на клетке M11 второго этажа."]}],"Name":"proboina2","Caption":"Пробоина 2","Description":[]},{"SmImg":"throne01","ImageUrl":"https://img.new-combats.com/i/objects/throne01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"throne11","Caption":"Трон Повелителя","Description":["Не сесть..."]}],"Name":"throne1","Caption":"Трон","Description":[]},{"SmImg":"landslip01","ImageUrl":"https://img.new-combats.com/i/objects/2/landslip01.png","Rotate":false,"Importance":1,"BW":126,"BH":87,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"landslip11","Caption":"Завал","Description":["Похоже кто-то взорвал проход. Тут не пройти..."]}],"Name":"landslip1","Caption":"Завал","Description":[]},{"SmImg":"skelet1","ImageUrl":"https://img.new-combats.com/i/objects/skelet1.png","Rotate":false,"Importance":1,"BW":120,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"skelet11","Caption":"Истлевший скелет","Description":["Ловушка, способная отнять до 1000 HP.","В этих останках можно найти Рассыпающийся рарный шмот. Но подумайте, стоит ли он того?!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"skelet12","Caption":"Истлевший скелет","Description":["Говорят, что если не наступать, а нажать на него, то можно найти Рассыпающийся рарный шмот. "]}],"Name":"skelet1","Caption":"Скелет","Description":[]},{"SmImg":"kk_stone_3_4","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_3_4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_3_4","Caption":"Камень Портала Шута","Description":["С помощью этого камня, воспользовавшись Порталом Шута (первый этаж, клетка Q9), можно попасть сразу на 4 этаж. ","Вы окажетесь в клетке K9 четвертого этажа.","При входе в портал, камень исчезнет."]}],"Name":"kk_stone_3_4","Caption":"Камень Портала Шута","Description":[]},{"SmImg":"kk_stone_2_3e","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_2_3e.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_2_3e","Caption":"Камень Портала Епископа","Description":["С помощью этого камня, воспользовавшись Порталом Епископа (первый этаж, клетка O9), можно попасть сразу на 3 этаж. ","Вы окажетесь в клетке B1 третьего этажа.","При входе в портал, камень исчезнет."]}],"Name":"kk_stone_2_3e","Caption":"Камень Портала Епископа","Description":[]},{"SmImg":"kk_stone_2_3ch","ImageUrl":"https://img.new-combats.com/i/objects/kk_stone_2_3ch.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kk_stone_2_3ch","Caption":"Камень Портала Чернокнижника","Description":["С помощью этого камня, воспользовавшись Порталом Чернокнижника (первый этаж, клетка P10), можно попасть сразу на 3 этаж. ","Вы окажетесь в клетке B20 третьего этажа.","При входе в портал, камень исчезнет."]}],"Name":"kk_stone_2_3ch","Caption":"Камень Портала Чернокнижника","Description":[]},{"SmImg":"stat1","ImageUrl":"https://img.new-combats.com/i/objects/stat1.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat1","Caption":"Статуя Трупожора","Description":["Статуя."]}],"Name":"stat1","Caption":"Статуя Трупожора","Description":[]},{"SmImg":"stat2","ImageUrl":"https://img.new-combats.com/i/objects/stat2.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat2","Caption":"Статуя","Description":["Статуя."]}],"Name":"stat2","Caption":"Сатуя 2","Description":[]},{"SmImg":"stat3","ImageUrl":"https://img.new-combats.com/i/objects/stat3.png","Rotate":false,"Importance":1,"BW":60,"BH":105,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"stat3","Caption":"Статуя","Description":["Статуя."]}],"Name":"stat3","Caption":"Статуя 3","Description":[]},{"SmImg":"barrikada","ImageUrl":"https://img.new-combats.com/i/objects/barrikada.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"barrikada","Caption":"Баррикада","Description":["Большая, ни чем не примечательная куча всяческого металлолома. "]}],"Name":"barrikada","Caption":"Баррикада","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1025_zh2021090523.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":"Бездна"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":60,"Endurance":30,"Intellect":5,"Wisdom":0,"HitPoints":650,"Reward":25,"BirthPlace":"Бездна"}],"Name":"rg","Caption":"Рубака Глубин","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой","Практически не пропускает критические удары."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1024_kv8409230530.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой.","Чистый уворотчик."],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":10,"BirthPlace":"Бездна"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: нет.","Чистый уворотчик, часто пробивает броню."],"Strength":50,"Dexterity":50,"Intuition":20,"Endurance":30,"Intellect":10,"Wisdom":0,"HitPoints":600,"Reward":25,"BirthPlace":"Бездна"}],"Name":"ng","Caption":"Надзиратель Глубин","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1026_vh8728572092.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Наносит дробящий урон."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":5,"BirthPlace":"Бездна"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Критовик."],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":"Бездна"}],"Name":"lit","Caption":"Литейщик","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1028_mm0939431234.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":12,"BirthPlace":"Бездна"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":30,"BirthPlace":"Бездна"},{"Image":"sga","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":"Бездна"}],"Name":"sg","Caption":"Служитель Глубин","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Кроме обычных ударов использует магию. Может критовать.","","Используемые приёмы: ","\"Проклятье Бездны\" - наносит урон магией тьмы.","\"Воля к Победе\""]}],"Objects":[{"SmImg":"chalice01","ImageUrl":"https://img.new-combats.com/i/objects/chalice01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"сhalice1","Caption":"Фонтан Снадобья Разума","Description":["Можно получить Снадобье Разума.","Для работы необходимо убить 2 группы монтров в логове.","Снадобье получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"сhalice2","Caption":"Купель","Description":["Можно получить Сыворотку.","Полезная, надо сказать, вещь. Исцелит вас от болезней, которые можно подцепить в кучах мусора.","Получает один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"сhalice3","Caption":"Купель","Description":["Можно получить Антидот.","Полезная, надо сказать, вещь. Исцелит вас от яда, которым можно отравиться, шаря по кучам мусора.","Получает один человек из команды."]}],"Name":"chalice","Caption":"Купель","Description":[]},{"SmImg":"bed","ImageUrl":"https://img.new-combats.com/i/objects/bed01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed1","Caption":"Кровать","Description":["В кровати можно найти множество интересных вещичек: пустую бутылку, испортившийся эликсир, Снадобье Великана, Снадобье Змеи, Снадобье Предчувствия, Снадобье Разума, а так же: Мерцающий ключ №3 или Пропуск Забытых."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed2","Caption":"Кровать","Description":["Пусто..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"bed3","Caption":"Кровать","Description":["В отличии от других кроватей этого подземелья, в этой, можно найти множество интересных вещичек: пустую бутылку, испортившийся эликсир, Снадобье Великана, Снадобье Змеи, Снадобье Предчувствия, Снадобье Разума или Пропуск Забытых."]}],"Name":"bed","Caption":"Кровать","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":35,"BirthPlace":"Бездна"}],"Name":"sb","Caption":"Служитель Бездны","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Кроме обычных ударов использует магию.","","Использует приёмы: ","\"Проклятье Бездны\" - наносит урон магией тьмы.","\"Аура Святости\" - аналог приема \"Призрачная Защита\".","\"Камнепад\" - наносит урон магией земли. Урон наносится по всей команде.","\"Воля к победе\" - восстанавливает свой уровень жизни + 45HP.","\"Стойкость\""]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1425,"Reward":0,"BirthPlace":"Бездна"}],"Name":"btm","Caption":"Большой Тяжёлый Молот","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. Сильный крит.","","Использует приёмы: :","\"Активная защита\"","\"Удачный удар\"","\"Стойкость\"","\"Ярость\""]},{"SmImg":"sk","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1020_vf3369140625.png","Instances":[{"Image":"sk","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":20,"Intuition":60,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":"Бездна"}],"Name":"sd","Caption":"Страж Дайтон","Description":["Общая информация:","Использует 5 ударов и 2 зоны блока","Хорошо выносится уворотчиками. ","","Использует приёмы: ","\"Удар правым жвалом\" - аналог приема \"Скрытая Сила\".","\"Удачный удар\"","\"Скрытая ловкость\"","\"Ярость\"","\"Коварный уход\"","\"Воля к победе\" - восстанавливает свой уровень жизни +45HP.","","После смерти может выпасть Кольцо Бликов (мф)."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1060_ms8259273602.png","Instances":[{"Image":"","Level":12,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":100,"Intuition":150,"Endurance":200,"Intellect":0,"Wisdom":0,"HitPoints":4500,"Reward":0,"BirthPlace":"Бездна"}],"Name":"kg","Caption":"Кошмар Глубин","Description":["Общая информация:","Использует 2 удара и 2 зоны блока.","Крито-осадник с сильным дробящим уроном.","","Использует приёмы: ","\"Удар Хвостом\" - наносит моментальный урон.","\"Подставить лоб\" - аналог приема \"Полная Защита\".","\"Раздавить\" - аналог приема \"Скрытая Сила\".","\"Стойкость\"","\"Ярость\"","","После смерти может выпасть Амулет Забытых Времён (мф)."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1027_er8653875623.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":"Бездна"}],"Name":"gjs","Caption":"Гарл Йонни Салистон","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. Здоровяк-критовик с большим уроном.","","Использует приёмы: ","\"Хлебнуть Крови\"","\"Стойкость\"","\"Ярость\"","\"Слепая Удача\"","\"Воля к победе\" - восстанавливает свой уровень жизни +45HP.","","После смерти может выпасть Меч Кровавой Луны (мф)(+5 интуиции). "]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/10015.png","Instances":[{"Image":"olgrta","Level":10,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":90,"Intellect":0,"Wisdom":0,"HitPoints":10000,"Reward":0,"BirthPlace":"Бездна"}],"Name":"olgvirt","Caption":"Ольгерт Вирт","Description":["Общая информация:","Использует 1 удар и 3 зоны блока. ","","Использует приёмы: ","\"Отрицание Силы\" - аналог заклятья Неуязвимость оружию. Использует в начале боя если бой начат воином.","\"Отрицание Слова\" - аналог заклятья Неуязвимость стихиям. Использует в начале боя если бой начат магом.","\"Сильный удар\"","\"Активная защита\"","\"Обречённость\"","\"Ошеломить\"","\"Стойкость\"","\"Ярость\"","\"Усталость\" - с каждым потеряным 1%НР усталость увеличивается на 1% . Из-за усталости урон снижается, максимум до 33%. Начинает действовать при достижении 85%НР.","\"Последняя Воля\" - \"Сгинуть вместе с врагами\" . Прием на 8-10 зарядов. У команды остаётся 8 или 10 ходов чтоб убить его, иначе он убьёт всех вместе с собой. Используется в конце боя."]}],"Objects":[{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest1","Caption":"Сундук","Description":["В сундуке можно найти Мерцающий ключ №3 или чек на 5 кр. Могут \"открыть\" два человека из команды."]}],"Name":"chest1_blendy","Caption":"Сундук 1, бледный","Description":[]},{"SmImg":"chest03","ImageUrl":"https://img.new-combats.com/i/objects/chest03.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest31","Caption":"Сундук - Ловушка","Description":["Сундук с ловушкой... Ловушка снимается при первом нажатии.","Скорее всего он пуст, но если повезёт, то в сундуке можно найти Сущность кольца.","Может \"открыть\" один человек из команды. "]}],"Name":"chest3_bledny","Caption":"Сундук 3, бледный","Description":[]},{"SmImg":"duffer","ImageUrl":"https://img.new-combats.com/i/objects/2/duffer.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer1","Caption":"Выбоина","Description":["В выбоине можно найти: Сталь, Мифрил, Пустые бутылки. Но будьте осторожны - можно напороться на опасную ловушку."]}],"Name":"duffer","Caption":"Выбоина","Description":[]},{"SmImg":"duffer","ImageUrl":"https://img.new-combats.com/i/objects/2/duffer.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer21","Caption":"Выбоина","Description":["Дойдя до стенки и развернувшись на восток, вы увидите выбоину. Нажав на неё, вы попадёте в Завал, клетка K4. Для прохода необходимо иметь Линзу Портала."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer22","Caption":"Выбоина","Description":["Выход из Завала. Нажав на выбоину, вы окажетесь на клетке K5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"duffer23","Caption":"Выбоина","Description":["Выход из Завала. Нажав на выбоину, вы окажетесь на клетке K3."]}],"Name":"duffer2","Caption":"Выбоина - телепорт","Description":[]},{"SmImg":"kamen","ImageUrl":"https://img.new-combats.com/i/objects/kamen.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"kamen","Caption":"Камень","Description":["На камне растёт Подгорный Эдельвейс. Этот цветок необходим для получения звания рыцаря Бездны. "]}],"Name":"kamen","Caption":"Камень","Description":[]},{"SmImg":"pot","ImageUrl":"https://img.new-combats.com/i/objects/boiler01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"boiler1","Caption":"Котел","Description":["Прикоснувшись к котлу, можно получить смертельную рану...","Но игра стоит свеч, в котле можно найти Сущность Щита."]}],"Name":"boiler","Caption":"Котел","Description":[]},{"SmImg":"vagon","ImageUrl":"https://img.new-combats.com/i/objects/lorry01.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lorry1","Caption":"Тележка","Description":["Пусто..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lorry2","Caption":"Тележка","Description":["В тележке можно найти Серебро или Лучистое cеребро."]}],"Name":"lorry","Caption":"Тележка","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pg","Level":6,"Align":"0","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй."],"Strength":30,"Dexterity":20,"Intuition":20,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":250,"Reward":2,"BirthPlace":"Бездна"},{"Image":"pg","Level":7,"Align":"0","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Критует.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":6,"BirthPlace":"Бездна"},{"Image":"pga","Level":7,"Align":"9","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Критует.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":0,"BirthPlace":"Бездна"},{"Image":"pg","Level":8,"Align":"0","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":9,"BirthPlace":"Бездна"},{"Image":"pg","Level":9,"Align":"0","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":20,"BirthPlace":"Бездна"},{"Image":"pga","Level":9,"Align":"9","Tag":"кэп","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":"Бездна"},{"Image":"pg","Level":8,"Align":"0","Tag":"ангел","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Живет в своем логове, из него не выходит. Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":0,"BirthPlace":"Бездна"}],"Name":"pg","Caption":"Проклятие Глубин","Description":[]}],"Objects":[{"SmImg":"arrow3","ImageUrl":"/i/ugobj/arrow3.gif","Rotate":false,"Importance":1,"BW":23,"BH":38,"ML":9,"MT":1,"MW":23,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":"Односторонний проход","Description":["Односторонний проход - можно пройти только в указанном направлении. В обратном направлении прохода нет."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"H1","Name":"arrow2","Caption":"Проход на четвертый этаж","Description":["Сделав шаг на север, вы окажетесь на четвертом этаже. ","Проход работает в обе стороны."]}],"Name":"arrowdown","Caption":"Стелка (вниз)","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"pg","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pg","Level":7,"Align":"0","Tag":"санд","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Критует.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":40,"Dexterity":15,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":6,"BirthPlace":"Бездна"},{"Image":"pg","Level":8,"Align":"0","Tag":"санд","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":10,"BirthPlace":"Бездна"},{"Image":"pg","Level":9,"Align":"0","Tag":"санд","Move":true,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым. Воскресает через полчаса/час после смерти.","Обладает толстой бронёй. Осадник.","","Хорошо убивается уворотчиками, осадой и зарёй."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":25,"BirthPlace":"Бездна"}],"Name":"pg_sand","Caption":"Проклятие Глубин","Description":[]},{"SmImg":"sba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1029_rr2385923954.png","Instances":[{"Image":"sba","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":100,"Intuition":55,"Endurance":30,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":""}],"Name":"krpt","Caption":"Краппт","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: светом. ","","Использует приёмы: ","\"Удачный удар\"","\"Праведный гнев\" - аналог приема \"Коварный уход\".","\"Медленный Взрыв\" - наносит 600 урона магией по всем противникам через 1 минуту или 1 ход цели. Можно переждать, тем самым избежав урона.","\"Святая Ярость\" - (Защита от урона: -125, Защита от магии: -125).","\"Обречённость\"","\"Удачный удар\"","\"Ярость\"","","После смерти может выпасть Эссенция, Cтихиалия или Ралиэль."]},{"SmImg":"strmgl","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1003.png","Instances":[{"Image":"strmgl","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1900,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"strkl","Caption":"Сторож Кладовой","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём. ","","Использует приёмы: ","\"Активная защита\"","\"Удар Убийцы\" - аналог приема\"Сокрушающий удар\"","\"Сильный удар\"","\"Ярость\""]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":25,"Intuition":25,"Endurance":70,"Intellect":0,"Wisdom":0,"HitPoints":1501,"Reward":0,"BirthPlace":""}],"Name":"hroch","Caption":"Хранитель Очага","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приёмы: ","\"Активная защита\"","\"Ярость\"","\"Удачный удар\""]},{"SmImg":"btma","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1030_ve5235342848.png","Instances":[{"Image":"btma","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":60,"Endurance":30,"Intellect":5,"Wisdom":0,"HitPoints":1950,"Reward":0,"BirthPlace":"Пещеры Мглы"}],"Name":"rh","Caption":"Рульф Хрумпт","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","","Использует приёмы: ","\"Активная защита\"","\"Удачный удар\"","\"Стойкость\"","\"Ярость\"","","После смерти может выпасть Мешок Забытых Времён."]}],"Objects":[{"SmImg":"key2","ImageUrl":"https://img.new-combats.com/i/objects/Key22.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key2_21","Caption":"Отворяющая печать №2","Description":["Можно взять, убив марочного Смотрителя Мглы на клетке D11."]}],"Name":"key2_2","Caption":"Отворяющая печать №2","Description":[]},{"SmImg":"sar2","ImageUrl":"https://img.new-combats.com/i/objects/2/sar2.png","Rotate":false,"Importance":1,"BW":63,"BH":52,"ML":7,"MT":12,"MW":26,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sar21","Caption":"Загадочное отверстие","Description":["Выход на поверхность. Выйдя через него, Вы сможете сразу же посетить подземелье вновь.","Необходим Мерцающий ключ №3. ","Ключ можно поднять на клетке J4 второго этажа, или получить после смерти Заблудшей Души."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.4","ClickPoint":"D11","Name":"sar22","Caption":"Загадочное отверстие","Description":["Спуск на четвертый этаж.","Воспользовавшись этим спуском, вы окажетесь на клетке D11 четвертого этажа."]}],"Name":"sar2","Caption":"Загадочное отверстие","Description":[]},{"SmImg":"sign1","ImageUrl":"https://img.new-combats.com/i/objects/2/sign1.png","Rotate":false,"Importance":0,"BW":67,"BH":45,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sign11","Caption":"Указатель","Description":["Кладовая - направо, лаборатория - налево."]}],"Name":"sign1","Caption":"Указатель","Description":[]},{"SmImg":"strslpr","ImageUrl":"/i/ugobj/strslprbig.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"strslpr1","Caption":"Слитки Железной и Пустынной руды","Description":["Каждый человек из команды может взять два слитка Стали и два Слитка пустынной руды."]}],"Name":"strslpr","Caption":"Слитки Железной и Пустынной руды","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"pg","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","","Не перемещается, само не нападает.","Воскрешается через полчаса/час после смерти."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"Бездна"}],"Name":"pg_abadon","Caption":"Проклятие Глубин","Description":[]},{"SmImg":"dkr","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Наносит сильные удары. Не использует магию. Критует. ","Не перемещается, сама не нападает.",""],"Strength":70,"Dexterity":100,"Intuition":100,"Endurance":100,"Intellect":100,"Wisdom":100,"HitPoints":1350,"Reward":0,"BirthPlace":""}],"Name":"dkr_abadon","Caption":"Душа Кроггентайла","Description":[]},{"SmImg":"51","ImageUrl":"https://img.new-combats.com/i/chars/d/0/51.png","Instances":[{"Image":"","Level":12,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"voenkom","Caption":"Военком","Description":[]},{"SmImg":"16","ImageUrl":"https://img.new-combats.com/i/chars/d/0/16.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"serjant","Caption":"Сержант","Description":[]}],"Objects":[]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1017.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока, стихийные атаки: нет. ","Критовик. Оптимально выносится уворотчиками и антикритовиками."],"Strength":30,"Dexterity":20,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":200,"Reward":2,"BirthPlace":"Пустыня"},{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: нет. ","Критовик. Оптимально выносится уворотчиками и антикритовиками."],"Strength":35,"Dexterity":20,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":5,"BirthPlace":"Пустыня"},{"Image":"pma","Level":7,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: нет. ","Критовик. Оптимально выносится уворотчиками и антикритовиками."],"Strength":35,"Dexterity":20,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"Пустыня"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: нет. ","Критовик. Оптимально выносится уворотчиками и антикритовиками."],"Strength":70,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":10,"BirthPlace":"Пустыня"},{"Image":"pma","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: нет. ","Критовик. Оптимально выносится уворотчиками и антикритовиками."],"Strength":70,"Dexterity":20,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":"Пустыня"}],"Name":"pm","Caption":"Пустынник Маньяк","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1016.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Двуручник. Антиуворот."],"Strength":30,"Dexterity":10,"Intuition":40,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":250,"Reward":2,"BirthPlace":"Пустыня"},{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Антиуворот."],"Strength":50,"Dexterity":25,"Intuition":25,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":5,"BirthPlace":"Пустыня"},{"Image":"pua","Level":7,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Антиуворот."],"Strength":50,"Dexterity":25,"Intuition":25,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":0,"BirthPlace":"Пустыня"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой.","Антиуворот."],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":"Пустыня"},{"Image":"pua","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой.","Антиуворот."],"Strength":30,"Dexterity":25,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"Пустыня"}],"Name":"pu","Caption":"Пустынник Убийца","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1018.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Чистый уворотчик. ","","Использует приёмы: ","\"Сильный удар\"","\"Шокирующий удар\""],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":375,"Reward":20,"BirthPlace":"Пустыня"},{"Image":"paa","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Чистый уворотчик. ","","Использует приёмы: ","\"Сильный удар\"","\"Шокирующий удар\""],"Strength":40,"Dexterity":50,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":0,"BirthPlace":"Пустыня"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Чистый уворотчик. Часто пробивает броню.","","Использует приёмы: ","\"Сильный удар\"","\"Шокирующий удар\""],"Strength":50,"Dexterity":55,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":550,"Reward":50,"BirthPlace":"Пустыня"},{"Image":"paa","Level":9,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой. ","Чистый уворотчик. Часто пробивает броню.","","Использует приёмы: ","\"Сильный удар\"","\"Шокирующий удар\""],"Strength":50,"Dexterity":55,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1100,"Reward":0,"BirthPlace":"Пустыня"}],"Name":"pa","Caption":"Пустынник Атаман","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":8,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":25,"Intuition":15,"Endurance":30,"Intellect":100,"Wisdom":100,"HitPoints":1800,"Reward":300,"BirthPlace":"Кроггентайл"}],"Name":"dk","Caption":"Дарьяна Корт","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём. ","Может напасть сама. ","","Использует приёмы: ","\"Вытягивание души\" - частью наносимого урона восстанавливает свой уровень жизни. Блокируется защитными приёмами. ","\"Активная защита\" ","\"Стойкость\" ","\"Ярость\""," \"Воля к победе\" - восстанавливает свой уровень жизни + 40HP. ","Способна лечить себя, например, на +600 HP.","Необходимо убить для работы Фонтана Стойкости.","","После смерти может выпасть Золотое кольцо здоровья (мф) и Кольцо каменной осады (мф)."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1011.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":70,"Intellect":0,"Wisdom":0,"HitPoints":2200,"Reward":300,"BirthPlace":""}],"Name":"im","Caption":"Изгнанник Мглы","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Критовик с толстой бронёй. ","","Использует приёмы: ","\"Воля к победе\" - воcстанавливает свой уровень жизни +45HP.","\"Второе дыхание\"","\"Удар серпом\" - аналог приема \"Точный Удар\".","\"Активная защита\"","\"Сильный удар\"","\"Слепая удача\"","\"Стойкость\"","\"Ярость\"","","После смерти может выпасить свиток Клаустрофобия."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1020_vf3369140625.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":60,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":250,"BirthPlace":"Бездна"}],"Name":"sk","Caption":"Страж Крантон","Description":["Общая информация:","Использует 5 ударов и 2 зоны блока, стихийные атаки: нет. ","Хорошо убивается критовиками.","","Использует приёмы: ","\"Удар правым жвалом\" - аналог приема \"Скрытая Сила\".","\"Удачный удар\"","\"Коварный уход\"","\"Воля к победе\" - восстанавливает свой уровень жизни +45НР.","\"Стойкость\"","\"Ярость\"","","После смерти может выпасть Кольцо Бликов (мф)."]},{"SmImg":"pua","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1016.png","Instances":[{"Image":"pua","Level":8,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":60,"Dexterity":55,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":200,"BirthPlace":"Пустыня"}],"Name":"ms","Caption":"Маул Счастливчик","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: водой.","Хорошо убивается магами, осадой и уворотом.","","Использует приёмы: ","\"Удар Феникса\" - аналог приема \"Скрытая Сила\".","\"Слепая удача\"","\"Активная защита\"","\"Стойкость\"","\"Ярость\"","","После смерти с высокой вероятностью может выпасть Отворяющая Печать №1 (от Пещер Мглы, Sand city), с низкой - Пропуск Забытых Времён."]},{"SmImg":"pga","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1019.png","Instances":[{"Image":"pga","Level":9,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":450,"BirthPlace":"Бездна"}],"Name":"dpg","Caption":"Древнее Проклятье Глубин","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнем.","Может напасть первым.","Хорошо убивается уворотчиками и зарёй.","","Использует приёмы: ","\"Подставить лоб\"- аналог приема \"Полная Защита\".","\"Раздавить\" - аналог приема \"Скрытая Сила\".","\"Активная защита\"","\"Удачный удар\"","\"Стойкость\"","\"Ярость\"","\"Утереть Пот\" - восстанавливает свой уровень жизни +18HP.","","После смерти может выпасть Кольцо каменной осады (мф)."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1042a_ru2300519285.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":1,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":2000,"Reward":10,"BirthPlace":"неизвестно"}],"Name":"duhhr","Caption":"Дух-Хранитель","Description":["Общая информация:","Использует 1 удар и 2 зоны блока, бьёт или рукой или призрачным оружием. ","Критовик, имеет высокий мф уворота, уязвим к магии стихий. ","Не перемещается. Через определённое время воскресает. ","","Использует приёмы: ","\"Призрачное Касание\" - парализует противника, лишая его возможности производить какие-либо дейстия в течении 2 ходов.","","После смерти c большой вероятностью может выпасть Сгусток астрала или Сгусток эфира."]},{"SmImg":"mhub","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095a_nu2987456891.png","Instances":[{"Image":"mhub","Level":10,"Align":"0","Tag":"","Move":true,"Description":[],"Strength":80,"Dexterity":45,"Intuition":45,"Endurance":45,"Intellect":0,"Wisdom":0,"HitPoints":2500,"Reward":40,"BirthPlace":"неизвестно"}],"Name":"mhub","Caption":"Механический Убийца","Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Плохо уворачивается, хорошо критуется. ","Может напасть первым. Воскресает, примерно через 10 минут после смерти.","","Использует приёмы: ","В бою использует приёмы: ","\"Взрыв\" - мгновенно снимает 5%НР, а так же в течение 5 ходов, при размене ударами, еще по 5%НР.","\"Глубокая рана\" - - атакует противника, нанося повреждение, равное 0.5% HP противника, и наносит глубокую рану, причиняющую (5% НР) ед. урона при каждом размене до конца боя. Длительность - 10 000 зарядов","","После смерти может выпасть зелье Топливо для Големов."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1094a_jw2305972054.png","Instances":[{"Image":"","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":20,"Intuition":0,"Endurance":55,"Intellect":0,"Wisdom":0,"HitPoints":7000,"Reward":250,"BirthPlace":"неизвестно"}],"Name":"kamstr","Caption":"Каменный страж","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Нападает, если наступить на ловушку на клетке M15.","","Использует приёмы: ","\"Раздавить\" - наносит урон магией.","\"Сотрясение\" - оглушает противника, лишая его возможности использовать приемы. Использует 3 раза. Первый раз оглушает на 3 хода, второй раз - на 10 ходов, третий раз - на 30 ходов.","","После смерти может выронить Осколок Стража."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1026a_rq2360403311.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":90,"Dexterity":30,"Intuition":30,"Endurance":40,"Intellect":40,"Wisdom":15,"HitPoints":1530,"Reward":15,"BirthPlace":"неизвестно"}],"Name":"mhk","Caption":"Механик","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приёмы: ","\"Починить\" - восстанавливает 200-400 НР Механическому Охраннику и Механическому Голему.","","После смерти может выпасть зелье Смазка для Големов."]},{"SmImg":"mhgol","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095_hw4984572354.png","Instances":[{"Image":"mhgol","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":15,"BirthPlace":"неизвестно"}],"Name":"mhohr","Caption":"Механический Охранник","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Вспышка\" - наносит небольшой урон огнём.","\"Обнять\" - аналог приема \"Преследование\".","\"Оттеснить\" - не дает сменить противника. Аналог приема \"Ограничить маневр\"."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1095_hw4984572354.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":50,"Dexterity":0,"Intuition":75,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":15,"BirthPlace":"неизвестно"}],"Name":"mhgol","Caption":"Механический Голем","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Вспышка\" - наносит небольшой урон огнём.","\"Обнять\" - аналог приема \"Преследование\".","\"Оттеснить\" - не дает сменить противника. Аналог приема \"Ограничить маневр\"."]},{"SmImg":"strsokra","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1094g_bn3894752896.png","Instances":[{"Image":"strsokra","Level":11,"Align":"9","Tag":"- сила","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: землёй. ","","Использует приёмы: ","\"Сотрясение\" - аналог приема \"Ошеломить\". ","\"Проклятье Стража\" - понижает силу противника (Сила: -60). Прием используется когда у Стража остается 50% HP. Проклятье снимается приемом \"Очиститься Кровью\".","\"Раздавить\" - наносит незначительный урон.","\"Сотрясение мозга\" - ворует у мага-противника ману.","","После смерти может выпасть свиток Зачаровать Оружие: ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":80,"BirthPlace":"неизвестно"},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-ловка","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: землёй. ","","Использует приёмы: ","\"Сотрясение\" - аналог приема \"Ошеломить\". ","\"Проклятье Стража\" - понижает ловкость противника (Ловкость: -60). Прием используется когда у Стража остается 50% HP. Проклятье снимается приемом \"Очиститься Кровью\".","\"Раздавить\" - наносит незначительный урон.","\"Сотрясение мозга\" - ворует у мага-противника ману.","","После смерти может выпасть свиток Зачаровать Оружие: ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":"неизвестно"},{"Image":"strsokra","Level":11,"Align":"9","Tag":"- инта","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: землёй. ","","Использует приёмы: ","\"Сотрясение\" - аналог приема \"Ошеломить\". ","\"Проклятье Стража\" - понижает интуицию противника (Интуиция: -60). Прием используется когда у Стража остается 50% HP. Проклятье снимается приемом \"Очиститься Кровью\".","\"Раздавить\" - наносит незначительный урон.","\"Сотрясение мозга\" - ворует у мага-противника ману.","","После смерти может выпасть свиток Зачаровать Оружие: ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":"неизвестно"},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-интелл","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: землёй. ","","Использует приёмы: ","\"Сотрясение\" - аналог приема \"Ошеломить\". ","\"Проклятье Стража\" - понижает интеллект противника (Интеллект: -60). Прием используется когда у Стража остается 50% HP. Проклятье снимается приемом \"Очиститься Кровью\".","\"Раздавить\" - наносит незначительный урон.","\"Сотрясение мозга\" - ворует у мага-противника ману.","","После смерти может выпасть свиток Зачаровать Оружие: ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":"неизвестно"},{"Image":"strsokra","Level":11,"Align":"9","Tag":"-вынос","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: землёй. ","","Использует приёмы: ","\"Сотрясение\" - аналог приема \"Ошеломить\". ","\"Проклятье Стража\" - понижает выносливость противника (Выносливость: -60). Прием используется когда у Стража остается 50% HP. Проклятье снимается приемом \"Очиститься Кровью\".","\"Раздавить\" - наносит незначительный урон.","\"Сотрясение мозга\" - ворует у мага-противника ману.","","После смерти может выпасть свиток Зачаровать Оружие: ***."],"Strength":55,"Dexterity":55,"Intuition":55,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":6500,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"strsokr","Caption":"Страж Сокровищ","Description":[]},{"SmImg":"mgrta","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1096_nr34185697153.png","Instances":[{"Image":"mgrta","Level":11,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":10,"Dexterity":25,"Intuition":25,"Endurance":25,"Intellect":25,"Wisdom":0,"HitPoints":3000,"Reward":450,"BirthPlace":"неизвестно"}],"Name":"mgrt","Caption":"Мастер Грит","Description":["Общая информация:","Использует 1 удара 2 зоны блока. ","","Использует приёмы: ","\"Холодный луч\"","\"Обжигающее пламя\"","\"Тяжесть земли\"","\"Молния\"","\"Иcтинная форма\" - (Сила: +90, Уровень жизни (HP): +3700) - перерождается из мага в бойца.","\"Самоуничтожение\"- наносит урон по себе и противнику.","\"Двойной удар\" ","\"Оглушающий удар\"","","После смерти может выпасть свиток Зачаровать Оружие:***."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":100,"Intellect":4,"Wisdom":0,"HitPoints":2000,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"kzm","Caption":"Каменный Зомби","Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Нападает, если наступить на ловушку на клетке L11.","","После смерти может выпасть предмет из комплекта \"Решимости\"."]},{"SmImg":"kz","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kz","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":30,"Intuition":30,"Endurance":75,"Intellect":4,"Wisdom":0,"HitPoints":2700,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"gzm","Caption":"Жирный Зомби","Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Нападает, если наступить на ловушку на клетке L11.","","После смерти может выпасть предмет из комплекта \"Решимости\"."]}],"Objects":[{"SmImg":"chest02","ImageUrl":"https://img.new-combats.com/i/objects/chest02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":1,"MW":28,"MH":25,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest21","Caption":"Потерянный сундук","Description":["В сундуке можно найти Зелье Каменной Стойкости, Зелье Стража Магии или свиток тактики.","Сундук может \"открыть\" лишь один человек из команды."]}],"Name":"chest2_small","Caption":"Сундук 2 - мал.","Description":[]},{"SmImg":"chest04","ImageUrl":"https://img.new-combats.com/i/objects/chest04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":20,"MW":28,"MH":22,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest41","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Верхнюю Часть Ключа Портала. ","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest42","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Правую Часть Ключа Портала. ","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest43","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Первую часть руны. ","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest44","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Пятую часть руны. ","Могут \"открыть\" все члены команды."]}],"Name":"chest4_small","Caption":"Сундук 4 - мал.","Description":[]},{"SmImg":"weap3","ImageUrl":"https://img.new-combats.com/i/objects/2/weap3.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":4,"MT":5,"MW":27,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"weap31","Caption":"Щит","Description":["Красота..."]}],"Name":"weap3","Caption":"Щит коричневый","Description":[]},{"SmImg":"zer","ImageUrl":"https://img.new-combats.com/i/objects/2/zer.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":9,"MT":5,"MW":21,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"zer1","Caption":"Зеркало","Description":["Красота..."]}],"Name":"zer","Caption":"Зеркало","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040a_dr8472409823.png","Instances":[{"Image":"","Level":10,"Align":"0","Tag":"кэп","Move":true,"Description":["Общая информация:","Маг, 2 зоны блока.","Огромное сопротивление магии стихий, но хорошо выносится критовиками.","Активно нападает сама. Через определённое время воскресает. ","","Использует приёмы: ","\"Призрачный Удар\" - наносит моментальный удар магией тьмы в 100-115 ед. урона.","\"Крик души\" - наносит удар магией тьмы в 70-80 ед. урона одновременно по всем противникам.","\"Приём\" - аналог приема \"Призрачная защита\".","","После смерти c большой вероятностью может выпасть Сгусток астрала или Сгусток эфира."],"Strength":10,"Dexterity":25,"Intuition":25,"Endurance":40,"Intellect":25,"Wisdom":40,"HitPoints":900,"Reward":10,"BirthPlace":"неизвестно"},{"Image":"","Level":8,"Align":"0","Tag":"санд","Move":true,"Description":["Общая информация:","Маг, 2 зоны блока. ","","Использует приёмы: ","\"Тёмный Удар\" - наносит моментальный удар магией тьмы в 100-200 ед. урона.","","После смерти выпадает Мерцающий ключ №3, который разыгрывается. Ключ нужен для прохода в Лабораторию на 4-ом этаже. "],"Strength":25,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":50,"HitPoints":950,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"zbldsh","Caption":"Заблудшая Душа","Description":[]}],"Objects":[{"SmImg":"well03","ImageUrl":"https://img.new-combats.com/i/objects/well03.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain21","Caption":"Фонтан Океана","Description":["Можно наполнить пустую бутылку Снадобьем Океанов.","Для работы необходим Мерцающий ключ №1.","Снадобье получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain22","Caption":"Фонтан Зарева","Description":["Можно наполнить пустую бутылку Снадобьем Зарева.","Снадобье получают все члены команды."]}],"Name":"well03","Caption":"Фонтан 2","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key11","Caption":"Мерцающий ключ №1","Description":["Необходим для получения Снадобья Океанов в Фонтане Океана.","Взять ключ можно только зачистив логово. При попытке взять его раньше, на Вас нападут все монстры из логова."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key12","Caption":"Мерцающий ключ №1","Description":["Необходим для:"," • прохода на второй этаж по Лестнице №1"," • получения Снадобья Океанов в Фонтане Океана (клетка F8 второго этажа)"," • получения Снадобья Недр в Фонтане Недр (клетка F4 второго этажа)"]}],"Name":"key1","Caption":"Мерцающий ключ №1","Description":[]},{"SmImg":"key21","ImageUrl":"https://img.new-combats.com/i/objects/Key2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key21","Caption":"Мерцающий ключ №2","Description":["Необходим для работы телепорта на клетке I6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key22","Caption":"Мерцающий ключ №2","Description":["Необходим для:"," • прохода на второй этаж по Лестнице №2 "," • получения Снадобья Океанов в Фонтане Океана (клетка F8 второго этажа)"," • получения Снадобья Недр в Фонтане Недр (клетка F4 второго этажа)"," • получения Снадобья Урагана в Фонтане Урагана (клетка C6 третьего этажа)"," • прохода сквозь решетку у Хрумпта (клетка C4 третьего этажа)"]}],"Name":"key2","Caption":"Мерцающий ключ №2","Description":[]},{"SmImg":"well08","ImageUrl":"https://img.new-combats.com/i/objects/well08.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"workshop1","Caption":"Мастерская забытых мастеров","Description":["Используя ингредиенты, собраные в многочасовых странствиях по подземельям, в этой мастерской можно собрать множество полезных вещей.","Да, одна мелочь, для работы необходим Мерцающий ключ №3. Поищите его на клетке H6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"workshop2","Caption":"Фонтан Отрицания","Description":["Можно получить Великое Зелье Отрицания.","Помимо пустой бутылки, требуется драгоценный камень.","Могут набрать два члена команды."]}],"Name":"workshop","Caption":"Мастерская","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1002.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":5,"BirthPlace":"Demons city"},{"Image":"rma","Level":7,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока.","Очень часты дробящие атаки."],"Strength":50,"Dexterity":25,"Intuition":20,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1350,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока, стихийные атаки: водой."],"Strength":30,"Dexterity":30,"Intuition":50,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":500,"Reward":10,"BirthPlace":"Demons city"},{"Image":"rma","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока, стихийные атаки: огнём.","Сильный осадник, с частыми дробящими атаками."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":25,"BirthPlace":"Demons city"},{"Image":"rma","Level":9,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар 2 зоны блока, стихийные атаки: огнём","Жуткий осадник. Очень часты дробящие атаки. Имеет высокий антиуворот."],"Strength":50,"Dexterity":15,"Intuition":15,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":6000,"Reward":0,"BirthPlace":"Demons cuty"}],"Name":"rabmgl","Caption":"Рабочий Мглы","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1003.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Критовик."],"Strength":30,"Dexterity":30,"Intuition":35,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":400,"Reward":5,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Критовик."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":700,"Reward":10,"BirthPlace":"Demons city"},{"Image":"sma","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Критовик."],"Strength":50,"Dexterity":20,"Intuition":35,"Endurance":40,"Intellect":20,"Wisdom":0,"HitPoints":1400,"Reward":0,"BirthPlace":"Demons city"},{"Image":"strmgl","Level":8,"Align":"0","Tag":"hp800","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Имеет сильные удары."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":800,"Reward":0,"BirthPlace":"Demons city"},{"Image":"sma","Level":8,"Align":"9","Tag":"hp1600","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Критовик с одноручным оружием. Имеет сильные удары."],"Strength":80,"Dexterity":3,"Intuition":3,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1600,"Reward":0,"BirthPlace":"Demons city"}],"Name":"strmgl","Caption":"Сторож Мглы","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1004.png","Instances":[{"Image":"","Level":7,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Уворотчик, но возможно прохождение критов."],"Strength":15,"Dexterity":35,"Intuition":35,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":300,"Reward":5,"BirthPlace":"Demons city"},{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Уворотчик, но возможно прохождение критов."],"Strength":50,"Dexterity":50,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":350,"Reward":10,"BirthPlace":"Demons city"},{"Image":"smma","Level":8,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока, стихийные атаки: огнём.","Уворотчик, но возможно прохождение критов.","Сильнее обычного Смотрителя Мглы. "],"Strength":50,"Dexterity":50,"Intuition":30,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":0,"BirthPlace":"Demons city"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Уворотчик, но возможно прохождение критов.","Часто пробивает броню."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":600,"Reward":25,"BirthPlace":"Demons city"},{"Image":"smma","Level":9,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Уворотчик, но возможно прохождение критов.","Часто пробивает броню."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":0,"BirthPlace":"Demons city"},{"Image":"smma","Level":9,"Align":"9","Tag":"hp2400","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","Очень сильный уворотчик. Часто пробивает броню."],"Strength":50,"Dexterity":70,"Intuition":15,"Endurance":30,"Intellect":0,"Wisdom":0,"HitPoints":2400,"Reward":0,"BirthPlace":"Demons city"}],"Name":"smotrmgl","Caption":"Смотритель Мглы","Description":[]}],"Objects":[{"SmImg":"well04","ImageUrl":"https://img.new-combats.com/i/objects/well04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain42","Caption":"Фонтан Урагана","Description":["Можно наполнить пустую бутылку Снадобьем Урагана.","Требуется Мерцающий ключ №2. Ключ Вы найдете на клетке F5 первого этажа.","Снадобье получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain43","Caption":"Фонтан Легкой Жизни","Description":["Можно наполнить бутылку эликсиром Глоток Легкой Жизни. Могут набрать двое."]}],"Name":"fountain4","Caption":"Фонтан 4","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1041_rk0170592363.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 1 удар и 2 зоны блока.","Критовик. Не использует магию."],"Strength":70,"Dexterity":40,"Intuition":40,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":1200,"Reward":25,"BirthPlace":"Кроггентайл"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока.","Критовик. Не использует магию."],"Strength":95,"Dexterity":65,"Intuition":65,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1500,"Reward":50,"BirthPlace":"Кроггентайл"},{"Image":"skra","Level":9,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока.","Критовик. Не использует магию."],"Strength":95,"Dexterity":65,"Intuition":65,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":0,"BirthPlace":"Кроггентайл"},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока.","Критовик. Не использует магию."],"Strength":125,"Dexterity":65,"Intuition":65,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":100,"BirthPlace":"Кроггентайл"},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока.","Критовик. Не использует магию."],"Strength":160,"Dexterity":85,"Intuition":85,"Endurance":120,"Intellect":0,"Wisdom":0,"HitPoints":2400,"Reward":200,"BirthPlace":"Кроггентайл"}],"Name":"skr","Caption":"Сила Кроггентайла","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1042_zh6184692382.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":75,"Dexterity":75,"Intuition":75,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":750,"Reward":25,"BirthPlace":"Кроггентайл"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":100,"Intuition":100,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":50,"BirthPlace":"Кроггентайл"},{"Image":"bkra","Level":9,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":100,"Dexterity":100,"Intuition":100,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":3600,"Reward":0,"BirthPlace":"Кроггентайл"},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":120,"Dexterity":120,"Intuition":120,"Endurance":100,"Intellect":0,"Wisdom":0,"HitPoints":3000,"Reward":100,"BirthPlace":"Кроггентайл"},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":150,"Dexterity":150,"Intuition":150,"Endurance":120,"Intellect":0,"Wisdom":0,"HitPoints":4000,"Reward":200,"BirthPlace":"Кроггентайл"}],"Name":"bkr","Caption":"Боль Кроггентайла","Description":["Общая информация:","Использует 1 удар 2 зоны блока.","Уворотчик, имеющий мощные удары, простые около 150 и критические до 500. Не использует магию."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1040_vk8345642089.png","Instances":[{"Image":"","Level":8,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Кроме обычных ударов использует магию тьмы.","Может напасть первой.","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 200 ед. урона. ","\" Воля к победе\"","\"Регенерация\" - восстанавливает уровень жизни + 47HP. "],"Strength":25,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":50,"HitPoints":950,"Reward":30,"BirthPlace":"Кроггентайл"},{"Image":"","Level":9,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Наносит сильные дробящие удары. Кроме обычных ударов использует магию тьмы. ","Может напасть первой.","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 200 ед. урона. ","\" Воля к победе\"","\"Регенерация\" - восстанавливает уровень жизни + 57HP. "],"Strength":50,"Dexterity":60,"Intuition":60,"Endurance":60,"Intellect":60,"Wisdom":60,"HitPoints":1150,"Reward":60,"BirthPlace":"Кроггентайл"},{"Image":"dkra","Level":9,"Align":"9","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Наносит сильные дробящие удары. Кроме обычных ударов использует магию тьмы.","Может напасть первой.","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 200-400 ед. урона. ","\" Воля к победе\"","\"Регенерация\" - восстанавливает уровень жизни + 57HP. "],"Strength":50,"Dexterity":60,"Intuition":60,"Endurance":60,"Intellect":60,"Wisdom":60,"HitPoints":2300,"Reward":0,"BirthPlace":"Кроггентайл"},{"Image":"","Level":10,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Наносит сильные дробящие удары. Кроме обычных ударов использует магию тьмы. ","Может напасть первой.","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 500 ед. урона. ","\" Воля к победе\"","\"Регенерация\" - восстанавливает уровень жизни + 67HP. "],"Strength":70,"Dexterity":100,"Intuition":100,"Endurance":100,"Intellect":100,"Wisdom":100,"HitPoints":1350,"Reward":120,"BirthPlace":"Кроггентайл"},{"Image":"","Level":11,"Align":"0","Tag":"","Move":true,"Description":["Общая информация:","Использует 2 удара и 2 зоны блока. Наносит сильные дробящие удары. Кроме обычных ударов использует магию тьмы. ","Может напасть первой.","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 500 ед. урона. ","\" Воля к победе\"","\"Регенерация\" - восстанавливает уровень жизни + 90HP. "],"Strength":90,"Dexterity":120,"Intuition":120,"Endurance":120,"Intellect":120,"Wisdom":120,"HitPoints":1800,"Reward":250,"BirthPlace":"Кроггентайл"}],"Name":"dkr","Caption":"Душа Кроггентайла","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1043_ro9557495117.png","Instances":[{"Image":"","Level":9,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Маг. Используюет магию тьмы. ","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 200 ед. урона.","\"Призрачная Боль\" - восстанавливает уровень жизни (до +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":100,"Wisdom":65,"HitPoints":2500,"Reward":60,"BirthPlace":"Кроггентайл"},{"Image":"pkra","Level":9,"Align":"9","Tag":"","Move":false,"Description":["Общая информация:","Маг. Используюет магию тьмы. ","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 200 ед. урона.","\"Призрачная Боль\" - восстанавливает уровень жизни (до +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":100,"Wisdom":65,"HitPoints":5000,"Reward":0,"BirthPlace":"Кроггентайл"},{"Image":"","Level":10,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Маг. Используюет магию тьмы. ","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 500 ед. урона.","\"Призрачная Боль\" - восстанавливает уровень жизни (до +600 HP)."],"Strength":40,"Dexterity":50,"Intuition":50,"Endurance":50,"Intellect":50,"Wisdom":65,"HitPoints":2000,"Reward":120,"BirthPlace":"Кроггентайл"},{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":["Общая информация:","Маг. Используюет магию тьмы. ","","Использует приёмы: ","\"Темный удар\" - наносит урон магией тьмы. Достигает 500 ед. урона.","\"Призрачная Боль\" - восстанавливает уровень жизни (до +600 HP)."],"Strength":60,"Dexterity":70,"Intuition":70,"Endurance":70,"Intellect":100,"Wisdom":80,"HitPoints":2500,"Reward":250,"BirthPlace":"Кроггентайл"}],"Name":"pkr","Caption":"Память Кроггентайла","Description":[]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1044_kv7870496581.png","Instances":[{"Image":"","Level":14,"Align":"9","Tag":"","Move":true,"Description":[],"Strength":200,"Dexterity":200,"Intuition":200,"Endurance":200,"Intellect":0,"Wisdom":0,"HitPoints":6000,"Reward":0,"BirthPlace":"Кроггентайл"}],"Name":"kv","Caption":"Король Валлуар","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","Может напасть первым.","","Использует приёмы: ","\"Темный удар\"","\"Легендарный Удар\"","\"Полная защита\"","\"Призрачную Боль\" - восстанавливает уровень жизни +600НР.","\"Прорыв\"","\"Танец лезвий\"","\"Ярость\"","\"Стойкость\"","\"Бесчувственность\"","","После смерти может выпасть Снадобье забытых Мастеров."]}],"Objects":[{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":16,"MH":16,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport1","Caption":"Таинственный круг","Description":["Перемещает на клетку K7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":"Таинственный круг","Description":["Перемещает на клетку C6."]}],"Name":"redteleport_small_left","Caption":"Красный телепорт, левый","Description":[]},{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":21,"MT":5,"MW":16,"MH":16,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport1","Caption":"Таинственный круг","Description":["Перемещает на клетку H4."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":"Таинственный круг","Description":["Перемещает на клетку J10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport3","Caption":"Таинственный круг","Description":["Перемещает на клетку L9."]}],"Name":"redteleport_small_right","Caption":"Красный телепорт, правый","Description":[]},{"SmImg":"door2","ImageUrl":"https://img.new-combats.com/i/objects/1_front_door.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"frontdoor1","Caption":"Вход в Мастерскую","Description":["Здесь вы сможете отремонтировать свои артефакты."]}],"Name":"frontdoor","Caption":"Входная дверь","Description":[]},{"SmImg":"well04","ImageUrl":"https://img.new-combats.com/i/objects/well04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":17,"MH":20,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain41","Caption":"Фонтан Легкой Жизни","Description":["Можно наполнить бутылку эликсиром Глоток Легкой Жизни. Могут набрать двое."]}],"Name":"fountain4_small","Caption":"Фонтан 4 - мал.","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"kza","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kza","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1800,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"luka","Caption":"Лука","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приёмы: ","\"Мокрый удар\" - наносит стихийный удар водой.","\"Регенерация\" - восстанавливает уровень жизни на 7-10НР.","\"Мощный удар\" - аналог приема \"Вломить\"","\"Ослабить удар\" - аналог приема\"Прикрыться\" ","","После смерти может выпасть Гайка.","","У Луки можно получить квесты, а так же обменять найденные Гайки, Вентили и Болты на жетоны."]},{"SmImg":"kza","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1000.png","Instances":[{"Image":"kza","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":900,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"martn","Caption":"Мартын Водопроводчик","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приёмы: ","\"Мокрый удар\" - наносит стихийный удар водой.","\"Регенерация\" - восстанавливает уровень жизни на 8-12HP.","\"Зловонная вода\" - наносит 2 ед. урона и отнимает 1% НР каждый ход до конца боя.","\"Мощный удар\" - аналог приема \"Вломить\".","\"Ослабить удар\" - аналог приема \"Прикрыться\".","","После смерти выпадает Ключииик."]},{"SmImg":"sla","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1052_id8363592750.png","Instances":[{"Image":"sla","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":20,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":600,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"gmrz","Caption":"Жуткая Мерзость","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Быстрый удар\" - мгновенно наносит 2 ед. урона.","\"Кислотное касание\" - наносит урон водой.","\"Регенерация\" - восстанавливает уровень жизни на 8-12НР.","\"Надкусить\" - укус в пояс третьей степени, вам будет очень больно если вас ударят в эту область.","","После смерти выпадает Вентиль."]},{"SmImg":"pp","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1050_pq6472859128.png","Instances":[{"Image":"pp","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":18,"Dexterity":25,"Intuition":20,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":540,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"tungad","Caption":"Тунельный Гад","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Быстрый удар\" - мгновенно наносит 2 ед. урона.","\"Регенерация\" - восстанавливает свой уровень жизни на 8-12 НР.","","После смерти выпадает Вентиль."]},{"SmImg":"trp","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1082_9dh7ka.png","Instances":[{"Image":"trp","Level":4,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":10,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":300,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"obpodv","Caption":"Обитатель Подвалов","Description":["Общая информация:","Использует 1 удар и 2 зоны блока. ","","Использует приёмы: ","\"Мокрый удар\" - заклятье наносящее урон водой.","\"Мощный удар\" - аналог приема \"Вломить\".","\"Закусить\" - восстанавливает свой уровень жизни, взаимствуя здоровье у противника.","","После смерти может выпасть Болт или Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1021_rz7360376769.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":5,"Dexterity":20,"Intuition":8,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":60,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"pauk","Caption":"Паук","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Быстрый удар\" - мгновенно наносит 2 ед. урона.","\"Отпрыгнуть\" - аналог приема \"Танец ветра\".","","После смерти может выпасть Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1023_tv2330604720.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":7,"Dexterity":25,"Intuition":10,"Endurance":10,"Intellect":0,"Wisdom":0,"HitPoints":120,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"stpauk","Caption":"Сточный Паук","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Быстрый удар\" - мгновенно наносит 2 ед. урона.","\"Отпрыгнуть\" - аналог приема \"Танец ветра\".","","После смерти может выпасть Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1071_es6482658226.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":10,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":200,"Reward":0,"BirthPlace":""}],"Name":"santzm","Caption":"Сантехник-Зомби","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Быстрый удар\" - мгновенно наносит 2 ед. урона.","\"Мощный удар\" - аналог приема \"Вломить\".","\"Активная защита\"","","После смерти может выпасть Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1022_ht7629239682.png","Instances":[{"Image":"","Level":4,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":10,"Intuition":10,"Endurance":15,"Intellect":0,"Wisdom":0,"HitPoints":100,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"kanzuk","Caption":"Канализационный Жук","Description":["Общая информация:","Использует 1 удар и 3 зоны блока. ","","Использует приёмы: ","\"Ослабить удар\" - аналог приема \"Прикрыться\".","\"Мощный удар\" - аналог приема \"Вломить\".","","После смерти может выпасть Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1102_njsojmlanai.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":25,"Intuition":35,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":240,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"kanpauk","Caption":"Канализационный Паук","Description":["Общая информация:","Использует 2 удара и 2 блока. ","","Использует приёмы: ","\"Двойной удар\" - наносит 2 безответных удара.","\"Проткнуть\" - глубокая рана в боку, урон в эту зону увеличен. Наносит 1-3 ед. урона. До конца боя противник теряет 2-5 НР от кровотечения, каждый ход.","\"Быстрый удар\" - наносит безответный удар в 1-3 ед. урона.","","После смерти может выпасть Чистая Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1129_uuzyzugyv.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":15,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":312,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"bzgsnt","Caption":"Безголовый Сантехник","Description":["Общая информация:","Использует 2 удара и 2 блока. ","","Использует приёмы: ","\"Гнилая кровь\" - наносит по 3 ед. урона в течении 10 ходов.","\"Ослабить удар\" - аналог приема \"Прикрыться\"","","После смерти может выпасть Длинный болт."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1135_jhilayhqjy.png","Instances":[{"Image":"","Level":5,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":25,"Intuition":25,"Endurance":20,"Intellect":0,"Wisdom":0,"HitPoints":360,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"strkr","Caption":"Страшная Крыса","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Укусить\" - заклятье наносящее 10-20 ед. урона.","\"Отпрыгнуть\" - аналог приема \"Танец Ветра\".","\"Надкусить\" - наносит 1-3 ед. урона. Урон, наносимый в зону \"Пояс\" увеличен.","","После смерти может выпасть Чистая Гайка."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/1/1123_cprywpvgu.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":20,"Dexterity":35,"Intuition":40,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":270,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"letb","Caption":"Летучая Бестия","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Облако тьмы\" - аналог приема \"Ошеломить\".","\"Укусить\" - наносит безответный удар в 10-20 ед. урона.","","После смерти может выпасть Гайка с резьбой."]},{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1131_wguwqcui.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":25,"Dexterity":15,"Intuition":20,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":450,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"slzm","Caption":"Слесарь - зомби","Description":["Общая информация:","Использует 1 удара и 2 зоны блока. ","","Использует приёмы: ","\"Двойной удар\" - наносит 2 безответных удара.","\"Бесчувственность\" - уменьшает получаемый урон в 10 раз. Действует 5 ходов.","\"Активная защита\"","","После смерти может выпасть Нужный болт."]},{"SmImg":"hozkana","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1132_bkiowybc.png","Instances":[{"Image":"hozkana","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":40,"Dexterity":35,"Intuition":30,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"hozkan","Caption":"Хозяин Канализации","Description":["Общая информация:","Использует 1 удара и 3 зоны блока. ","","Использует приёмы: ","\"Метнуть болт\" - заклятье наносящее 30-50 ед. урона.","\"Активная защита\"","\"Двойной удар\" - наносит 2 безответных удара.","\"Прочистить\" - отменяет все эффекты и приёмы, включая эликсиры. Действует в течении боя.","","После смерти может выпасть Нужный болт."]},{"SmImg":"mstngtla","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1128_cstfzebj.png","Instances":[{"Image":"mstngtla","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":15,"Dexterity":35,"Intuition":35,"Endurance":75,"Intellect":0,"Wisdom":0,"HitPoints":700,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"mstngtl","Caption":"Местный Житель","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Активная защита\"","\"Ослабить удар\" - аналог приема \"Прикрыться\".","\"Регенерация\" - восстанавливает уровень жизни.","\"Закусить\" - восстанавливает свой уровень жизни, взаимствуя здоровье у противника.","\"Взрыв грязи\" - заклятье наносящее 20-30 ед. урона.","","После смерти может выпасть Нужный болт","","В \"Опасной зоне\" Вас могут ещё подстерегать:","\"Зубастый Местный Житель\" - 460НР","\"Гибкий Местный Житель\" - 550НР ","\"Большой Местный Житель\" - 900НР","\"Плотный Местный Житель\" - 550НР."]},{"SmImg":"glprba","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1115_czyethrbsk.png","Instances":[{"Image":"glprba","Level":6,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":35,"Dexterity":25,"Intuition":25,"Endurance":40,"Intellect":0,"Wisdom":0,"HitPoints":1000,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"glprb","Caption":"Главный Прораб","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Активная защита\"","\"Двойной удар\" - наносит 2 безответных удара.","\"Приказ Слабости\" - получаемый урон повышен в 1.5 раза, наносимый урон ослаблен в 2 раза, действует 3 хода.","\"Собраться\" - восстанавливает по 50 HP за ход, действует 10-15 ходов. Использует 2-3 раза за бой. Лечится пока есть сила духа.","","После смерти может выпасть Рабочий вентиль."]},{"SmImg":"strgla","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1133_zgdtcylqfy.png","Instances":[{"Image":"strgla","Level":5,"Align":"9","Tag":"","Move":false,"Description":[],"Strength":30,"Dexterity":20,"Intuition":35,"Endurance":50,"Intellect":0,"Wisdom":0,"HitPoints":960,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"strgl","Caption":"Старожил","Description":["Общая информация:","Использует 2 удара и 2 зоны блока. ","","Использует приёмы: ","\"Взрыв грязи\" - заклятье наносящее 20-30 ед. урона.","\"Ослабить удар\" - аналог приема \"Прикрыться\".","\"Метнуть болт\" - заклятье наносящее 30-50 ед. урона.","","После смерти может выпасть Чистый вентиль."]}],"Objects":[{"SmImg":"door3","ImageUrl":"https://img.new-combats.com/i/objects/1_front_door2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lukadoor1","Caption":"Каморка Луки","Description":["Вход в магазин. Тут можно приобрести вещи за жетоны."]}],"Name":"lukadoor","Caption":"Каморка Луки","Description":[]},{"SmImg":"ladder02","ImageUrl":"https://img.new-combats.com/i/objects/ladder02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"ladder21","Caption":"Вход","Description":["Вход в подземелье."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"novice.2","ClickPoint":"E16","Name":"ladder22","Caption":"Спуск","Description":["Вы окажетесь на клетке E16 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"novice.1","ClickPoint":"L12","Name":"ladder23","Caption":"Подъем","Description":["Вы окажетесь на клетке L12 первого этажа."]}],"Name":"ladder2","Caption":"Лестница (Каналюга)","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key11","Caption":"Мерцающий ключ №1","Description":["Ключ от 2-го туннеля."]}],"Name":"key1_small","Caption":"Мерцающий ключ №1 - мал.","Description":[]},{"SmImg":"key21","ImageUrl":"https://img.new-combats.com/i/objects/Key2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":1,"MT":1,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key21","Caption":"Мерцающий ключ №2","Description":["Ключ от 3-го туннеля."]}],"Name":"key2_small","Caption":"Мерцающий ключ №2 - мал.","Description":[]},{"SmImg":"key3","ImageUrl":"https://img.new-combats.com/i/objects/Key3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key31","Caption":"Мерцающий ключ №3","Description":["Ключ от первой половины 4-го туннеля."]}],"Name":"key3_small","Caption":"Мерцающий ключ №3 - мал.","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key4.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":18,"MH":18,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key41","Caption":"Мерцающий ключ №4","Description":["Ключ от второй половины 4-го туннеля."]}],"Name":"key4_small","Caption":"Мерцающий ключ №4 - мал.","Description":[]},{"SmImg":"key5","ImageUrl":"https://img.new-combats.com/i/objects/Key5.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key51","Caption":"Мерцающий ключ №5","Description":["Ключ от Распределительной."]}],"Name":"key5","Caption":"Мерцающий ключ №5","Description":[]},{"SmImg":"key6","ImageUrl":"https://img.new-combats.com/i/objects/Key6.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key61","Caption":"Мерцающий ключ №6","Description":["Ключ от Хозяйственного помещения."]}],"Name":"key6","Caption":"Мерцающий ключ №6","Description":[]},{"SmImg":"key","ImageUrl":"https://img.new-combats.com/i/objects/Key7.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":20,"MT":20,"MW":19,"MH":19,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key71","Caption":"Мерцающий ключ №7","Description":["Ключ от Опасной зоны."]}],"Name":"key7_small","Caption":"Мерцающий ключ №7 - мал.","Description":[]},{"SmImg":"key8","ImageUrl":"https://img.new-combats.com/i/objects/Key8.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key81","Caption":"Мерцающий ключ №8","Description":["Ключ от Старого туннеля."]}],"Name":"key8","Caption":"Мерцающий ключ №8","Description":[]},{"SmImg":"key9","ImageUrl":"https://img.new-combats.com/i/objects/Key9.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key91","Caption":"Мерцающий ключ №9","Description":["Ключ от Административного помещения."]}],"Name":"key9","Caption":"Мерцающий ключ №9","Description":[]},{"SmImg":"smag_collect1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":20,"MH":20,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"smag_collect1","Caption":"Серебряный сундучок","Description":["В сундуке можно найти Нужный болт.","Может \"открыть\" лишь один человек из команды."]}],"Name":"sunduk_small","Caption":"Серебряный сундучок - мал.","Description":[]},{"SmImg":"smag_collect1_2","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_21","Caption":"Бронзовый сундучок","Description":["В сундуке можно найти Гайку с резьбой.","Может \"открыть\" лишь один человек из команды."]}],"Name":"sunduk_2","Caption":"Бронзовый сундучок","Description":[]},{"SmImg":"smag_collect1_2","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_2.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_21","Caption":"Бронзовый сундучок","Description":["В сундуке можно найти Гайку с резьбой.","Может \"открыть\" лишь один человек из команды."]}],"Name":"sunduk_2_blendy","Caption":"Бронзовый сундучок, бледный","Description":[]},{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":22,"MH":22,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":"Потерянный сундук","Description":["В сундуке можно найти Гайку.","Может \"открыть\" лишь один человек из команды."]}],"Name":"chest1_small","Caption":"Сундук 1 - мал.","Description":[]},{"SmImg":"grate02","ImageUrl":"https://img.new-combats.com/i/objects/grate02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate21","Caption":"Решетка","Description":["Проход в первую половину 4-го туннеля.","Требуется Мерцающий ключ №3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate22","Caption":"Решетка","Description":["Проход во вторую половину 4-го туннеля.","Требуется Мерцающий ключ №4."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate23","Caption":"Решетка","Description":["Проход в Старый туннель.","Требуется Мерцающий ключ №8."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate24","Caption":"Решетка","Description":["Проход в Административное помещение.","Требуется Мерцающий ключ №9."]}],"Name":"grate2","Caption":"Решетка 2","Description":[]},{"SmImg":"1_front_walll_tr","ImageUrl":"https://img.new-combats.com/i/objects/1_front_walll_tr.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"front_walll_tr1","Caption":"Трубопровод","Description":["За спиной у Луки, на стене, находится трубопровод.","С помощью Ключииика можно открутить Вентиль."]}],"Name":"front_walll_tr","Caption":"Трубопровод","Description":[]},{"SmImg":"drain_bottom1","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":0,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain1","Caption":"Водосток","Description":["Попахивает..."]},{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain2","Caption":"Водосток","Description":["Попахивает...","В нем вы найдете Гайку."]}],"Name":"drain_bottom1","Caption":"Водосток (вверху клетки)","Description":[]},{"SmImg":"trash01","ImageUrl":"https://img.new-combats.com/i/objects/trash01.png","Rotate":false,"Importance":1,"BW":102,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash11","Caption":"Месторождение мусора","Description":["В этом мусоре можно найти Чистую гайку."]}],"Name":"trash1","Caption":"Месторождение мусора","Description":[]},{"SmImg":"full_rune_vial","ImageUrl":"https://img.new-combats.com/i/items/full_rune_vial.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"OrangeRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"full_rune_via1","Caption":"Склянка с пробами","Description":["Квестовый предмет, необходимый для завершения задания Хранителя из Храма Знаний.","Пробу можно забрать из загрязненного водостока на южной стене.",""]}],"Name":"full_rune_vial","Caption":"Склянка с пробами","Description":[]}]}); +underground.installMobs({"Mobs":[{"SmImg":"","ImageUrl":"https://img.new-combats.com/i/chars/d/0/1130_mcqzbnqy.png","Instances":[{"Image":"","Level":6,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":35,"Dexterity":35,"Intuition":25,"Endurance":25,"Intellect":0,"Wisdom":0,"HitPoints":390,"Reward":0,"BirthPlace":"неизвестно"}],"Name":"krsnt","Caption":"Кровавый Сантехник","Description":["Общая информация:","Использует 1 удар и 3 зоны блока. ","","Использует приёмы: ","\"Ослабить удар\" - аналог приема \"Прикрыться\".","\"Активная защита\"","\"Подрубить\" - удар наносящий 10-30 ед. урона. Урон, наносимый в зону \"ног\" увеличен.","\"Гнилая кровь\" - наносит по 3 ед. урона в течении 10 ходов.","","После смерти может выпасть Гайка с резьбой."]}],"Objects":[]}); +underground.installMobs({"Mobs":[{"SmImg":"mhgol","ImageUrl":"https://img.new-combats.com/i/objects/anvil_golem.png","Instances":[{"Image":"","Level":11,"Align":"0","Tag":"","Move":false,"Description":[],"Strength":0,"Dexterity":0,"Intuition":0,"Endurance":0,"Intellect":0,"Wisdom":0,"HitPoints":0,"Reward":0,"BirthPlace":""}],"Name":"zabgol","Caption":"Забытый","Description":[]}],"Objects":[{"SmImg":"kuzn","ImageUrl":"https://img.new-combats.com/i/objects/forge01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge1","Caption":"Наковальня","Description":["Магия наковальни способна творить чудеса... Превращает вещи 9-го уровня в вещи 10 уровня. Но не все так просто... ","Поговаривают, надо иметь специальные свитки - Cущность предмета. ","Да, следует знать, что модифицировать вещь сможет лишь один человек из команды.","","Здесь можно модифицировать щиты и сапоги."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge2","Caption":"Наковальня забытых мастеров","Description":["Магия наковальни способна творить чудеса... Превращает вещи [9] уровня в вещи [10] уровня.","Здесь вы можете улучшить ожерелье и кольца до десятого уровня.","","Можно получить кольцо:","• Кольцо Кровавой Луны [10] ","• Кольцо Забытых Времен [10] ","• Кольцо Паука [10] ","• Кольцо Скорпиона [10] ","• Кольцо Утреннего Солнца [10] ","• Кольцо Злодеяний [10] ","","Можно получить амулет:","• Амулет Кровавой Луны [10] ","• Амулет Забытых Времен [10] ","• Амулет Паука [10] ","• Амулет Скорпиона [10] ","• Ожерелье Утреннего Солнца [10] ","• Амулет Злодеяний [10] "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge3","Caption":"Наковальня забытых мастеров","Description":["Магия наковальни способна творить чудеса... Превращает вещи [9] уровня в вещи [10] уровня.","Здесь вы можете улучшить пояс и наручи до десятого уровня.","","Можно получить пояс:","• Пояс Кровавой Луны [10] ","• Пояс Забытых Времен [10] ","• Пояс Паука [10] ","• Пояс Решимости [10] ","• Пояс Скорпиона [10] ","• Пояс Утреннего Солнца [10] ","• Пояс Злодеяний [10] ","","Можно получить наручи:","• Браслет Кровавой Луны [10] ","• Наручи Забытых Времен [10] ","• Наручи Паука [10] ","• Наручи Решимости [10] ","• Браслет Скорпиона [10] ","• Наручи Утреннего Солнца [10] ","• Наручи Злодеяний [10] "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"forge4","Caption":"Наковальня забытых мастеров","Description":["Магия наковальни способна творить чудеса... Превращает вещи [9] уровня в вещи [10] уровня.","Здесь вы можете улучшить серьги до десятого уровня.","","Можно получить серьги:","• Серьги Кровавой Луны [10] ","• Серьги Забытых Времен [10] ","• Серьги Паука [10] ","• Серьги Скорпиона [10] ","• Серьги Утреннего Солнца [10] ","• Серьги Злодеяний [10] "]}],"Name":"forge","Caption":"Наковальня","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"vxod","ImageUrl":"/i/ugobj/vxod.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":0,"MT":0,"MW":38,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter","Caption":"Вход","Description":[]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"V2","Name":"ladder02","Caption":"Вход","Description":["Вход на этаж со стороны Чернокнижника."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.2","ClickPoint":"J2","Name":"enter3","Caption":"Вход","Description":["Вход на этаж со стороны Епископа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter2","Caption":"Вход ","Description":["Вход в подземелье."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.1","ClickPoint":"I2","Name":"enter4","Caption":"Вход","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I6","Name":"enter5","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь телепортом, клетка I6 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.1","ClickPoint":"F10","Name":"enter6","Caption":"Вход в Лабиринт","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь телепортами: на первом этаже, клетка F10 или на четвертом этаже, клетка B15."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.1","ClickPoint":"H2","Name":"enter7","Caption":"Вход ","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.2","ClickPoint":"L8","Name":"enter8","Caption":"Вход","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.1","ClickPoint":"R13","Name":"enter9","Caption":"Вход","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"В7","Name":"enter10","Caption":"Вход ","Description":["Вход на этаж."]}],"Name":"entrancepoint_green1","Caption":"вход на этаж","Description":[]},{"SmImg":"vyxod","ImageUrl":"/i/ugobj/vyxod.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":2,"MW":34,"MH":34,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"escape","Caption":"Выход с этажа","Description":[]}],"Name":"escapepoint_blue1","Caption":"выход с этажа","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport01","ImageUrl":"https://img.new-combats.com/i/objects/teleport01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"H8","Name":"blueteleport1","Caption":"Портал","Description":["Перемещает на 4 этаж в начало Лабиринта.","Для работы необходимо иметь собранный Ключ Портала."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport2","Caption":"Телепорт","Description":["Перемещает на клетку D5. ","Сделав шаг вперед, вы окажетесь на клетке E5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport3","Caption":"Телепорт - дорога в глубины","Description":["Перемещает на клетку H4. ","Для работы необходимо убить марочную Душу Кроггентайла и зачистить логово."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport4","Caption":"Телепорт - дорога в глубины","Description":["Не работает..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.4","ClickPoint":"K11","Name":"blueteleport5","Caption":"Телепорт","Description":["Телепорт на 4 этаж.","Вы окажетесь на клетке K11 четвертого этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"blueteleport6","Caption":"Телепорт","Description":["Перемещает на клетку G4.","Для работы необходим Мерцающий ключ №1.","Поищие его в сундуке, рядом с Офицером Глубин."]}],"Name":"blueteleport","Caption":"Синий телепорт","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport02","ImageUrl":"https://img.new-combats.com/i/objects/teleport02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"B7","Name":"redteleport1","Caption":"Дорога в один конец","Description":["Перемещает на клетку B7 третьего этажа.","Для работы необходим Мерцающий ключ №2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport2","Caption":"Телепорт ","Description":["Перемещает на клетку D11.","Для работы телепорта необходимо убить всех монстров в логове."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.4","ClickPoint":"K16","Name":"redteleport3","Caption":"Телепорт - Коридор смерти","Description":["Перемещает на клетку K16 четвертого этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport4","Caption":"Мерцающий круг","Description":["Перемещает на клетку K5 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport5","Caption":"Начало пути","Description":["Перемещает на клетку I7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport6","Caption":"Таинственный круг","Description":["Перемещает на клетку F6."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport7","Caption":"Таинственные круги","Description":["Два телепорта. Левый переносит на клетку H4, а правый на клетку K7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport8","Caption":"Таинственные круги","Description":["Два телепорта. Левый переносит на клетку C6, а правый на клетку J10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport9","Caption":"Таинственный круг","Description":["Перемещает на клетку J4.","На этой же клетке лежит мерцающий ключ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"K11","Name":"redteleport10","Caption":"Телепорт","Description":["Дорога в один конец...","Вы окажетесь на клетке K11 второго этажа. Для использования необходим пещерный ингредиент. "]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"K11","Name":"redteleport11","Caption":"Телепорт","Description":["Перемещает на клетку K11 третьего этажа.","Для работы необходимо убить всех монстров в \"верхнем\" логове."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"redteleport12","Caption":"Телепорт","Description":["Перемещает на клетку G10 второго этажа.","Для работы необходимо убить всех монстров в \"нижнем\" логове."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.4","ClickPoint":"E10","Name":"redteleport13","Caption":"Передовая (Души)","Description":["Перемещает на Передовую, в локацию для выполнения квеста на Душ."]}],"Name":"redteleport","Caption":"Красный телепорт","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport04","ImageUrl":"https://img.new-combats.com/i/objects/teleport04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grteleport1","Caption":"Шаг в неизвестность","Description":["Переносит в начало Лабиринта, на клетку H8."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.2","ClickPoint":"C6","Name":"grteleport2","Caption":"Передовая (Зомби)","Description":["Перемещает на Передовую, в локацию для выполнения квеста на Сантехников."]}],"Name":"greenteleport","Caption":"Зеленый телепорт","Description":[]},{"SmImg":"weap2","ImageUrl":"https://img.new-combats.com/i/objects/2/weap2.png","Rotate":false,"Importance":0,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":31,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"weap21","Caption":"Щит","Description":["Красота..."]}],"Name":"weap2","Caption":"Щит красный","Description":[]},{"SmImg":"arrow2","ImageUrl":"/i/ugobj/arrow2.gif","Rotate":false,"Importance":1,"BW":38,"BH":23,"ML":1,"MT":9,"MW":38,"MH":23,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":"Односторонний проход","Description":["Односторонний проход - можно пройти только в указанном направлении. В обратном направлении прохода нет."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow2","Caption":"Вход","Description":[]}],"Name":"arrowright","Caption":"Стрелка (Право)","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"teleport06","ImageUrl":"https://img.new-combats.com/i/objects/teleport06.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":4,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"yellowteleport1","Caption":"Телепорт","Description":["Перемещает на клетку G13."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"C21","Name":"yellowtelepor2","Caption":"Портал Чернокнижника","Description":["Имея при себе Камень Портала Чернокнижника, можно попасть сразу на третий этаж.","Вы окажетесь на клетке C21 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.3","ClickPoint":"C6","Name":"yellowtelepor3","Caption":"Телепорт","Description":["Перемещает на Передовую, в локацию для выполнения квеста на ПГ."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"abandon.1","ClickPoint":"D7","Name":"yellowtelepor4","Caption":"Забытая эвакуация","Description":["Перемещает в Приемную."]}],"Name":"yellowteleport","Caption":"Желтый телепорт","Description":[]},{"SmImg":"vumpel01","ImageUrl":"https://img.new-combats.com/i/objects/2/polot.png","Rotate":false,"Importance":0,"BW":70,"BH":62,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"vumpel11","Caption":"Вымпел","Description":["Красота..."]}],"Name":"vumpel1","Caption":"Вымпел черный","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"danger2","ImageUrl":"/i/ugobj/danger2_big.gif","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport1","Caption":"Телепорт - Ловушка","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку H6."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport2","Caption":"Телепорт - Ловушка","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку I4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport3","Caption":"Телепорт - Ловушка","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку I4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport4","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку E7."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport5","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку F6."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport6","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку H2."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport7","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку Q11."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport8","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку Q4."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"teleport9","Caption":"Ловушка - телепорт","Description":["Ловушка, попав в нее, вы принудительно отправитесь на клетку R4."]}],"Name":"dangerteleport","Caption":"Телепорт - Ловушка","Description":[]},{"SmImg":"smag_collect1_1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_11","Caption":"Гостевой Сундучок","Description":["В сундуке можно найти Зелье Каменной Стойкости, Зелье Стража Магии или свиток тактики.","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_12","Caption":"Сундук","Description":["В сундуке вы найдете Мерцающий ключ №4, открывающий дверь к Повелителю.","Но не все так просто... Сначала надо зачистить Пыточную.","Могут взять все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_13","Caption":"Сундук","Description":["В сундуке вы найдете Обломок Пирамидального Ключа.","Могут взять все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_14","Caption":"Сундук","Description":["В сундуке вы найдете Осколок Пирамидального Ключа.","Могут взять все члены команды."]}],"Name":"sunduk_1","Caption":"Сундук черный","Description":[]},{"SmImg":"chest04","ImageUrl":"https://img.new-combats.com/i/objects/chest04.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Левую Часть Ключа Портала.","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest12","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Вторую часть руны.","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest13","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Третью часть руны.","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest14","Caption":"Сундук Стража","Description":["В этом сундуке вы обнаружите Четвертую часть руны.","Могут \"открыть\" все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest15","Caption":"Сундук","Description":["В сундуке можно найти какую-нибудь вещь."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest16","Caption":"Сундук - ловушка","Description":["В сундуке можно найти какую-нибудь вещь, но можно напороться на ловушку. Будьте осторожны!"]}],"Name":"chest4","Caption":"Сундук 4","Description":[]},{"SmImg":"gobelin01","ImageUrl":"https://img.new-combats.com/i/objects/2/dec_gobelin02.png","Rotate":false,"Importance":0,"BW":85,"BH":48,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"gobelin11","Caption":"Гобелен","Description":["Красота..."]}],"Name":"gobelin1","Caption":"Гобелен 1","Description":[]},{"SmImg":"gobelin02","ImageUrl":"https://img.new-combats.com/i/objects/2/dec_gobelin01.png","Rotate":false,"Importance":0,"BW":85,"BH":48,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"gobelin2","Caption":"Гобелен","Description":["Красота..."]}],"Name":"gobelin2","Caption":"Гобелен 2","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"enter1","ImageUrl":"https://img.new-combats.com/i/objects/les1up1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":10,"MT":5,"MW":21,"MH":30,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter1","Caption":"Вход","Description":[]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enter2","Caption":"Вход","Description":["Вход в подземелье."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I2","Name":"enter3","Caption":"Вход ","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь лестницей-спуском на втором этаже, клетка I2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"G7","Name":"enter4","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь телепортом, клетка G7 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.1","ClickPoint":"E2","Name":"enter5","Caption":"Вход","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.2","ClickPoint":"G2","Name":"enter6","Caption":"Вход","Description":["Вход на этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.1","ClickPoint":"G2","Name":"enter7","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь лестницей-спуском №1 на первом этаже, клетка G2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.1","ClickPoint":"J2","Name":"enter8","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь лестницей-спуском №2 на первом этаже, клетка G2 или телепортом, клетка D6 первого этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"I2","Name":"enter9","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь лестницей-спуском, клетка I2 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"B2","Name":"enter10","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь телепортом, клетка B2 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"G2","Name":"enter11","Caption":"Вход","Description":["Вход на этаж.","Вы попадете сюда, если воспользуетесь загадочным отверстием, клетка G2 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.3","ClickPoint":"J5","Name":"enter12","Caption":"Вход","Description":["Вход на этаж."]}],"Name":"enter","Caption":"Вход ","Description":[]},{"SmImg":"ladder1","ImageUrl":"https://img.new-combats.com/i/objects/les1down1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":34,"MH":29,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.2","ClickPoint":"I11","Name":"ladder1","Caption":"Спуск на второй этаж","Description":["Спустившись, вы окажетесь на клетке I11 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.3","ClickPoint":"I7","Name":"ladder2","Caption":"Спуск на третий этаж","Description":["Спустившись, вы окажетесь на клетке I7 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.2","ClickPoint":"F10","Name":"ladder3","Caption":"Спуск на второй этаж","Description":["Спустившись, вы окажетесь на клетке F10 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.3","ClickPoint":"I12","Name":"ladder4","Caption":"Спуск на третий этаж","Description":["Спустившись, вы окажетесь на клетке I12 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"emerald.4","ClickPoint":"E6","Name":"ladder5","Caption":"Спуск на четвертый этаж","Description":["Воспользовавшись этим спуском, вы окажетесь на клетке E6 четвертого этажа. ","Там расположилась Ремонтная Мастерская, где артник сможет отремонтировать свои доспехи."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.2","ClickPoint":"G11","Name":"ladder6","Caption":"Спуск на второй этаж","Description":["Спустившись, вы окажетесь на клетке G11 второго этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"angel.3","ClickPoint":"F11","Name":"ladder7","Caption":"Спуск на третий этаж","Description":["Спустившись, вы окажетесь на клетке F11 третьего этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"C11","Name":"ladder8","Caption":"Лестница №1","Description":["Лестница на второй этаж.","Спустившись, вы окажетесь на клетке C11 второго этажа.","Но не забудьте захватить Мерцающий ключ №1!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.2","ClickPoint":"K11","Name":"ladder9","Caption":"Лестница №2","Description":["Лестница на второй этаж.","Спустившись, вы окажетесь на клетке K11 второго этажа.","Но не забудьте захватить Мерцающий ключ №2!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"sand.3","ClickPoint":"F11","Name":"ladder10","Caption":"Спуск на третий этаж","Description":["Спустившись, вы окажетесь на клетке F11 третьего этажа."]}],"Name":"ladder","Caption":"Спуск","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"door1","ImageUrl":"https://img.new-combats.com/i/objects/1/door2.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor1","Caption":"Вход","Description":["Для прохода требуется Отпирающая руна."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor2","Caption":"Вход в Лабораторию","Description":["Для прохода необходим Мерцающий ключ №3.","Ключ можно поднять на клетке J4 второго этажа, или получить после смерти Заблудшей Души."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor3","Caption":"Вход к Повелителю","Description":["Для прохода необходим Мерцающий ключ №4.","Поищите его в сундучке, недалеко от двери...","При наличии ключа можно пройти через дверь в обе стороны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor4","Caption":"Вход","Description":["Вход в подземелье."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor5","Caption":"Дверь","Description":["Для прохода необходим Мерцающий ключ №3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"enterdoor6","Caption":"Дверь","Description":[]}],"Name":"enterdoor","Caption":"Вход, черная дверь","Description":[]},{"SmImg":"key3","ImageUrl":"https://img.new-combats.com/i/objects/Key3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key31","Caption":"Мерцающий ключ №3","Description":["Необходим для работы Мастерской забытых мастеров."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key32","Caption":"Мерцающий ключ №3","Description":["Необходим для:"," • прохода в Лабораторию, на четвертом этаже "," • выхода на поверхность через Загадочные отверстия"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"key33","Caption":"Мерцающий ключ №3","Description":["Необходим для прохода через Дверь, на клетке G6."]}],"Name":"key3","Caption":"Мерцающий ключ №3","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"well05","ImageUrl":"https://img.new-combats.com/i/objects/well05.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain51","Caption":"Фонтан Зачарованных гор","Description":["Можно получить Снадобье Змеи, Снадобье Великана, Снадобье Предчувствия или Снадобье Разума.","Помимо пустой бутылки, требуется драгоценный камень.","Могут набрать три члена команды.","Для работы фонтана необходимо убить всех монстров в логове."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain52","Caption":"Фонтан Искаженной природы","Description":["Можно получить Снадобье Искаженной Ловкости, Снадобье Искаженной Силы или Снадобье Искаженной Интуиции. ","Для работы фонтана необходимо убить всех монстров в логове у телепорта. Могут набрать трое."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain53","Caption":"Фонтан Океана","Description":["Можно наполнить пустую бутылку Снадобьем Океана.","Требуются Мерцающие ключи №1 и №2. ","Ключи Вы найдете на клетках F5 и H8 первого этажа.","Снадобье получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain54","Caption":"Фонтан Недр","Description":["Можно наполнить пустую бутылку Снадобьем Недр.","Требуются Мерцающие ключи №1 и №2. ","Ключи Вы найдете на клетках F5 и H8 первого этажа.","Снадобье получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain55","Caption":"Фонтан Былых побед","Description":["Можно получить Снадобье Змеи, Снадобье Великана, Снадобье Предчувствия или Снадобье Разума.","Помимо пустой бутылки, требуется драгоценный камень."]}],"Name":"fountain5","Caption":"Фонтан 5","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"well06","ImageUrl":"https://img.new-combats.com/i/objects/well06.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain61","Caption":"Фонтан Стойкости","Description":["Можно наполнить пустую бутылку Снадобьем Стойкости. Но не все так просто...Сначала разыщите и убейте Дарьяну Корт.","Снадобье получают лишь четыре человека из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain62","Caption":"Фонтан Отрицания","Description":["Можно получить Великое Зелье Отрицания.","Помимо пустой бутылки, требуется драгоценный камень.","Могут набрать два человека из команды... Но не все так просто, вначале убейте всех монстров в логове."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain63","Caption":"Фонтан Забытых Мастеров","Description":["Можно получить Снадобье Забытых Мастеров.","Для работы фонтана необходимо убить всех монстров в логове и Короля Валлуара.","Может получить лишь один человек из команды.","","В настоящее время фонтан не работает."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"fountain64","Caption":"Фонтан Времени","Description":["Можно сделать вечными Котомку, Мешок Купца, Торбу, Сумку Негоцианта, Мешок Забытых. ","Дамскую сумочку и Мешок Тоговца сделать вечными не получится. Воспользоваться магией фонтана сможет только один человек из команды. "]}],"Name":"fountain6","Caption":"Фонтан 6","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"smag_collect1","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":6,"MT":5,"MW":28,"MH":28,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk1","Caption":"Сундук","Description":["В сундуке можно найти: Шепот гор, Кольцо Мороза (мф), Сияющее Кольцо (мф), Кольцо Горящего Взгляда (мф), свиток Снять проклятье, а можете и ничего не найти...","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk2","Caption":"Сундук","Description":["Не открыть..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk3","Caption":"Сундук","Description":["В сундуке можно найти: Зелье маны, Кристал голоса предков или Амулет здоровья (мф).","Может \"открыть\" вся команда."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk4","Caption":"Сундук","Description":["Сундук с ловушкой... Ловушка снимается первым нажатием, при последующем нажатии можно получить предмет.","В сундуке можно найти Кристалл стабильности, Меч Темного Пламени (мф), Меч Заката (мф) или Ледяной меч (мф), а можно и ничего не найти...","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk5","Caption":"Сундук","Description":["Сундук с ловушкой... Ловушка снимается первым нажатием, при последующем нажатии можно получить предмет.","В сундуке можно найти Камень затаенного солнца, Меч Кровавой Луны (мф), Меч Паука (мф)или Меч Забытых Времён (мф), а можно и ничего не найти...","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk6","Caption":"Серебряный сундучок","Description":["В сундуке можно найти Нужный болт.","Может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk7","Caption":"Сундук","Description":["В сундуке можно найти: ингредиент, испортившийся эликсир, пустую бутылку, бутерброд \"Завтрак рыцаря\". А можно и ничего не найти.","Будьте осторожны - в сундуке может быть ловушка!"]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk8","Caption":"Сундук - проход","Description":["Поговаривают, если шагнуть на эту клетку, то можно провалиться на второй этаж, к слизям...","Но еще не одному путнику, этого не удалось..."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk9","Caption":"Сундук","Description":["Сундук с ловушкой.","В сундуке можно найти: Снадобье Песков, Снадобье Морей, Снадобье Ветра или Снадобье Пламени. "]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk10","Caption":"Сундук","Description":["Сундук с ловушкой.","В сундуке можно найти: ингредиент, пустую бутылку или что-то съестное. А можно и ничего не найти.","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk11","Caption":"Сундук","Description":["Сундук с ловушкой.","В сундуке лежит Мерцающий ключ №1. Ключ необходим для работы телепорта, на клетке F4.","","Ловушка снимается при первом нажатии на сундук, при последующих нажатиях можно получить ключи.","Ключ могут взять все члены команды."]}],"Name":"smag_collect1","Caption":"Сундук","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"smag_collect1_3","ImageUrl":"https://img.new-combats.com/i/objects/smag_collect1_3.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":5,"MT":5,"MW":24,"MH":24,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_31","Caption":"Золотой сундучок","Description":["В сундуке можно найти Рабочий вентиль.","Может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"sunduk_32","Caption":"Сундук","Description":["В сундуке можно найти Отворяющую печать №4.","Сундук может \"открыть\" лишь один человек из команды. Печать разыгрывается."]}],"Name":"sunduk_3","Caption":"Золотой сундучок","Description":[]},{"SmImg":"drain_bottom","ImageUrl":"https://img.new-combats.com/i/objects/drain_bottom.png","Rotate":false,"Importance":0,"BW":80,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain1","Caption":"Водосток","Description":["Попахивает..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain2","Caption":"Водосток","Description":["Попахивает..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain3","Caption":"Водосток","Description":["Попахивает..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.1","ClickPoint":"G1","Name":"drain4","Caption":"Вход через водосток","Description":["Вход на второй этаж.","Вы окажетесь здесь, если \"нырнете\" в ржавый водосток (клетка G1 первого этажа)."]},{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain5","Caption":"Водосток","Description":["Можно получить свиток Спасения [0/1] .","Получает лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain6","Caption":"Водосток - ловушка","Description":["Будьте осторожны, здесь вас ожидает ловушка, которая может снять до 80% HP.","Ловушка работает в двух направлениях. Попав в нее, вы автоматически оказываетесь в бою со Смотрителем."]}],"Name":"drain_bottom","Caption":"Водосток","Description":[]},{"SmImg":"drain_top","ImageUrl":"https://img.new-combats.com/i/objects/drain_top.png","Rotate":false,"Importance":0,"BW":70,"BH":40,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"ForestGreen","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain_top1","Caption":"Водосток","Description":["Расположился на северной стене.","В нем вы найдете Гайку."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"drain_top2","Caption":"Водосток","Description":[]}],"Name":"drain_top","Caption":"Водосток - труба","Description":[]},{"SmImg":"proboina","ImageUrl":"https://img.new-combats.com/i/objects/proboina.png","Rotate":false,"Importance":1,"BW":60,"BH":30,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina1","Caption":"Слив","Description":["Нажав на него, вы окажетесь на клетке J14."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina2","Caption":"Слив","Description":["Нажав на него, вы окажетесь на клетке F16."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina3","Caption":"Трещина","Description":["Ничего не видно..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"demons.3","ClickPoint":"B1","Name":"proboina4","Caption":"Подозрительная трещина","Description":["Как только вы шагнете на эту клетку - вы провалитесь на третий этаж.","Вы окажетесь на клетке B1 третьего этажа.","Но не все так просто, сначала убейте Епископа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina5","Caption":"Вход","Description":["Попасть сюда можно через Подозрительную трещину, на клетке I21 первого этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"proboina6","Caption":"Подозрительная трещина","Description":["Как только вы шагнете на эту клетку - вы спуститесь в недра Провала.","Вы окажетесь на клетке M19 первого этажа."]}],"Name":"proboina","Caption":"Пробоина","Description":[]},{"SmImg":"trash2","ImageUrl":"https://img.new-combats.com/i/objects/trash02.png","Rotate":false,"Importance":1,"BW":102,"BH":50,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash21","Caption":"Останки сантехника","Description":["Можно найти Длинный болт."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"trash22","Caption":"Куча мусора","Description":["Лучше не трогать... ","Дотронувшись, можно заработать болезнь или отравиться ядом.","","Болезни:","\"Желудочный Грипп\" - (Ловкость: -6), на 6 ч.","\"Гудящая Голова\" - (Интуиция: -6), на 6 ч.","\"Трясущиеся руки\" - (Сила: -6), на 6 ч.","\"Скрытая Слабость\" - (Сила: -2, Интуиция: -2, Ловкость: -2), на 3 ч.","\"Ранимость\" - (Защита от урона: -10), на 3 ч.","\"Мутный Взгляд\" - (мф. крита -20%, мф. антикрита -25%, мф. уворота -30%, мф. антиуворота -25%), на 36 ч.","","Эффекты от яда:","\"Грязная Кровь\" - Восстановление HP(%):-40","","Важно: Болезни лечатся Сывороткой, а действия яда можно нейтрализовать Антидотом.","","Все что можно найти в куче этого мусора - пустая бутылка или ингредиент (драгоценный камень) ."]}],"Name":"trash2","Caption":"Мусор","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest01","ImageUrl":"https://img.new-combats.com/i/objects/chest01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest12","Caption":"Сундук","Description":["В сундуке можно найти Сущность Сапог, Сущность Щита, чек на 400 кр, а можно и ничего не найти...","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest15","Caption":"Сундук","Description":["В сундуке можно найти Щит безумца или Глубинный Камень.","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest11","Caption":"Потерянный сундук","Description":["В сундуке можно найти Гайку.","Может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest13","Caption":"Сундук","Description":["В сундуке можно найти какую-нибудь вещь...Кстати, если повезет, то можно найти чек на 10 кр.","Осторожно! Можно напороться на ловушку.","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest14","Caption":"Сундук","Description":["В сундуке можно найти ингредиент, свиток Восстановление энергии +60HP, а если повезет, то и чек на 10 кр. ","Осторожно! Можно умереть, угодив в коварную ловушку. Ловушка снимается первым нажатием, при последующем нажатии можно получить предмет.","Сундук может \"открыть\" лишь один человек из команды."]}],"Name":"chest1","Caption":"Сундук 1","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest02","ImageUrl":"https://img.new-combats.com/i/objects/chest02.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":2,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest21","Caption":"Потерянный сундук","Description":["В сундуке можно найти Зелье Каменной Стойкости, Зелье Стража Магии или свиток тактики.","Сундук может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest22","Caption":"Сундук","Description":["В сундуке можно найти Отворяющую печать №3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest23","Caption":"Заброшенный сундук","Description":["В сундуке можно найти Болт.","Может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest24","Caption":"Сундук - ловушка","Description":["В сундуке можно найти вещь для [6]-[7] уровня.","Но будьте осторожны! Можно угодить в опасную ловушку, снимающую до 1000 HP.","Сундук может открыть лишь \"один\" человек из команды."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest25","Caption":"Сундук","Description":["В сундуке можно найти какую-нибудь вещь. Хотя, не факт, что тут что-то есть...","Осторожно! Можно напороться на ловушку.","Сундук может \"открыть\" лишь один человек из команды."]}],"Name":"chest01","Caption":"Сундук 2","Description":[]},{"SmImg":"attentionpoint_red1","ImageUrl":"/i/ugobj/attentionpoint_red1.gif","Rotate":false,"Importance":1,"BW":40,"BH":40,"ML":0,"MT":0,"MW":38,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger1","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на ваc нападут Зомби."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger2","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападет Каменный Страж. Если бой со стражем уже идет, вы просто окажетесь в этом бою."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger3","Caption":"Ловушка","Description":["Первый кто шагнет на эту клетку, может потерять до 90% НР, будьте осторожны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger4","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападёт Местный Житель. Но только в том случае, если он притаился за углом!"]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger5","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападет Повелитель."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger6","Caption":"Ловушка","Description":["Если вы наступите на эту клетку, то можете потерять до 90% НР, будьте осторожны.","Ловушка работает в обе стороны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger7","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападут Слизи с клетки R10."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger8","Caption":"Ловушка","Description":["Если вы шагнете на эту клетку - можете потерять до 1000 НР. Будьте осторожны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger9","Caption":"Ловушка","Description":["Если вы шагнете на эту клетку - можете потерять до 1000 НР. Будьте осторожны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger10","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападут Древние Стражи."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger11","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападут Механический Охранник и Механик."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"danger12","Caption":"Ловушка","Description":["Как только вы шагнете на эту клетку - на вас нападут Механический Охранник, Механики и Механические Големы."]}],"Name":"attentionpoint_red1","Caption":"Ловушка","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"chest03","ImageUrl":"https://img.new-combats.com/i/objects/chest03.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":34,"MH":34,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest31","Caption":"Потерянный Сундук","Description":["В сундуке лежит Ключ от сокровищницы. C его помощью открывается решетка на клетке G12.","Ключ могут взять все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest32","Caption":"Сундук","Description":["В сундуке можно найти Лучистый топаз, Сущность Кольца, Сущность Пoяca, Сущность Aмулeтa, Сущность Серег или Сущность Наручей.","Могут \"открыть\" два человека из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest33","Caption":"Старый сундук","Description":["В сундуке можно найти Вентиль.","Может \"открыть\" лишь один человек из команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"chest34","Caption":"Кованый сундук","Description":["В сундуке можно найти Чистый вентиль.","Может \"открыть\" лишь один человек из команды."]}],"Name":"chest3","Caption":"Сундук 3","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"altar","ImageUrl":"https://img.new-combats.com/i/objects/altar01.png","Rotate":false,"Importance":2,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar1","Caption":"Алтарь Осколков","Description":["Здесь можно собрать Ключ Портала и Отпирающую Руну.","Для сборки ключа необходимо иметь три его части, для сборки руны - все пять ее частей. Поищите все это \"добро\" в Сундуках Стража...","Части Ключа Портала - сундуки Стража, 4 этаж.","Части Отпирающей Руны - сундуки Страж, 5 этаж."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar2","Caption":"Алтарь","Description":["Алтарь - вход в тайную комнату. Охраняется Служителем Бездны.","Вас перенесет на клетку B5. Для прохода требуется драгоценный камень."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar3","Caption":"Алтарь - ловушка","Description":["Первый дотронувшийся получит или проклятье или благословение, сроком от 3 до 6 часов. Может быть: х2, х3, х4, х5. ","","Благословление Глубин: ","\"Печать Хаоса\" - (Максимально наносимое повреждение +25), на 3ч.","\"Жизнь\" - (Уровень жизни (HP) +30), на 6 ч.","\"Регенерация\" - (Восстановление HP (%): +50), на 3 ч. ","\"Мощь\" (Сила: +5), на 6 ч.","\"Скорость\" (Ловкость: +5), на 6 ч.","\"Предчувствие\" (Интуиция: +5), на 6 ч. ","","Проклятье Глубин:","\"Печать Хаоса\" - (Максимальное наносимое повреждение: +25, Минимальное наносимое повреждение: -25), на 3 ч. ","\"Жизнь\" - (Уровень жизни (HP) -30), на 6 ч.","\"Регенерация\" - (Восстановление HP (%): -50), на 3 ч.","\"Мощь\" - (Сила: -5), на 6 ч.","\"Скорость\" - (Ловкость: -5), на 6 ч.","\"Предчувствие\" - (Интуиция: -5), на 6 ч. ","","Вы можете здесь найти: Кольцо Отражения, Кольцо Жадного Калеки, Синее Кольцо мастерства, Песочный Перстень, Перчатки Дровосека или Перчатки Рыцаря."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar4","Caption":"Алтарь Единения","Description":["Здесь можно собрать Пирамидальный ключ.","Для сборки ключа необходимо иметь Обломок и Осколок Пирамидального ключа."]},{"HighlightColorString":"DarkRed","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"altar5","Caption":"Алтарь с ловушкой","Description":["Первый дотронувшийся получит удар от ловушки. Удар может оказаться смертельным (снимает 700-701 HP). ","В алтаре можно найти: Кольцо Отражения, Кольцо Жадного Калеки, Синее Кольцо мастерства, Песочный Перстень, Перчатки Дровосека или Перчатки Рыцаря."]}],"Name":"altar","Caption":"Алтарь","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"grate","ImageUrl":"https://img.new-combats.com/i/objects/grate.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate1","Caption":"Решетка","Description":["Для прохода необходим Мерцающий ключ №3."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate2","Caption":"Решетка","Description":["Для прохода необходим Мерцающий ключ №2.","Ключ Вы найдете на клетке F5 первого этажа."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate3","Caption":"Вход в Кладовую","Description":[]}],"Name":"grate","Caption":"Решетка","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"grate01","ImageUrl":"https://img.new-combats.com/i/objects/grate01.png","Rotate":false,"Importance":1,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate11","Caption":"Решетка","Description":["Для прохода требуется Ключ от сокровищницы.","Поищите его в сундуке, на клетке J1..."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate12","Caption":"Решетка","Description":["Проход в Распределительную.","Требуется Мерцающий ключ №5."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate13","Caption":"Решетка","Description":["Проход между Главным Коллектором и 2-ым туннелем.","Требуется Мерцающий ключ №1."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate14","Caption":"Решетка","Description":["Проход между Главным Коллектором и 3-им туннелем.","Требуется Мерцающий ключ №2."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate15","Caption":"Решетка","Description":["Проход в Отсек 1.","Требуется Мерцающий ключ №7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate16","Caption":"Решетка","Description":["Проход в Отсек 2.","Требуется Мерцающий ключ №7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate17","Caption":"Решетка","Description":["Проход в Отсек 3.","Требуется Мерцающий ключ №7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate18","Caption":"Решетка","Description":["Проход в Отсек 4.","Требуется Мерцающий ключ №7."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"grate19","Caption":"Решетка","Description":["Проход в Хозяйственное помещение.","Требуется Мерцающий ключ №6."]}],"Name":"grate1","Caption":"Решетка 1","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"lab","ImageUrl":"https://img.new-combats.com/i/objects/lab01.png","Rotate":false,"Importance":2,"BW":60,"BH":60,"ML":2,"MT":5,"MW":32,"MH":32,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab1","Caption":"Лаборатория","Description":["Здесь можно собрать Свитки Тактик, но не больше чем 3 свитка за поход на каждого члена команды и не более 10 свитков на команду.","Если у Вас есть Растворители Ресурсов, то материалы из подземелий можно превратить в Сущности Ресурса. Сущности создаются у Лаборатории (на клетке B4)."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab2","Caption":"Лаборатория","Description":["Здесь можно приготовить Эликсир Силы Предков. Для приготовления эликсира нужны следующие реагенты: Снадобье Зарева, Снадобье Океанов, Снадобье Недр и Сущности Ресурса (5 шт.).","В каждой лаборатории можно приготовить только один эликсир за поход на всю команду."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab3","Caption":"Забытая Экипировка","Description":["Здесь можно получить Консервированное Зелье Жизни, но после выхода из пещеры оно пропадает.","Получают все члены команды."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"lab4","Caption":"Лаборатория","Description":["Здесь можно собрать свитки Зачарования, требуется Пирамидальный ключ.","Для работы необходимо зачистить Пыточную."]}],"Name":"lab","Caption":"Лаборатория","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"arrow1","ImageUrl":"/i/ugobj/arrow1.gif","Rotate":false,"Importance":1,"BW":23,"BH":38,"ML":9,"MT":1,"MW":23,"MH":38,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":"Односторонний проход","Description":["Односторонний проход - можно пройти только в указанном направлении. В обратном направлении прохода нет."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":1,"ClickChapter":"capital.5","ClickPoint":"S5","Name":"arrow2","Caption":"Проход на пятый этаж","Description":["Сделав шаг на юг, вы окажетесь на пятом этаже. ","Проход работает в обе стороны."]},{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow3","Caption":"Вход","Description":[]}],"Name":"arrowup","Caption":"Стелка (вверх)","Description":[]}]}); +underground.installMobs({"Mobs":[],"Objects":[{"SmImg":"arrow4","ImageUrl":"/i/ugobj/arrow4.gif","Rotate":false,"Importance":1,"BW":38,"BH":23,"ML":1,"MT":9,"MW":38,"MH":23,"Instances":[{"HighlightColorString":"Transparent","LookDirection":0,"ClickAction":0,"ClickChapter":"","ClickPoint":"","Name":"arrow1","Caption":"Односторонний проход","Description":["Односторонний проход - можно пройти только в указанном направлении. В обратном направлении прохода нет."]}],"Name":"arrowleft","Caption":"Стрелка (Лево)","Description":[]}]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.novice.js","dungeon.data.abandon.novice.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.demons.novice.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.capital.novice.js","dungeon.data.angel.demons.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#EBEBD3","CellBorderColorString":"#9E965C","Jobs":{"CollectiveJobs":[],"CapturedJobs":[{"Caption":"Ключииик","ImageUrl":"https://img.new-combats.com/i/items/mater247.gif","ItemReward":0,"Description":["Принести Ключииик Луке.","","Выпадает из Мартына Водопроводчика. ","Взамен на Ключиик у Луки можно получить Гайку Силы или Гайку Мудрости."],"DefCount":1}],"KillingJobs":[{"MobName":"strgl","Unique":false,"Description":["Найти и убить подлого отступника Старожила, доложить Луке по завершении.","","Вы получите 3 Серебряных жетона."],"DefCount":1},{"MobName":"hozkan","Unique":false,"Description":["Обломать вантуз и не только вантуз, Хозяину Канализации, доложить Луке о завершении","","Вы получите 3 Золотых жетона."],"DefCount":1},{"MobName":"glprb","Unique":false,"Description":["Найти и убить подлого отступника , Главного прораба, доложить Луке о завершении","","Вы получите Чек на 3 кр."],"DefCount":1}]},"Floors":[{"Cells":[{"X":2,"Y":14,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate22"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":11,"Y":4}]}]},{"X":6,"Y":14,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest33"}],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest23"}],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"martn","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest23"}],"HotSpots":[]},{"X":6,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":9,"Y":13}]}]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":5}]}]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[{"ObjectName":"drain_top","InstanceName":"drain_top1"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key5","InstanceName":"key51"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":11}]}]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":8,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"ladder2","InstanceName":"ladder21"}],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"luka","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"front_walll_tr","InstanceName":"front_walll_tr1"}],"HotSpots":[]},{"X":12,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab3"}],"HotSpots":[]},{"X":11,"Y":11,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder2","InstanceName":"ladder22"}],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"tungad","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1_small","InstanceName":"chest11"},{"ObjectName":"key4_small","InstanceName":"key41"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":14}]}]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"obpodv","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1_small","InstanceName":"key11"},{"ObjectName":"chest1_small","InstanceName":"chest11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":4}]}]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pauk","Level":4,"Align":"0","Tag":"","Count":2},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain2"}],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate14"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest11"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate13"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":0}]}]},{"X":7,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"kanzuk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"obpodv","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lukadoor","InstanceName":"lukadoor1"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"gmrz","Level":4,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"santzm","Level":4,"Align":"0","Tag":"","Count":1},{"Name":"stpauk","Level":4,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[{"ObjectName":"drain_bottom1","InstanceName":"drain1"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain1"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2_small","InstanceName":"key21"},{"ObjectName":"key3_small","InstanceName":"key31"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":13},{"X":6,"Y":4}]}]},{"X":4,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"full_rune_vial","InstanceName":"full_rune_via1"}],"HotSpots":[]}],"LookDirection":3,"Width":15,"Height":17,"DataBounds":"0, 0, 14, 16","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":0,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_small","InstanceName":"smag_collect1"},{"ObjectName":"key7_small","InstanceName":"key71"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":11},{"X":7,"Y":11},{"X":7,"Y":15},{"X":9,"Y":15}]}]},{"X":1,"Y":0,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hozkan","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":1,"Y":1,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate19"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":5}]}]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":3},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key6","InstanceName":"key61"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":2}]}]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strgl","Level":5,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest34"}],"HotSpots":[]},{"X":14,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":12,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash21"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":12,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key9","InstanceName":"key91"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":15,"Y":13}]}]},{"X":11,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":15,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk6"}],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":12,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate24"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":10}]}]},{"X":11,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate2","InstanceName":"grate23"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":10}]}]},{"X":10,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate18"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":10}]}]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":10}]}]},{"X":6,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":7,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate16"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":7,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain2"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate15"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":7,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":16}]}]},{"X":9,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate17"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":0,"Y":0}]}]},{"X":9,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":16}]}]},{"X":8,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder2","InstanceName":"ladder23"}],"HotSpots":[]},{"X":5,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2},{"Name":"slzm","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_2","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":15,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_3","InstanceName":"sunduk_31"}],"HotSpots":[]},{"X":16,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":15}]}]},{"X":16,"Y":16,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":16,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"glprb","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":18,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":17,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash1","InstanceName":"trash11"}],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"strkr","Level":5,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1},{"Name":"letb","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"WhiteSmoke","MobRefs":[{"Name":"kanpauk","Level":5,"Align":"0","Tag":"","Count":2},{"Name":"bzgsnt","Level":5,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"sunduk_2_blendy","InstanceName":"sunduk_21"}],"HotSpots":[]},{"X":12,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk6"}],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mstngtl","Level":6,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key8","InstanceName":"key81"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":11,"Y":13}]}]}],"LookDirection":3,"Width":17,"Height":20,"DataBounds":"0, 0, 17, 20","Name":"floor2","Caption":"2 этаж","Description":["Второй этаж условно разделен на две зоны: Золотой путь и Серебряный путь. ","Серебряный путь - расcчитан на персонажей 5-го уровня. ","Золотой путь - расcчитан на персонажей 6-го уровня. ","","Серебряный путь на карте выделен другим цветом. "]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet99","Caption":"Гайка Силы","Description":["Масса: 1
        ","Цена: 90 кр.
        ","Долговечность: 0/30
        ","Требуется минимальное:
        ","• Уровень: 4
        ","• Сила: 15
        ","Действует на:
        ","• Мф. против критического удара (%): +27
        ","• Мф. против увертывания (%): +27
        ","• Уровень жизни (HP): +33
        ","• Сила: +3
        ","• Броня головы: 4-6 (3+d3)
        ","• Броня корпуса: 4-6 (3+d3)
        ","• Броня пояса: 4-6 (3+d3)
        ","• Броня ног: 4-6 (3+d3)

        "]},{"NewLineToBR":false,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet100","Caption":"Гайка Мудрости","Description":["Масса: 1
        ","Цена: 90 кр.
        ","Долговечность: 0/30
        ","Требуется минимальное:
        ","• Интеллект: 15
        ","• Уровень: 4
        ","Действует на:
        ","• Мф. против критического удара (%): +27
        ","• Интеллект: +3
        ","• Уровень жизни (HP): +30
        ","• Уровень маны: +30
        ","• Броня головы: 4-6 (3+d3)
        ","• Броня корпуса: 4-6 (3+d3)
        ","• Броня пояса: 4-6 (3+d3)
        ","• Броня ног: 4-6 (3+d3)

        "]}],"Name":"amulet","Caption":"Амулеты","Description":["","Можно получить у Луки за выполненный квест."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl4_reward","Caption":"Гайка","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Паука, Сточного Паука, Канализационного Жука, Сантехника Зомби, Обитателя Подвалов.","Можно найти в: Потерянном сундуке, Водостоке на клетке H4, Водостоке на клетке E7 (северная стена) на первом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl5_reward","Caption":"Чистая гайка","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Канализационного Паука, Страшной Крысы.","Можно найти в Месторождении Мусора на втором этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_small_lvl6_reward","Caption":"Гайка с резьбой","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Летучей Бестии, Кровавого Сантехника.","Можно найти в Бронзовом Сундучке на втором этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl4_reward","Caption":"Болт","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Обитателя Подвалов. ","Можно найти в Заброшенном Сундуке на первом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl5_reward","Caption":"Длинный болт","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Безголового Сантехника. ","Можно найти в Останках Сантехник на втором этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_med_lvl6_reward","Caption":"Нужный болт","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Хозяина Канализации, Слесаря - зомби, Местных Жителей.","Можно найти в Серебряном Сундучке на втором этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl4_reward","Caption":"Вентиль","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Тунельного Гада и Жуткой Мерзости. ","Можно найти в Старом Сундуке на первом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl5_reward","Caption":"Чистый вентиль","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Старожила. ","Можно найти в Кованом Сундуке на втором этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_big_lvl6_reward","Caption":"Рабочий вентиль","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Главного Прораба. ","Можно найти в Золотом Сундучке на втором этаже."]}],"Name":"maters","Caption":"Гайки, Болты, Вентили","Description":["","Все это добро можно обменять у Луки на жетоны разного достоинства."]},{"NewLineToBR":false,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl4_reward","Caption":"Жетон","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl5_reward","Caption":"Серебряный жетон","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater_coin_lvl6_reward","Caption":"Золотой жетон","Description":["Масса: 0.1 ","Долговечность: 0/1 ","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"mater_coin","Caption":"Жетоны","Description":["","Лука дает Жетоны за Гайки, Болты и Вентили. ","Лука дает Жетоны серебрянные, если Гайки и Вентили Чистые, а Болт Длинный!","Лука дает Золотые жетоны, если Гайки с Резьбой, Вентиль Рабочий, а Болт Нужный!","","Также 3 Cеребряных жетона можно обменять на один Золотой жетон.","","За жетоны в каморке Луки можно купить вещи для [4]-[6] уровня."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP100_20","Caption":"Консервированное Зелье Жизни","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/7","Срок годности: 30 дн. ","Описание: Целебное зелье восстанавливающее 100 единиц здоровья.","","Можно получить в Забытой Экипировке на первом этаже, клетка J12.","После выхода из подземелья пропадает."]}],"Name":"pot_base","Caption":"Эликсиры","Description":[]},{"NewLineToBR":false,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mater247","Caption":"Ключииик","Description":["","Выпадает из Мартына Водопроводчика.","Необходим для завершения задания. С помощью этого ключииика можно открутить Вентиль от трубопровода, что на стене за Лукой."]}],"Name":"key","Caption":"Ключииик","Description":["Квестовый предмет.
        ","Взамен не Ключииик у Луки можно получить Гайку Силы или Гайку Мудрости."]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Канализации

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife54","Caption":"Нож Пророчеств","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x8
        Долговечность: 0/40
        Требуется минимальное:
        • Ловкость: 17
        • Интуиция: 17
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 3
        • Выносливость: 9
        Свойства предмета:
        • Урон: 3 - 9
        • Мф. против увертывания (%): +20
        • Мф. критического удара (%): +30
        • Мф. удара сквозь броню (%): +20
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Редки
        • Дробящие атаки: Ничтожно редки
        • Режущие атаки: Временами"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife56","Caption":"Кинжал Витой Рукояти","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 17
        • Интуиция: 17
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 3
        • Выносливость: 9
        Свойства предмета:
        • Урон: 3 - 9
        • Мф. критического удара (%): +10
        • Мф. удара сквозь броню (%): +50
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Временами
        • Рубящие атаки: Редки
        • Дробящие атаки: Ничтожно редки
        • Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife58","Caption":"Столовый Разделочный Нож","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x14
        Долговечность: 0/40
        Требуется минимальное:
        • Ловкость: 21
        • Интуиция: 21
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 3
        • Сила: 11
        Действует на:
        • Мф. увертывания (%): +60
        Свойства предмета:
        • Урон: 4 - 11
        • Мф. против увертывания (%): +40
        • Мф. критического удара (%): +20
        • Мф. удара сквозь броню (%): +5
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Временами
        • Рубящие атаки: Малы
        • Дробящие атаки: Ничтожно редки
        • Режущие атаки: Малы
        "]}],"Name":"knife","Caption":"Кастеты, ножи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe60","Caption":"Топор Внезапности","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 13
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        • Выносливость: 13
        • Сила: 13
        Действует на:
        • Ловкость: +2
        Свойства предмета:
        • Урон: 8 - 14
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Рубящие атаки: Регулярны
        • Дробящие атаки: Редки
        • Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe84","Caption":"Легкий Боевой Топор","Description":["Масса: 8
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 15
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Ловкость: +1
        Свойства предмета:
        • Урон: 7 - 13
        • Мф. против увертывания (%): +30
        • Мф. критического удара (%): +20
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Рубящие атаки: Всегда"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe63","Caption":"Топор Лезвий","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x15
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 13
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        • Выносливость: 13
        • Сила: 13
        Действует на:
        • Мф. парирования (%): +5
        • Ловкость: -1
        Свойства предмета:
        • Урон: 8 - 15
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Рубящие атаки: Регулярны
        • Дробящие атаки: Редки
        • Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe70","Caption":"Ледяной Топор","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x16
        Долговечность: 0/50
        Требуется минимальное:
        • Интуиция: 13
        • Интеллект: 2
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        • Выносливость: 13
        • Сила: 13
        Свойства предмета:
        • Урон: 8 - 15
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Рубящие атаки: Регулярны
        • Дробящие атаки: Редки
        • Режущие атаки: Ничтожно редки
        Наложено заклятье: Обморожение
        Наносит противнику 10-20 ед. урона водой
        Шанс срабатывания: 20% при каждом успешном ударе."]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe79","Caption":"Топор Огня и Пепла","Description":["Масса: 12
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x16
        Долговечность: 0/50
        Требуется минимальное:
        • Интуиция: 13
        • Интеллект: 2
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        • Выносливость: 13
        • Сила: 13
        Свойства предмета:
        • Урон: 8 - 15
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Рубящие атаки: Регулярны
        • Дробящие атаки: Редки
        • Режущие атаки: Ничтожно редки
        Наложено заклятье: Ожог
        Наносит противнику 10-20 ед. урона огнем
        Шанс срабатывания: 20% при каждом успешном ударе."]}],"Name":"axe","Caption":"Топоры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer50","Caption":"Клевец","Description":["Масса: 18
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x15
        Долговечность: 0ме/50
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами: 3
        • Выносливость: 16
        • Сила: 20
        Действует на:
        • Ловкость: -1
        Свойства предмета:
        • Урон: 10 - 18
        • Мф. против увертывания (%): +7
        • Мф. критического удара (%): +20
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Дробящие атаки: Часты"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer65","Caption":"Клевец Пробоин","Description":["Масса: 19
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x15
        Долговечность: 0/50
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами: 3
        • Выносливость: 16
        • Сила: 20
        Действует на:
        • Ловкость: -2
        Свойства предмета:
        • Урон: 10 - 18
        • Мф. критического удара (%): +15
        • Мф. удара сквозь броню (%): +20
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Редки
        • Дробящие атаки: Часты"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace55","Caption":"Цеп Мародера","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x17
        Долговечность: 0/50
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами: 3
        • Выносливость: 16
        • Сила: 20
        Действует на:
        • Ловкость: -1
        Свойства предмета:
        • Урон: 10 - 18
        • Мф. против увертывания (%): +50
        • Мф. критического удара (%): +20
        • Зоны блокирования: —
        Особенности:
        • Колющие атаки: Малы
        • Дробящие атаки: Регулярны"]}],"Name":"hammer","Caption":"Дубины, булавы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword61","Caption":"Меч Чести","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 13
        • Уровень: 4
        • Мастерство владения мечами: 3
        • Выносливость: 13
        • Сила: 13
        Свойства предмета:
        • Урон: 7 - 18
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Временами
        • Дробящие атаки: Редки
        • Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword62","Caption":"Меч Полета","Description":["Масса: 12
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 10
        • Уровень: 4
        • Мастерство владения мечами: 3
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. увертывания (%): -20
        • Мф. контрудара (%): +5
        Свойства предмета:
        • Урон: 5 - 18
        • Мф. против увертывания (%): +20
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Временами
        • Дробящие атаки: Редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword55","Caption":"Рыцарский Меч","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 13
        • Уровень: 4
        • Мастерство владения мечами: 3
        • Выносливость: 13
        • Сила: 13
        Действует на:
        • Мф. критического удара (%): +15
        • Мф. увертывания (%): +10
        • Ловкость: -1
        • Сила: +1
        Свойства предмета:
        • Урон: 8 - 15
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Временами
        • Дробящие атаки: Редки
        • Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword54","Caption":"Короткий Меч","Description":["Масса: 11
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 13
        • Уровень: 4
        • Мастерство владения мечами: 3
        • Выносливость: 13
        • Сила: 13
        Действует на:
        • Мф. увертывания (%): +20
        Свойства предмета:
        • Урон: 8 - 15
        • Мф. против увертывания (%): +20
        • Второе оружие
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Временами
        • Дробящие атаки: Редки
        • Режущие атаки: Малы"]}],"Name":"sword","Caption":"Мечи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff1","Caption":"Посох Ученика","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x20
        Долговечность: 0/30
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        • Мастерство владения магическими посохами: 1
        Действует на:
        • Мастерство владения магией стихий: +1
        • Уровень жизни (HP): +30
        • Уровень маны: +100
        Свойства предмета:
        • Урон: 1 - 10
        • Двуручное оружие
        • Зоны блокирования: +
        Особенности:
        • Дробящие атаки: Временами
        • Земляные атаки: Временами"]}],"Name":"staff","Caption":"Посохи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots10","Caption":"Изящные Сапоги","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x8
        Долговечность: 0/20
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против увертывания (%): +20
        • Мф. увертывания (%): +25
        • Уровень жизни (HP): +15
        • Броня ног: 2-10 (1+d9)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots210","Caption":"Сапоги Ученика","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Мф. против критического удара (%): +20
        • Уровень жизни (HP): +15
        • Уровень маны: +30
        • Броня ног: 2-2"]}],"Name":"boots","Caption":"Сапоги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi54","Caption":"Перчатки Рыцаря","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 15
        • Уровень: 4
        • Сила: 20
        Действует на:
        • Мф. против критического удара (%): +5
        • Уровень жизни (HP): +18
        • Сила: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi61","Caption":"Изящные Перчатки","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 25
        • Уровень: 4
        • Сила: 15
        Действует на:
        • Мф. против увертывания (%): +15
        • Мф. увертывания (%): +30
        • Ловкость: +1"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi70","Caption":"Шипованые Перчатки Ран","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 20
        • Уровень: 4
        • Сила: 20
        Действует на:
        • Сила: +1
        • Максимальное наносимое повреждение: +6
        • Минимальное наносимое повреждение: +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"gloves1","Caption":"Перчатки Ученика","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Мастерство владения магическими посохами: +1
        • Уровень жизни (HP): +6
        • Уровень маны: +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi65","Caption":"Рубиновые Перчатки","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x7
        Долговечность: 0/20
        Требуется минимальное:
        • Ловкость: 10
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +5
        • Уровень жизни (HP): +45"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi58","Caption":"Чешуйчатые Перчатки","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x7
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 25
        • Уровень: 4
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +5
        • Мф. против увертывания (%): +5
        • Мф. контрудара (%): +5
        • Мастерство владения мечами: +1"]}],"Name":"gloves","Caption":"Перчатки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba14","Caption":"Защитная Рубаха","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x3
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Защита от магии огня: +10
        • Защита от магии воды: +5
        • Защита от магии воздуха: +5
        • Защита от магии земли: +5
        • Уровень жизни (HP): +3"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba17","Caption":"Рубашка Ученика","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x20
        Долговечность: 0/50
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Мф. против критического удара (%): +10
        • Мастерство владения магией стихий: +1
        • Уровень жизни (HP): +30
        • Уровень маны: +80
        • Броня корпуса: 6-10 (5+d5)"]}],"Name":"roba","Caption":"Легкая броня, рубашки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor61","Caption":"Стальной Жилет","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 5
        • Интуиция: 5
        • Уровень: 4
        • Выносливость: 17
        • Сила: 17
        Действует на:
        • Мф. против критического удара (%): +15
        • Мф. увертывания (%): -10
        • Мастерство владения дубинами, булавами: +1
        • Уровень жизни (HP): +24
        • Броня корпуса: 7-24 (6+d18)
        Свойства предмета:
        • Защита от дробящего урона: +100"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor64","Caption":"Иллюзорный Доспех","Description":["Масса: 18
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 7
        • Интуиция: 7
        • Уровень: 4
        • Выносливость: 22
        • Сила: 22
        Действует на:
        • Мф. против критического удара (%): +15
        • Мф. против увертывания (%): +15
        • Мастерство владения оружием: +2
        • Уровень жизни (HP): +33
        • Броня корпуса: 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor52","Caption":"Блестящий Нагрудник","Description":["Масса: 14
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x20
        Долговечность: 0/40
        Требуется минимальное:
        • Ловкость: 15
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +15
        • Мф. против увертывания (%): +5
        • Мф. увертывания (%): +15
        • Ловкость: +2
        • Интуиция: +2
        • Уровень жизни (HP): +12
        • Сила: +4
        • Броня корпуса: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor83","Caption":"Броня Обреченных","Description":["Масса: 17
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x21
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 7
        • Интуиция: 7
        • Уровень: 4
        • Выносливость: 22
        • Сила: 22
        Действует на:
        • Мф. против увертывания (%): +25
        • Мф. критического удара (%): +30
        • Мф. увертывания (%): +45
        • Интуиция: +2
        • Уровень жизни (HP): +33
        • Броня корпуса: 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor98","Caption":"Мистическая Броня","Description":["Масса: 9
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 22
        • Интуиция: 22
        • Уровень: 4
        • Выносливость: 7
        • Сила: 7
        Действует на:
        • Мф. против увертывания (%): +30
        • Мф. мощности колющего урона: +5
        • Мастерство владения ножами, кастетами: +2
        • Уровень жизни (HP): +18
        • Сила: +3
        • Броня корпуса: 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor82","Caption":"Экзотическая Броня","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 7
        • Интуиция: 7
        • Уровень: 4
        • Выносливость: 20
        • Сила: 20
        Действует на:
        • Мф. против критического удара (%): +20
        • Мф. критического удара (%): +20
        • Мф. увертывания (%): +20
        • Уровень жизни (HP): +6
        • Мф. удара сквозь броню (%): +20
        • Сила: +4
        • Броня корпуса: 7-24 (6+d18)"]}],"Name":"armor","Caption":"Тяжелая броня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg18","Caption":"Воинские Штаны","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +5
        • Мф. против увертывания (%): +5
        • Мф. критического удара (%): +5
        • Мф. увертывания (%): +5
        • Уровень жизни (HP): +27
        • Броня пояса: 1-12 (d12)
        • Броня ног: 1-12 (d12)"]}],"Name":"leg","Caption":"Штаны","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet61","Caption":"Изящный Шлем","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против увертывания (%): +15
        • Мф. увертывания (%): +30
        • Уровень жизни (HP): +21
        • Броня головы: 2-10 (1+d9)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet34","Caption":"Бронзовый Шлем","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/40
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +20
        • Уровень жизни (HP): +30
        • Броня головы: 5-22 (4+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet30","Caption":"Шлем Чемпиона","Description":["Масса: 8
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/40
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +15
        • Уровень жизни (HP): +18
        • Сила: +2
        • Броня головы: 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet32","Caption":"Восточный Дворцовый Шлем","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        Действует на:
        • Мф. увертывания (%): +25
        • Ловкость: +2
        • Интуиция: +2
        • Броня головы: 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet52","Caption":"Шлем Сияния","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/35
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. критического удара (%): +10
        • Ловкость: +2
        • Защита от магии воздуха: +20
        • Броня головы: 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"whelmet4","Caption":"Обруч Ученика","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/30
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Уровень жизни (HP): +24
        • Уровень маны: +45
        • Броня головы: 3-3"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet48","Caption":"Пятирогий Шлем","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 10
        • Интуиция: 10
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Ловкость: +1
        • Интуиция: +1
        • Интеллект: +1
        • Уровень жизни (HP): +12
        • Сила: +1
        • Броня головы: 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet49","Caption":"Шлем Отречения","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +10
        • Сила: +4
        • Броня головы: 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet77","Caption":"Серый Шлем","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. увертывания (%): +30
        • Ловкость: +2
        • Интуиция: +2
        • Броня головы: 3-10 (2+d8)"]}],"Name":"helmet","Caption":"Шлемы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield12","Caption":"Щит Ласки","Description":["Масса: 8
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 12
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +25
        • Интуиция: +1
        • Броня головы: 3-14 (2+d12)
        • Броня корпуса: 4-15 (3+d12)
        • Броня пояса: 3-14 (2+d12)
        • Броня ног: 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield10","Caption":"Щит Дикости","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/40
        Требуется минимальное:
        • Ловкость: 12
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +25
        • Максимальное наносимое повреждение: +3
        • Минимальное наносимое повреждение: +2
        • Броня головы: 3-14 (2+d12)
        • Броня корпуса: 4-15 (3+d12)
        • Броня пояса: 3-14 (2+d12)
        • Броня ног: 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield19","Caption":"Щит Тоски","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 12
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +20
        • Интуиция: +1
        • Уровень жизни (HP): +15
        • Броня головы: 3-14 (2+d12)
        • Броня корпуса: 4-15 (3+d12)
        • Броня пояса: 3-14 (2+d12)
        • Броня ног: 3-14 (2+d12)"]}],"Name":"shield","Caption":"Щиты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet6","Caption":"Браслет Гнева","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/20
        Требуется минимальное:
        • Интуиция: 15
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против увертывания (%): +10
        • Мф. критического удара (%): +15
        • Сила: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet9","Caption":"Наручи Ухода","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 15
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +10
        • Мф. увертывания (%): +25
        • Ловкость: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet26","Caption":"Наручи Ученика","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Уровень жизни (HP): +12
        • Уровень маны: +35"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet10","Caption":"Наручи Талантов","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 10
        • Интуиция: 10
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Ловкость: +2
        • Интуиция: +2
        • Уровень жизни (HP): +18
        • Сила: +3"]}],"Name":"braslet","Caption":"Наручи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt5","Caption":"Девичий Пояс","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x4
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 10
        • Интуиция: 10
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Ловкость: +1
        • Интуиция: +1
        • Броня пояса: 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt40","Caption":"Пояс Ученика","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x4
        Долговечность: 0/20
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Уровень маны: +30
        • Броня пояса: 3-3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt31","Caption":"Пояс Желтого Демона","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x5
        Долговечность: 0/30
        Требуется минимальное:
        • Интуиция: 15
        • Уровень: 4
        • Сила: 15
        Действует на:
        • Интуиция: +2
        • Броня пояса: 1-12 (d12)"]}],"Name":"belt","Caption":"Пояса","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip53","Caption":"Серьги Простоты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 12
        • Уровень: 4
        • Выносливость: 12
        • Сила: 12
        Действует на:
        • Мф. против критического удара (%): +30
        • Мф. против увертывания (%): +30
        • Мф. критического удара (%): +15
        • Мф. увертывания (%): +15
        • Ловкость: +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip57","Caption":"Серьги Листвы","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/40
        Требуется минимальное:
        • Ловкость: 18
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +20
        • Мф. увертывания (%): +55
        • Мф. контрудара (%): +3
        • Ловкость: +2"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip86","Caption":"Серьги Ученика","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/50
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Мф. против критического удара (%): +10
        • Уровень жизни (HP): +36
        • Уровень маны: +50"]}],"Name":"clip","Caption":"Серьги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet53","Caption":"Ожерелье -Капля Крови-","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/30
        Требуется минимальное:
        • Интуиция: 15
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. критического удара (%): +25
        • Интуиция: +3
        • Уровень жизни (HP): +33"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet90","Caption":"Амулет Ученика","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/50
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Мф. против критического удара (%): +30
        • Интеллект: +2
        • Уровень жизни (HP): +18
        • Уровень маны: +25"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet63","Caption":"Изящный Амулет","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/50
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +30
        • Защита от урона: +25
        • Уровень жизни (HP): +18"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet67","Caption":"Амулет Здоровья","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x13
        Долговечность: 0/50
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 20
        • Сила: 10
        Действует на:
        • Уровень жизни (HP): +99"]}],"Name":"amulet","Caption":"Ожерелья","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring108","Caption":"Песочный Перстень","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Мф. против критического удара (%): +5
        • Мф. блока щитом (%): +2
        • Мф. увертывания (%): -5
        • Уровень жизни (HP): +33"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring81","Caption":"Кольцо Защиты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 20
        • Сила: 20
        Действует на:
        • Броня головы: 1-15 (d15)
        • Броня корпуса: 1-15 (d15)
        • Броня пояса: 1-15 (d15)
        • Броня ног: 1-15 (d15)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring54","Caption":"Выпуклое Кольцо","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 15
        • Сила: 15
        Действует на:
        • Уровень жизни: +21
        • Защита от рубящего урона: +25"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring123","Caption":"Кольцо Ученика","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x6
        Долговечность: 0/50
        Требуется минимальное:
        • Интеллект: 20
        • Уровень: 4
        Действует на:
        • Интеллект: +1
        • Уровень маны: +35"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring101","Caption":"Синее Кольцо Мастерства","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x7
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 17
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +10
        • Мф. парирования (%): +3
        • Мф. контрудара (%): +2"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring55","Caption":"Рыцарское Кольцо Подвижности","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x7
        Долговечность: 0/30
        Требуется минимальное:
        • Ловкость: 10
        • Интуиция: 10
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +10
        • Мф. против увертывания (%): +5
        • Мф. увертывания (%): +15
        • Ловкость: +1
        • Интуиция: +1"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring60","Caption":"Кольцо Дождей","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x7
        Долговечность: 0/30
        Требуется минимальное:
        • Интуиция: 12
        • Уровень: 4
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +30
        • Защита от магии воды: +20"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring73","Caption":"Кольцо Мороза","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/20
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения стихией Воды: 1
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. против критического удара (%): +25
        Наложено заклятье: Обморожение
        Наносит противнику 10-15 ед. урона водой
        Шанс срабатывания: 30% при каждом успешном ударе."]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring66","Caption":"Сияющее Кольцо","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/20
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения стихией Воздуха: 1
        • Выносливость: 10
        • Сила: 10
        Действует на:
        • Мф. увертывания (%): +25
        Наложено заклятье: Разряд
        Наносит противнику 1-24 ед. урона воздухом
        Шанс срабатывания: 30% при каждом успешном ударе. "]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring91","Caption":"Кольцо Горящего Взгляда","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x9
        Долговечность: 0/20
        Требуется минимальное:
        • Уровень: 4
        • Выносливость: 10
        • Сила: 15
        Действует на:
        • Мф. увертывания (%): +25
        Наложено заклятье: Ожог
        Наносит противнику 10-15 ед. урона огнем
        Шанс срабатывания: 30% при каждом успешном ударе."]}],"Name":"ring","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_1","Caption":"Заточка на 1: топоры","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/1
        Вероятность срабатывания: 50%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения топорами, секирами: 1
        Действует на:
        • Максимальное наносимое повреждение: +1
        • Минимальное наносимое повреждение: +1
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_1","Caption":"Заточка на 1: ножи и кастеты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/1
        Вероятность срабатывания: 50%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 1
        Действует на:
        • Максимальное наносимое повреждение: +1
        • Минимальное наносимое повреждение: +1
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_1","Caption":"Заточка на 1: дубины, булавы, молоты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/1
        Вероятность срабатывания: 50%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами: 1
        Действует на:
        • Максимальное наносимое повреждение: +1
        • Минимальное наносимое повреждение: +1
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_1","Caption":"Заточка на 1: мечи","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Жетон]x12
        Долговечность: 0/1
        Вероятность срабатывания: 50%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения мечами: 1
        Действует на:
        • Максимальное наносимое повреждение: +1
        • Минимальное наносимое повреждение: +1
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]}],"Name":"svitki","Caption":"Свитки","Description":[]}],"Name":"noviceshop1","Caption":"Жетоны","Description":["

        Канализация, Каморка Луки. Жетоны.


        ","

        Путешествуя по первому этажу Канализации, Вы насобирали большое количество \"\" Гаек, \"\" Болтов, \"\" Вентилей и не знаете что с ними делать? Лука обменяет их Вам на \"\" Жетоны по очень хорошему курсу.

        ","","","","","","","","","","","
        Курсы обмена
        Для персонажей [4]-[6] уровнейДля персонажей [7] уровняДля персонажей [8] уровня и старше
        3 Гайки = 1 Жетон
        1 Болт = 1 Жетон
        1 Вентиль = 3 Жетона
        9 Гаек = 1 Жетон
        3 Болта = 1 Жетон
        1 Вентиль = 1 Жетон
        15 Гаек = 1 Жетон
        5 Болтов = 1 Жетон
        5 Вентилей = 3 Жетона

        ","


        ","

        За Жетоны, в каморке Луки, можно купить вещи [4] уровня.

        ","

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife66","Caption":"Тяжелый Нож Рубки","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x14
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 21
        •Интуиция: 21
        •Уровень: 5
        •Мастерство владения ножами, кастетами: 3
        •Выносливость: 11
        Действует на:
        •Мф. увертывания (%): +20
        •Ловкость: +1
        •Интуиция: +1
        Свойства предмета:
        •Урон: 4 - 11
        •Мф. против увертывания (%): 20
        •Мф. критического удара (%): 20
        •Мф. удара сквозь броню (%): 20
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Режущие атаки: Временами"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife62","Caption":"Крис","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x14
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 18
        •Интуиция: 18
        •Уровень: 5
        •Мастерство владения ножами, кастетами: 3
        Действует на:
        •Мф. парирования (%): +5
        Свойства предмета:
        •Урон: 4 - 11
        •Мф. удара сквозь броню (%): 35
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Временами
        •Рубящие атаки: Редки
        •Дробящие атаки: Ничтожно редки
        •Режущие атаки: Малы"]}],"Name":"knife","Caption":"Кастеты, ножи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe52","Caption":"Тяжёлый Бронзовый Топор","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x17
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 5
        •Мастерство владения топорами, секирами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Ловкость: -1
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. против увертывания (%): 40
        •Мф. мощности рубящего урона: 8
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe67","Caption":"Топор Странника","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 5
        •Мастерство владения топорами, секирами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. увертывания (%): +20
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. против увертывания (%): 20
        •Мф. критического удара (%): 20
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe71","Caption":"Топор Ливня","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Уровень: 5
        •Мастерство владения топорами, секирами: 3
        •Выносливость: 16
        •Сила: 16
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. против увертывания (%): 50
        •Мф. критического удара (%): 20
        •Зоны блокирования: +
        Особенности:
        •Рубящие атаки: Регулярны
        •Ледяные атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe57","Caption":"Рыцарский Топор","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Уровень: 5
        •Мастерство владения топорами, секирами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Сила: +2
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. критического удара (%): 25
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]}],"Name":"axe","Caption":"Топоры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer51","Caption":"Молот Удара","Description":["Масса: 23
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x19
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 25
        Действует на:
        •Ловкость: -2
        •Сила: +1
        Свойства предмета:
        •Урон: 13 - 22
        •Мф. критического удара (%): 30
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Дробящие атаки: Часты"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace60","Caption":"Булава Ярости","Description":["Масса: 21
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x19
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): -20
        •Мф. против увертывания (%): +20
        •Мф. увертывания (%): -20
        Свойства предмета:
        •Урон: 13 - 22
        •Мф. критического удара (%): 35
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Дробящие атаки: Регулярны"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer52","Caption":"Зубастый Молот","Description":["Масса: 24
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x20
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 25
        Действует на:
        •Мф. увертывания (%): -15
        •Ловкость: -1
        •Сила: +1
        Свойства предмета:
        •Урон: 13 - 23
        •Мф. против увертывания (%): 15
        •Мф. критического удара (%): 15
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Дробящие атаки: Часты"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace54","Caption":"Пехотная Булава","Description":["Масса: 22
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x20
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 25
        Действует на:
        •Ловкость: -2
        Свойства предмета:
        •Урон: 13 - 22
        •Мф. мощности крит. удара (%): 10
        •Мф. против увертывания (%): 15
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Дробящие атаки: Регулярны"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer4","Caption":"Молот Оправдания","Description":["Масса: 20
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 10
        •Интуиция: 10
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Ловкость: -2
        Свойства предмета:
        •Урон: 13 - 25
        •Мф. критического удара (%): 50
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Нет
        •Дробящие атаки: Часты
        •Режущие атаки: Нет"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace53","Caption":"Тройной Цеп Простоты","Description":["Масса: 9
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 25
        Свойства предмета:
        •Урон: 13 - 22
        •Мф. против увертывания (%): 70
        •Мф. критического удара (%): 15
        •Зоны блокирования: —
        Особенности:
        •Колющие атаки: Малы
        •Дробящие атаки: Регулярны"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer60","Caption":"Молот Разбойника","Description":["Масса: 29
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x31
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 20
        •Сила: 25
        Действует на:
        •Мф. увертывания (%): -20
        •Ловкость: -1
        Свойства предмета:
        •Урон: 20 - 27
        •Мф. против увертывания (%): 30
        •Мф. критического удара (%): 45
        •Мастерство владения дубинами, булавами: 1
        •Двуручное оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Дробящие атаки: Часты"]}],"Name":"hammer","Caption":"Дубины, булавы, молоты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword79","Caption":"Меч -Жнец-","Description":["Масса: 16
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Свойства предмета:
        •Урон: 8 - 21
        •Мф. против увертывания (%): 50
        •Мф. критического удара (%): 10
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword81","Caption":"Меч Боли","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        • Уровень: 5
        • Мастерство владения мечами: 3
        • Выносливость: 16
        • Сила: 16
        Действует на:
        • Мф. против критического удара (%): -10
        • Мф. увертывания (%): -30
        • Ловкость: +1
        • Интуиция: -1
        • Уровень жизни (HP): +20
        • Сила: +1
        Свойства предмета:
        • Урон: 10 - 18
        • Мф. против увертывания (%): 40
        • Мф. критического удара (%): 25
        • Зоны блокирования: +
        Особенности:
        • Колющие атаки: Малы
        • Рубящие атаки: Временами
        • Дробящие атаки: Редки
        • Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword73","Caption":"Меч Мёртвых","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. против критического удара (%): +40
        •Ловкость: -1
        •Интуиция: +1
        Свойства предмета:
        •Урон: 10 - 18
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword50","Caption":"Меч Долга","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. против критического удара (%): +20
        •Мф. увертывания (%): +30
        Свойства предмета:
        •Урон: 10 - 18
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword56","Caption":"Сабля -Ласточка-","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Свойства предмета:
        •Урон: 7 - 23
        •Мф. против увертывания (%): 25
        •Мф. критического удара (%): 25
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Временами
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword87","Caption":"Экзотический Меч","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. против критического удара (%): +10
        •Мф. увертывания (%): +10
        •Сила: +1
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. против увертывания (%): 10
        •Мф. критического удара (%): 10
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword57","Caption":"Клинок Посланца Смерти","Description":["Масса: 11
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 14
        •Интуиция: 14
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. против критического удара (%): +20
        •Мф. увертывания (%): +20
        •Ловкость: -1
        •Интуиция: -1
        •Сила: +1
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. критического удара (%): 30
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword69","Caption":"Клинок Ледяной Руки","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 16
        •Интеллект: 2
        •Уровень: 5
        •Мастерство владения мечами: 3
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. против критического удара (%): -20
        •Мф. увертывания (%): +20
        Свойства предмета:
        •Урон: 10 - 18
        •Мф. против увертывания (%): 20
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы
        Наложено заклятье: Обморожение
        Наносит противнику 20-30 ед. урона водой
        Шанс срабатывания: 30% при каждом успешном ударе"]}],"Name":"sword","Caption":"Мечи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots7","Caption":"Железные Ботинки","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x7
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 17
        •Сила: 17
        Действует на:
        •Мф. против критического удара (%): +25
        •Уровень жизни (HP): +12
        •Броня ног: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots11","Caption":"Сапоги Жизни","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x9
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 17
        •Сила: 17
        Действует на:
        •Уровень жизни (HP): +45
        •Сила: +1
        •Броня ног: 6-20 (5+d15)"]}],"Name":"boots","Caption":"Сапоги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi51","Caption":"Перчатки Крестоносц","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x7
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Сила: 15
        Действует на:
        •Мастерство владения оружием: +1
        •Уровень жизни (HP): +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi57","Caption":"Перчатки Небес","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Сила: 20
        Действует на:
        •Защита от магии: +20
        •Защита от магии воздуха: +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"gloves2","Caption":"Зеленые Перчатки","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        •Интеллект: 25
        •Уровень: 5
        •Выносливость: 10
        Действует на:
        •Интеллект: +1
        •Мастерство владения магическими посохами: +1
        •Защита от урона: +10
        •Уровень жизни (HP): +12
        •Уровень маны: +30"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi63","Caption":"Перчатки Старого Кузнеца","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 5
        •Сила: 25
        Действует на:
        •Мф. мощности дробящего урона: +3
        •Мастерство владения дубинами, булавами: +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi64","Caption":"Шипованные Перчатки Дровосека","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 25
        •Уровень: 5
        •Сила: 15
        Действует на:
        •Мф. мощности рубящего урона: +6
        •Мастерство владения топорами, секирами: +3"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi68","Caption":"Перчатки Опытного Мечника","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Сила: 20
        Действует на:
        •Мф. мощности рубящего урона: +4
        •Мф. мощности режущего урона: +2
        •Мастерство владения мечами: +3"]}],"Name":"gloves","Caption":"Перчатки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor51","Caption":"Тяжелая Железная Броня","Description":["Масса: 23
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x20
        Долговечность: 0/80
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +20
        •Защита от урона: +25
        •Уровень жизни (HP): +27
        •Сила: +1
        •Броня корпуса: 6-26 (5+d21)
        Свойства предмета:
        •Защита от урона: 25"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor53","Caption":"Броня Аккуратности","Description":["Масса: 16
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x25
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 25
        •Уровень: 5
        •Выносливость: 10
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. против увертывания (%): +25
        •Мф. парирования (%): +5
        •Мф. увертывания (%): +50
        •Ловкость: +2
        •Уровень жизни (HP): +18
        •Сила: +2
        •Броня корпуса: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor55","Caption":"Тяжелая Полная Броня","Description":["Масса: 25
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x25
        Долговечность: 0/80
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +40
        •Уровень жизни (HP): +33
        •Броня корпуса: 7-30 (6+d24)
        Свойства предмета:
        •Защита от урона: 75"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor56","Caption":"Тяжелая Броня Ястребов","Description":["Масса: 24
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x25
        Долговечность: 0/70
        Требуется минимальное:
        •Интуиция: 20
        •Уровень: 5
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. мощности крит. удара (%): +5
        •Мф. против критического удара (%): +30
        •Мф. критического удара (%): +40
        •Уровень жизни (HP): +33
        •Сила: +4
        •Броня корпуса: 8-28 (7+d21)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor60","Caption":"Защищенный Нагрудник","Description":["Масса: 18
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x26
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 7
        •Интуиция: 7
        •Уровень: 5
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +30
        •Мф. против увертывания (%): +20
        •Мастерство владения дубинами, булавами: +1
        •Уровень жизни (HP): +33
        •Сила: +1
        •Броня корпуса: 8-31 (7+d24)
        Свойства предмета:
        •Защита от дробящего урона: 100"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor102","Caption":"Шипованый Доспех Возврата","Description":["Масса: 20
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x26
        Долговечность: 0/80
        Требуется минимальное:
        •Ловкость: 20
        •Интуиция: 20
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +20
        •Мф. против увертывания (%): +20
        •Мф. мощности колющего урона: +25
        •Уровень жизни (HP): +24
        •Броня корпуса: 8-28 (7+d21)"]}],"Name":"armor","Caption":"Тяжелая броня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg32","Caption":"Поножи","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Уровень жизни (HP): +27
        •Сила: +1
        •Броня пояса: 7-18 (6+d12)
        •Броня ног: 7-18 (6+d12)"]}],"Name":"leg","Caption":"Штаны","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet63","Caption":"Линейный Шлем","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x10
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. против увертывания (%): +50
        •Уровень жизни (HP): +12
        •Броня головы: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet35","Caption":"Шлем Темного Крестоносца","Description":["Масса: 12
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. критического удара (%): +35
        •Мф. увертывания (%): +35
        •Уровень жизни (HP): +12
        •Броня головы: 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet67","Caption":"Шипастая Маска","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. критического удара (%): +15
        •Интуиция: +1
        •Уровень жизни (HP): +18
        •Сила: +2
        •Броня головы: 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet72","Caption":"Шлем Тотем","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x10
        Долговечность: 0/20
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Интуиция: +1
        •Защита от магии воды: +30
        •Уровень жизни (HP): +33
        •Сила: +1"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet38","Caption":"Шлем Имперский","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x11
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 20
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. мощности крит. удара (%): +20
        •Мф. против увертывания (%): -25
        •Мф. критического удара (%): +20
        •Мф. увертывания (%): -25
        •Броня головы: 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet43","Caption":"Турнирный Армет","Description":["Масса: 8
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x15
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. против критического удара (%): +20
        •Мф. увертывания (%): -10
        •Уровень жизни (HP): +27
        •Сила: +2
        •Броня головы: 7-24 (6+d18)
        Свойства предмета:
        •Защита от рубящего урона: 25
        •Защита от дробящего урона: 25"]}],"Name":"helmet","Caption":"Шлемы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield7","Caption":"Изящный Щит","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x14
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +20
        •Уровень жизни (HP): +15
        •Броня головы: 4-15 (3+d12)
        •Броня корпуса: 4-15 (3+d12)
        •Броня пояса: 4-15 (3+d12)
        •Броня ног: 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield79","Caption":"Тяжелый Кожаный Щит","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x16
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. против критического удара (%): +10
        •Мф. против увертывания (%): +15
        •Защита от рубящего урона: +50
        •Броня головы: 4-15 (3+d12)
        •Броня корпуса: 4-15 (3+d12)
        •Броня пояса: 4-15 (3+d12)
        •Броня ног: 4-15 (3+d12)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield13","Caption":"Крепкий Щит","Description":["Масса: 15
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x17
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 5
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Уровень жизни (HP): +18
        •Броня головы: 8-31 (7+d24)
        •Броня корпуса: 9-32 (8+d24)
        •Броня пояса: 8-31 (7+d24)
        •Броня ног: 8-31 (7+d24)"]}],"Name":"shield","Caption":"Щиты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi81","Caption":"Наручи Пружин","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 21
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +10
        •Мф. против увертывания (%): +10
        •Мф. критического удара (%): +20
        •Сила: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet28","Caption":"Зеленые Наручи","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x9
        Долговечность: 0/30
        Требуется минимальное:
        •Интеллект: 25
        •Уровень: 5
        •Выносливость: 10
        Действует на:
        •Интеллект: +1
        •Уровень жизни (HP): +21
        •Уровень маны: +40"]}],"Name":"braslet","Caption":"Наручи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt25","Caption":"Пояс Обреченности","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/30
        \tТребуется минимальное:
        • Ловкость: 15
        • Уровень: 5
        • Сила: 15
        Действует на:
        • Мф. против увёртывания (%): +15
        • Мф. увёртывания (%): +25
        • Броня пояса: 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt26","Caption":"Двойной Кожаный Пояс","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/20
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 15
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +5
        •Мф. увертывания (%): +5
        •Защита от магии огня: +10
        •Уровень жизни (HP): +18
        •Броня пояса: 3-17 (2+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt3","Caption":"Изящный Пояс","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Выносливость: 10
        •Сила: 20
        Действует на:
        •Мф. против увертывания (%): +5
        •Мф. увертывания (%): +10
        •Ловкость: +1
        •Интуиция: +1
        •Броня пояса: 3-14 (2+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt20","Caption":"Пояс Жестокости","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 25
        •Уровень: 5
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +5
        •Мф. критического удара (%): +25
        •Броня пояса: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt23","Caption":"Восточный Пояс","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/20
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Уровень жизни (HP): +45
        •Броня пояса: 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt41","Caption":"Зеленый Пояс","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x6
        Долговечность: 0/20
        Требуется минимальное:
        •Интеллект: 25
        •Уровень: 5
        •Выносливость: 10
        Действует на:
        •Уровень маны: +45
        •Броня пояса: 4-9 (3+d6)"]}],"Name":"belt","Caption":"Пояса","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip63","Caption":"Серьги Возрождения","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x14
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Уровень жизни (HP): +120"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip55","Caption":"Изящные Серьги","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x15
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 17
        •Сила: 17
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. увертывания (%): +30
        •Уровень жизни (HP): +33
        •Сила: +2
        •Броня головы: 1-9 (d9)
        •Броня корпуса: 1-9 (d9)
        •Броня пояса: 1-9 (d9)
        •Броня ног: 1-9 (d9)"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip54","Caption":"Серьги Основ","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x15
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 10
        •Интуиция: 10
        •Уровень: 5
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Ловкость: +2
        •Интуиция: +2
        •Интеллект: +2
        •Уровень жизни (HP): +33
        •Сила: +2"]}],"Name":"clip","Caption":"Серьги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet54","Caption":"Амулет Фокуса","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x17
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 10
        •Интуиция: 10
        •Уровень: 5
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Ловкость: +4
        •Интуиция: +4
        •Сила: +4"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet56","Caption":"Амулет -Рубиновая Ветвь-","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x17
        Долговечность: 0/60
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 5
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +25
        •Мф. увертывания (%): +45
        •Мф. контрудара (%): +5
        •Интуиция: +3"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet65","Caption":"Кулон Грозового Облака","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. увертывания (%): +25
        •Ловкость: +2
        •Интуиция: +2
        •Сила: +5"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet60","Caption":"Кулон Баланса","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x18
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 15
        •Интуиция: 15
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +25
        •Мф. критического удара (%): +25
        •Мф. увертывания (%): +25
        •Ловкость: +1
        •Интуиция: +1
        •Уровень жизни (HP): +6
        •Сила: +1
        •Броня головы: 1-6 (d6)
        •Броня корпуса: 1-6 (d6)
        •Броня пояса: 1-6 (d6)
        •Броня ног: 1-6 (d6)"]}],"Name":"amulet","Caption":"Ожерелья","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring67","Caption":"Кольцо Координации","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x7
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Ловкость: +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring70","Caption":"Кольцо Наития","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x7
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Интуиция: +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring124","Caption":"Зеленое Кольцо","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/50
        Требуется минимальное:
        •Интеллект: 25
        •Уровень: 5
        Действует на:
        •Мф. мощности магии стихий: +1
        •Интеллект: +1
        •Уровень маны: +40"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring50","Caption":"Кольцо Разума","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 25
        •Уровень: 5
        •Выносливость: 15
        Действует на:
        •Интеллект: +5
        •Уровень жизни (HP): +3"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring77","Caption":"Кольцо Темного Металла","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 20
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. мощности крит. удара (%): +6
        •Мф. критического удара (%): +25
        •Броня головы: 1-3 (d3)
        •Броня корпуса: 1-3 (d3)
        •Броня пояса: 1-3 (d3)
        •Броня ног: 1-3 (d3)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring78","Caption":"Кольцо Стремлений","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. парирования (%): +5"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring59","Caption":"Кольцо Пяти Камней","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 10
        •Интуиция: 10
        •Уровень: 5
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Ловкость: +1
        •Интуиция: +1
        •Интеллект: +1
        •Уровень жизни (HP): +18
        •Сила: +1"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring62","Caption":"Кольцо Отражения","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 5
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +5
        •Мф. блока щитом (%): +7
        •Уровень жизни (HP): +12"]}],"Name":"ring","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_2","Caption":"Заточка на 2: топоры","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/1
        Вероятность срабатывания: 60%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения топорами, секирами: 2
        Действует на:
        • Максимальное наносимое повреждение: +2
        • Минимальное наносимое повреждение: +2
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_2","Caption":"Заточка на 2: ножи и кастеты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/1
        Вероятность срабатывания: 60%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 2
        Действует на:
        • Максимальное наносимое повреждение: +2
        • Минимальное наносимое повреждение: +2
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_2","Caption":"Заточка на 2: дубины, булавы, молоты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/1
        Вероятность срабатывания: 60%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами: 2
        Действует на:
        • Максимальное наносимое повреждение: +2
        • Минимальное наносимое повреждение: +2
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_2","Caption":"Заточка на 2: мечи","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Серебряный Жетон]x24
        Долговечность: 0/1
        Вероятность срабатывания: 50%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения мечами: 2
        Действует на:
        • Максимальное наносимое повреждение: +2
        • Минимальное наносимое повреждение: +2
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]}],"Name":"svitki","Caption":"Свитки","Description":[]}],"Name":"noviceshop2","Caption":"Серебро","Description":["

        Канализация, Каморка Луки. Серебряные Жетоны.


        ","","

        \"\" Чистые гайки, \"\" Длинные болты и \"\" Чистые вентили Лука обменяет Вам на \"\" Серебряные жетоны по хорошему курсу.

        ","","","","","","","","","","","
        Курсы обмена
        Для персонажей [4]-[6] уровнейДля персонажей [7] уровняДля персонажей [8] уровня и старше
        3 Гайки = 1 Жетон
        1 Болт = 1 Жетон
        1 Вентиль = 3 Жетона
        9 Гаек = 1 Жетон
        3 Болта = 1 Жетон
        1 Вентиль = 1 Жетон
        15 Гаек = 1 Жетон
        5 Болтов = 1 Жетон
        5 Вентилей = 3 Жетона

        ","


        ","

        За Серебряные жетоны, в каморке Луки, можно купить вещи [5] уровня.

        ","

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"dagger70","Caption":"Боевой Кинжал","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x19
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 34
        •Интуиция: 25
        •Уровень: 6
        •Мастерство владения ножами, кастетами: 4
        •Выносливость: 13
        Свойства предмета:
        •Урон: 4 - 12
        •Мф. против увертывания (%): 45
        •Мф. мощности режущего урона: 15
        •Мф. удара сквозь броню (%): 50
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Часты
        •Режущие атаки: Редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife57","Caption":"Стылый Кинжал","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x20
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 25
        •Интуиция: 25
        •Интеллект: 5
        •Уровень: 6
        •Мастерство владения ножами, кастетами: 4
        •Выносливость: 13
        Свойства предмета:
        •Урон: 4 - 13
        •Мф. против увертывания (%): 20
        •Мф. удара сквозь броню (%): 30
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Временами
        •Рубящие атаки: Редки
        •Дробящие атаки: Ничтожно редки
        •Режущие атаки: Малы
        Наложено заклятье: Обморожение
        Наносит противнику 10-16 ед. урона водой
        Шанс срабатывания: 50% при каждом успешном ударе "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"knife68","Caption":"Кинжал Обряда","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x20
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 25
        •Интуиция: 25
        •Интеллект: 5
        •Уровень: 6
        •Мастерство владения ножами, кастетами: 4
        •Выносливость: 13
        Действует на:
        •Мф. увертывания (%): +20
        Свойства предмета:
        •Урон: 4 - 12
        •Мф. критического удара (%): 20
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Огненные атаки: Малы
        •Колющие атаки: Временами
        •Рубящие атаки: Редки
        •Дробящие атаки: Ничтожно редки
        Наложено заклятье: Ожог
        Наносит противнику 10-16 ед. урона огнем
        Шанс срабатывания: 50% при каждом успешном ударе"]}],"Name":"knife","Caption":"Кастеты, ножи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe76","Caption":"Топор Дровосека","Description":["Масса: 17
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 6
        •Мастерство владения топорами, секирами: 4
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. увертывания (%): +20
        •Ловкость: +2
        •Сила: +1
        Свойства предмета:
        •Урон: 11 - 19
        •Мф. критического удара (%): 15
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe58","Caption":"Гвардейский Топор","Description":["Масса: 19
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x23
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 19
        •Уровень: 6
        •Мастерство владения топорами, секирами: 4
        •Выносливость: 19
        •Сила: 19
        Действует на:
        •Мф. увертывания (%): +30
        •Мастерство владения топорами, секирами: +1
        Свойства предмета:
        •Урон: 11 - 21
        •Мф. против увертывания (%): 40
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"axe59","Caption":"Топор Палача","Description":["Масса: 16
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x23
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 19
        •Уровень: 6
        •Мастерство владения топорами, секирами: 4
        •Выносливость: 19
        •Сила: 19
        Свойства предмета:
        •Урон: 12 - 21
        •Мф. мощности крит. удара (%): 10
        •Мф. критического удара (%): 30
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Дробящие атаки: Редки
        •Режущие атаки: Ничтожно редки"]}],"Name":"axe","Caption":"Топоры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"molot1","Caption":"Ледяной Молот","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x25
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 3
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Ловкость: -2
        •Сила: +5
        Свойства предмета:
        •Урон: 10 - 22
        •Мф. против увертывания (%): 25
        •Мф. критического удара (%): 35
        •Зоны блокирования: +
        Особенности:
        •Рубящие атаки: Нет
        •Дробящие атаки: Регулярны
        •Режущие атаки: Нет
        •Ледяные атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace56","Caption":"Булава Тёмной Злобы","Description":["Масса: 25
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x26
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 24
        •Сила: 30
        Действует на:
        •Мф. увертывания (%): -20
        Свойства предмета:
        •Урон: 15 - 25
        •Мф. против увертывания (%): 50
        •Мф. критического удара (%): 30
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Дробящие атаки: Регулярны"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer59","Caption":"Лёгкий Молот","Description":["Масса: 27
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x27
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 24
        •Сила: 30
        Действует на:
        •Сила: +1
        Свойства предмета:
        •Урон: 15 - 25
        •Мастерство владения дубинами, булавами: 2
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Ничтожно редки
        •Дробящие атаки: Часты
        •Электрические атаки: Ничтожно редки"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace62","Caption":"Цеп Мастера","Description":["Масса: 9
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x29
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 24
        •Сила: 30
        Свойства предмета:
        •Урон: 15 - 25
        •Мф. против увертывания (%): 70
        •Мф. критического удара (%): 40
        •Зоны блокирования: —
        Особенности:
        •Колющие атаки: Малы
        •Дробящие атаки: Регулярны"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mace59","Caption":"Утренняя Звезда","Description":["Масса: 25
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x29
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 24
        •Сила: 30
        Свойства предмета:
        •Урон: 15 - 25
        •Мф. против увертывания (%): -10
        •Мф. критического удара (%): 25
        •Мф. мощности колющего урона: 15
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Временами
        •Дробящие атаки: Временами"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"hammer54","Caption":"Экзотический Молот","Description":["Масса: 24
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x32
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Мастерство владения дубинами, булавами: 4
        •Выносливость: 24
        •Сила: 30
        Действует на:
        •Мф. мощности крит. удара (%): +10
        •Ловкость: -3
        •Интуиция: +1
        •Сила: +3
        Свойства предмета:
        •Урон: 15 - 25
        •Мф. критического удара (%): 30
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Дробящие атаки: Часты"]}],"Name":"hammer","Caption":"Дубины, булавы, молоты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword96","Caption":"Меч Послушания","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 19
        •Уровень: 6
        •Мастерство владения мечами: 4
        •Выносливость: 19
        •Сила: 19
        Действует на:
        •Ловкость: +4
        Свойства предмета:
        •Урон: 11 - 21
        •Мф. мощности крит. удара (%): -10
        •Мф. против увертывания (%): 25
        •Мф. критического удара (%): 30
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword70","Caption":"Меч Страсти","Description":["Масса: 16
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x22
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 18
        •Уровень: 6
        •Мастерство владения мечами: 4
        •Выносливость: 18
        •Сила: 18
        Действует на:
        •Мф. против критического удара (%): +1
        •Ловкость: +3
        •Уровень жизни (HP): +15
        Свойства предмета:
        •Урон: 11 - 21
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword83","Caption":"Сквозной Меч","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x23
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 16
        •Уровень: 6
        •Мастерство владения мечами: 4
        •Выносливость: 16
        •Сила: 16
        Действует на:
        •Мф. увертывания (%): +60
        Свойства предмета:
        •Урон: 9 - 24
        •Мф. удара сквозь броню (%): 10
        •Второе оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Малы
        •Рубящие атаки: Временами
        •Дробящие атаки: Редки
        •Режущие атаки: Малы"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"sword58","Caption":"Двуручный Меч Достижения","Description":["Масса: 22
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x32
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 19
        •Уровень: 6
        •Мастерство владения мечами: 5
        •Выносливость: 22
        •Сила: 22
        Действует на:
        •Ловкость: -2
        Свойства предмета:
        •Урон: 14 - 32
        •Мф. мощности рубящего урона: 20
        •Двуручное оружие
        •Зоны блокирования: +
        Особенности:
        •Колющие атаки: Редки
        •Рубящие атаки: Регулярны
        •Режущие атаки: Малы"]}],"Name":"sword","Caption":"Мечи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"staff2","Caption":"Зеленый Посох","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x30
        Долговечность: 0/30
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Мастерство владения магическими посохами: 2
        Действует на:
        •Мф. мощности магии стихий: +5
        •Мастерство владения магией стихий: +1
        •Уровень жизни (HP): +33
        •Уровень маны: +100
        Свойства предмета:
        •Урон: 1 - 15
        •Двуручное оружие
        •Зоны блокирования: +
        Особенности:
        •Ледяные атаки: Временами
        •Электрические атаки: Временами"]}],"Name":"staff","Caption":"Посохи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots17","Caption":"Линейные Ботинки","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x12
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против увертывания (%): +50
        •Ловкость: +2
        •Броня ног: 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots15","Caption":"Экзотические Ботинки","Description":["Масса: 6
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. против увертывания (%): +15
        •Мф. критического удара (%): +5
        •Мф. увертывания (%): +15
        •Сила: +4
        •Броня ног: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots19","Caption":"Боевые Сапоги Шута","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x13
        Долговечность: 0/50
        Требуется минимальное:
        •Интеллект: 15
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. увертывания (%): +20
        •Интеллект: +4
        •Броня ног: 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"boots211","Caption":"Зеленые Сапоги","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/30
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Выносливость: 15
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +25
        •Интеллект: +1
        •Уровень жизни (HP): +18
        •Уровень маны: +50
        •Броня ног: 4-12 (3+d9)"]}],"Name":"boots","Caption":"Сапоги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi66","Caption":"Перчатки Стылого Касания","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 15
        •Уровень: 6
        •Сила: 15
        Действует на:
        •Защита от магии воды: +10
        Наложено заклятье: Обморожение
        Наносит противнику 20-25 ед. урона водой
        Шанс срабатывания: 20% при каждом успешном ударе"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi71","Caption":"Сияющие Перчатки","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 15
        •Уровень: 6
        •Сила: 15
        Действует на:
        •Защита от магии воздуха: +10
        Наложено заклятье: Разряд
        Наносит противнику 1-44 ед. урона воздухом
        Шанс срабатывания: 20% при каждом успешном ударе"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi72","Caption":"Перчатки Огненной Души","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        • Ловкость: 15
        •Уровень: 6
        •Сила: 15
        Действует на:
        •Защита от магии огня: +20
        Наложено заклятье: Ожог
        Наносит противнику 20-25 ед. урона огнем
        Шанс срабатывания: 20% при каждом успешном ударе"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi74","Caption":"Перчатки Убийцы","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 30
        •Интуиция: 30
        •Уровень: 6
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Мастерство владения ножами, кастетами: +4"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"naruchi53","Caption":"Перчатки Паладина","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x20
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 6
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +5
        •Мф. против увертывания (%): +5
        •Мф. критического удара (%): +5
        •Мф. увертывания (%): +5
        •Мастерство владения оружием: +2
        •Уровень жизни (HP): +72
        •Сила: +1"]}],"Name":"gloves","Caption":"Перчатки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba18","Caption":"Зеленая Роба","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/50
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Выносливость: 15
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. мощности магии стихий: +5
        •Мастерство владения магией стихий: +1
        •Уровень жизни (HP): +48
        •Уровень маны: +90
        •Броня корпуса: 4-10 (3+d7)
        Свойства предмета:
        •Защита от урона: 25"]}],"Name":"roba","Caption":"Легкая броня, рубашки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor74","Caption":"Изящная Броня","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x33
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 17
        •Интуиция: 17
        •Уровень: 6
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +30
        •Мф. увертывания (%): +50
        •Интуиция: +4
        •Защита от магии огня: +90
        •Защита от дробящего урона: +25
        •Уровень жизни (HP): +33
        •Броня корпуса: 9-32 (8+d24)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor65","Caption":"Синяя Броня Знающего","Description":["Масса: 14
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x33
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 34
        •Интуиция: 34
        •Уровень: 6
        •Выносливость: 11
        •Сила: 11
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. увертывания (%): +65
        •Интуиция: +10
        •Мастерство владения оружием: +2
        •Уровень жизни (HP): +18
        •Броня корпуса: 4-11 (3+d8)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor57","Caption":"Броня Черненого Серебра","Description":["Масса: 23
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/60
        Требуется минимальное:
        •Ловкость: 20
        •Интуиция: 15
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. мощности крит. удара (%): +5
        •Мф. против критического удара (%): +30
        •Мф. против увертывания (%): +30
        •Мф. критического удара (%): +20
        •Мф. парирования (%): +5
        •Защита от урона: +25
        •Уровень жизни (HP): +33
        •Сила: +1
        •Броня корпуса: 8-28 (7+d21)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor76","Caption":"Доспех Хранителей Луны","Description":["Масса: 33
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 11
        •Интуиция: 11
        •Уровень: 6
        •Выносливость: 30
        •Сила: 30
        Действует на:
        •Мф. против критического удара (%): +40
        •Мф. против увертывания (%): +40
        •Мф. мощности рубящего урона: +20
        •Уровень жизни (HP): +33
        •Сила: +3
        •Броня корпуса: 9-32 (8+d24)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor79","Caption":"Панцирь Противостояния","Description":["Масса: 28
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/60
        Требуется минимальное:
        •Ловкость: 15
        •Интуиция: 15
        •Уровень: 6
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +40
        •Мф. против увертывания (%): +40
        •Сила: +2
        •Броня корпуса: 9-32 (8+d24)
        Свойства предмета:
        •Защита от дробящего урона: 200"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor90","Caption":"Доспех Чудовищ","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 34
        •Интуиция: 34
        •Уровень: 6
        •Выносливость: 11
        •Сила: 11
        Действует на:
        •Мф. против увертывания (%): +30
        •Мф. парирования (%): +10
        •Мф. увертывания (%): +95
        •Мф. контрудара (%): +15
        •Броня корпуса: 3-8 (2+d6)"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor54","Caption":"Черная Кольчуга","Description":["Масса: 21
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x34
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 12
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +25
        •Мф. парирования (%): +5
        •Мф. увертывания (%): +40
        •Мф. контрудара (%): +5
        •Ловкость: +1
        •Уровень жизни (HP): +33
        •Сила: +2
        •Броня корпуса: 7-24 (6+d18)
        Свойства предмета:
        •Защита от урона: 25"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"armor70","Caption":"Броня Ордена","Description":["Масса: 33
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x38
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 11
        •Интуиция: 11
        •Уровень: 6
        •Выносливость: 30
        •Сила: 30
        Действует на:
        •Мф. против критического удара (%): +30
        •Мф. против увертывания (%): +30
        •Мф. критического удара (%): +45
        •Ловкость: +2
        •Интуиция: +2
        •Защита от магии: +30
        •Уровень жизни (HP): +45
        •Броня корпуса: 9-32 (8+d24)"]}],"Name":"armor","Caption":"Тяжелая броня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg19","Caption":"Черные Штаны","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 10
        •Уровень: 6
        •Выносливость: 25
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +10
        •Мф. против увертывания (%): +10
        •Уровень жизни (HP): +36
        •Броня пояса: 3-20 (2+d18)
        •Броня ног: 3-20 (2+d18)
        Свойства предмета:
        •Защита от урона: 10"]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg21","Caption":"Белые Штаны","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x13
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 10
        •Уровень: 6
        •Выносливость: 25
        •Сила: 10
        Действует на:
        •Мф. критического удара (%): +25
        •Мф. увертывания (%): +25
        •Уровень жизни (HP): +18
        •Броня пояса: 3-20 (2+d18)
        •Броня ног: 3-20 (2+d18)
        Свойства предмета:
        •Защита от урона: 10"]}],"Name":"leg","Caption":"Штаны","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet45","Caption":"Конусный Шлем","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x13
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Мф. против критического удара (%): +35
        •Мф. против увертывания (%): +25
        •Мастерство владения оружием: +1
        •Броня головы: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"whelmet5","Caption":"Зеленый Обруч","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/30
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Выносливость: 15
        •Сила: 10
        Действует на:
        •Мф. мощности магии стихий: +3
        •Уровень жизни (HP): +30
        •Уровень маны: +50
        •Броня головы: 4-4"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet39","Caption":"Шлем Скелета","Description":["Масса: 8
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Ловкость: +4
        •Сила: +4
        •Броня головы: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet50","Caption":"Шлем Черного Преторианца","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Мф. мощности крит. удара (%): +8
        •Мф. мощности рубящего урона: +10
        •Броня головы: 7-24 (6+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet75","Caption":"Экзотический Шлем","Description":["Масса: 5
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. против увертывания (%): +20
        •Мф. увертывания (%): +20
        •Сила: +4
        •Броня головы: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet70","Caption":"Шлем Темного Витязя","Description":["Масса: 7
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x14
        Долговечность: 0/50
        Требуется минимальное:
        •Ловкость: 20
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. против критического удара (%): +25
        •Мф. против увертывания (%): +25
        •Мф. парирования (%): +5
        •Броня головы: 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet51","Caption":"Шлем Ветерана","Description":["Масса: 13
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x15
        Долговечность: 0/40
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +10
        •Мф. парирования (%): +5
        •Мастерство владения мечами: +2
        •Уровень жизни (HP): +6
        •Броня головы: 7-27 (6+d21)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet66","Caption":"Шлем Узника Лабиринта","Description":["Масса: 4
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x15
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Мф. против увертывания (%): +25
        •Мф. мощности дробящего урона: +10
        •Уровень жизни (HP): +33
        •Броня головы: 5-22 (4+d18)"]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"helmet47","Caption":"Монолитный Шлем","Description":["Масса: 18
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x17
        Долговечность: 0/60
        Требуется минимальное:
        •Интуиция: 24
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Защита от магии: +40
        •Броня головы: 21-60 (20+d40)"]}],"Name":"helmet","Caption":"Шлемы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"shield9","Caption":"Круглый Щит Спасения","Description":["Масса: 10
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x19
        Долговечность: 0/40
        Требуется минимальное:
        •Ловкость: 18
        •Уровень: 6
        •Выносливость: 21
        •Сила: 21
        Действует на:
        •Мф. против критического удара (%): +45
        •Максимальное наносимое повреждение: +3
        •Минимальное наносимое повреждение: +2
        •Броня головы: 6-23 (5+d18)
        •Броня корпуса: 7-24 (6+d18)
        •Броня пояса: 6-23 (5+d18)
        •Броня ног: 6-23 (5+d18)"]}],"Name":"shield","Caption":"Щиты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet8","Caption":"Браслет Защиты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x12
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 25
        •Сила: 30
        Действует на:
        •Защита от урона: +35
        •Броня головы: 1-9 (d9)
        •Броня корпуса: 1-9 (d9)
        •Броня пояса: 1-9 (d9)
        •Броня ног: 1-9 (d9)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet11","Caption":"Стальные Наручи","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x12
        Долговечность: 0/40
        Требуется минимальное:
        •Интуиция: 15
        •Уровень: 6
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. критического удара (%): +10
        •Защита от урона: +25
        •Сила: +2"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"braslet23","Caption":"Наручи Силы","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x12
        Долговечность: 0/60
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. мощности дробящего урона: +5
        •Сила: +6"]}],"Name":"braslet","Caption":"Наручи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt13","Caption":"Тигровый Пояс","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 15
        •Сила: 24
        Действует на:
        •Сила: +4
        •Броня пояса: 4-21 (3+d18)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt24","Caption":"Экзотический Пояс","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 12
        •Интуиция: 12
        •Уровень: 6
        •Выносливость: 12
        •Сила: 12
        Действует на:
        •Мф. против критического удара (%): +5
        •Мф. против увертывания (%): +6
        •Мф. критического удара (%): +5
        •Мф. увертывания (%): +6
        •Сила: +2
        •Броня пояса: 6-20 (5+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt8","Caption":"Черный Пояс","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 18
        •Интуиция: 18
        •Уровень: 6
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Ловкость: +1
        •Интуиция: +1
        •Уровень жизни (HP): +12
        •Сила: +1
        •Броня пояса: 5-16 (4+d12)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt14","Caption":"Кожаный Пояс Агрессии","Description":["Масса: 2
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Интуиция: 24
        •Уровень: 6
        •Сила: 24
        Действует на:
        •Мф. мощности крит. удара (%): +10
        •Броня пояса: 4-18 (3+d15)"]},{"NewLineToBR":false,"W":60,"H":40,"Binding":1,"IsGift":false,"Name":"belt29","Caption":"Ювелирный Поясок","Description":["Масса: 3
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x8
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 25
        •Интуиция: 25
        •Уровень: 6
        •Выносливость: 10
        •Сила: 10
        Действует на:
        •Мф. мощности колющего урона: +10
        •Броня пояса: 5-16 (4+d12)"]}],"Name":"belt","Caption":"Пояса","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip62","Caption":"Шипастые Серьги Пламени","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x17
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 25
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Мф. мощности крит. удара (%): +10
        •Мф. критического удара (%): +50
        •Уровень жизни (HP): +33
        •Сила: +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip60","Caption":"Экзотические Серьги Затмения","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x19
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 16
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): +30
        •Мф. против увертывания (%): +30
        •Мф. критического удара (%): +30
        •Мф. увертывания (%): +30
        •Сила: +4"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"clip87","Caption":"Зеленые Серьги","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x20
        Долговечность: 0/50
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Выносливость: 15
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +15
        •Мф. мощности магии стихий: +2
        •Мастерство владения магией стихий: +1
        •Уровень жизни (HP): +36
        •Уровень маны: +60"]}],"Name":"clip","Caption":"Серьги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet82","Caption":"Ожерелье Старой Крепости","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x24
        Долговечность: 0/60
        Требуется минимальное:
        •Ловкость: 10
        •Интуиция: 10
        •Уровень: 6
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +30
        •Ловкость: +1
        •Интуиция: +1
        •Интеллект: +1
        •Защита от урона: +25
        •Уровень жизни (HP): +21
        •Сила: +1
        •Броня головы: 1-15 (d15)
        •Броня корпуса: 1-15 (d15)
        •Броня пояса: 1-15 (d15)
        •Броня ног: 1-15 (d15)"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet55","Caption":"Ожерелье Жадности","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x26
        Долговечность: 0/60
        Требуется минимальное:
        •Интуиция: 25
        •Уровень: 6
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. мощности крит. удара (%): +40
        •Сила: +1"]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet91","Caption":"Зеленый Амулет","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x26
        Долговечность: 0/50
        Требуется минимальное:
        •Интеллект: 30
        •Уровень: 6
        •Выносливость: 15
        •Сила: 10
        Действует на:
        •Мф. против критического удара (%): +35
        •Мф. мощности магии стихий: +5
        •Интеллект: +2
        •Мастерство владения магией стихий: +1
        •Уровень жизни (HP): +24
        •Уровень маны: +50"]}],"Name":"amulet","Caption":"Ожерелья","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring52","Caption":"Кольцо Мыслей","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x9
        Долговечность: 0/50
        Требуется минимальное:
        •Интуиция: 10
        •Уровень: 6
        •Выносливость: 15
        •Сила: 15
        Действует на:
        •Мф. против критического удара (%): -5
        •Мф. против увертывания (%): -5
        •Мф. критического удара (%): -5
        •Мф. увертывания (%): -5
        •Интуиция: +4
        •Интеллект: +4"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring65","Caption":"Кольцо Могущества","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Уровень жизни (HP): +9
        •Сила: +6"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring68","Caption":"Кольцо Чемпиона","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        •Ловкость: 15
        •Уровень: 6
        •Выносливость: 10
        •Сила: 15
        Действует на:
        •Ловкость: +2
        •Уровень жизни (HP): +9
        •Сила: +4"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring71","Caption":"Золотое Кольцо Здоровья","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 20
        •Сила: 20
        Действует на:
        •Защита от урона: +10
        •Уровень жизни (HP): +45
        •Сила: +2"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring86","Caption":"Кольцо Ужаса","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/30
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. против критического удара (%): +20
        •Мф. против увертывания (%): +20
        •Мф. критического удара (%): +20
        •Мф. увертывания (%): +20
        •Броня головы: 1-3 (d3)
        •Броня корпуса: 1-3 (d3)
        •Броня пояса: 1-3 (d3)
        •Броня ног: 1-3 (d3)"]},{"NewLineToBR":false,"W":20,"H":20,"Binding":1,"IsGift":false,"Name":"ring87","Caption":"Кольцо Иммунитета","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x10
        Долговечность: 0/50
        Требуется минимальное:
        •Уровень: 6
        •Выносливость: 25
        •Сила: 25
        Действует на:
        •Мф. парирования (%): +2
        •Мф. блока щитом (%): +1
        •Защита от магии: +4
        •Защита от урона: +25"]}],"Name":"ring","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_axe_3","Caption":"Заточка на 3: топоры","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x48
        Долговечность: 0/1
        Вероятность срабатывания: 70%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения топорами, секирами: 3
        Действует на:
        • Максимальное наносимое повреждение: +3
        • Минимальное наносимое повреждение: +3
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_knife_3","Caption":"Заточка на 3: ножи и кастеты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x48
        Долговечность: 0/1
        Вероятность срабатывания: 70%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения ножами, кастетами: 3
        Действует на:
        • Максимальное наносимое повреждение: +3
        • Минимальное наносимое повреждение: +3
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_molot_3","Caption":"Заточка на 3: дубины, булавы, молоты","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x48
        Долговечность: 0/1
        Вероятность срабатывания: 70%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения дубинами, булавами:3
        Действует на:
        • Максимальное наносимое повреждение: +3
        • Минимальное наносимое повреждение: +3
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой. "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_sword_3","Caption":"Заточка на 3: мечи","Description":["Масса: 1
        Цена: 0.00 кр.
        Требуется предмет: [Золотой Жетон]x48
        Долговечность: 0/1
        Вероятность срабатывания: 70%
        Требуется минимальное:
        • Уровень: 4
        • Мастерство владения мечами: 3
        Действует на:
        • Максимальное наносимое повреждение: +3
        • Минимальное наносимое повреждение: +3
        Описание:
        • Затачивает оружие, увеличивая урон, но повышая требования по навыку и характеристикам. После заточки оружие будет связано с владельцем общей судьбой."]}],"Name":"svitki","Caption":"Свитки","Description":[]}],"Name":"noviceshop3","Caption":"Золото","Description":["

        Канализация, Каморка Луки. Золотые Жетоны.


        ","","

        \"\" Гайки с резьбой, \"\" Нужные болты и \"\" Рабочие вентили Лука обменяет Вам на \"\" Золотые жетоны по хорошему курсу.

        ","","","","","","","","","","","","","
        Курсы обмена
        Для персонажей [4]-[6] уровнейДля персонажей [7] уровняДля персонажей [8] уровня и старше
        3 Гайки = 1 Жетон
        1 Болт = 1 Жетон
        1 Вентиль = 3 Жетона
        9 Гаек = 1 Жетон
        3 Болта = 1 Жетон
        1 Вентиль = 1 Жетон
        15 Гаек = 1 Жетон
        5 Болтов = 1 Жетон
        5 Вентилей = 3 Жетона
        3 Серебряных жетона = Золотой жетон

        ","


        ","

        За Золотые жетоны, в каморке Луки, можно купить вещи [6] уровня.

        ","

        "]}],"IsDungeon":true,"Name":"novice","Caption":"Канализация","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.angel.capital.js","dungeon.data.capital.js","dungeon.data.capital.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.abandon.capital.js","dungeon.data.abandon.capital.demons.js","dungeon.data.capital.demons.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.capital.novice.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[{"Caption":"Подгорный Эдельвейс","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":["Вам поручено найти \"Подгорный Эдельвейс\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещера Тысячи Проклятий\" Вы сможете найти то, что нужно. Почаще оборачивайтесь... "],"DefCount":25},{"Caption":"Хрусталь","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":["Неизвестно зачем, Вам придется хорошо поработать, чтобы достать \"Хрусталь\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещера Тысячи Проклятий\" Вы сможете найти то, что нужно."],"DefCount":13},{"Caption":"Драконий Камень","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":["Ради морального удовольствия, Вам поручено найти \"Драконий Камень\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещера Тысячи Проклятий\" Вы сможете найти то, что нужно. Поглядывайте за спину..."],"DefCount":5},{"Caption":"Гранит","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":["Для интереса, Вам следует поднапрячься, и найти \"Гранит\" в количестве несколько штук. Придется обшарить не один темный угол в \"Пещера Тысячи Проклятий\".",""],"DefCount":13},{"Caption":"Пещерный Мох","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":["Неизвестно почему, Вы должны доставить \"Пещерный Мох\" в количестве несколько штук. Для этого Вам придется отправиться в \"Пещера Тысячи Проклятий\" и быть внимательным на всё протяжении пути. Будьте осмотрительны..."],"DefCount":30},{"Caption":"Инструменты","ImageUrl":"https://img.new-combats.com/i/items/mater244.gif","ItemReward":12,"Description":["Для поправки материального благосостояния, Вы должны набраться смелости и найти \"Инструменты\" в количестве несколько штук. Придется обшарить не один темный угол в \"Пещера Тысячи Проклятий\". И помните, это не прогулка..."],"DefCount":30},{"Caption":"Череп Путешественников","ImageUrl":"https://img.new-combats.com/i/items/mater245.gif","ItemReward":12,"Description":["Ради морального удовольствия, Вам поручено найти \"Череп Путешественников\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещера Тысячи Проклятий\" Вы сможете найти то, что нужно. Поглядывайте за спину...",""],"DefCount":32}],"CapturedJobs":[{"Caption":"Зелье Пустынника","ImageUrl":"https://img.new-combats.com/i/items/mater205.gif","ItemReward":15,"Description":["Шутки ради, Вам необходимо найти \"Зелье Пустынника\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Пещера Тысячи Проклятий\". Скатертью дорожка! ","","Падает только из ПА, но может выпасть и из Маула, выполняется за 1-2 раза."],"DefCount":12},{"Caption":"Амулет Пустынника","ImageUrl":"https://img.new-combats.com/i/items/mater215.gif","ItemReward":10,"Description":["Тщеславия ради, Вам следует отыскать \"Амулет Пустынника\" в количестве несколько штук. \"Попросите\" их у монстров в \"Пещера Тысячи Проклятий\". Не надейтесь на помощь... ","","Падает на первом этаже из ПА, на втором и третьем из всех пустынников [8}-[9] уровней, выполняется за 1-2 раза."],"DefCount":14},{"Caption":"Клык Проклятья Глубин","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":["Неизвестно зачем, Вы должны хорошенько постараться, чтобы собрать \"Клык Проклятья Глубин\" в количестве несколько штук. Придется отнять их у монстров в \"Пещера Тысячи Проклятий\". Будьте осмотрительны... "],"DefCount":13},{"Caption":"Тряпье","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":["Вам следует поднапрячься, и найти \"Тряпье\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Пещеры Тысячи Проклятий\". ","","Падает из всех ботов кроме ПГ. Собирается за 2 похода."],"DefCount":15},{"Caption":"Механическая рука","ImageUrl":"https://img.new-combats.com/i/items/mater242.gif","ItemReward":20,"Description":["Шутки ради, Вам необходимо найти \"Механическая рука\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Пещера Тысячи Проклятий\". Скатертью дорожка! ","","Падает из Механиков и Механических Убийц, выполняется за 1 раза."],"DefCount":15},{"Caption":"Сердце голема","ImageUrl":"https://img.new-combats.com/i/items/mater243.gif","ItemReward":75,"Description":["Вопреки всем усмешкам, Вы должны хорошенько постараться, чтобы найти \"Сердце голема\" в количестве несколько штук. Только неся смерть монстрам из \"Пещера Тысячи Проклятий\" Вы сможете найти то, что нужно. Ждем с трофеями... ","","Падает из Cтражей Cокровищ, Каменного Стаража и с Мастера Грита."],"DefCount":5},{"Caption":"Призрачная пыль","ImageUrl":"https://img.new-combats.com/i/items/mater241.gif","ItemReward":15,"Description":["Чтобы отстоять свою честь и достоинство, Вам следует поискать \"Призрачная пыль\" в количественесколько штук. Для этого вам потребуется убить и обыскать не один десяток монстров в \"Пещера Тысячи Проклятий\". И помните, это не прогулка... ","","Выпадает из Заблудших Душ и Духов Хранителей."],"DefCount":23},{"Caption":"Запчасти","ImageUrl":"https://img.new-combats.com/i/items/mater240.gif","ItemReward":15,"Description":["Неизвестно зачем, Вы должны хорошенько постараться, чтобы собрать \"Запчасти\" в количестве несколько штук. Придется отнять их у монстров в \"Пещера Тысячи Проклятий\". Будьте осмотрительны...","","Выпадает из Механических ботов... "],"DefCount":17}],"KillingJobs":[{"MobName":"pa","Unique":false,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы на Земле, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Пустынник Атаман\". Последний раз их наблюдали рядом с \"Пещера Тысячи Проклятий\". Не надейся на помощь..."],"DefCount":2},{"MobName":"pm","Unique":false,"Description":["Ради жизни на земле, Вам нужно отправиться в путешествие и убить не менее, чем несколько монстров \"Пустынник Маньяк\". Недавно они слонялись рядом с входом в \"Пещера Тысячи Проклятий\"…"],"DefCount":14},{"MobName":"pu","Unique":false,"Description":["Для бесчеловечных экспериментов лекарей города, Вам необходимо найти и уничтожить несколько монстров \"Пустынник Убийца\". Последний раз их видели неподалеку от входа в \"Пещера Тысячи Проклятий\". Надеюсь, еще увидимся…"],"DefCount":13},{"MobName":"pg","Unique":false,"Description":["Ради морального удовольствия, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Проклятье Глубин\", спустившись в \"Пещера Тысячи Проклятий\". Не надейтесь на помощь... "],"DefCount":12},{"MobName":"dk","Unique":true,"Description":["Жестокие и ужасные ритуалы проводятся в \"Пещере Тысячи Проклятий\". Невинные, принесенные в жертву, обречены вечно скитаться во мраке, пока не найдутся смельчаки, кто их упокоит. Найдите дух \"Дарьяны Корт\" и сделайте последнее одолжение невинной жертве.","Задача: Убить \"Дарьяну Корт\". "],"DefCount":1},{"MobName":"ms","Unique":true,"Description":["Для бесчеловечных экспериментов лекарей города, Вам необходимо убить хитрого \"Маул Счастливчик\". Он хорошо устроился в \"Пещера Тысячи Проклятий\"."],"DefCount":1},{"MobName":"sk","Unique":true,"Description":["Скитаясь по смертельно опасным коридорам \"Пещеры Тысячи Проклятий\", множество путников попадало в невидимые сети \"Стража Крантона\". Вам надлежит отыскать чудище и продемонстрировать, что храбрые воины не какие-то мухи, и не испугаются убить паука.","Задача: Убить \"Стража Крантона\"."],"DefCount":1},{"MobName":"im","Unique":true,"Description":["В темных коридорах \"Пещеры Тысячи Проклятий\" проводит свои страшные обряды \"Изгнанник Мглы\". Чтобы жертв его странных делишек не стало больше, Вы должны устроить ему ритуальное убийство.","Задача: Убить \"Изгнанник Мглы\"."],"DefCount":1},{"MobName":"dpg","Unique":true,"Description":["Среди всех мрачных обитателей Пещеры Тысячи Проклятий, лишь оно способно посеять вечный ужас в сердцах своих противников. Вы должны найти и убить \"Древнее Проклятье Глубин\", переборов страх перед ним."],"DefCount":1},{"MobName":"duhhr","Unique":false,"Description":["Чтобы всем было спокойнее, Вы должны найти и уничтожить несколько монстров \"Дух-Хранитель\". По слухам они обитают в зоне \"Пещера Тысячи Проклятий\". Не надейтесь на помощь..."],"DefCount":25},{"MobName":"zbldsh","Unique":false,"Description":["Во имя всеобщего спокойствия, командование поручает Вам уничтожить несколько монстров \"Заблудшая Душа\". Последний раз их видели неподалеку от входа в \"Пещера Тысячи Проклятий\"."],"DefCount":25},{"MobName":"mhohr","Unique":false,"Description":["Ради морального удовольствия, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Механический Охранник\", спустившись в \"Пещера Тысячи Проклятий\". Не надейтесь на помощь..."],"DefCount":20},{"MobName":"mhgol","Unique":false,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы на Земле, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Механический Голем\". Последний раз их наблюдали рядом с \"Пещера Тысячи Проклятий\". Не надейся на помощь..."],"DefCount":17},{"MobName":"mhub","Unique":false,"Description":["Во имя всеобщего спокойствия, командование поручает Вам уничтожить несколько монстров \"Механический Убийца\". Последний раз их видели в \"Пещера Тысячи Проклятий\"."],"DefCount":10},{"MobName":"mhk","Unique":false,"Description":["Для бесчеловечных экспериментов лекарей города, Вам необходимо выполнить приказ: найти и устранить не менее, чем несколько монстров \"Механик\". Поговаривают, что они ошиваются на нижних этажах \"Пещера Тысячи Проклятий\"."],"DefCount":17},{"MobName":"mgrt","Unique":true,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы в Мире, Вам нужно исполнить приговор суда и убить любимца публики \"Мастер Грит\". Кроме Вас, все в курсе что он обжился в \"Пещера Тысячи Проклятий\". "],"DefCount":1},{"MobName":"strsokr","Unique":false,"Description":["Ради морального удовольствия, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Страж Сокровищ\", спустившись в \"Пещера Тысячи Проклятий\". Не надейтесь на помощь..."],"DefCount":5},{"MobName":"kamstr","Unique":true,"Description":["Для баланса сил во Вселенной, Вы должны исполнить приговор суда замучив до смерти ужасного \"Каменный страж\". По слухам он обитает в зоне \"Пещера Тысячи Проклятий\". Надеюсь еще увидимся. "],"DefCount":1}]},"Floors":[{"Cells":[{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"pm","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well03","InstanceName":"fountain21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":5}]}]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":6,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":6,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":1},{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":6,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder1"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"9","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":6,"Align":"0","Tag":"кэп","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport1"}],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1","InstanceName":"key11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":6}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":6},{"X":10,"Y":6},{"X":10,"Y":4},{"X":9,"Y":4},{"X":9,"Y":5}]}]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":6,"Align":"0","Tag":"кэп","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":11,"DataBounds":"1, 1, 10, 9","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":2,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key2","InstanceName":"key21"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":8,"Y":5}]}]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pm","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain61"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5}]}]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter4"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport2"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":9},{"X":4,"Y":8},{"X":4,"Y":7},{"X":5,"Y":9},{"X":6,"Y":9},{"X":6,"Y":8},{"X":6,"Y":7},{"X":5,"Y":7},{"X":5,"Y":8}]},{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":3,"Y":10}]}]},{"X":5,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport1"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":10}]}]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder2"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"im","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk1"}],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":2,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":1,"Y":10}]}]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dk","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"кэп","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"9","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":3,"Y":4}]}]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor2","Caption":"2 этаж","Description":[]},{"Cells":[{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport4"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sk","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport3"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter3"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pa","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ms","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pu","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pa","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pu","Level":7,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pm","Level":8,"Align":"9","Tag":"","Count":1},{"Name":"pu","Level":7,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key31"},{"ObjectName":"fountain5","InstanceName":"fountain51"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":3,"Y":4}]}]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"workshop","InstanceName":"workshop1"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":5}]}]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain62"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":2},{"X":7,"Y":2},{"X":7,"Y":1},{"X":5,"Y":1},{"X":5,"Y":2}]}]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter5"}],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":8,"DataBounds":"1, 1, 10, 6","Name":"floor3","Caption":"3 этаж","Description":[]},{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"arrowup","InstanceName":"arrow2"}],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":3}]}]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":13,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":1,"Y":14}]}]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":5}]}]},{"X":7,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest42"}],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"gzm","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger1"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":10},{"X":12,"Y":10}]}]},{"X":12,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kzm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest41"}],"HotSpots":[]},{"X":12,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":13,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":3}]}]},{"X":12,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger2"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":12,"Y":15}]}]},{"X":13,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":11,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest11"}],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"kamstr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":12}]}]},{"X":6,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":6,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":5,"Y":11}]}]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter4"}],"HotSpots":[]},{"X":1,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"greenteleport","InstanceName":"grteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":7}]}]},{"X":9,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":4},{"Name":"pg","Level":6,"Align":"0","Tag":"кэп","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap3","InstanceName":"weap31"}],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin2","InstanceName":"gobelin2"}],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":14,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"кэп","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":3},{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":7,"Align":"0","Tag":"кэп","Count":4},{"Name":"dpg","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"кэп","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":9,"Align":"0","Tag":"кэп","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":10,"Align":"0","Tag":"кэп","Count":1},{"Name":"duhhr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":15,"Height":17,"DataBounds":"1, 0, 13, 16","Name":"floor4","Caption":"4 этаж","Description":[]},{"Cells":[{"X":7,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":0,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger11"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":0}]}]},{"X":9,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest31"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":11}]}]},{"X":8,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_11"}],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":0,"Y":11,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar1"}],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate1","InstanceName":"grate11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":0}]}]},{"X":6,"Y":12,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"- инта","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest13"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-интелл","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest14"}],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-вынос","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest44"}],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"-ловка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest12"}],"HotSpots":[]},{"X":9,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest2_small","InstanceName":"chest21"},{"ObjectName":"chest4_small","InstanceName":"chest43"}],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":3},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger12"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":6},{"X":11,"Y":7}]}]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":13,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":15,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"zer","InstanceName":"zer1"}],"HotSpots":[]},{"X":16,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhk","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"mhohr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest21"}],"HotSpots":[]},{"X":17,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhgol","Level":9,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mhub","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":1},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"arrowdown","InstanceName":"arrow2"}],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strsokr","Level":11,"Align":"9","Tag":"- сила","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"mgrt","Level":11,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":20,"Height":16,"DataBounds":"0, 0, 19, 15","Name":"floor5","Caption":"5 этаж","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"capitalknightugsol","Caption":"Рыцарское","Description":["

        Пещера Тысячи Проклятий, Рыцарское задание

        ","
        Когда репутация в Capital сity достигнет заветной цифры 9999, Вы сможете получить рыцарское задание:

        ","
        ","
        • Вы уже доказали Вашу преданность. Однако, хватит ли вам выдержки чтобы стать рыцарем? Отправляйтесь в \"Пещеру Тысячи Проклятий\" и убейте 1000 Проклятий Глубин.
        ","
        ","
        Подготовка к походу
        ","
        Никакой специальной подготовки не требуется.
        ","
        Поход","
        Идем в пещеру и убиваем всех \"\"Проклятий Глубин (ПГ), которых встретим на своем пути.","
        Важно: Всего на 4-рёх этажах Пещеры Тысячи Проклятий 66 \"\"ПГ (включая марочных ботов) и одно \"\"Древнее Проклятье Глубин (ДПГ). Так как ПГ воскрешаются каждые 30-60 минут, то за поход можно убить столько \"\"ПГ, сколько вам позволит ваше время и терпение. Лучше всего засесть в Коридоре Смерти, на четвертом этаже подземелья.","
        Сходив в пещеру несколько раз и убив 1000 \"\"ПГ, выходим и завершаем задание.","
        Сдав задание, получаем заветный значок \"\" в инфу и награду в виде свитка \"\"Зачаровать Пояс: Чары Проклятья Древних.


        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key21","Caption":"Отворяющая печать №1","Description":["Масса: 1","Долговечность: 0/1","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Является пропуском в Пещеры Мглы, Sandcity.","Может выпасть из Маула Счастливчика после его смерти."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_1","Caption":"Верхняя Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке L12 четвертого этажа.","При наличии в рюкзаке, 2-ю взять нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_2","Caption":"Правая Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке I12 четвертого этажа.","При наличии в рюкзаке, 2-ю взять нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_3","Caption":"Левая Часть Ключа Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке L15 четвертого этажа.","При наличии в рюкзаке, 2-ю взять нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_amul_4","Caption":"Ключ Портала","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Необходим для работы портала на клетке F10."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_1","Caption":"Первая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке K15 пятого этажа.","После выхода пропадает."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_2","Caption":"Вторая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке I15 пятого этажа.","После выхода пропадает."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_3","Caption":"Третья часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке G15 пятого этажа.","После выхода пропадает."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_4","Caption":"Четвёртая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке E15 пятого этажа.","После выхода пропадает."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_5","Caption":"Пятая часть руны","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в Сундуке Стража на клетке C15 пятого этажа.","После выхода пропадает."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"key_TR_6","Caption":"Отпирающая руна","Description":["Масса: 1","Долговечность: 0/1 ","Сделано в Capital city ","Предмет не подлежит ремонту","Предмет из подземелья","","Ключ для прохода к Гриту. После выхода из подземелья пропадает."]}],"Name":"key","Caption":"Ключи","Description":["Ключ Портала и Отпирающую Руну можно собрать в Алтаре Осколков, клетка A12 пятого этажа.","","Для сборки ключа необходимо иметь три его части, для сборки руны - все пять ее частей."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet84","Caption":"Осколок Стража","Description":["Масса: 1","Цена: 290 кр.","Долговечность: 0/40","Требуется минимальное:"," • Ловкость: 15"," • Интуиция: 15"," • Уровень: 9"," • Выносливость: 36"," • Сила: 35","Действует на:"," • Защита от магии: +80"," • Защита от урона: +100"," • Уровень жизни (HP): +120","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Каменного стража после его смерти."]}],"Name":"amulet","Caption":"Амулет","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":"Кольцо Горящего Взгляда (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","Наложено заклятье: Ожог","Действует на:","• Мф. увертывания: +25 %","• Уровень жизни (HP): +10","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":"Кольцо Горящего Взгляда (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","Наложено заклятье: Ожог","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +1","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring91","Caption":"Кольцо Горящего Взгляда (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","Наложено заклятье: Ожог","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":"Кольцо Мороза (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воды: 1 ","Наложено заклятье: Обморожение","Действует на:","• Мф. увертывания: +25 %","• Уровень жизни (HP): +10 ","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":"Кольцо Мороза (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воды: 1 ","Наложено заклятье: Обморожение","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring73","Caption":"Кольцо Мороза (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воды: 1 ","Наложено заклятье: Обморожение","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":"Сияющее кольцо (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воздуха: 1","Наложено заклятье: Разряд","Действует на:","• Мф. увертывания: +25 %","• Уровень жизни (HP): +10 ","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":"Сияющее кольцо (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воздуха: 1","Наложено заклятье: Разряд","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +1","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring66","Caption":"Сияющее кольцо (мф)","Description":["Масса: 1","Цена: 45 кр. ","Долговечность: 0/20","Требуется минимальное:","• Сила: 15 ","• Выносливость: 10 ","• Уровень: 4 ","• Мастерство владения стихией Воздуха: 1","Наложено заклятье: Разряд","Действует на:","• Мф. увертывания: +25 %","• Интеллект: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке второго этажа, на клетке K3."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring71","Caption":"Золотое Кольцо Здоровья (мф)","Description":["Масса: 1","Цена: 30 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 20 ","• Выносливость: 20 ","• Уровень: 6 ","Действует на:","• Сила: +2 ","• Уровень жизни (HP): +60","Свойства предмета:","• Защита от урона: +2","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Дарьяны Корт после ее смерти."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring80","Caption":"Кольцо каменной осады (мф)","Description":["Масса: 1","Цена: 82 кр.","Долговечность: 0/60","Требуется минимальное:","• Сила: 40 ","• Выносливость: 40 ","• Уровень: 8 ","
        Действует на:","• Сила: +5","• Броня корпуса: 1-12 (d12) ","• Броня головы: 1-12 (d12) ","• Броня пояса: 1-12 (d12) ","• Броня ног: 1-12 (d12) ","• Мф. против увертывания: +10 % ","• Мф. против критического удара: +20 % ","• Уровень жизни (HP): +33 ","Свойства предмета:","• Защита от урона: +15","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Древнего Проклятья Глубин после его смерти."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring80","Caption":"Кольцо каменной осады (мф)","Description":["Масса: 1","Цена: 82 кр.","Долговечность: 0/60","Требуется минимальное:","• Сила: 30 ","• Выносливость: 30 ","• Уровень: 8 ","Действует на:","• Броня корпуса: 1-12 (d12) ","• Броня головы: 1-12 (d12) ","• Броня пояса: 1-12 (d12) ","• Броня ног: 1-12 (d12) ","• Мф. против увертывания: +10 % ","• Мф. против критического удара: +20 % ","• Уровень жизни (HP): +66","Свойства предмета:","• Защита от урона: +15","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Дарьяны Корт после ее смерти."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring93","Caption":"Кольцо Бликов (мф)","Description":["Масса: 1","Цена: 78 кр. ","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 25 ","• Интуиция: 15 ","• Уровень: 8 ","Действует на:","• Ловкость: +2 ","• Уровень жизни (HP): +6","• Мф. против критического удара: +20 %","• Мф. увертывания: +45 %","• Мф. контрудара: +5 %","• Мф. парирования: +2 %","• Часть комплекта: Комплект Бликов [0/6]","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Стража Крантона после его смерти."]}],"Name":"rings","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"dispell1","Caption":"Снять Проклятье","Description":["Масса: 1","Цена: 10 кр.","Долговечность: 0/1","Вероятность срабатывания: 99%","Описание:","Снимает наложенное проклятье","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка K3."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat24","Caption":"Клаустрофобия","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 99%","Описание:","Увеличивает время отдыха от Подземелья на 24 часа.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Изгнанника Мглы после его смерти."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":"Пропуск Забытых","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 99%","Задержка использования 5 мин. ","Описание:","Позволяет посетить подземелье на 6 часов раньше.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Маула Счастливчика после его смерти."]}],"Name":"spell","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr1","Caption":"Зачаровать Оружие: Чары слабости 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье слабости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить силу противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 силы на 5 разменов. Шанс срабатывания: 1% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr2","Caption":"Зачаровать Оружие: Чары слабости 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье слабости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить силу противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 силы на 5 разменов. Шанс срабатывания: 2% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_costr3","Caption":"Зачаровать Оружие: Чары слабости 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье слабости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить силу противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 силы на 5 разменов. Шанс срабатывания: 3% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex1","Caption":"Зачаровать Оружие: Чары неуклюжести 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье неуклюжести ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить ловкость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 ловкости на 5 разменов. Шанс срабатывания: 1% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex2","Caption":"Зачаровать Оружие: Чары неуклюжести 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье неуклюжести ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить ловкость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 ловкости на 5 разменов. Шанс срабатывания: 2% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_codex3","Caption":"Зачаровать Оружие: Чары неуклюжести 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье неуклюжести ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить ловкость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 ловкости на 5 разменов. Шанс срабатывания: 3% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst1","Caption":"Зачаровать Оружие: Чары оцепенения 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье оцепенения ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интуицию противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интуиции на 5 разменов. Шанс срабатывания: 1% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst2","Caption":"Зачаровать Оружие: Чары оцепенения 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье оцепенения ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интуицию противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интуиции на 5 разменов. Шанс срабатывания: 2% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_coinst3","Caption":"Зачаровать Оружие: Чары оцепенения 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье оцепенения ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интуицию противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интуиции на 5 разменов. Шанс срабатывания: 3% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower1","Caption":"Зачаровать Оружие: Чары чахлости 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье чахлости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить выносливость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 выносливости и 50 HP на 5 разменов. Шанс срабатывания: 1% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower2","Caption":"Зачаровать Оружие: Чары чахлости 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье чахлости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить выносливость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 выносливости и 50 HP на 5 разменов. Шанс срабатывания: 2% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_copower3","Caption":"Зачаровать Оружие: Чары чахлости 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье чахлости ","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить выносливость противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 выносливости и 50 HP на 5 разменов. Шанс срабатывания: 3% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel1","Caption":"Зачаровать Оружие: Чары тупости 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье тупости","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интеллект противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интеллекта на 5 разменов. Шанс срабатывания: 1% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel2","Caption":"Зачаровать Оружие: Чары тупости 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье тупости","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интеллект противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интеллекта на 5 разменов. Шанс срабатывания: 2% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_cointel3","Caption":"Зачаровать Оружие: Чары тупости 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Наложены заклятия: Проклятье тупости","Описание: ","У зачарованного этим свитком оружия появляется шанс временно понизить интеллект противника.","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья","","Отнимает у противника 30 интеллекта на 5 разменов. Шанс срабатывания: 3% при каждом успешном ударе."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff1","Caption":"Зачаровать Оружие: Увеличение Маны 1","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Действует на:","• Уровень маны: +10 ","Описание: ","При использовании на посох увеличивает количество маны (+20). ","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff2","Caption":"Зачаровать Оружие: Увеличение Маны 2","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Действует на:","• Уровень маны: +20 ","Описание: ","При использовании на посох увеличивает количество маны (+40). ","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":3,"IsGift":false,"Name":"enhp_3_manabuff3","Caption":"Зачаровать Оружие: Увеличение Маны 3","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Действует на:","• Уровень маны: +30 ","Описание: ","При использовании на посох увеличивает количество маны (+60). ","Сделано в Capital city","Предмет не подлежит ремонту","Предмет из подземелья",""]}],"Name":"enhp","Caption":"Свитки Зачарования","Description":["Этот предмет будет связан общей судьбой с первым, кто его поднимет. Никто другой не сможет его использовать.","","Может выпасть из Мастера Грита или Стражей Сокровищ после их смерти."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_waterproof","Caption":"Снадобье Океанов","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1 ","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Защита от магии воды: +75","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Океанов на первом этаже, клетка B7."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":"Снадобье Великана ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Сила: +15 ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Зачарованных гор на третьем этаже, клетка H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":"Снадобье Змеи ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Ловкость: +15 ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Зачарованных гор на третьем этаже, клетка H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":"Снадобье Предчувствия ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Интуиция: +15 ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Зачарованных гор на третьем этаже, клетка H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":"Снадобье Разума ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Интеллект: +10 ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Зачарованных гор на третьем этаже, клетка H6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_alldmg2","Caption":"Снадобье Стойкости ","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• Уровень: 7","Действует на:","• Защита от урона: +75","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Стойкости на втором этаже, клетка F9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2","Caption":"Зелье Великого Отрицания","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• Уровень: 7","Действует на:","• Защита от магии: +75 ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Отрицания на третьем этаже, клетка G2."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_str","Caption":"Топливо для Големов","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 21 дн. ","Продолжительность действия магии: 6 ч. 0 мин. ","Требуется минимальное:","• Уровень: 8","Действует на:","• Сила: +12","Описание:","Если поджечь - горит ярким синим пламенем. ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Помогает разогнать пристрастие на силу. Один глоток равен [1] ступени зависимости.","Выпадает из ботов на пятом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_dex","Caption":"Смазка для Големов","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 21 дн. ","Продолжительность действия магии: 6 ч. 0 мин. ","Требуется минимальное:","• Уровень: 8","Действует на:","• Ловкость: +12","Описание:","Маслянистая жидкость с сильным запахом... только отважный человек будет это пить... ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Помогает разогнать пристрастие на ловкость. Один глоток равен [1] ступени зависимости.","Выпадает из ботов на пятом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_1000_inst","Caption":"Ускоритель для Голема","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 21 дн. ","Продолжительность действия магии: 6 ч. 0 мин. ","Требуется минимальное:","• Уровень: 8","Действует на:","• Интуиция: +12","Описание:","Мутная жидкость с сильным запахом животного жира... кто знает из чего(кого?) ее делали местные умельцы... ","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Помогает разогнать пристрастие на интуицию. Один глоток равен [1] ступени зависимости.","Выпадает из ботов на пятом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_alldmg2_p1k","Caption":"Зелье Каменной Стойкости ","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/3","Срок годности: 14 дн. ","Продолжительность действия магии: 4 ч. 0 мин. ","Требуется минимальное:","• Уровень: 8","Действует на:","• Защита от урона: +120","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуках на четвертом и пятом этажах."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2_p1k","Caption":"Зелье Стража Магии","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/3","Срок годности: 14 дн. ","Продолжительность действия магии: 4 ч. 0 мин. ","Требуется минимальное:","• Уровень: 8","Действует на:","• Защита от магии: +120","Сделано в Сapital city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуках на четвертом и пятом этажах."]}],"Name":"pot_base","Caption":"Эликсиры","Description":[]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Пещеры Тысячи Проклятий

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2","Caption":"Плащ рыцаря [1]","Description":["Цена: 200 кр.
        Долговечность: 0/100
        Требуется минимальное:
        • Уровень: 8
        • репутация Рыцаря Capital City: 10 000
        Встроено заклятие Тактика Крови: 2 1 шт. на бой."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_1","Caption":"Плащ рыцаря [1]","Description":["Цена: 200 кр.
        Долговечность: 0/100
        Требуется минимальное:
        • Уровень: 8
        • репутация Рыцаря Capital City: 10 000
        Встроено заклятие Tактика Боя: 3 1 шт. на бой."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_2","Caption":"Плащ рыцаря [1]","Description":["Цена: 200 кр.
        Долговечность: 0/100
        Требуется минимальное:
        • Уровень: 8
        • репутация Рыцаря Capital City: 10 000
        Встроено заклятие Тактика Отражения: 1 1 шт. на бой."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_3","Caption":"Плащ рыцаря [1]","Description":["Цена: 200 кр.
        Долговечность: 0/100
        Требуется минимальное:
        • Уровень: 8
        • репутация Рыцаря Capital City: 10 000
        Встроено заклятие Тактика Защиты: 2 1 шт. на бой."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"cloak2_4","Caption":"Плащ рыцаря [1]","Description":["Цена: 200 кр.
        Долговечность: 0/100
        Требуется минимальное:
        • Уровень: 8
        • репутация Рыцаря Capital City: 10 000
        Встроено заклятие Тактика Ответа: 2 1 шт. на бой."]}],"Name":"Cloaks","Caption":"Плащи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_5_dampen_all_1","Caption":"Зачаровать Пояс: Чары Проклятья Древних 1","Description":["Цена: 50 кр.
        Требуется предмет: Эссенция чистоты, [Золото]x3
        Долговечность: 0/1
        Срок годности: 30 дн.
        Наложены заклятия: Проклятье Древних
        Описание:
        Зачарованный этим свитком пояс имеет шанс временно понизить характиристики атаковавшего противника.
        Пояс связывается с владельцем общей судьбой после зачарования .
        "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"cureHP120","Caption":"Восстановление энергии 120HP","Description":["Цена: 20 кр.
        Долговечность: 0/5
        Вероятность срабатывания: 70%
        Требуется минимальное:
        • Интеллект: 10
        • Уровень: 8
        • Мастерство владения серой магией: 3
        Наложены заклятия: Исцеление"]}],"Name":"Svitki","Caption":"Свитки","Description":[]}],"Name":"capitalknightshop","Caption":"Магазин","Description":["

        Пещера Тысячи Проклятий, Рыцарский магазин


        ","

        Когда репутация в Capital сity достигнет заветной цифры 10 000, перед Вами откроются двери Рыцарского магазина Пещеры Тысячи Проклятий.

        "]}],"IsDungeon":true,"Name":"capital","Caption":"Пещера Тысячи Проклятий","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.angel.demons.js","dungeon.data.angel.js","dungeon.data.angel.capital.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.angel.sand.js","dungeon.data.angel.demons.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E0EBF0","CellBorderColorString":"#608399","Jobs":{"CollectiveJobs":[{"Caption":"Подгорный Эдельвейс","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":["Вам поручено найти \"Подгорный Эдельвейс\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Бездна\" Вы сможете найти то, что нужно. Почаще оборачивайтесь..."],"DefCount":25},{"Caption":"Драконий Камень","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":["Для интереса, Вам следует поднапрячься, и найти \"Драконий Камень\" в количестве несколько штук. Придется обшарить не один темный угол в \"Бездна\". ","","Реально собрать за два раза. "],"DefCount":5},{"Caption":"Гранит","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":["Неизвестно почему, Вы должны доставить \"Гранит\" в количестве несколько штук. Для этого Вам придется отправиться в \"Бездна\" и быть внимательным на всё протяжении пути. Будьте осмотрительны...","","Можно сделать за два похода."],"DefCount":13},{"Caption":"Хрусталь","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":["Неизвестно зачем, Вам придется хорошо поработать, чтобы достать \"Хрусталь\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Бездна\" Вы сможете найти то, что нужно. Прощайте…","","Делается за 2-3 похода."],"DefCount":13},{"Caption":"Пещерный Мох","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":["Шутки ради, Вам следует поискать \"Пещерный Мох\" в количестве несколько штук. Чтобы отыскать требуемое Вам придется обыскать множество углов в \"Бездна\"."],"DefCount":35}],"CapturedJobs":[{"Caption":"Тряпье","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":["Вам следует поднапрячься, и найти \"Тряпье\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Бездна\". Удачи … ","","Выпадает из литейщиков."],"DefCount":11},{"Caption":"Бур","ImageUrl":"https://img.new-combats.com/i/items/mater201.gif","ItemReward":10,"Description":["Чтобы отстоять свою честь и достоинство, Вам следует поискать \"Бур\" в количестве несколько штук. Для этого вам потребуется убить и обыскать не один десяток монстров в \"Бездна\". И помните, это не прогулка... ","","Выпадает из литейщиков."],"DefCount":13},{"Caption":"Брага","ImageUrl":"https://img.new-combats.com/i/items/mater227.gif","ItemReward":10,"Description":["Чтобы отстоять свою честь и достоинство, Вам следует поискать \"Брага\" в количестве несколько штук. Для этого вам потребуется убить и обыскать не один десяток монстров в \"Бездна\". И помните, это не прогулка...","","Выпадает из НГ и РГ."],"DefCount":13},{"Caption":"Кости","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":6,"Description":["Шутки ради, Вам необходимо найти \"Кости\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Бездна\". Скатертью дорожка! ","","Выпадают из всех, кроме ПГ"],"DefCount":13},{"Caption":"Аутсвайс","ImageUrl":"https://img.new-combats.com/i/items/mater207.gif","ItemReward":14,"Description":["Шутки ради, Вам необходимо найти \"Аутсвайс\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Бездна\". Скатертью дорожка! ","","Выпадают из всех, кроме ПГ"],"DefCount":13},{"Caption":"Клык Проклятья Глубин","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":["Неизвестно зачем, Вы должны хорошенько постараться, чтобы собрать \"Клык Проклятья Глубин\" в количестве несколько штук. Придется отнять их у монстров в \"Бездне\". Будьте осмотрительны..."],"DefCount":11}],"KillingJobs":[{"MobName":"lit","Unique":false,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы на Земле, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Литейщик\" . Последний раз их наблюдали рядом с \"Бездна\". Не надейся на помощь..."],"DefCount":14},{"MobName":"rg","Unique":false,"Description":["Во имя всеобщего спокойствия, Вам необходимо найти и уничтожить несколько монстров \"Рубаки\". Поговаривают, что они ошиваются на нижних этажах \"Бездна\"."],"DefCount":15},{"MobName":"ng","Unique":false,"Description":["Тщеславия ради, Вам необходимо найти и замучить досмерти несколько монстров \"Надзиратели глубин\". Эти твари обжили \"Бездна\". "],"DefCount":13},{"MobName":"sg","Unique":false,"Description":["Для баланса сил на Земле, Вы должны найти и уничтожить по крайней мере несколько монстров \"Служитель Глубин\", отправившись изучать \"Бездна\".","","9 штук на всю пещеру: 4 СГ8 на первых двух этажах и 5 СГ9 на третьем."],"DefCount":9},{"MobName":"sb","Unique":false,"Description":["Для бесчеловечных экспериментов лекарей города, Вам необходимо найти и уничтожить несколько монстров \"Служитель Бездны\". Последний раз их видели неподалеку от входа в \"Бездна\". Надеюсь, еще увидимся… ","","Выполняется минимум за 2 раза, так как их на 3-х этажах всего 5. Задание для 8-го уровня крайне тяжелое (кроме сильных магов, конечно). "],"DefCount":7}]},"Floors":[{"Cells":[{"X":4,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sd","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":1},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowdown","InstanceName":"arrow1"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder6"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"сhalice1"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":6},{"X":6,"Y":6}]}]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3","InstanceName":"chest32"}],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab1"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":1,"Y":4}]}]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest3_bledny","InstanceName":"chest31"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":12,"DataBounds":"1, 1, 8, 10","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":11,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"olgvirt","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen","InstanceName":"kamen"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"boiler","InstanceName":"boiler1"}],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[{"ObjectName":"lorry","InstanceName":"lorry2"}],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge1"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":7}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lorry","InstanceName":"lorry1"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer","InstanceName":"duffer1"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg","Level":8,"Align":"0","Tag":"ангел","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":11,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer23"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":2}]}]},{"X":10,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer22"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"duffer2","InstanceName":"duffer21"}],"HotSpots":[{"HighlightColorString":"","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":10,"Y":3}]}]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder7"}],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter5"}],"HotSpots":[]}],"LookDirection":3,"Width":13,"Height":12,"DataBounds":"1, 1, 11, 10","Name":"floor2","Caption":"2 этаж","Description":[]},{"Cells":[{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter6"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"gjs","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest12"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest15"}],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kg","Level":12,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate1"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"btm","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger3"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sb","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest22"}],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed1"}],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"chest1_blendy","InstanceName":"chest1"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge2"}],"HotSpots":[]}],"LookDirection":3,"Width":11,"Height":12,"DataBounds":"1, 1, 9, 10","Name":"floor3","Caption":"3 этаж","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"angelsknightugsol","Caption":"Рыцарское","Description":["

        Бездна, Рыцарское задание

        ","
        Когда репутация в Angels city достигнет заветной цифры 9999, Вы cможете получить рыцарское задание:

        ","
        ","
        • Вы уже доказали Вашу преданность. Но для рыцарства нужен подвиг. Отправляйтесь с единомышленниками в \"Бездну\", взяв в магазине Линзу Портала. Одна из выбоин скрывает за собой обвалившийся проход. Линза поможет вам переместиться за завал. Вернитесь оттуда с особым Подгорным Эдельвейсом
        ","
        ","
        Подготовка к походу
        ","
        Для выполнения задания необходима \"\" Линза Портала. ","
        Приобрести ее можно в Рыцарском магазине. ","
        Для покупки, кроме денег (1 кр.), необходимы пещерные ингредиенты: \"\" Кристалл голоса предков и \"\" Лучистый топаз.
        ","

        Поход
        ","
        Собираем команду единомышленников, с таким же заданием, и спускаемся в Бездну.","
        Отправляемся прямиком на второй этаж, идем по правому коридору до группы \"\" Литейщиков на клетке J5. ","

        \"\"
        ","
        Убиваем группу \"\" Литейщиков. Доходим до стенки и развернувшись на 180 градусов, видим перед собой выбоину. ","

        \"\"
        ","
        Кликаем на выбоину.","
        Вы окажетесь на клетке K4 второго этажа (Завал). За телепортацию Вы заплатите Линзой Портала.
        ","
        Важно: Выбоину слева (клетка L3) не трогаем - это выход из Завала. Так как больше одной Линзы за поход при себе иметь нельзя, а единственной, имеющейся у Вас, Вы заплатите за проход, то в случае ошибки выполнять задание придётся в другой раз. ","
        Делаем шаг вперёд и разворачиваемся направо. Видим перед собой \"\" \"\"Ольгерта Вирта [10]. Нападаем на него.
        ","
        Полезная информация:
        Обратим внимание на два приема, которые использует этот бот:","
        При достижении 85%НР у \"\" Ольгерта Вирта начинает действовать \"\" \"Усталость\", с каждым потеряным 1%НР усталость увеличивается на 1% - из-за усталости урон снижается, максимум до 33%.
        ","
        Примерно на оставшихся 5% НР, \"\" Ольгерт использует приём \"\" \"Последняя Воля\" (Сгинуть с врагами). Если за 8-10 разменов его не убить, придётся идти ещё раз. На практике Последняя Воля иногда не срабатывает.","
        Победив \"\" Ольгерта, делаем шаг вперед и видим на полу \"\" камень. Не старайтесь кликать на камень, его не поднять. Делаем еще шаг вперед и находим то, за чем пришли - \"\" Подгорный Эдельвейс.
        ","
        Важно: Подгорный эдельвейс смогут взять все члены команды, которые выполняют задание на рыцаря.
        ","
        Выходим из Завала через выбоину на клетке A10, просто кликнув на нее. ","
        Сдав задание получаем заветный значок \"\" в инфу и награду в виде свитка \"\" Зачаровать Пояс: Чары Воли Глубин 1 .","
        ","
        ","
        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key23","Caption":"Отворяющая печать №3","Description":["Масса: 1","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять в сундуке на третьем этаже, клетка H7."]}],"Name":"key","Caption":"Ключи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":"Пропуск Забытых","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 99%","Задержка использования 5 мин. ","Описание:","Позволяет посетить Подземелье на 6 часов раньше.","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях на третьем этаже."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":"Чек на 5 кр. ","Description":["Масса: 1 ","Цена: 5 кр.","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях и сундуках третьего этажа.","Обменивается на кредиты в гос. магазине. Теряется при проигрыше, если предмет не был одет в слот для свитков. "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":"Чек на 400 кр. ","Description":["Масса: 1 ","Цена: 400 кр. ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, в сокровищнице, на третьем этаже, клетка H4.","Обменивается на кредиты в гос. магазине. Теряется при проигрыше, если предмет не был одет в слот для свитков. "]}],"Name":"spell","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"amulet81","Caption":"Амулет Забытых Времен мф. ","Description":["Масса: 1 ","Цена: 240 ","Долговечность: 0/50 ","Минимальные требования: ","Уровень: 9 ","Сила: 45 ","Ловкость: 15 ","Интуиция: 15 ","Выносливость: 50 ","Действует на: ","Броня головы: 1-25 ","Броня корпуса: 1-25 ","Броня пояса: 1-25 ","Броня ног: 1-25 ","Мф. против критического удара (%): +35 ","• Сила: +10 ","• Уровень жизни: +250 ","Защита от магии: +20 ","Свойства: ","Мф. против увертывания (%): +35 ","Часть комплекта: ","Комплект Забытых Времен (13)"," Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Кошмара Глубин после его смерти."]}],"Name":"amulet","Caption":"Амулет","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":"Меч Кровавой Луны +5 (мф)","Description":["Масса: 13","Цена: 220 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 30 ","• Ловкость: 15 ","• Интуиция: 50 ","• Выносливость: 30 ","• Уровень: 9 ","Действует на:","• Интуиция: +5 ","Свойства предмета:","• Урон: 17 - 39","• Мф. против увертывания: +50 % ","• Мф. критического удара: +80 % ","• Мф. мощности крит. удара: +10 % ","• Мастерство владения мечами: +2 ","Особенности:","• Колющие атаки: малы ","• Рубящие атаки: временами ","• Режущие атаки: малы ","• Ледяные атаки: редки ","• Зоны блокирования: +","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Гарла Йонни Салистона после его смерти."]}],"Name":"sword","Caption":"Меч","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"shield14","Caption":"Щит Безумца ","Description":["Масса: 10 ","Цена: 173 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Ловкость: 18 ","• Интуиция: 35 ","• Уровень: 8 ","• Выносливость: 25 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): -5 ","• Мф. критического удара (%): +65 ","• Мф. блока щитом (%): +5 ","• Максимальное наносимое повреждение: +15 ","• Минимальное наносимое повреждение: +10 ","• Броня головы: 5-22 (4+d18) ","• Броня корпуса: 6-23 (5+d18) ","• Броня пояса: 5-22 (4+d18) ","• Броня ног: 5-22 (4+d18) ","Особенности: ","• Защита от дробящего урона: Слабая ","• Защита от колющего урона: Слабая ","• Защита от режущего урона: Посредственная ","• Защита от рубящего урона: Посредственная ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на третьем этаже, на клетке I4."]}],"Name":"shield","Caption":"Щит","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":"Снадобье Великана ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Сила: +15 ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях на третьем этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":"Снадобье Змеи ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Ловкость: +15 ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях на третьем этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":"Снадобье Предчувствия ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Интуиция: +15 ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях на третьем этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":"Снадобье Разума ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Интеллект: +10 ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в казарменных кроватях на третьем этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":"Снадобье Разума ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Интеллект: +10 ","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Снадобья Разума на первом этаже, клетка E7."]}],"Name":"pot_base","Caption":"Эликсиры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat1","Caption":"Сущность сапог","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, в сокровищнице, на третьем этаже, клетка H4."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat3","Caption":"Сущность кольца","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, на первом этаже, клетка I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat5","Caption":"Сущность наручей","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, на первом этаже, клетка I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat7","Caption":"Сущность амулета","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, на первом этаже, клетка I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat13","Caption":"Сущность пояса","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, на первом этаже, клетка I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat15","Caption":"Сущность серег","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке, на первом этаже, клетка I5."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat17","Caption":"Сущность щита","Description":["Масса: 1 ","Долговечность: 0/1","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в котле, на втором этаже, клетка G7.","Можно найти в сундуке, в сокровищнице, на третьем этаже, клетка H4."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat19","Caption":"Сущность шлема","Description":["Предмет до сих пор не найден."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat23","Caption":"Сущность брони","Description":["Предмет до сих пор не найден."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat30","Caption":"Сущность поножей","Description":["Предмет до сих пор не найден."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat21","Caption":"Сущность оружия","Description":["Предмет до сих пор не найден."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat11","Caption":"Сущность плаща","Description":["Предмет до сих пор не найден."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat9","Caption":"Сущность перчаток","Description":["Предмет до сих пор не найден."]}],"Name":"sp_mat","Caption":"Сущности Вещей","Description":["Предметы спорные, розыгрываются.","Все сущности связываются общей судьбой с первым, кто их поднимет и никто другой не сможет их использовать.","","Эти предметы необходимы для улучшения вещей [9] уровня до [10] уровня. Модифицировать вещи можно в Наковальне (Бездна) и Наковальнях Забытых Мастеров (Бездна, Катакомбы, Пещеры Мглы).","","С недавних пор некоторые из этих свитков можно найти не только в подзмемелье, но и купить в рыцарских магазинах."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT1","Caption":"Тактика Боя: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT2","Caption":"Тактика Боя: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT3","Caption":"Тактика Боя: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT4","Caption":"Тактика Боя: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_HIT5","Caption":"Тактика Боя: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":"Тактика Защиты: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK2","Caption":"Тактика Защиты: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK3","Caption":"Тактика Защиты: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK4","Caption":"Тактика Защиты: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK5","Caption":"Тактика Защиты: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT1","Caption":"Тактика Крови: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT2","Caption":"Тактика Крови: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT3","Caption":"Тактика Крови: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT4","Caption":"Тактика Крови: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_KRT5","Caption":"Тактика Крови: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR1","Caption":"Тактика Ответа: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR2","Caption":"Тактика Ответа: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR3","Caption":"Тактика Ответа: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR4","Caption":"Тактика Ответа: 4","Description":["Масса: 1 ","Цена: 40 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_CNTR5","Caption":"Тактика Ответа: 5","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY1","Caption":"Тактика Отражения: 1","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +1 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY2","Caption":"Тактика Отражения: 2","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +2 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY3","Caption":"Тактика Отражения: 3","Description":["Масса: 1 ","Цена: 30 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +3 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY4","Caption":"Тактика Отражения: 4","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +4 "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_PRY5","Caption":"Тактика Отражения: 5","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/1","Задержка использования: 3 мин."," • Мгновенное заклинание","Требуется минимальное:"," • Уровень: 5","Сделано в Angels city","Предмет не подлежит ремонту","Предмет из подземелья","","При использовании в бою дает +5 "]}],"Name":"sp_tacpts","Caption":"Свитки Тактик","Description":["Свитки тактик нужны для более быстрого накопления спецприемов в бою. Одеваются они также как и обычные свитки, в слоты для свитков.","","Cобираются свитки тактик в Лаборатории на первом этаже Бездны. Расположилась она за Алтарем, который охраняет один из Боссов первого этажа - Служитель Бездны (СБ) .","","Один персонаж за раз может собрать максимум 3 свитка тактики. На команду дается ровно 10 свитков тактик.","","Рецепты сбора можно найти в нашем Кострукторе Дигера."]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Бездны

        "]},{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_5_defend_all_1","Caption":"Зачаровать Пояс: Чары Воли Глубин 1","Description":["Цена: 50 кр.
        Требуется предмет: [Стихиалия]x1, [Золото]x3
        Долговечность: 0/1
        Срок годности: 30 дн.
        Наложено заклятие: Воля Бездны
        Описание:
        Зачарованный этим свитком пояс имеет шанс поглотить 40% нанесенного вам урона.
        Пояс связывается с владельцем общей судьбой после зачарования.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"sharpen_all_7","Caption":"Заточка на 7: оружие","Description":["Цена: 1000 кр.
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 8
        Действует на:
        • Максимальное наносимое повреждение: +7
        • Минимальное наносимое повреждение: +7
        Описание:
        Свяжет общей судьбой оружие с владельцем.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"preservation","Caption":"Спасение [1]","Description":["Цена: 30 кр.
        Долговечность: 0/1
        Вероятность срабатывания: 70%
        Задержка использования: 2 мин.
        Требуется минимальное:
        • Интеллект: 5
        • Уровень: 8
        Предмет не подлежит ремонту"]}],"Name":"svitki","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat3","Caption":"Сущность Кольца","Description":["Масса: 1","Цена: 300 кр. ","Долговечность: 0/1 ","Предмет не подлежит ремонту ","Описание:","Необходим для улучшения колец до [10] уровня в Наковальне забытых мастеров, в Бездне."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat7","Caption":"Сущность Амулета ","Description":["Масса: 1","Цена: 300 кр. ","Долговечность: 0/1 ","Предмет не подлежит ремонту ","Описание:","Необходим для улучшения амулета до [10] уровня в Наковальне забытых мастеров, в Бездне."]}],"Name":"sp_mat","Caption":"Сущности вещей","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater1","Caption":"Шкура пещерного оленя","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater2","Caption":"Золото","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater3","Caption":"Серебро","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater4","Caption":"Лучистое серебро","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater5","Caption":"Мифрил","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater6","Caption":"Железное дерево","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater7","Caption":"Слиток пустынной руды","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater8","Caption":"Троекорень","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater9","Caption":"Корень змеиного дерева","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater10","Caption":"Кора змеиного дерева","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater11","Caption":"Кожа общего врага","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater12","Caption":"Сталь","Description":["Цена: 0,15 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater13","Caption":"Кристалл тысячи ответов","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater14","Caption":"Сгусток эфира","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater15","Caption":"Сгусток астрала","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater16","Caption":"Глубинный камень","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater17","Caption":"Плод змеиного дерева","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater18","Caption":"Тысячелетний камень","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater19","Caption":"Кристалл времен","Description":["Цена: 0,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater25","Caption":"Кристалл голоса предков","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater26","Caption":"Кристалл стабильности","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater27","Caption":"Камень затаенного солнца","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater28","Caption":"Лучистый рубин","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater29","Caption":"Лучистый топаз","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater30","Caption":"Шепот гор","Description":["Цена: 1,5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x30
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater20","Caption":"Эссенция лунного света","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater21","Caption":"Эссенция глубины","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater22","Caption":"Эссенция чистоты","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater31","Caption":"Эссенция преведного гнева","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater23","Caption":"Ралиэль","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater24","Caption":"Стихиалия","Description":["Цена: 5 кр
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x100
        Долговечность: 0/1
        Сделано в «Неизвестно»
        Предмет не подлежит ремонту
        "]}],"Name":"mater","Caption":"Ингредиенты","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater_battery","Caption":"Линза Портала","Description":["Цена: 1 кр.
        Масса: 1
        Требуется предмет: Кристалл голоса предков, Лучистый топаз
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходима для прохода в Завал для выполнения рыцарского задания в Бездне.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater261","Caption":"Слиток света","Description":["Цена: 20 кр.
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x4
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходим для улучшения колец до [10] уровня в Наковальне забытых мастеров, в Бездне.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater262","Caption":"Осколок бездны","Description":["Цена: 48 кр.
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x10
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходим для улучшения амулета до [10] уровня в Наковальне забытых мастеров, в Бездне.
        "]}],"Name":"other","Caption":"Доп. предметы","Description":[]}],"Name":"angelsknightshop","Caption":"Магазин","Description":["

        Бездна, Рыцарский магазин

        ","

        В отличии от других рыцарский магазинов, Рыцарский магазин Бездны можно посещать и не имея 10 000 репутации, но только для покупки ингредиентов за Сущности Ресурса.

        "]}],"IsDungeon":true,"Name":"angel","Caption":"Бездна","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.sand.js","dungeon.data.capital.sand.js","dungeon.data.demons.sand.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.angel.sand.js","dungeon.data.angel.demons.novice.sand.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E8E7D1","CellBorderColorString":"#978C6E","Jobs":{"CollectiveJobs":[{"Caption":"Подгорный Эдельвейс","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":["Вам поручено найти \"Подгорный Эдельвейс\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещеры Мглы\", Вы сможете найти то, что нужно. Почаще оборачивайтесь...","","Вполне можно управиться за раз."],"DefCount":25},{"Caption":"Драконий Камень","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":["Для интереса, Вам следует поднапрячься, и найти \"Драконий Камень\" в количестве несколько штук. Придется обшарить не один темный угол в \"Пещеры Мглы\"."],"DefCount":5},{"Caption":"Гранит","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":["Неизвестно почему, Вам необходимо собрать \"Гранит\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Пещеры Мглы\". Прощайте…"],"DefCount":13},{"Caption":"Хрусталь","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":["Неизвестно зачем, Вам придется хорошо поработать, чтобы достать \"Хрусталь\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Пещеры Мглы\" Вы сможете найти то, что нужно. Прощайте… ","","Выполняется за 2-3 похода."],"DefCount":13},{"Caption":"Пещерный Мох","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":["Неизвестно почему, Вы должны доставить \"Пещерный Мох\" в количестве несколько штук. Для этого Вам придется отправиться в \"Пещеры Мглы\" и быть внимательным на всё протяжении пути. Будьте осмотрительны... ","","Вполне можно управиться за раз."],"DefCount":35}],"CapturedJobs":[{"Caption":"Шахтерский Крюк","ImageUrl":"https://img.new-combats.com/i/items/mater208.gif","ItemReward":6,"Description":["Чтобы отстоять свою честь и достоинство, Вам следует поискать \"Шахтерский Крюк\" в количестве несколько штук. Придется убить не один десяток монстров в \"Пещеры Мглы\". Ждем с трофеями... ","","Выпадают из всех, кроме ПГ."],"DefCount":10},{"Caption":"Шахтерский огонь","ImageUrl":"https://img.new-combats.com/i/items/mater220.gif","ItemReward":15,"Description":["Шутки ради, Вам необходимо найти \"Шахтерский огонь\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Пещеры Мглы\". Скатертью дорожка!","","Выпадает только из рабочих."],"DefCount":12},{"Caption":"Аутсвайс","ImageUrl":"https://img.new-combats.com/i/items/mater207.gif","ItemReward":14,"Description":["Ради морального удовольствия, Вам следует поискать \"Аутсвайс\" в количестве несколько штук. Придется убить не один десяток монстров в \"Пещеры Мглы\". И помните, это не прогулка... ","","Выпадает из всех, кроме ПГ."],"DefCount":15},{"Caption":"Клык Проклятья Глубин","ImageUrl":"https://img.new-combats.com/i/items/mater204.gif","ItemReward":12,"Description":["Чтобы восстановиться в глазах окружающих, Вы должны хорошенько постараться, чтобы собрать \"Клык Проклятья Глубин\" в количестве несколько штук. Для этого вам потребуется убить и обыскать не один десяток монстров в \"Пещеры Мглы\". Будьте осмотрительны... "],"DefCount":15},{"Caption":"Тряпье","ImageUrl":"https://img.new-combats.com/i/items/mater216.gif","ItemReward":8,"Description":["Вам следует поднапрячься, и найти \"Тряпье\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Пещеры Мглы\". Удачи … ","","Выпадает из всех, кроме ПГ. Выполняется за 1-2 похода."],"DefCount":14},{"Caption":"Кости","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":6,"Description":["Шутки ради, Вам необходимо найти \"Кости\" в количестве несколько штук. Для этого придется обыскать не один труп в \"Пещеры Мглы\". Скатертью дорожка!","","Выпадают со всех, кроме ПГ. Можно собрать за один поход, если убить всех."],"DefCount":13}],"KillingJobs":[{"MobName":"pg_sand","Unique":false,"Description":["Ради морального удовольствия, Боги призывают Вас найти и ликвидировать хотя бы несколько монстров \"Проклятье Глубин\", спустившись в \"Пещеры Мглы\". Не надейтесь на помощь..."],"DefCount":12},{"MobName":"strmgl","Unique":false,"Description":["Тщеславия ради, Вам нужно замучить досмерти несколько монстров \"Сторож Мглы\". Последний раз их видели неподалеку от входа в \"Пещеры Мглы\". "],"DefCount":13},{"MobName":"smotrmgl","Unique":false,"Description":["Для бесчеловечных экспериментов лекарей города, Вы должны найти и убить несколько монстров \"Смотритель Мглы\". Эти твари обжили \"Пещеры Мглы\". Прощайте… "],"DefCount":12},{"MobName":"rabmgl","Unique":false,"Description":["Чтобы мир стал чище и прекраснее, горожане умоляют Вас избавить их от не менее несколько монстров \"Рабочий Мглы\", спустившись в \"Пещеры Мглы\". Удачи… ",""],"DefCount":13}]},"Floors":[{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder8"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":7}]}]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder9"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":4}]}]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2","InstanceName":"key22"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":1}]}]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk3"}],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport10"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well03","InstanceName":"fountain22"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter2"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":3},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key1","InstanceName":"key12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":1}]}]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":2}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":2,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter7"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":25}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk4"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk5"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"hp1600","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport12"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":9}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":9},{"X":1,"Y":9},{"X":3,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":1,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":1,"Y":8}]}]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5},{"X":3,"Y":5},{"X":1,"Y":4},{"X":1,"Y":3},{"X":2,"Y":3},{"X":3,"Y":4},{"X":2,"Y":4},{"X":3,"Y":3},{"X":1,"Y":5}]}]},{"X":5,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain54"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain53"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":7,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder10"}],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key32"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":9}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter8"}],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":10}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":7,"Align":"0","Tag":"санд","Count":10},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor2","Caption":"2 этаж","Description":[]},{"Cells":[{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rh","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate2"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain64"}],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar22"}],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"workshop","InstanceName":"workshop2"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar21"}],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":2},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter10"}],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":9,"Align":"9","Tag":"hp2400","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter9"}],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":2,"Top":1,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":3},{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4","InstanceName":"fountain42"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_sand","Level":9,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":5},{"Name":"pg_sand","Level":8,"Align":"0","Tag":"санд","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"key2_2","InstanceName":"key2_21"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":3,"Y":10}]}]}],"LookDirection":3,"Width":12,"Height":12,"DataBounds":"1, 1, 10, 10","Name":"floor3","Caption":"3 этаж","Description":[]},{"Cells":[{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"sar2","InstanceName":"sar21"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter11"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sign1","InstanceName":"sign11"}],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strkl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"strslpr","InstanceName":"strslpr1"}],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strkl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"hroch","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab2"}],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krpt","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"grate","InstanceName":"grate3"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zbldsh","Level":8,"Align":"0","Tag":"санд","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor2"}],"HotSpots":[]},{"X":5,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge3"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":12,"DataBounds":"1, 0, 8, 11","Name":"floor4","Caption":"4 этаж","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"sandknightugsol","Caption":"Рыцарское","Description":["

        Пещеры Мглы, Рыцарское задание


        Когда репутация в Sand city достигнет заветной цифры 9999, Вы сможете получить рыцарское задание:

        ","
        ","

        • Вы ищете способ стать рыцарем нашего города? Великолепно! Нашим агентам стало известно, что некий Рульф Хрумпт, находящийся в городском подземелье знает секрет приготовления \"Тайной Настойки\". Нашим рыцарям просто необходим экземпляр этого зелья. Принесите его и вы станете рыцарем нашего города!
        ","
        Подготовка к походу
        ","
        Для приготовления \"\" Тайной Настойки необходимо 10 \"\" Эликсиров Силы Предков, для изготовления каждого из которых, Вам понадобятся следующие реагенты: \"\"Снадобье Зарева, \"\"Снадобье Океанов, \"\"Снадобье Недр, и \"\"Сущность Ресурса (5 шт.)
        ","
        Все Эликсиры можно купить в госмагазинах или найти в фантанах Пещер Мглы. Сущности проще всего купить с рук, у людей торгующих ими. ","

        И так, для выполнения рыцарского задания Вам потребуется:
        ","
        • Снадобье Зарева (10 шт.) ","
        • Снадобье Океанов (10 шт.)","
        • Снадобье Недр (10 шт.) ","
        • Сущности Ресурса (50 шт.)
        ","
        Полезная информация:
        Для выполнения задания можно использовать эликсиры купленные в магазине (хранилище), но это экономически не выгодно, так как покупной эликсир на 10 глотков будет расcмотрен как эликсир на один глоток.
        ","

        Поход
        ","
        Обычным маршрутом доходим до \"\" Рульфа Хрумпта и начинаем с ним диалог:

        ","
        ","

        Подойди сюда, шепну кое-чего. Да ближе, ближе... Не бойся, молоток, это вовсе не оружие войны... он для воспитания духа, как спортивный инвентарь.
        ","
        Слушаю тебя внимательно.
        • Простите, я вас боюсь. (завершить разговор)
        ---
        Слушаешь? Это хорошо... старых людей надо уважать, слушать надо. Так вот, милый человек... худо мне, ой как худо. Помочь мне может только зелье целебное - настойка тайная... Зелье-то я сам сделать могу и с тобой поделюсь. Но для этого нужно 10 Эликсиров Силы Предков. Принесешь, я настойки сделаю. Две мне, одну тебе. По справедливости что бы. ","
        ---
        Где Эликсир достать знать хочешь? Вот что я скажу тебе... хотя нет этого я говорить не буду, а то, чего доброго, раздумаешь мне помогать. Эликсир этот можно сделать в лаборатории Старого Краппта, правда, придется уговорить хозяина... Для приготовления Эликсира нужны следующие реагенты: Снадобье Зарева, Снадобье Океанов, Снадобье Недр, и Сущности Ресурса пять штук

        ","
        Получено задание: необходимо добыть 10 Эликсиров Силы Предков и передать их \"\" Рульфу Хрумпту. В награду получим Тайную Настойку. ","
        Реагенты в рюкзаке. По центральному коридору, через \"\" Загадочное отверстие спускаемся на четвертый этаж.
        ","
        Важно: К Хрумпту можно не ходить, а сразу идти на четвертый этаж, имея при себе все необходимые ингредиенты.
        ","
        Зачищая все вокруг, доходим до Лаборатории (клетка G3 четвертого этажа). ","
        Важно: Для прохода в Лабораторию необходим \"\" Мерцающий ключ №3. Его можно поднять на клетке J4 второго этажа, или получить после смерти Заблудшей Души[8]. ","
        В Лаборатории необходимо убить монстра \"\" Краппт. За ним есть три \"\" лаборатории, в каждой из которых, имея необходимые ингредиенты, можно приготовить один Эликсир Силы Предков на команду. Всего, за поход можно приготовить три эликсира на команду. ","

        Важно: За поход можно получить три Эликсира Силы Предков, для получения 10-ти эликсиров необходимо минимум 4 похода. На клетке B10 четвертого этажа расположено еще одно \"\" Загадочное отверстие, выйдя через него, Вы сможете сразу же посетить подземелье вновь. ","
        Пять походов (четыре за эликсирами и один для того чтоб отдать настойку) и милый \"\" Рульф отдает нам \"\" заветный эликсир.

        ","
        ","

        Эликсиры говоришь... Это очень, очень хорошо! Давай их суда, и я совершенно бесплатно подарю тебе мою настойку.
        По рукам.
        • Знаешь, вот прямо сейчас я тебе их отдать не могу... (завершить разговор)","
        ---
        Вы отдали Эликсир Силы Предков x 10 ","
        ---
        Эх, старость не радость, мне теперь никак без настойки нельзя... Вот помог так помог. ","
        Да, не за что. (завершить разговор)

        ","

        Выходим, завершаем задание.","
        Сдав задание получаем заветный значок \"\" в инфу и награду в виде свитка \"\"Зачаровать наручи: Здоровье +12. ","

        Полезная информация:
        Эликсир Силы Предков не связывается \"\" общей судьбой с тем, кто его получил. Поэтому эти эликсиры могут для Вас собрать другие люди. Можно использовать подаренные или купленные у торговцев эликсиры, на конечный результат это не повлияет.
        ","
        • Собирать Эликсиры Силы Предков и получить Тайную Настойку можно и без рыцарского задания.
        ","
        • Если у Вас есть Тайная Настойка на момент получения задания на рыцарство, то сдать задание можно сразу получив его, то есть не заходя в пещеру.


        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key22","Caption":"Отворяющая печать №2","Description":["Масса: 1","Долговечность: 0/1","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять на клетке E2 третьего этажа."]}],"Name":"key","Caption":"Ключи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":2,"IsGift":false,"Name":"amulet67","Caption":"Амулет здоровья (мф)","Description":["Масса: 1","Цена: 62 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 10 ","• Выносливость: 20 ","• Уровень: 4 ","Действует на:","• Уровень жизни (HP): +150","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка J7."]}],"Name":"amulet","Caption":"Амулет","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword94","Caption":"Ледяной меч (мф)","Description":["Масса: 19","Цена: 174 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 25 ","• Ловкость: 25 ","• Интуиция: 25 ","• Выносливость: 25 ","• Уровень: 8 ","• Мастерство владения стихией Воды: 2 ","• Мастерство владения мечами: 5 ","Действует на:","• Интеллект: +1 ","• Мф. против увертывания: +25 % ","• Мф. критического удара: +45 % ","• Мф. парирования: +5 % ","• Максимальное наносимое повреждение: 27 ","• Минимальное наносимое повреждение: 15 ","Особенности:","• Рубящие атаки: Временами ","• Ледяные атаки: Временами ","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword93","Caption":"Меч темного пламени (мф)","Description":["Масса: 18","Цена: 177 кр. ","Долговечность: 0/80","Требуется минимальное:","• Сила: 25 ","• Интуиция: 25 ","• Выносливость: 25 ","• Уровень: 8 ","• Мастерство владения мечами: 5 ","Действует на:","• Сила: +3 ","• Интеллект: +1 ","• Мф. против увертывания: +20 % ","• Мф. критического удара: +80 % ","• Максимальное наносимое повреждение: 30 ","• Минимальное наносимое повреждение: 11 ","Особенности:","• Колющие атаки: Редки ","• Рубящие атаки: Регулярны ","• Режущие атаки: Малы ","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword74","Caption":"Меч Заката (мф)","Description":["Масса: 28","Цена: 260 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 30 ","• Интуиция: 25 ","• Выносливость: 30 ","• Уровень: 8 ","• Мастерство владения мечами: 5 ","Действует на:","• Интеллект: +1 ","• Мф. против увертывания: +25 % ","• Мф. критического удара: +50 % ","• Мф. мощности крит. удара: +15 % ","• Мф. удара сквозь броню: +10 % ","• Мастерство владения мечами: +1 ","• Максимальное наносимое повреждение: 40 ","• Минимальное наносимое повреждение: 21 ","Свойства предмета:","• Двуручное оружие","Особенности:","• Колющие атаки: Редки ","• Рубящие атаки: Временами ","• Режущие атаки: Редки ","• Ледяные атаки: Редки ","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка B9."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword104","Caption":"Меч Кровавой Луны (мф)","Description":["Масса: 17","Цена: 220 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 45 ","• Ловкость: 15 ","• Интуиция: 15 ","• Выносливость: 50 ","• ровень: 9 ","Мастерство владения мечами: 5 ","Действует на:","• Сила: +2 ","• Интеллект: +2 ","• Мф. против увертывания: +40 % ","• Мф. против критического удара: +40 % ","• Мф. мощности рубящего урона: +10 % ","• Мастерство владения мечами: +2 ","• Максимальное наносимое повреждение: +34 ","• Минимальное наносимое повреждение: +12 ","Особенности:","• Колющие атаки: Малы ","• Рубящие атаки: Временами ","• Режущие атаки: Малы","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка D5."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword103","Caption":"Меч Кровавой Луны (мф)","Description":["Масса: 13","Цена: 220 кр. ","Долговечность: 0/50","Требуется минимальное:","• Сила: 30 ","• Ловкость: 15 ","• Интуиция: 50 ","• Выносливость: 30 ","• Уровень: 9 ","Действует на:","• Интеллект: +2 ","• Мф. против увертывания: +50 % ","• Мф. критического удара: +80 % ","• Мф. мощности крит. удара: +10 % ","• Мастерство владения мечами: +2 ","• Максимальное наносимое повреждение: 34 ","• Минимальное наносимое повреждение: 12 ","Особенности:","• Колющие атаки: малы ","• Рубящие атаки: временами ","• Режущие атаки: малы ","• Ледяные атаки: редки ","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка D5."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword102","Caption":"Меч Паука (мф)","Description":["Масса:17","Цена: 220 кр.","Долговечность: 0/50","Требуется минимальное:","• Ловкость: 55","• Интуиция: 15","• Уровень: 9","• Мастерство владения мечами: 5","• Выносливость: 30","• Сила: 30","Действует на:","• Интеллект: +2 ","• Мф. против критического удара (%): +35","• Мф. увертывания (%): +75","• Сила: +1","Свойства предмета:","• Урон: 12 - 34","• Мастерство владения мечами: 2","• Мф. удара сквозь броню (%): 20","• Второе оружие","Особенности:","• Колющие атаки: Малы","• Рубящие атаки: Временами","• Режущие атаки: Малы","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на втором этаже, клетка D5."]}],"Name":"sword","Caption":"Мечи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_curemana200_30","Caption":"Зелье Маны","Description":["Масса: 1","Цена: 4 кр.","Долговечность: 0/2","Срок годности: 30 дн. ","Требуется минимальное:","• уровень 7","Описание: Зелье содержит небольшой запас маны. ","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка J7."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_fireproof","Caption":"Снадобье Зарева","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1 ","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Защита от магии огня: +75","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Зарева на первом этаже, клетка B6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_earthproof","Caption":"Снадобье Недр","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1 ","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Защита от магии земли: +75","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Недр на втором этаже, клетка F4."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_airproof","Caption":"Снадобье Урагана","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1 ","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Защита от магии воздуха: +75","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Урагана на третьем этаже, клетка C6."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_150_waterproof","Caption":"Снадобье Океанов","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1 ","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Защита от магии воды: +75","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Океанов на втором этаже, клетка F8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_allmag2","Caption":"Снадобье Отрицания","Description":["Масса: 5","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 20 дн. ","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• уровень: 7","Действует на:","• Защита от магии: +75","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Отрицания на третьем этаже, клетка H3."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot_pm1","Caption":"Эликсир Силы Предков","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 3 ч. 0 мин.","Требуется минимальное:","• Выносливость: 40","Действует на:","• Сила: +20","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Можно приготовить в Лаборатории четвертого этажа. ","Для приготовления эликсира нужны следующие реагенты: Снадобье Зарева, Снадобье Океанов, Снадобье Недр и Сущность Ресурса (5 шт)."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot_pm2","Caption":"Тайная Настойка Рульфа","Description":["Масса: 1","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 3 ч. 0 мин.","Требуется минимальное:","• Выносливость: 45","Действует на:","• Сила: +25","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Квестовый предмет. Можно получить взамен на 10 Эликсиров Силы Предков у Рульф Хрумпта"]}],"Name":"pot_base","Caption":"Эликсиры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"mesh1","Caption":"Мешок Забытых","Description":["Масса: 1","Цена: 2000 кр. ","Долговечность: 0/1 ","Срок годности: 180 дн.","Требуется минимальное:","• Уровень: 4","• Сила: 15","Действует на:","• Увеличивает рюкзак: +250","Сделано в Sandcity","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Рульфа Хрумпта после его смерти."]}],"Name":"mesh","Caption":"Мешок","Description":[]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Пещеры Мглы

        "]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"enhp_13_pm_revard","Caption":"Зачаровать наручи: Здоровье +12","Description":["Цена: 50 кр.
        Требуется предмет: Эссенция лунного света, [Слиток пустынной руды]x3
        Долговечность: 0/1
        Действует на:
        • Уровень жизни (HP): +12
        Описание:
        При использовании на наручи, увеличивает уровень здоровья на 12
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"weap_enc_4_1","Caption":"Власть Земли [1]","Description":["Цена: 10 кр.
        Долговечность: 0/10
        Вероятность срабатывания: 99%
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 8
        Наложены заклятия: Магия стихий
        Описание:
        Обменивающийся с вами ударом получает маг.удар землей
        "]}],"Name":"svitki","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"roba16","Caption":"Рубаха Хранителя Подземелий","Description":["Цена: 65 кр.
        Действует на:
        • Уровень жизни (HP): +99"]}],"Name":"roba","Caption":"Рубахи","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat5","Caption":"Сущность Наручей ","Description":["Масса: 1","Цена: 300 кр. ","Долговечность: 0/1 ","Предмет не подлежит ремонту ","Описание:","Необходим для улучшения наручей до [10] уровня в Наковальне забытых мастеров, в Пещерах Мглы."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat13","Caption":"Сущность Пояса ","Description":["Масса: 1","Цена: 300 кр. ","Долговечность: 0/1 ","Предмет не подлежит ремонту ","Описание:","Необходим для улучшения пояса до [10] уровня в Наковальне забытых мастеров, в Пещерах Мглы."]}],"Name":"sp_mat","Caption":"Сущности вещей","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater275","Caption":"Песок просвета","Description":["Цена: 28 кр.
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x6
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходим для улучшения наручей до [10] уровня в Наковальне забытых мастеров, в Пещерах Мглы.
        "]},{"NewLineToBR":true,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater276","Caption":"Песчаная руда ","Description":["Цена: 28 кр.
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x5
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходима для улучшения пояса до [10] уровня в Наковальне забытых мастеров, в Пещерах Мглы.
        "]}],"Name":"other","Caption":"Доп. предметы","Description":[]}],"Name":"sandknightshop","Caption":"Магазин","Description":["

        Пещеры Мглы, Рыцарский магазин


        ","

        Когда репутация в Sand сity достигнет заветной цифры 10 000, перед Вами откроются двери Рыцарского магазина Пещеры Мглы.

        "]}],"IsDungeon":true,"Name":"sand","Caption":"Пещеры Мглы","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.demons.js","dungeon.data.angel.demons.js","dungeon.data.demons.sand.js","dungeon.data.angel.demons.sand.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.demons.js","dungeon.data.capital.demons.js","dungeon.data.capital.demons.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js","dungeon.data.demons.novice.js","dungeon.data.angel.demons.novice.js","dungeon.data.angel.capital.demons.novice.js","dungeon.data.angel.capital.demons.js","dungeon.data.angel.demons.novice.sand.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#E9D7D7","CellBorderColorString":"#906C6C","Jobs":{"CollectiveJobs":[],"CapturedJobs":[{"Caption":"Брага","ImageUrl":"https://img.new-combats.com/i/items/mater227.gif","ItemReward":20,"Description":["Чтобы что-то сделать, сначала нужно что-то найти..., Вам необходимо найти \"Брага\" в количестве несколько штук. Придется убить не один десяток монстров в \"Катакомбы\". Прощайте..","","Выпадает из Слизи."],"DefCount":13},{"Caption":"Кости","ImageUrl":"https://img.new-combats.com/i/items/mater200.gif","ItemReward":25,"Description":["Неизвестно зачем, Вам придется хорошо поработать, чтобы достать \"Кости\" в количестве несколько штук. Только неся смерть монстрам из \"Катакомбы\" Вы сможете найти то, что нужно. Поглядывайте за спину... ","","Выпадает из Проклятых."],"DefCount":13},{"Caption":"Амулет Пустынника","ImageUrl":"https://img.new-combats.com/i/items/mater215.gif","ItemReward":25,"Description":["Для интереса, Вы должны хорошенько постараться, чтобы найти \"Амулет Пустынника\" в количестве несколько штук. \"Попросите\" их у монстров в \"Катакомбы\".","","Выпадает из Зомби."],"DefCount":13}],"KillingJobs":[{"MobName":"sl","Unique":false,"Description":["Для баланса сил во Вселенной, Вам необходимо выполнить приказ: найти и уничтожить хотя бы несколько монстров \"Слизь\". Последний раз их наблюдали рядом с \"Катакомбы\"."],"DefCount":10},{"MobName":"pp","Unique":false,"Description":["Чтобы отстоять свою честь и достоинство, Вы должны найти и убить несколько монстров \"Пожиратель Падали\". Кроме Вас, все в курсе что они обжились в \"Катакомбы\". И помните, это не прогулка... "],"DefCount":4},{"MobName":"zm","Unique":false,"Description":["Во имя чести и достоинства, на Вас возложенна ответсвенная миссия по избавлению мира от неуместных персонажей... Для этого Вам нужно убить несколько монстров \"Зомби\". Последний раз их видели неподалеку от входа в \"Катакомбы\". Будьте осторожны...","","За задание с именными Зомби дают награды в двое больше, чем за безымянных..."],"DefCount":3},{"MobName":"drstr","Unique":false,"Description":["Ради повышения социального статуса, Вы должны найти и уничтожить несколько монстров \"Древний Страж\". Они слишком вольготно себя чувствуют в \"Катакомбы\"."],"DefCount":2},{"MobName":"prokl","Unique":false,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы в Мире, Вам необходимо найти и уничтожить как минимум несколько монстров \"Проклятый Убийца\". Их засекли в \"Катакомбы\"."],"DefCount":3},{"MobName":"brsk","Unique":true,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы на Земле, Вам необходимо выполнить приказ: найти и уничтожить отвратительную личность \"Берсерк\". Под его контролем нaходяться \"Катакомбы\", там его и найдете. Будьте осмотрительны..."],"DefCount":1},{"MobName":"og","Unique":true,"Description":["Чтобы восстановить пошатнувшийся баланс Света и Тьмы в Мире, командование поручает Вам уничтожить отвратительного \"Офицер Глубин\", спустившись в \"Катакомбы\". Прощайте..."],"DefCount":1},{"MobName":"zsl","Unique":true,"Description":["Чтобы мир стал чище и прекраснее, на Вас возложенна миссия уничтожения рецидивиста \"Зубастая Слизь\". Она контролирует \"Катакомбы\", там её и найдете. "],"DefCount":1},{"MobName":"hsl","Unique":true,"Description":["Для защиты окружающией среды, Боги призывают Вас найти и ликвидировать отвратительную личность \"Хищная Слизь\". Её следы обнаружены возле входа в \"Катакомбы\". Скатертью дорожка!"],"DefCount":1},{"MobName":"chkng","Unique":true,"Description":["Ради жизни на земле, Вы должны исполнить приговор суда и убить личность \"Чернокнижник\" уличенного в убийстве мирных жителей. Его засекли в \"Катакомбы\"."],"DefCount":1},{"MobName":"ep","Unique":true,"Description":["Чтобы восстановиться в глазах окружающих, Вы должны убить личность \"Епископ\" за всё плохое. Под его контролем нaходяться \"Катакомбы\", там его и найдете."],"DefCount":1},{"MobName":"shtpvl","Unique":true,"Description":["Для баланса сил на Земле, на Вас возложенна ответсвенная миссия по избавлению мира от неуместных персонажей... Для этого Вам нужно убить главаря подземной банды \"Шут Повелителя\". Он контролирует \"Катакомбы\", там его и найдете. Будьте осмотрительны..."],"DefCount":1},{"MobName":"trp","Unique":true,"Description":["Для защиты окружающией среды, Вам предстоит исполнить волю богов убив врага города \"Трупожор\". Недавно он слонялся рядом с входом в \"Катакомбы\". Не надейтесь на помощь..."],"DefCount":1},{"MobName":"plen","Unique":true,"Description":["Ради повышения социального статуса, Вы должны исполнить приговор суда и казнить отвратительного \"Проклятый Пленник\". Недавно он слонялся рядом с входом в \"Катакомбы\". Ждем с трофеями... "],"DefCount":1},{"MobName":"pvlt","Unique":true,"Description":["Для баланса сил на Земле, на Вас возложенна миссия уничтожения опасного \"Повелитель\". Его следы обнаружены возле входа в \"Катакомбы\". "],"DefCount":1}]},"Floors":[{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":6,"Y":3}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":10}]}]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"drain_lowering","InstanceName":"drain1"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor6"}],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger9"}],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest25"}],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest13"}],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"key3","InstanceName":"key33"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":5}]}]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor5"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":6,"Y":4}]}]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"lit","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed2"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"og","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"bed","InstanceName":"bed3"}],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk11"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":3}]}]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"barrikada","InstanceName":"barrikada"}],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"lit","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk9"}],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"brsk","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest14"}],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4","InstanceName":"fountain43"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk10"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_top","InstanceName":"drain_top2"}],"HotSpots":[]},{"X":5,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain6"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":11}]}]},{"X":5,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet11"}],"HotSpots":[]},{"X":9,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat1","InstanceName":"stat1"}],"HotSpots":[]},{"X":7,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":7,"Y":19,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":8,"Y":20,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina","InstanceName":"proboina6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":12,"Y":18}]}]},{"X":9,"Y":20,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":20,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":4,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":3,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":16,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":16,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":13,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"violetteleport","InstanceName":"violetteleport1"}],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":15,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor2"}],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"orangeteleport","InstanceName":"orangeteleport"}],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":1,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":18,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain5"}],"HotSpots":[]},{"X":2,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":20,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kamen1","InstanceName":"kamen1"}],"HotSpots":[]},{"X":12,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina5"}],"HotSpots":[]},{"X":15,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":12,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":7}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":16,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":15,"Y":16,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":16,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":7,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":15,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":12,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain7","InstanceName":"fountain7"}],"HotSpots":[]},{"X":15,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zsl","Level":8,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":12,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet12"}],"HotSpots":[]},{"X":16,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":12,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina2","InstanceName":"proboina21"}],"HotSpots":[]},{"X":15,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"smotrmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":1,"Y":21,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor4"}],"HotSpots":[]}],"LookDirection":2,"Width":19,"Height":22,"DataBounds":"1, 0, 17, 22","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"drain_bottom","InstanceName":"drain4"}],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ng","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":1},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk7"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well05","InstanceName":"fountain1"}],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":1}]}]},{"X":4,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat3","InstanceName":"stat3"}],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat2","InstanceName":"stat2"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":1},{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"ng","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_2_3e","InstanceName":"kk_stone_2_3e"}],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina","InstanceName":"proboina4"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":9,"Y":7}]}]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"sg","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"ep","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_13"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"сhalice3"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"9","Tag":"марка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport8"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":16,"Y":3}]}]},{"X":15,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat3","InstanceName":"stat3"}],"HotSpots":[]},{"X":15,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":14,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"9","Tag":"hp1600","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest1","InstanceName":"chest13"}],"HotSpots":[]},{"X":14,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":13,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":15,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":14,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":12,"Y":10,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter9"}],"HotSpots":[]},{"X":15,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport7"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":16,"Y":10}]}]},{"X":16,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger7"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":17,"Y":9}]}]},{"X":15,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":17,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":16,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport9"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":17,"Y":3}]}]},{"X":17,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":17,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":21,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":20,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":1},{"Name":"smotrmgl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"stat1","InstanceName":"stat1"}],"HotSpots":[]},{"X":20,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"well05","InstanceName":"well03"}],"HotSpots":[]},{"X":19,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"strmgl","Level":8,"Align":"0","Tag":"hp800","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":20,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"hsl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":21,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest25"}],"HotSpots":[]},{"X":19,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":20,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_2_3ch","InstanceName":"kk_stone_2_3ch"}],"HotSpots":[]},{"X":21,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"proboina2","InstanceName":"proboina2"}],"HotSpots":[]},{"X":20,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_14"}],"HotSpots":[]},{"X":19,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"chkng","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"rabmgl","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":18,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sg","Level":8,"Align":"0","Tag":"","Count":2},{"Name":"rg","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":13,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":19,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"sl","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"stglb","Level":9,"Align":"3","Tag":"тёмный","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar5"}],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk8"}],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger8"}],"HotSpots":[]}],"LookDirection":2,"Width":23,"Height":12,"DataBounds":"1, 1, 21, 10","Name":"floor2","Caption":"2 этаж","Description":[]},{"Cells":[{"X":1,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter3"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain55"}],"HotSpots":[]},{"X":4,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":0,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":7,"Y":0,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger6"}],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"trp","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":0,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"kk_stone_3_4","InstanceName":"kk_stone_3_4"}],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"blueteleport","InstanceName":"blueteleport5"}],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"shtpvl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":2,"Right":1,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport5"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":5}]}]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":1},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"dangerteleport","InstanceName":"teleport4"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":4,"Y":6}]}]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"skelet1","InstanceName":"skelet11"}],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":12,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":11,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":11,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2},{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":1},{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":10,"Y":11,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":11,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"drain_bottom","InstanceName":"drain3"}],"HotSpots":[]},{"X":2,"Y":12,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":12,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":4,"Y":13,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":14,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":15,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":15,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":17,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":13,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":14,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":15,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2},{"Name":"prokl","Level":10,"Align":"0","Tag":"проклы","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":16,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":17,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":12,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":13,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":13,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":9,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"proboina","InstanceName":"proboina3"}],"HotSpots":[]},{"X":8,"Y":14,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chalice","InstanceName":"сhalice2"}],"HotSpots":[]},{"X":7,"Y":14,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest4","InstanceName":"chest15"}],"HotSpots":[]},{"X":7,"Y":15,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"plen","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":15,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":18,"Border":{"Left":0,"Top":1,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow1"}],"HotSpots":[]},{"X":9,"Y":18,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":19,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"chest01","InstanceName":"chest24"}],"HotSpots":[]},{"X":8,"Y":19,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":18,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":17,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":19,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":6,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":17,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"trash2","InstanceName":"trash22"}],"HotSpots":[]},{"X":5,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":19,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":19,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":19,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"ladder02"}],"HotSpots":[]},{"X":2,"Y":20,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":18,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":13,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pp","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"landslip1","InstanceName":"landslip11"}],"HotSpots":[]}],"LookDirection":2,"Width":12,"Height":21,"DataBounds":"1, 0, 10, 21","Name":"floor3","Caption":"3 этаж","Description":[]},{"Cells":[{"X":1,"Y":8,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"lab","InstanceName":"lab4"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":8},{"X":1,"Y":10},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":9},{"X":4,"Y":10},{"X":4,"Y":9},{"X":4,"Y":8},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}]}]},{"X":1,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":8,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":10,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter10"}],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bzomb","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"марка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger10"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":3},{"X":10,"Y":1},{"X":8,"Y":1},{"X":8,"Y":3}]}]},{"X":9,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"марка 10к нр","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"enterdoor","InstanceName":"enterdoor3"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":1}]}]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin2","InstanceName":"gobelin2"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"throne1","InstanceName":"throne11"}],"HotSpots":[]},{"X":1,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_3","InstanceName":"sunduk_32"}],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pvlt","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger5"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":3}]}]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"attentionpoint_red1","InstanceName":"danger5"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":3}]}]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"марка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"марка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"9","Tag":"марка","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zm","Level":10,"Align":"9","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"drstr","Level":10,"Align":"0","Tag":"обычный","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"prokl","Level":10,"Align":"9","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar4"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"altar","InstanceName":"altar3"}],"HotSpots":[]},{"X":1,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"gobelin1","InstanceName":"gobelin11"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_1","InstanceName":"sunduk_12"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":1}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":1,"Y":8},{"X":1,"Y":9},{"X":1,"Y":10},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":9},{"X":4,"Y":10},{"X":4,"Y":9},{"X":4,"Y":8},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}]}]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"sunduk_4","InstanceName":"sunduk_41"}],"HotSpots":[]},{"X":0,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"zabgol","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"forge","InstanceName":"forge4"}],"HotSpots":[]}],"LookDirection":2,"Width":12,"Height":12,"DataBounds":"0, 1, 11, 10","Name":"floor4","Caption":"4 этаж","Description":[]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"Key24","Caption":"Отворяющая печать №4","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять в сундуке на четвертом этаже, клетка B4."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_2_3ch","Caption":"Камень Портала Чернокнижника","Description":["Масса: 1","Долговечность: 0/1","Срок годности: 7 дн.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять на клетке U3 второго этажа."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_2_3e","Caption":"Камень Портала Епископа","Description":["Масса: 1","Долговечность: 0/1","Срок годности: 7 дн.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять на клетке K3 второго этажа."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"kk_stone_3_4","Caption":"Камень Портала Шута","Description":["Масса: 1","Долговечность: 0/1","Срок годности: 7 дн.","Максимум: 1 ед.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно взять на клетке С7 третьего этажа."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_1","Caption":"Обломок Пирамидального Ключа","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти сундуке на клетке K7/b> второго этажа. ","При наличии в рюкзаке, второй взять нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_2","Caption":"Осколок Пирамидального Ключа","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на клетке U2 второго этажа Катакомб. ","При наличии в рюкзаке, второй взять нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"key_cube_3","Caption":"Пирамидальный Ключ","Description":["Масса: 1","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"key","Caption":"Ключи","Description":["Камни Порталов необходимы для работы одноименных порталов: Епископа (первый этаж клетка E14), Чернокнижника (первый этаж клетка D13) и Шута (первый этаж клетка C14). Волшебные порталы сокращают перемещение между локациями Kатакомб в несколько раз.","","Пирамидальный Ключ необходим для сборки свитков зачарования. Сам ключ собирается из Обломка и Осколка в Алтаре Единения, на клетке J2 четвертого этажа."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"d_blat-6","Caption":"Пропуск Забытых","Description":["Масса: 1","Цена: 1 кр.","Долговечность: 0/1","Вероятность срабатывания: 99%","Задержка использования 5 мин. ","Описание:","Позволяет посетить Подземелье на 6 часов раньше.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в кровати на первом этаже, клетка C11."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"paper100","Caption":"Чек на 10 кр. ","Description":["Масса: 1 ","Цена: 10 кр.","Долговечность: 0/1","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуках на первом этаже, клетки K4, K7, K11.","Обменивается на кредиты в гос. магазине. Теряется при проигрыше, если предмет не был одет в слот для свитков. "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"preservation","Caption":"Спасение","Description":["Масса: 1 ","Цена: 1 кр. ","Вероятность срабатывания: 99% ","Наложены заклятия: Магия Света ","На бумаге написан текст: ","Эта вещь исчезнет...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в водостоке на первом этаже, клетка B20."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_powerHPup3","Caption":"Жажда жизни +3","Description":["Масса: 1 ","Цена: 20 кр. ","Долговечность: 0/3 ","Вероятность срабатывания: 50% ","Продолжительность действия магии: 120 мин. ","Требуется минимальное: ","• Уровень: 7","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_powerHPdn3","Caption":"Иссушение –3","Description":["Масса: 1 ","Цена: 10 кр. ","Долговечность: 0/3 ","Вероятность срабатывания: 50% ","Продолжительность действия магии: 120 мин. ","Требуется минимальное: ","• Уровень: 7","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"spell","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_0","Caption":"Зачаровать Украшение [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа.","Можно найти в сундуке рядом с Повелителем, клетка D4 четвертого этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_1","Caption":"Зачаровать Украшение [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Работает с кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_2","Caption":"Зачаровать Украшение [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Работает с для кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_1_3","Caption":"Зачаровать Украшение [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Работает с для кольцами, ожерельями и серьгами.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_0","Caption":"Зачаровать оружие [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа.","Можно найти в сундуке рядом с Повелителем, клетка D4 четвертого этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_1","Caption":"Зачаровать оружие [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_2","Caption":"Зачаровать оружие [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_3_3","Caption":"Зачаровать оружие [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для всех видов оружия.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_0","Caption":"Зачаровать Броню [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа.","Можно найти в сундуке рядом с Повелителем, клетка D4 четвертого этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_1","Caption":"Зачаровать Броню [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_2","Caption":"Зачаровать Броню [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_4_3","Caption":"Зачаровать Броню [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для всех видов брони и щитов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_0","Caption":"Зачаровать Перчатки [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа.","Можно найти в сундуке рядом с Повелителем, клетка D4 четвертого этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_1","Caption":"Зачаровать Перчатки [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_2","Caption":"Зачаровать Перчатки [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_5_3","Caption":"Зачаровать Перчатки [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для перчаток, наручей и поясов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_0","Caption":"Зачаровать Шлем [0]","Description":["Масса: 1 ","Цена: 5 кр. ","Долговечность: 0/1 ","Описание:","Три - переход количества в качество. Этот свиток слишком слаб...","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа.","Можно найти в сундуке рядом с Повелителем, клетка D4 четвертого этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_1","Caption":"Зачаровать Шлем [1]","Description":["Масса: 1 ","Цена: 15 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из Боссов третьего этажа."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_2","Caption":"Зачаровать Шлем [2]","Description":["Масса: 1 ","Цена: 50 кр. ","Долговечность: 0/1 ","Вероятность срабатывания: 99%","Описание:","Три - переход количества в качество. Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"enh_9_3","Caption":"Зачаровать Шлем [3]","Description":["Масса: 1 ","Цена: 150 кр. ","Вероятность срабатывания: 99%","Долговечность: 0/1 ","Описание:","Подходит для шлемов и даже для сапог.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]}],"Name":"enh","Caption":"Свитки зачарования","Description":["Свитки зачарования можно собрать в Лаборатории на четвертом этаже подземелья, клетка B10.","","Эти свитки не связываются общей судьбой, потому их можно купить на аукционе, в комках или с рук.","","Рецепты сбора можно найти в нашем Кострукторе Дигера."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring120_si8","Caption":"Кольцо Бушующего Пламени","Description":["Масса: 1 ","Цена: 100 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 9 ","• Мастерство владения стихией Огня: 3 ","• Выносливость: 25 ","• Сила: 25 ","Наложено заклятье: Ожог","Действует на: ","• Мф. увертывания (%): +50","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Чернокнижника или Древнего стража после их смерти."]},{"NewLineToBR":true,"W":20,"H":20,"Binding":2,"IsGift":false,"Name":"ring121_si8","Caption":"Кольцо Северного Ветра","Description":["Масса: 1 ","Цена: 100 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 9 ","• Мастерство владения стихией Воды: 3 ","• Выносливость: 25 ","• Сила: 25 ","Наложено заклятье: Обморожение","Действует на: ","• Мф. против критического удара (%): +25 ","• Мф. против увертывания (%): +25","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Епископа после его смерти."]}],"Name":"rings","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":20,"Binding":3,"IsGift":false,"Name":"aamulet2_hs3hg2","Caption":"Древний Кулон Королей","Description":["Масса: 1","Цена: 415 кр. ","Долговечность: 0/100","Требуется минимальное:","• Сила: 50 ","• Ловкость: 20 ","• Интуиция: 20 ","• Выносливость: 35 ","• Уровень: 10 ","Действует на:","• Сила: +4 ","• Интеллект: +4","• Защита от магии: +15","• Защита от урона: +10","• Уровень жизни (HP): +120 ","• Мф. против критического удара: +125%","• Мф. против увертывания: +125%","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Крайне редко выпадает из ботов."]}],"Name":"amulet","Caption":"Амулет","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"ashield6_7dk29as","Caption":"Обсидиановый Щит","Description":["Цена: 390 кр.","Долговечность: 0/100","Требуется минимальное:","• Уровень: 10","• Ловкость: 20","• Интуиция: 20","• Выносливость: 50","• Сила: 75","Действует на:","• Мф. против критического удара (%): +75","• Мф. против увертывания (%): +45","• Защита от урона: +10","• Уровень жизни (HP): +90","• Сила: +4","• Броня головы: 14-52 (13+d39)","• Броня корпуса: 14-52 (13+d39)","• Броня пояса: 14-52 (13+d39)","• Броня ног: 14-52 (13+d39)","Свойства предмета:","• Мф. блока щитом (%): +25","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Крайне редко выпадает из ботов."]}],"Name":"shield","Caption":"Щит","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":40,"Binding":3,"IsGift":false,"Name":"aboots2_dk2kd9","Caption":"Сапоги Небесного Ветра","Description":["Масса: 10","Цена: 310 кр. ","Долговечность: 0/100","Требуется минимальное:","• Сила: 50 ","• Ловкость: 50 ","• Интуиция: 20 ","• Выносливость: 35 ","• Уровень: 10 ","Действует на:","• Ловкость: +6 ","• Интуиция: +2 ","• Защита от магии: +20 ","• Уровень жизни (HP): +54","• Броня ног: 14-52 (13+d39) ","• Мф. увертывания: +70 % ","• Мф. против критического удара: +70 % ","Свойства предмета:","• Защита от урона: +15","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Могут выпасть из ботов, но вероятность очень мала."]}],"Name":"boots","Caption":"Сапоги","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":2,"IsGift":false,"Name":"hammer71","Caption":"Молот Забытых Времен (мф)","Description":["Масса: 30 ","Цена: 370 кр. ","Долговечность: 0/60 ","Требуется минимальное: ","• Ловкость: 15 ","• Интуиция: 15 ","• Уровень: 9 ","• Мастерство владения дубинами, булавами: 5 ","• Выносливость: 50 ","• Сила: 55 ","Действует на: ","• Мф. против критического удара (%): +20 ","• Сила: +2 ","Свойства предмета: ","• Урон: 34 - 52","• Мф. против увертывания (%): +80 ","• Мф. мощности дробящего урона (%): +25 ","• Мастерство владения дубинами, булавами: +2 ","• Двуручное оружие ","• Зоны блокирования: + ","Особенности: ","• Колющие атаки: Ничтожно редки ","• Дробящие атаки: Часты ","• Часть комплекта: Комплект Забытых Времен [0/13] ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Берсерка после его смерти."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword106_kki8","Caption":"Кровавый Меч","Description":["Масса: 20","Цена: 280 кр. ","Долговечность: 0/70","Требуется минимальное:","• Сила: 50 ","• Ловкость: 25 ","• Интуиция: 25 ","• Выносливость: 35 ","• Уровень: 10 ","• Мастерство владения мечами: 5 ","Действует на:","• Мф. парирования (%): +10","Свойства предмета:","• Урон: 14 - 38","• Мф. против увертывания: +80 % ","• Мф. удара сквозь броню : +10 % ","• Мастерство владения мечами: +3","• Зоны блокирования: — ","Особенности:","• Колющие атаки: малы ","• Рубящие атаки: Регулярны ","• Режущие атаки: Ничтожно редки ","• Атаки Тьмой: Ничтожно редки ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из ботов."]}],"Name":"arms","Caption":"Оружие","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword8","Caption":"Рассыпающийся Меч Мольбы","Description":["Масса: 8 ","Цена: 0 кр. ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 4 ","• Выносливость: 20 ","• Сила: 20 ","Свойства предмета: ","• Урон: 7 - 18 ","• Мф. критического удара (%): +50 ","• Зоны блокирования: + ","Особенности: ","• Колющие атаки: Малы ","• Рубящие атаки: Временами ","• Дробящие атаки: Редки ","• Режущие атаки: Малы","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в скелете на первом этаже."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"sword11","Caption":"Рассыпающийся Меч Красоты","Description":["Масса: 8 ","Цена: 0 кр. ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 3 ","• Выносливость: 15 ","• Сила: 15 ","Действует на: ","• Мф. увертывания (%): +50 ","Свойства предмета: ","• Урон: 5 - 16 ","• Мф. против увертывания (%): +50 ","• Мастерство владения мечами: +2 ","• Зоны блокирования: + ","Особенности: ","• Колющие атаки: Малы ","• Рубящие атаки: Временами ","• Дробящие атаки: Редки ","• Режущие атаки: Малы","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в скелете на первом этаже."]},{"NewLineToBR":true,"W":60,"H":80,"Binding":0,"IsGift":false,"Name":"armor8","Caption":"Раcсыпающаяся броня печали","Description":["Масса: 25 ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 5 ","• Выносливость: 25 ","• Сила: 25 ","Действует на: ","• Мф. против критического удара (%): +25 ","• Мф. против увертывания (%): +20 ","• Мф. критического удара (%): +25 ","• Интеллект: +1 ","• Мастерство владения мечами: +1 ","• Мастерство владения дубинами, булавами: +1 ","• Мастерство владения ножами, кастетами: +1 ","• Мастерство владения топорами, секирами: +1 ","• Уровень жизни (HP): +33 ","• Сила: +4 ","• Броня корпуса: 1-18 (d18)","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в скелете на первом этаже."]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip8","Caption":"Рассыпающиеся Царские Серьги","Description":["Масса: 1 ","Цена: 0 кр. ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 3 ","• Выносливость: 15 ","• Сила: 15 ","Действует на: ","• Мф. против критического удара (%): +20 ","• Мф. против увертывания (%): +20 ","• Мф. критического удара (%): +20 ","• Мф. увертывания (%): +20","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Слизей."]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip7","Caption":"Рассыпающиеся Серьги Защиты","Description":["Масса: 1 ","Цена: 0 кр. ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 2 ","• Выносливость: 8 ","• Сила: 8 ","Действует на: ","• броня головы: +3 ","• броня корпуса: +3 ","• броня пояса: +3 ","• броня ног: +3","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья"]},{"NewLineToBR":true,"W":60,"H":20,"Binding":0,"IsGift":false,"Name":"clip1","Caption":"Рассыпающиеся Изумрудные Серьги","Description":["Масса: 1 ","Цена: 0 кр. ","Долговечность: 0/3 ","Требуется минимальное: ","• Уровень: 4 ","• Выносливость: 15 ","• Сила: 20 ","Действует на: ","• Уровень жизни: +12 ","• Мф. критического удара (%): +50","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья",""]}],"Name":"rar","Caption":"Рассыпающийся шмот","Description":["После выхода из Подземелья пропадают."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":false,"Name":"armor109_ppwa","Caption":"Броня Повелителя","Description":["Масса: 45","Цена: 525 кр. ","Долговечность: 0/100","Требуется минимальное:","• Сила: 45 ","• Выносливость: 40 ","• Уровень: 10 ","Действует на:","• Сила: +4 ","• Броня корпуса: +35","• Защита от урона: +25","• Уровень жизни (HP): +200","• Мф. критического удара (%): от +60 до +75 ","• Мф. против критического удара: +100%","• Мф. против увертывания: +65%","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","Свойства предмета:","• Защита от магии: +25","Особенности:","• Защита от дробящего урона: Хорошая ","• Защита от колющего урона: слабая ","• Защита от режущего урона: Хорошая ","• Защита от рубящего урона: Хорошая ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Повелителя после его смерти."]},{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":false,"Name":"armor109_ppwa","Caption":"Броня Повелителя","Description":["Масса: 45","Цена: 525 кр. ","Долговечность: 0/100","Требуется минимальное:","• Сила: 45 ","• Выносливость: 40 ","• Уровень: 10 ","Действует на:","• Сила: +4 ","• Броня корпуса: +35","• Защита от урона: +25","• Уровень жизни (HP): +200","• Мф. увертывания (%): от +60 до +75 ","• Мф. против критического удара: +100%","• Мф. против увертывания: +65%","• Мастерство владения мечами: +2","• Мастерство владения дубинами, булавами: +2","• Мастерство владения ножами, кастетами: +2","• Мастерство владения топорами, секирами: +2","Свойства предмета:","• Защита от магии: +25","Особенности:","• Защита от дробящего урона: Хорошая ","• Защита от колющего урона: слабая ","• Защита от режущего урона: Хорошая ","• Защита от рубящего урона: Хорошая ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Повелителя после его смерти."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":"Меч Повелителя","Description":["Масса: 35","Цена: 420 кр. ","Долговечность: 0/100","Требуется минимальное:","• Уровень: 10 ","• Мастерство владения мечами: 5 ","• Выносливость: 40 ","• Сила: 40 ","Действует на:","• Мф. против увертывания (%): +100 ","• Сила: от +9 до +12 ","Свойства предмета:","• Урон: 30 - 48 ","• Мастерство владения мечами: +3 ","• Двуручное оружие ","Зоны блокирования: + ","Особенности:","• Колющие атаки: Малы ","• Рубящие атаки: Регулярны ","• Атаки Тьмой: Ничтожно редки","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Повелителя после его смерти."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":"Меч Повелителя","Description":["Масса: 35","Цена: 420 кр. ","Долговечность: 0/100","Требуется минимальное:","• Уровень: 10 ","• Мастерство владения мечами: 5 ","• Выносливость: 40 ","• Сила: 40 ","Действует на:","• Мф. против увертывания (%): +100 ","• Ловкость: от +9 до +12 ","Свойства предмета:","• Урон: 30 - 48 ","• Мастерство владения мечами: +3 ","• Двуручное оружие ","Зоны блокирования: + ","Особенности:","• Колющие атаки: Малы ","• Рубящие атаки: Регулярны ","• Атаки Тьмой: Ничтожно редки","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Повелителя после его смерти."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":3,"IsGift":false,"Name":"sword107_ppwl","Caption":"Меч Повелителя","Description":["Масса: 35","Цена: 420 кр. ","Долговечность: 0/100","Требуется минимальное:","• Уровень: 10 ","• Мастерство владения мечами: 5 ","• Выносливость: 40 ","• Сила: 40 ","Действует на:","• Мф. против увертывания (%): +100 ","• Интуиция: от +9 до +12 ","Свойства предмета:","• Урон: 30 - 48 ","• Мастерство владения мечами: +3 ","• Двуручное оружие ","Зоны блокирования: + ","Особенности:","• Колющие атаки: Малы ","• Рубящие атаки: Регулярны ","• Атаки Тьмой: Ничтожно редки","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Повелителя после его смерти."]}],"Name":"armorsword","Caption":"Вещи Повелителя","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":"Снадобье Великана ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Сила: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в камнях на первом этаже.","Можно найти в кровати на первом этаже, клетка C11.","Можно получить в Фонтане Призрачного Ума на втором этаже, клетка B11 или Фонтане Призрачной Силы, клетка U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot3","Caption":"Снадобье Великана ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Сила: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Былых Побед на третьем этаже, клетка D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":"Снадобье Змеи ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Ловкость: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в камнях на первом этаже.","Можно найти в кровати на первом этаже, клетка C11.","Можно получить в Фонтане Призрачного Ума на втором этаже, клетка B11 или Фонтане Призрачной Силы, клетка U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot2","Caption":"Снадобье Змеи ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Ловкость: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Былых Побед на третьем этаже, клетка D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":"Снадобье Предчувствия ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Интуиция: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в камнях на первом этаже.","Можно найти в кровати на первом этаже, клетка C11.","Можно получить в Фонтане Призрачного Ума на втором этаже, клетка B11 или Фонтане Призрачной Силы, клетка U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot1","Caption":"Снадобье Предчувствия ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Интуиция: +15 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Былых Побед на третьем этаже, клетка D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":"Снадобье Разума ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 1 ч. 30 мин. ","Действуeт на: ","• Интеллект: +10 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в камнях на первом этаже.","Можно найти в кровати на первом этаже, клетка C11.","Можно получить в Фонтане Призрачного Ума на втором этаже, клетка B11 или Фонтане Призрачной Силы, клетка U11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_200_bot4","Caption":"Снадобье Разума ","Description":["Масса: 1 ","Цена: 1 кр. ","Долговeчность: 0/1 ","Срок гoдности: 30 дн. ","Продолжитeльность действия магии: 3 ч. 0 мин. ","Действуeт на: ","• Интеллект: +10 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Былых Побед на третьем этаже, клетка D1."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_fireproof","Caption":" Эликсир Пламени ","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 1 ч. 30 мин. ","Требуется минимальное: ","• уровень: 4 ","Действует на: ","• защита от магии огня: +50 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_earthproof","Caption":"Эликсир Песков","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 1 ч. 30 мин. ","Требуется минимальное: ","• уровень: 4 ","Действует на: ","• защита от магии земли: +50 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_airproof","Caption":"Эликсир Ветра","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 1 ч. 30 мин. ","Требуется минимальное: ","• уровень: 4 ","Действует на: ","• защита от магии воздуха: +50 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_waterproof","Caption":"Эликсир Морей","Description":["Масса: 5 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн.","Продолжительность действия магии: 1 ч. 30 мин. ","Требуется минимальное: ","• уровень: 4 ","Действует на: ","• защита от магии воды: +50 ","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на первом этаже, клетка F11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_anti_poison_5","Caption":"Антидот [5]","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/3-5","Срок годности: 30 дн.","Наложены заклятия: Исцеление","Описание:","Исцелит вас от ядов.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в купели на втором этаже, клетка H11."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_anti_disease_5","Caption":"Сыворотка [5]","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/3-5","Срок годности: 30 дн.","Наложены заклятия: Исцеление","Описание:","Исцелит вас от многих болезней","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в купели на третьем этаже, клетка I15."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP600_50","Caption":"Глоток Легкой Жизни","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн. ","Описание:","Целебное зелье восстанавливающее 600 единиц здоровья.","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Легкой Жизни на первом этаже, клетка J8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_50_regeneration","Caption":"Эликсир Восстановления","Description":["Масса: 5 ","Цена: 10 кр. ","Долговечность: 0/10 ","Срок годности: 15 дн. ","Продолжительность действия магии: 120 минут ","Действует на: ","• скорость восстановления HP: +300%","Сделано в Demons city","Предмет не подлежит ремонту","Предмет из подземелья","","Может выпасть из Берсерка после его смерти."]}],"Name":"pot_base","Caption":"Эликсиры","Description":["Эликсиры, полученные в фонтанах Призрачной силы и Призрачного ума, после выхода из подземелья пропадают."]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Катакомб

        "]},{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_mat15","Caption":"Сущность Серег ","Description":["Масса: 1","Цена: 300 кр. ","Долговечность: 0/1 ","Предмет не подлежит ремонту ","Описание:","Необходим для улучшения серег до [10] уровня в Наковальне забытых мастеров, в Катакомбах."]}],"Name":"sp_mat","Caption":"Сущности вещей","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":1,"IsGift":false,"Name":"mater267","Caption":"Расскаленная магма ","Description":["Цена: 40 кр.
        Масса: 1
        Требуется предмет: [Сущность Ресурса]x8
        Долговечность: 0/1
        Предмет не подлежит ремонту
        Описание:
        Необходима для улучшения серьг до [10] уровня в Наковальне забытых мастеров, в Катакомбах.
        "]}],"Name":"other","Caption":"Доп. предметы","Description":[]}],"Name":"demonsknightshop","Caption":"Магазин","Description":["

        Катакомбы, Рыцарский магазин


        ","

        Когда репутация в Demons сity достигнет заветной цифры 10 000, перед Вами откроются двери Рыцарского магазина Катакомб.

        "]}],"IsDungeon":true,"Name":"demons","Caption":"Катакомбы","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.emerald.js","dungeon.data.angel.capital.demons.emerald.novice.sand.js","dungeon.data.capital.demons.emerald.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.angel.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.sand.js","dungeon.data.capital.emerald.sand.js","dungeon.data.capital.demons.emerald.novice.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#C4E5C1","CellBorderColorString":"#70906A","Jobs":{"CollectiveJobs":[{"Caption":"Подгорный Эдельвейс","ImageUrl":"https://img.new-combats.com/i/items/mater203.gif","ItemReward":4,"Description":["Вам поручено найти \"Подгорный Эдельвейс\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Подземелья Потерянных\", Вы сможете найти то, что нужно. Почаще оборачивайтесь..."],"DefCount":25},{"Caption":"Драконий Камень","ImageUrl":"https://img.new-combats.com/i/items/mater213.gif","ItemReward":20,"Description":["Для интереса, Вам следует поднапрячься, и найти \"Драконий Камень\" в количестве несколько штук. Придется обшарить не один темный угол в \"Подземелье Потерянных\"."],"DefCount":5},{"Caption":"Гранит","ImageUrl":"https://img.new-combats.com/i/items/mater223.gif","ItemReward":13,"Description":["Неизвестно почему, Вам необходимо собрать \"Гранит\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Подземелья Потерянных\". Прощайте…"],"DefCount":13},{"Caption":"Хрусталь","ImageUrl":"https://img.new-combats.com/i/items/mater214.gif","ItemReward":10,"Description":["Неизвестно зачем, Вам придется хорошо поработать, чтобы достать \"Хрусталь\" в количестве несколько штук. Только обшаря каждый квадратный сантиметр \"Подземелья Потерянных\", Вы сможете найти то, что нужно. Прощайте… "],"DefCount":13},{"Caption":"Пещерный Мох","ImageUrl":"https://img.new-combats.com/i/items/mater222.gif","ItemReward":3,"Description":["Неизвестно почему, Вы должны доставить \"Пещерный Мох\" в количестве несколько штук. Для этого Вам придется отправиться в \"Подземелье Потерянных\"и быть внимательным на всё протяжении пути. Будьте осмотрительны... "],"DefCount":35}],"CapturedJobs":[{"Caption":"Сердце призрака","ImageUrl":"https://img.new-combats.com/i/items/mater225.gif","ItemReward":50,"Description":["Для бесчеловечных экспериментов лекарей города, Вам следует набраться храбрости и доставить \"Сердце призрака\" в количестве несколько штук. Чтобы отыскать требуемое Вам придется сразиться с множеством монcтров в \"Подземелье Потерянных\". Мы верим в ваши силы... ","","Выпадает только из ботов [10] уровня."],"DefCount":10},{"Caption":"Линза Души","ImageUrl":"https://img.new-combats.com/i/items/mater226.gif","ItemReward":50,"Description":["Неизвестно почему, Вам необходимо собрать \"Линза Души\" в количестве несколько штук. Для достижения цели придется поучаствовать в захвате \"Подземелье Потерянных\". Прощайте… ","","Выпадает только из ботов [10] уровня."],"DefCount":10},{"Caption":"Камень Души","ImageUrl":"https://img.new-combats.com/i/items/mater219.gif","ItemReward":25,"Description":["Ради морального удовольствия, Вам следует поискать \"Камень Души\" в количестве несколько штук. Придется убить не один десяток монстров в \"Подземелье Потерянных\". И помните, это не прогулка... ","","Выпадает из всех призраков."],"DefCount":13}],"KillingJobs":[{"MobName":"skr","Unique":false,"Description":["Из прагматичных соображений, Вы должны убить несколько монстров \"Сила Кроггентайла\", отправшись изучать \"Подземелье Потерянных\"."],"DefCount":10},{"MobName":"bkr","Unique":false,"Description":["Тщеславия ради, Вам необходимо найти и замучить досмерти не менее несколько монстров \"Боль Кроггентайла\", спустившись в \"Подземелье Потерянных\". И помните, это не прогулка..."],"DefCount":10},{"MobName":"pkr","Unique":false,"Description":["Для защиты окружающией среды, Вы должны убить хотя бы несколько монстров \"Память Кроггентайла\", отправившись в \"Подземелье Потерянных\". "],"DefCount":8},{"MobName":"dkr","Unique":false,"Description":["Чтобы мир стал чище и прекраснее, Вы должны убить несколько монстров \"Душа Кроггентайла\", спустившись в \"Подземелье Потерянных\"."],"DefCount":8}]},"Floors":[{"Cells":[{"X":1,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter2"}],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain5","InstanceName":"fountain52"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":4,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1}]}]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder3"}],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":3,"Y":1}]}]},{"X":1,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":8,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":3}]},{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":4,"Y":5}]},{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":4,"Y":2},{"X":2,"Y":1},{"X":4,"Y":1}]}]},{"X":4,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":11,"Height":12,"DataBounds":"1, 1, 9, 10","Name":"floor1","Caption":"1 этаж","Description":[]},{"Cells":[{"X":1,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":1,"Y":2,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":1,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":1,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"blueteleport","InstanceName":"blueteleport4"}],"HotSpots":[]},{"X":1,"Y":1,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1},{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter7"}],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport5"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":8,"Y":6}]}]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":8,"Y":4}]}]},{"X":7,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport9"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":9,"Y":3}]}]},{"X":9,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport_small_left","InstanceName":"redteleport2"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport2"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":2,"Y":5},{"X":9,"Y":9}]}]},{"X":9,"Y":2,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"bkr","Level":9,"Align":"0","Tag":"","Count":1},{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":7,"Y":1}]}]},{"X":8,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport_small_left","InstanceName":"redteleport1"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport1"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":7,"Y":3},{"X":10,"Y":6}]}]},{"X":10,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain4_small","InstanceName":"fountain41"},{"ObjectName":"redteleport_small_right","InstanceName":"redteleport3"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":11,"Y":8}]}]},{"X":8,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":6,"Y":7}]}]},{"X":10,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":8,"Y":4}]}]},{"X":9,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":9,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport6"}],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/escapepoint_yellow1.gif","CellRefs":[{"X":5,"Y":5}]}]},{"X":9,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":9,"Y":1}]}]},{"X":11,"Y":7,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder4"}],"HotSpots":[]},{"X":11,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Transparent","Opacity":0.9,"ImageUrl":"/i/ugobj/entrancepoint_yellow1.gif","CellRefs":[{"X":10,"Y":4}]}]}],"LookDirection":3,"Width":13,"Height":11,"DataBounds":"1, 1, 11, 9","Name":"floor2","Caption":"2 этаж","Description":[]},{"Cells":[{"X":1,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"fountain6","InstanceName":"fountain63"}],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":6},{"X":2,"Y":7},{"X":2,"Y":8},{"X":3,"Y":8},{"X":3,"Y":7},{"X":3,"Y":6}]},{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":2,"Y":5}]}]},{"X":2,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"kv","Level":14,"Align":"9","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"DarkGreen","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":8,"Y":5},{"X":9,"Y":5},{"X":9,"Y":4},{"X":9,"Y":6},{"X":8,"Y":11},{"X":7,"Y":6},{"X":6,"Y":6},{"X":5,"Y":4},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":9,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":1,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"smag_collect1","InstanceName":"sunduk2"}],"HotSpots":[{"HighlightColorString":"LightCoral","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":10,"Y":7}]}]},{"X":6,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":8,"Y":5,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":4,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"escapepoint_blue1","InstanceName":"escape"},{"ObjectName":"ladder","InstanceName":"ladder5"}],"HotSpots":[]},{"X":9,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":7,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":7,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":8,"Align":"0","Tag":"","Count":12}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"#3E4F4F","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":5,"Y":1}]}]},{"X":10,"Y":8,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":10,"Y":9,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":9,"Y":9,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":9,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":10,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":11,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter8"}],"HotSpots":[]},{"X":7,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":10,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":10,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":10,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"skr","Level":9,"Align":"0","Tag":"","Count":8}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":11,"Align":"0","Tag":"","Count":2},{"Name":"pkr","Level":11,"Align":"0","Tag":"","Count":2},{"Name":"skr","Level":11,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pkr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":8,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":8,"Y":7,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":6,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":6,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":7,"Y":7,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":11,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":4},{"X":6,"Y":5}]}]},{"X":5,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":7,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":1},{"Name":"skr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"bkr","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":6,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":5}]}]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[{"HighlightColorString":"Red","Opacity":0.3,"ImageUrl":"","CellRefs":[{"X":7,"Y":4},{"X":7,"Y":5},{"X":7,"Y":6},{"X":6,"Y":6},{"X":6,"Y":4}]}]},{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":3,"Width":12,"Height":13,"DataBounds":"1, 1, 10, 11","Name":"floor3","Caption":"3 этаж","Description":[]},{"Cells":[{"X":4,"Y":3,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"frontdoor","InstanceName":"frontdoor1"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"entrancepoint_green1","InstanceName":"enter"},{"ObjectName":"enter","InstanceName":"enter12"}],"HotSpots":[]}],"LookDirection":3,"Width":10,"Height":10,"DataBounds":"4, 3, 1, 3","Name":"floor4","Caption":"4 этаж","Description":[]}],"Pages":[],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_1","Caption":"Свиток починки 1","Description":["Масса: 1 ","Цена: 1 кр.","Долговечность: 0/1","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","После выхода из подземелья пропадает."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_3","Caption":"Свиток починки 3","Description":["Масса: 1 ","Цена: 1 кр.","Долговечность: 0/1","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","После выхода из подземелья пропадает."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_5","Caption":"Свиток починки 5","Description":["Масса: 1 ","Цена: 1 кр.","Долговечность: 0/1","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","После выхода из подземелья пропадает."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_7","Caption":"Свиток починки 7","Description":["Масса: 1 ","Цена: 1 кр.","Долговечность: 0/1","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","После выхода из подземелья пропадает."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_repare_10","Caption":"Свиток починки 10","Description":["Масса: 1 ","Цена: 1 кр.","Долговечность: 0/1","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","После выхода из подземелья пропадает."]}],"Name":"spell_repare","Caption":"Свитки Починки","Description":["Выпадают из монстров.","","Используя рецепт свитка (рецеп свитка состоит из случайных ингредиентов и их количества), можно починить артефакт в Мастерских Забытых Мастеров. Количество ед., на которое будет произведен ремонт, зависит от свитка."]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spell_godprotect10","Caption":"Неуязвимость к оружию","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1","Вероятность срабатывания: 99%","Продолжительность действия магии: 120 мин.","Требуется минимальное:","• Уровень: 7","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно найти в сундуке на клетке F2 третьего этажа.","В настоящее время получить нельзя."]}],"Name":"spell","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":"Снадобье Искаженной Силы","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 15 дн.","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• Уровень: 4 ","Действует на:","• Сила: +10 ","• Интуиция или Ловкость: от +1 до +5 ","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Искаженной природы на первом этаже, клетка D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":"Снадобье Искаженной Ловкости","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 15 дн.","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• Уровень: 4 ","Действует на:","• Ловкость: +10 ","• Интуиция или Сила: от +1 до +5 ","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Искаженной природы на первом этаже, клетка D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_str","Caption":"Снадобье Искаженной Интуиции","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 15 дн.","Продолжительность действия магии: 3 ч. 0 мин. ","Требуется минимальное:","• Уровень: 4 ","Действует на:","• Ловкость: +10 ","• Интуиция или Сила: от +1 до +5 ","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Искаженной природы на первом этаже, клетка D8."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_base_100_master","Caption":"Снадобье Забытых Мастеров","Description":["Масса: 1","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 15 дн.","Продолжительность действия магии: 3 ч. 0 мин.","Требуется минимальное:","• Уровень: 4","Действует на:","• Мф. мощности магии стихий: +33","• Мф. мощности урона: +33","• Максимальное наносимое повреждение: +50","• Минимальное наносимое повреждение: +25","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Забытых Мастеров на третьем этаже.","В настоящее время получить нельзя."]},{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"pot_cureHP600_50","Caption":"Глоток Легкой Жизни","Description":["Масса: 1 ","Цена: 1 кр. ","Долговечность: 0/1","Срок годности: 30 дн. ","Описание:","Целебное зелье восстанавливающее 600 единиц здоровья.","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Можно получить в Фонтане Легкой Жизни на втором этаже, клетка K5."]}],"Name":"pot_base","Caption":"Эликсиры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":60,"Binding":0,"IsGift":false,"Name":"mater_izumrud","Caption":"Мутный Изумруд","Description":["Масса: 1","Долговечность: 0/1","Максимум: 1 ед.","Сделано в Emeralds city","Предмет не подлежит ремонту","Предмет из подземелья","","Выпадает из ботов."]}],"Name":"maters","Caption":"Доп. предметы","Description":[]}],"Name":"maters","Caption":"Предметы","Description":["

        Предметы Подземелья Потерянных

        "]}],"IsDungeon":true,"Name":"emerald","Caption":"Потерянный вход","Description":[]}); +underground.addDungeon({"RequiredScriptNames":["dungeon.data.abandon.js","dungeon.data.abandon.novice.js","dungeon.data.abandon.capital.emerald.sand.js","dungeon.data.abandon.capital.js","dungeon.data.abandon.capital.demons.js","dungeon.data.abandon.capital.demons.sand.js"],"NewLineToBR":true,"CellBackgroundColorString":"#D8D8D8","CellBorderColorString":"#75778A","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[{"MobName":"krsnt","Unique":false,"Description":["[4]-[7] уровни","","Итак, боевая задача такова: вы удерживаете противника, пока не подойдут нормальные войска. Уничтожьте 30 Кровавых Сантехников. Для этого отправляйтесь в телепорт слева от меня. По завершению задачи, отчитайтесь у Военкома. Приступайте!"],"DefCount":30},{"MobName":"pg_abadon","Unique":false,"Description":["[8]-[9] уровни","","Итак, боевая задача такова: вы удерживаете противника, пока не подойдут нормальные войска. Уничтожьте 30 Проклятий глубин. Для этого отправляйтесь в телепорт за моей спиной. По завершению задачи, отчитайтесь у Военкома. Приступайте!"],"DefCount":30},{"MobName":"dkr_abadon","Unique":false,"Description":["[10] уровни +","","Итак, боевая задача такова: вы удерживаете противника, пока не подойдут нормальные войска. Уничтожьте 15 Душ Кроггентайла. Для этого отправляйтесь в телепорт справа от меня. По завершению задачи, отчитайтесь у Военкома. Приступайте!"],"DefCount":15}]},"Floors":[{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"voenkom","Level":12,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"vumpel1","InstanceName":"vumpel11"}],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"greenteleport","InstanceName":"grteleport2"}],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"redteleport","InstanceName":"redteleport13"}],"HotSpots":[]},{"X":7,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"serjant","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"weap2","InstanceName":"weap21"}],"HotSpots":[]},{"X":8,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor3"}],"HotSpots":[]}],"LookDirection":2,"Width":11,"Height":9,"DataBounds":"2, 2, 7, 5","Name":"floor1","Caption":"Приемная","Description":[]},{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":2,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":3,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor4"}],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":7,"Y":4,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":5,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"krsnt","Level":6,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":2,"Width":10,"Height":8,"DataBounds":"2, 2, 6, 4","Name":"floor2","Caption":"Зомби","Description":[]},{"Cells":[{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowright","InstanceName":"arrow2"}],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":4,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":4}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":6}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":2,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"pg_abadon","Level":9,"Align":"0","Tag":"","Count":5}],"ObjectRefs":[],"HotSpots":[]}],"LookDirection":2,"Width":9,"Height":8,"DataBounds":"2, 2, 5, 4","Name":"floor3","Caption":"Проклятья","Description":[]},{"Cells":[{"X":4,"Y":9,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"arrowup","InstanceName":"arrow3"}],"HotSpots":[]},{"X":4,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":8,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":8,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":8,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":7,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":1}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":6,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":6,"Y":5,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":5,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":2,"Y":5,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":5,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":2},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":4,"Border":{"Left":2,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":3,"Border":{"Left":0,"Top":0,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":3,"Border":{"Left":0,"Top":0,"Right":0,"Bottom":2},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":3,"Border":{"Left":2,"Top":0,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":2}],"ObjectRefs":[],"HotSpots":[]},{"X":3,"Y":2,"Border":{"Left":2,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[{"Name":"dkr_abadon","Level":10,"Align":"0","Tag":"","Count":3}],"ObjectRefs":[],"HotSpots":[]},{"X":4,"Y":2,"Border":{"Left":0,"Top":2,"Right":0,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[],"HotSpots":[]},{"X":5,"Y":2,"Border":{"Left":0,"Top":2,"Right":2,"Bottom":0},"BackColorString":"Transparent","MobRefs":[],"ObjectRefs":[{"ObjectName":"yellowteleport","InstanceName":"yellowtelepor4"}],"HotSpots":[]}],"LookDirection":2,"Width":9,"Height":12,"DataBounds":"2, 2, 5, 8","Name":"floor4","Caption":"Души","Description":[]}],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"kvest","Caption":"Выполнение квеста","Description":["

        Сторожевая башня, выполнение квеста


        Подготовка к походу

        Никакой предварительной подготовки не нужно. Но если Вы уже выполняли квест и хотите выполнить новый, то надо оставить полученное ранее вознаграждение в общежитии.


        Поход
        ","


        Перемещаемся в Abandoned Plains, воспользовавшись телепортом. Телепорт расположился в Портале (на Большой Торговой Улице в \"\"Capital city, и на Вокзалах остальных городов). Перемещение бесплатное, но с задержкой в 1 час.

        Идем в Сторожевую Башню на Центральной Площади.

        Важно: Будьте осторожны, в городе кнопка «Напасть» работает круглосуточно.

        Собираем команду или идем в гордом одиночестве, все зависит от Ваших сил. Нажимаем кнопку «Начать».

        Важно: Команду можно собрать только из игроков своего уровня.

        Попадаем в пещеру, в Приемную.

        Необходимо поговорить с \"\"Военкомом [12] и получить у него повестку. ","

        Разговор с Военкомом: ","
        Рад тебя видеть, новобранец! Ведь ты не откажешь отечеству, когда оно нуждается в тебе! Я уже вижу непреодолимое желание в твоих глазах, получить повестку и попасть на передовую! Так возрадуйся, я здесь, чтобы осуществить твою мечту!

        Скорее! Я хочу на фронт!
        • Вы ошиблись, меня нет дома. (завершить разговор)
        _________________________________
        Вы получили Повестка

        Чудненько! (потирает руки) Вот тебе повестка на фронт, отдашь ее сержанту и получишь от него дальнейшие инструкции.

        ТАК ТОЧНО! (завершить разговор)

        Повестка получена:
        ","
        ","
        ","","","","","
        ","","","","","
        Повестка (Масса: 1)
        Цена: 0 кр.
        Долговечность: 0/1
        Срок годности: 7 дн.
        Максимум: 1 ед.
        Сделано в «военкомат самиздат»
        Предмет не подлежит ремонту


        Идем за дальнейшими инструкциями к \"\"Сержанту. Подходим к нему и начинаем разговор:
        ","
        Разговор с Сержантом: ","
        СТОЯТЬ! СМИРНО! Мне обещали подкрепление, а прислали ВАС! Итак, боевая задача такова: вы удерживаете противника, пока не подойдут нормальные войска. Уничтожьте 30 Проклятий глубин. Для этого отправляйтесь в телепорт за моей спиной. По завершению задачи, отчитайтесь у Военкома. Приступайте!

        ТАК ТОЧНО!
        • Сперва мне нужно подготовиться. (завершить разговор)
        _________________________________
        Вы отдали \"Повестка\"
        Вы получили новое задание.

        ","


        Получено задание. Стоит отметить, что для каждого уровня свои задания: ","

          ","
        • Для персонажей [4]-[7] уровня - Убить 30 Кровавых Сантехников [6]
        • ","
        • Для персонажей [8]-[9] уровня - Убить 30 Проклятий Глубин [9]
        • ","
        • Для персонажей [10]-[11] уровня - Убить 15 Душ Кроггентайла [10]

        Теперь, когда мы получили задание, можно приступать к его выполнению. Для этого прыгаем в телепорт. В комнате три телепорта, каждый ведет к определенной группе монстров (на карте обозначены разными цветами)
        ","


        Выполнив задание, возвращаемся к Военкому. Для это необходимо воспользоваться телепортом «Забытая эвакуация» (находится где-то за ботами) или просто «слиться» на любом из ботов (после смерти вы автоматически окажетесь в Приемной).

        Оказавшись в Приемной, надо снова поговорить с Военкомом.
        ","
        Разговор с Военкомом: ","
        Слава тебе воитель и всенародный почет! Твой подвиг не будет забыт в летах! Знай, что отчизна чтит и возносит великие дела своих героев! Что выберешь ты в награду, причисление к лику святых или нечто материальное?

        Хочу нечто материальное!
        • Хочу нечто материальное! А лучше два!
        Сдав квест, получаем награду в виде материального вознаграждения.

        ","

        Важные моменты:
        Задание можно получить и выполнить 1 раз, но посещать подземелье можно сколько угодно.
        Время задержки между посещениями подземелья 3 часа. Распространяется на все подземелья.
        Время задержки для получения квеста общее для всех подземелий.
        Можно получить только одну единицу одного вида вознаграждения.
        Если у Вас уже есть Героическое Кольцо, то его необходимо выкинуть или оставить в общежитии, чтобы получить задание на Героический Плащ.
        Если хотите сэкономить на ремонте, можете выкинуть износившийся предмет и получить новый.

        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":20,"H":20,"Binding":3,"IsGift":true,"Name":"ring23f","Caption":"Героическое кольцо","Description":["Масса: 1 ","Цена: 62 кр. ","Долговечность: 0/50 ","Требуется минимальное: ","• Уровень: 4 ","Действует на: ","• Уровень жизни (HP): +100 ","Максимум: 1 ед. ","Сделано в Abandoned Plain "]}],"Name":"bonuses47","Caption":"Вознаграждения для [4]-[7] уровня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":true,"Name":"cloak23f1","Caption":"Героический плащ","Description":["Масса: 1","Цена: 100 кр. ","Долговечность: 0/100","Требуется минимальное:","• Уровень: 8","Действует на:","• Уровень жизни (HP): +6","Максимум: 1 ед.","Сделано в Abandoned Plain "]}],"Name":"bonuses89","Caption":"Вознаграждения для [8]-[9] уровня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":60,"H":80,"Binding":3,"IsGift":true,"Name":"cloak23f2","Caption":"Очень героический плащ ","Description":["Масса: 1","Цена: 300 кр.","Долговечность: 0/100","Требуется минимальное:","• Уровень: 10","Действует на:","• Ловкость: +1","• Интуиция: +1","• Интеллект: +1","• Уровень жизни (HP): +6","• Сила: +1","Максимум: 1 ед. ","Сделано в Abandoned Plain "]}],"Name":"bonuses10","Caption":"Вознаграждения для [10] уровня +","Description":[]}],"Name":"bonus","Caption":"Награда","Description":["

        Награда

        ","Выполнив задание, получаем награду в виде материального вознаграждения. Для каждого уровня свое вознаграждение."]}],"IsDungeon":true,"Name":"abandon","Caption":"Сторожевая Башня","Description":[]}); +underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":false,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"rings","Caption":"Кольца","Description":["

        Кольца


        ","Кольцо Крови и Кольцо Алтаря
        ","
        Зайдя в Алтарь Крови, вы увидете там два кольца:","

        ","
        ","","","","","","","
        Кольцо Крови Кольцо Алтаря
        Цена: 1 кр. или 1 Гнилой зуб
        ","Долговечность: неразрушимо
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 6
        ","Максимум: 1 ед.
        ","Встроено заклятие \"Кровавый 1 шт. на бой

        ","Описание:
        Создает Эссенцию Крови за 15

        ","
        Цена: 1 кр. или 1 Гнилой зуб
        ","Требуется предмет: [Эссенция Крови]x30, Кольцо Крови
        ","Долговечность: 0/50
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 7
        ","Максимум: 1 ед.
        ","Встроено заклятие \"Поглотить 6 шт. в сутки

        ","Описание:
        В хаотичном бою поможет создать Кровавый Рубин за 10
        ","
        ","
        Важно: Стоимость заклинания \"Поглотить кровь\" снижена вдвое, но описание на предметах пока не менялось. ","
        ","
        Кольцо Крови - это промежуточный этап, позволяющий добыть Эссенции Крови для покупки Кольца Алтаря. Создать Эссенцию Крови можно в хаотичном бою, набрав 15 и кликнув на колечко. Собрав 30 Эссенций Крови, в Алтаре можно купить Кольцо Алтаря, которое необходимо для создания Кровавых рубинов.

        ","
        ","
        ","
        ","Воинское и Мистическое Кольца Алтаря
        ","
        Пожертвовав Алтарю 100 Кровавых рубинов, появляется возможность приобрести Эссенцию Силы и Эссенцию Разума. С помощью этих эссенций, можно улучшить Кольцо Алтаря. Сделать это можно в Катакомбах Demons city.
        ","
        Использовав Эссенцию Силы в фонтане Призрачной Силы (2 этаж, клетка U11) получаем Воинское Кольцо Алтаря.
        ","
        Использовав Эссенцию Разума в фонтане Призрачного Ума (2 этаж, клетка B11) получаем Мистическое Кольцо Алтаря.","

        ","
        ","","","","","","","","","","","
        Воинское Кольцо Алтаря Мистическое Кольцо Алтаря
        Цена: 1 кр. или 1 Гнилой зуб
        ","Долговечность: 0/50
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 7
        Действует на:
        ","• Мф. мощности урона: +10
        ","• Уровень жизни (HP): +36
        ","Максимум: 1 ед.
        ","Встроено заклятие \"Поглотить 6 шт. в сутки
        ","
        Цена: 1 кр. или 1 Гнилой зуб
        ","Долговечность: 0/50
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 7
        Действует на:
        ","• Мф. мощности магии стихий: +10
        ","• Уровень маны: +36
        Максимум: 1 ед.
        ","Встроено заклятие \"Поглотить 6 шт. в сутки
        ","
        рецепт: Вы получили 'Воинское Кольцо Алтаря'
        за 'Кольцо Алтаря, Эссенция Силы'
        рецепт: Вы получили 'Мистическое Кольцо Алтаря'
        за 'Кольцо Алтаря, Эссенция Разума'
        ","
        После улучшения получаем абсолютно новое колечко, с помощью которого можно выбить еще 6 рубинов.","
        ","
        ","Важно: Для того чтобы у вас получилось улучшить Кольцо Алтаря, вы должны быть среди первых двух счастливчиков, которые кликнут на фонтан и у вас не должно быть при себе пустых бутылок, иначе вы просто получите эликсир.","
        ","
        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","
        НазваниеОписание
        Кольцо КровиПозволяет создавать Эссенции крови в хаотичном бою.
        Кольцо АлтаряПозволяет создавать Кровавые рубины в хаотичном бою.
        Эссенция КровиИнгредиент
        Кровавый рубинИнгредиент
        Эссенция СилыНеобходима для улучшения Кольца Алтаря до Воинского Кольца Алтаря
        Эссенция РазумаНеобходима для улучшения Кольца Алтаря до Мистического Кольца Алтаря
        ","
        ","
        ","
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"rubins","Caption":"Сбор рубинов","Description":["

        Сбор рубинов


        ","
        Первый этап - подготовительный","
        ","
        Покупаем Кольцо Крови в Алтаре. Одеваем его и идем воевать в хаоты. Насобирав в бою 15, нажимаем на кольцо. В логе боя отобразится сообщение об использовании заклинания \"Кровавый сбор\". Эссенция Крови создается независимо от исхода боя. Можно создать только 1 эссенцию за бой. Нособирав 30 Эссенций Крови, переходим ко второму этапу.","
        ","
        ","
        ","
        Второй этап - основной","
        ","
        Покупаем Кольцо Алтаря в Алтаре, за [Эссенция Крови]x30, Кольцо Крови. Одеваем его и идем воевать в хаоты. Насобирав в бою 5, выбираем жертву и нажимаем на кольцо. В логе боя отобразится сообщение об использовании заклинания \"Поглотить кровь\". Для жертвы это заклинание абсолютно безвредно.","
        ","
        Кровавый Рубин создается только в случае победы. В случае поражения или ничьи, все использованые заклинания в бою, пропадут безвозвратно. Доступно всего лишь 6 использований заклинания в сутки. Ограничений на количество использований заклинаний в бою нет. «Перезарядка» кольца происходит в полночь.","

        ! Если Кольцо Алтаря требует ремонта, то оно не позволяет создавать кровавые рубины, и владелец видит надпись:\"Cлишком изношено чтобы использовать...\"","
        ","
        ! Использовать заклинания \"Кровавый сбор\" и \"Поглотить кровь\" можно только на противника своего уровня.","
        ","
        ! Нельзя использовать заклинание на животных.","
        ","
        ! Рубины не могут быть созданы теми, кто легко вооружен. /Бой в экипировке стоимостью ниже базовой для своего уровня считается \"Легко вооруженным\"/.","
        ","
        ! Если на человека несколько раз использовали \"Поглотить кровь\", то рубин создаст лишь последний, использовавший заклинание.","
        ","

        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","
        НазваниеОписание
        Кольцо КровиПозволяет создавать Эссенции крови в хаотичном бою.
        Кольцо АлтаряПозволяет создавать Кровавые рубины в хаотичном бою.
        Эссенция КровиИнгредиент
        Кровавый рубинИнгредиент
        ","
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"donation","Caption":"Пожертвование","Description":["

        Приношение Кровавых рубинов в жертву Алтарю


        ","
        Для того чтобы пожертвовать Кровавые рубины необходимо в здании Алтаря Крови, из инвентаря нажать \"использовать\" на рубине. Рубины жертвуются Алтарю поштучно. Система пожертвований накопительная.","
        ","
        Пожертвовав Алтарю определённое количество рубинов, становится возможным обменивать рубины на различные свитки, эликсиры и Растворители ресурсов.","
        Важно: Свитки, эликсиры и прочий ассортимент Алтаря, требуют дополнительные рубины. ","
        ","
        После пожертвования 100 Рубинов вы получаете значок Рыцаря Алтаря Крови.","
        ","
        В настоящее время нельзя пожертвовать более 100 рубинов.","
        ","
        ","
        ","
        ","","","","","","","","","","","","","","
        НазваниеОписание
        Кровавый рубинИнгредиент
        Рыцарь Алтаря КровиЗначок Посвящённого первого круга Алтаря Крови.
        ","
        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"smelt_maters","Caption":"Растворители и Сущности","Description":["

        Растворители ресурсов и Сущности


        ","
        Растворители ресурсов позволяют превратить пещерные ингредиенты в Сущность ресурсов.","
        ","
        Чтобы растворить ресурс необходимо спуститься в Бездну \"AngelsAngelscity, дойти до лаборатории, убить Дайтона, встать на его клетку (первый этаж, клетка B4) и из инвентаря использовать растворитель на ресурс. После этих нехитрых действий вы получите Cущность ресурса, а ресурс который вы растворили исчезнет. ","
        ","
        Растворитель ресурса имеет долговечность: 0/3, а значит может использоваться 3 раза.","
        ","
        Каждый Растворитель ресурса действует только на определённый вид материала. Количество получаемых после расстворения Сущностей, зависит от ценности материала.","
        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","
        РастворительВид материалаКол-во Сущностей
        \"Растворитель
        Растворитель Ресурсов [1]
        \"Шкура","\"Золото\"","\"Серебро\"","\"Лучистое","\"Мифрил\"","\"Железное","
        \"Слиток","\"Троекорень\"","\"Корень","\"Кора","\"Кожа","\"Сталь\"
        \"Сущность
        1 шт.
        \"Растворитель
        Растворитель Ресурсов [2]
        \"Кристалл","\"Кристалл","\"Сгусток","\"Сгусток","\"Глубинный","\"Тысячелетний","\"Плод\"Сущность
        3 шт.
        \"Растворитель
        Растворитель Ресурсов [3]
        \"Кристалл","\"Кристалл","\"Камень","\"Лучистый","\"Лучистый","\"Шепот\"Сущность
        10 шт.
        \"Растворитель
        Растворитель Ресурсов [4]
        \"Эссенция","\"Эссенция","\"Эссенция","\"Ралиэль\"","\"Стихиалия\"","\"Эссенция\"Сущность
        30 шт.
        ","
        ","
        Рыцарский магазин \"Angels Angelscity меняет Сущности на нужные вам материалы за небольшую доплату. Обмен, также, зависит от ценности материала.","
        Важно: В Angelscity рыцарский магазин доступен без репутации в 10 000 для покупки ингредиентов.","
        ","

        ","","","","","","","","","","","","","","","","","","","","","","","
        Таблица обмена Сущностей на Ингредиенты
        Кол-во СущностейВид материала
        \"Сущность
        3 шт.
        + 0,15кр.
        \"Шкура","\"Золото\"","\"Серебро\"","\"Лучистое","\"Мифрил\"","\"Железное","
        \"Слиток","\"Троекорень\"","\"Корень","\"Кора","\"Кожа","\"Сталь\"
        \"Сущность
        10 шт.
        + 0,5кр.
        \"Кристалл","\"Кристалл","\"Сгусток","\"Сгусток","\"Глубинный","\"Тысячелетний","\"Плод
        \"Сущность
        30 шт.
        + 1,5кр.
        \"Кристалл","\"Кристалл","\"Камень","\"Лучистый","\"Лучистый","\"Шепот
        \"Сущность
        100 шт.
        + 5кр.
        \"Эссенция","\"Эссенция","\"Эссенция","\"Ралиэль\"","\"Стихиалия\"","\"Эссенция
        ","
        Сущности Ресурса не связываются \"Связан Общей судьбой, поэтому их можно продать, купить или подарить.","
        ","
        ","
        ","
        "]}],"Shops":[{"NewLineToBR":true,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":20,"H":20,"Binding":0,"IsGift":true,"Name":"ring127","Caption":"Кольцо Крови","Description":["Масса: 1
        Цена: 1 кр. или 1 Гнилой зуб
        ","Долговечность: неразрушимо
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 6
        ","Встроено заклятие \"Кровавый 1 шт. на бой

        ","Создает Эссенцию Крови за 15
        Сделано в Devils city","
        "]},{"NewLineToBR":false,"W":20,"H":20,"Binding":0,"IsGift":true,"Name":"ring126","Caption":"Кольцо Алтаря","Description":["Масса: 1
        Цена: 1 кр. или 1 Гнилой зуб
        ","Требуется предмет: [Эссенция Крови]x30, Кольцо Крови
        ","Долговечность: 0/50
        ","• Мгновенное заклинание
        ","Требуется минимальное:
        ","• Уровень: 7
        ","Встроено заклятие \"Поглотить 6 шт. в сутки

        ","В хаотичном бою поможет создать Кровавый Рубин за 10
        Сделано в Devils city"]}],"Name":"rings","Caption":"Кольца","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP30","Caption":"Восстановление энергии 30HP","Description":["Масса: 1
        Цена: 0.01 кр.
        Требуется предмет: [Кровавый Рубин]
        Долговечность: 0/1
        • Мгновенное заклинание
        Требуется минимальное:
        • Интеллект: 1
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы первого рубина."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureMana50","Caption":"Восстановление маны 50ед","Description":["Масса: 1
        Цена: 0.01 кр.
        Требуется предмет: [Кровавый Рубин]
        Долговечность: 0/1
        • Мгновенное заклинание
        Требуется минимальное:
        • Интеллект: 1
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы первого рубина."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"elementalcrit","Caption":"Ярость Холодных Звезд","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 3
        • Уровень: 7
        • Мана: 50
        Описание:
        Следующее наносящее урон или лечащее заклинание
        будет с критическим эффектом, но вы потеряете 5 силы духа.
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_powerup10","Caption":"Сокрушение","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2.
        Долговечность: 0/1
        Продолжительность действия магии: 60 мин.
        Требуется минимальное:
        • Интеллект: 2
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP60","Caption":"Восстановление энергии 60HP","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2
        Долговечность: 0/1
        • Мгновенное заклинание
        Требуется минимальное:
        • Интеллект: 2
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_unprotect","Caption":"Уязвимость Стихиям","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2
        Долговечность: 0/4
        • Мгновенное заклинание
        Продолжительность действия магии: 60 мин.
        Требуется минимальное:
        • Интеллект: 2
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_unprotect10","Caption":"Уязвимость Оружию","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2
        Долговечность: 0/4
        • Мгновенное заклинание
        Продолжительность действия магии: 60 мин.
        Требуется минимальное:
        • Интеллект: 2
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureMana100","Caption":"Восстановление маны 100ед","Description":["Масса: 1
        Цена: 0.02 кр.
        Требуется предмет: [Кровавый Рубин]x2
        Долговечность: 0/1
        • Мгновенное заклинание
        Требуется минимальное:
        • Интеллект: 2
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"spell_powerHPup3","Caption":"Жажда Жизни +3","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Продолжительность действия магии: 120 мин.
        Требуется минимальное:
        • Интеллект: 3
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"cureHP120","Caption":"Восстановление энергии 120HP","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        • Мгновенное заклинание
        Требуется минимальное:
        • Интеллект: 3
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]}],"Name":"svitki","Caption":"Свитки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinew1","Caption":"Кровавая Мощь","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x25
        Долговечность: 0/1
        Действует на:
        • Мф. мощности урона: +1
        • Уровень жизни (HP): +6
        Описание:
        Зачаровать кольцо.
        Связывается Общей судьбой
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinem1","Caption":"Кровавая Мощь","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x25
        Долговечность: 0/1
        Действует на:
        • Мф. мощности магии стихий: +1
        • Уровень жизни (HP): +6
        Описание:
        Зачаровать кольцо.
        Связывается Общей судьбой
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinew2","Caption":"Кровавая Мощь [2]","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x50
        Долговечность: 0/1
        Действует на:
        • Мф. мощности урона: +2
        • Уровень жизни (HP): +12
        Описание:
        Зачаровать кольцо.
        Связывается Общей судьбой
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"enhp_6_bloodlinem2","Caption":"Кровавая Мощь [2]","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x50
        Долговечность: 0/1
        Действует на:
        • Мф. мощности магии стихий: +2
        • Уровень жизни (HP): +12
        Описание:
        Зачаровать кольцо.
        Связывается Общей судьбой
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов."]}],"Name":"charki","Caption":"Чарки","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_KRT1","Caption":"Тактика Крови: 1","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"sp_tacpts_BLK1","Caption":"Тактика Защиты: 1","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_CNTR1","Caption":"Тактика Ответа: 1","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_PRY1","Caption":"Тактика Отражения: 1","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_HIT1","Caption":"Тактика Боя: 1","Description":["Масса: 1
        Цена: 0.03 кр.
        Требуется предмет: [Кровавый Рубин]x4
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_KRT2","Caption":"Тактика Крови: 2","Description":["Масса: 1
        Цена: 0.04 кр.
        Требуется предмет: [Кровавый Рубин]x6
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_BLK2","Caption":"Тактика Защиты: 2","Description":["Масса: 1
        Цена: 0.04 кр.
        Требуется предмет: [Кровавый Рубин]x6
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_CNTR2","Caption":"Тактика Ответа: 2","Description":["Масса: 1
        Цена: 0.04 кр.
        Требуется предмет: [Кровавый Рубин]x6
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_PRY2","Caption":"Тактика Отражения: 2","Description":["Масса: 1
        Цена: 0.04 кр.
        Требуется предмет: [Кровавый Рубин]x6
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":true,"Name":"sp_tacpts_HIT2","Caption":"Тактика Боя: 2","Description":["Масса: 1
        Цена: 0.04 кр.
        Требуется предмет: [Кровавый Рубин]x6
        Долговечность: 0/1
        Задержка использования: 3 мин.
        • Мгновенное заклинание
        Требуется минимальное:
        • Уровень: 7
        Предмет не подлежит ремонту
        Cвиток доступен после жертвы 100 рубинов.
        "]}],"Name":"taktiki","Caption":"Тактики","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_intel2","Caption":"Нектар Разума","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x3
        Долговечность: 0/1
        Срок годности: 15 дн.
        Продолжительность действия магии: 6 ч. 0 мин.
        Требуется минимальное:
        • Уровень: 7
        Действует на:
        • Интеллект: +15
        Предмет не подлежит ремонту
        Доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_str2","Caption":"Нектар Могущества","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x3
        Долговечность: 0/1
        Срок годности: 15 дн.
        Продолжительность действия магии: 6 ч. 0 мин.
        Требуется минимальное:
        • Уровень: 7
        Действует на:
        • Сила: +15
        Предмет не подлежит ремонту
        Доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_inst2","Caption":"Нектар Прозрения","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x3
        Долговечность: 0/1
        Срок годности: 15 дн.
        Продолжительность действия магии: 6 ч. 0 мин.
        Требуется минимальное:
        • Уровень: 7
        Действует на:
        • Интуиция: +15
        Предмет не подлежит ремонту
        Доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"pot_base_50_dex2","Caption":"Нектар Стремительности","Description":["Масса: 1
        Цена: 1 кр.
        Требуется предмет: [Кровавый Рубин]x3
        Долговечность: 0/1
        Срок годности: 15 дн.
        Продолжительность действия магии: 6 ч. 0 мин.
        Требуется минимальное:
        • Уровень: 7
        Действует на:
        • Ловкость: +15
        Предмет не подлежит ремонту
        Доступен после жертвы 20 рубинов.
        "]}],"Name":"pot","Caption":"Эликсиры","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"mater_shop1","Caption":"Эссенция Силы","Description":["Масса: 1
        Цена: 5 кр.
        Требуется предмет: [Кровавый Рубин]x40
        Долговечность: 0/1
        Описание:
        С помощью этого предмета вы можете усилить Кольцо Алтаря в Фонтане Призрачной Силы
        Предмет не подлежит ремонту
        Предмет доступен после жертвы 100 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"mater_shop2","Caption":"Эссенция Разума","Description":["Масса: 1
        Цена: 5 кр.
        Требуется предмет: [Кровавый Рубин]x40
        Долговечность: 0/1
        Описание:
        С помощью этого предмета вы можете усилить Кольцо Алтаря в Фонтане Призрачного Ума
        Предмет не подлежит ремонту
        Предмет доступен после жертвы 100 рубинов.
        "]}],"Name":"eski","Caption":"Эссенции","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater1","Caption":"Растворитель Ресурсов [1]","Description":["Масса: 1
        Цена: 0.5 кр.
        Требуется предмет: [Кровавый Рубин]
        Долговечность: 0/3
        Описание:
        Использовать около лаборатории в Бездне
        Предмет не подлежит ремонту
        Доступен после жертвы первого рубина."]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater3","Caption":"Растворитель Ресурсов [2]","Description":["Масса: 1
        Цена: 1.5 кр.
        Требуется предмет: [Кровавый Рубин]х3
        Долговечность: 0/3
        Описание:
        Использовать около лаборатории в Бездне
        Предмет не подлежит ремонту
        Доступен после жертвы 20 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater10","Caption":"Растворитель Ресурсов [3]","Description":["Масса: 1
        Цена: 5 кр.
        Требуется предмет: [Кровавый Рубин]х10
        Долговечность: 0/3
        Описание:
        Использовать около лаборатории в Бездне
        Предмет не подлежит ремонту
        Доступен после жертвы 50 рубинов.
        "]},{"NewLineToBR":false,"W":60,"H":60,"Binding":0,"IsGift":true,"Name":"smelt_mater30","Caption":"Растворитель Ресурсов [4]","Description":["Масса: 1
        Цена: 10 кр.
        Требуется предмет: [Кровавый Рубин]х30
        Долговечность: 0/3
        Описание:
        Использовать около лаборатории в Бездне
        Предмет не подлежит ремонту
        Доступен после жертвы 100 рубинов.
        Временно не продается
        "]}],"Name":"smelt","Caption":"Растворитель","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet102","Caption":"Талисман Крови ","Description":["Цена: 1 кр.
        ","Требуется предмет: [Кровавый Рубин]x75
        ","Долговечность: 0/50
        ","Требуется минимальное:
        ","• Интеллект: 30
        ","• Уровень: 9
        ","• Мудрость: 30
        ","Действует на:
        ","• Мф. против критического удара (%): +50
        ","• Мф. мощности магии стихий: +20
        ","• Уровень жизни (HP): +100
        ","• Уровень маны: +100
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":20,"Binding":1,"IsGift":false,"Name":"amulet101","Caption":"Амулет Крови","Description":["Цена: 1 кр.
        ","Требуется предмет: [Кровавый Рубин]x75
        ","Долговечность: 0/50
        ","Требуется минимальное:
        ","• Уровень: 9
        ","• Выносливость: 30
        ","• Сила: 30
        ","Действует на:
        ","• Мф. против критического удара (%): +50
        ","• Мф. против увертывания (%): +50
        ","• Мф. мощности урона: +20
        ","• Уровень жизни (HP): +150
        ","Предмет доступен после жертвы 100 рубинов."]}],"Name":"amulet","Caption":"Ожерелья","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg11","Caption":"Пoнoжи Зaбытыx Вpемен [10]","Description":["Масса: 10
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Зaбытыx Вpемен, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Лoвкoсть: 15
        ","• Интуиция: 15
        ","• Уpoвень: 9
        ","• Вынoсливoсть: 65
        ","• Силa: 45
        ","Действует на:
        ","• Зaщитa oт мaгии: +25
        ","• Уpoвень жизни (HP): +57
        ","• Бpoня пoясa: 16-55 (15+d40)
        ","• Бpoня нoг: 16-55 (15+d40)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 55
        ","• Чaсть кoмплектa: Кoмплект Зaбытыx Вpемен [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg12","Caption":"Пoнoжи Кpoвaвoй Луны [10] ","Description":["Масса: 10
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Кpoвaвoй Луны, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Лoвкoсть: 15
        ","• Интуиция: 60
        ","• Уpoвень: 10
        ","• Вынoсливoсть: 35
        ","• Силa: 35
        ","Действует на:
        ","• Мф. пpoтив кpитическoгo удapa (%): +25
        ","• Мф. пpoтив увеpтывaния (%): +25
        ","• Мф. кpитическoгo удapa (%): +45
        ","• Зaщитa oт мaгии: +15
        ","• Уpoвень жизни (HP): +35
        ","• Бpoня пoясa: 11-40 (10+d30)
        ","• Бpoня нoг: 11-40 (10+d30)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 40
        ","• Чaсть кoмплектa: Кoмплект Кpoвaвoй Луны [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg13","Caption":"Пoнoжи Пaукa [10] ","Description":["Масса: 10
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Пaукa, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Лoвкoсть: 60
        ","• Интуиция: 15
        ","• Уpoвень: 10
        ","• Вынoсливoсть: 35
        ","• Силa: 35
        ","Действует на:
        ","• Мф. пpoтив кpитическoгo удapa (%): +45
        ","• Мф. увеpтывaния (%): +50
        ","• Зaщитa oт мaгии: +30
        ","• Уpoвень жизни (HP): +27
        ","• Бpoня пoясa: 11-40 (10+d30)
        ","• Бpoня нoг: 11-40 (10+d30)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 35
        ","• Чaсть кoмплектa: Кoмплект Пaукa [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg14","Caption":"Пoнoжи Утpеннегo Сoлнцa [10]","Description":["Масса: 13
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Утpеннегo Сoлнцa, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/60
        ","Тpебуется минимaльнoе:
        ","• Лoвкoсть: 30
        ","• Интуиция: 30
        ","• Уpoвень: 10
        ","• Вынoсливoсть: 45
        ","• Силa: 45
        ","Действует на:
        ","• Мф. пpoтив кpитическoгo удapa (%): +40
        ","• Мф. пpoтив увеpтывaния (%): +20
        ","• Мф. пapиpoвaния (%): +2
        ","• Зaщитa oт мaгии oгня: +15
        ","• Зaщитa oт уpoнa: +15
        ","• Зaщитa oт мaгии вoды: -10
        ","• Уpoвень жизни (HP): +45
        ","• Бpoня пoясa: 11-40 (10+d30)
        ","• Бpoня нoг: 11-40 (10+d30)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 40
        ","• Чaсть кoмплектa: Кoмплект Утpеннегo Сoлнцa [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg15","Caption":"Штaны Peшимocти [10]","Description":["Масса: 5
        Цена: 30 кр.
        Требуется предмет: Штaны Peшимocти, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Интeллeкт: 50
        ","• Уpoвeнь: 10
        ","• Мудpocть: 60
        ","Действует на:
        ","• Пoдaвлeниe зaщиты oт мaгии: +2
        ","• Мф. мoщнocти мaгии cтиxий: +5
        ","• Уpoвeнь жизни (HP): +25
        ","• Уpoвeнь мaны: +100
        ","• Бpoня пoяca: 6-20 (5+d15)
        ","• Бpoня нoг: 6-20 (5+d15)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 15
        ","• Чacть кoмплeктa: Кoмплeкт Peшимocти [10] [0/7]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg16","Caption":"Пoнoжи Cкopпиoнa [10]","Description":["Масса: 10
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Cкopпиoнa, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Лoвкocть: 15
        ","• Интуиция: 60
        ","• Уpoвeнь: 10
        ","• Вынocливocть: 50
        ","• Cилa: 35
        ","Действует на:
        ","• Мф. пpoтив кpитичecкoгo удapa (%): +30
        ","• Мф. пpoтив увepтывaния (%): +35
        ","• Мф. кpитичecкoгo удapa (%): +35
        ","• Уpoвeнь жизни (HP): +43
        ","• Cилa: +2
        ","• Бpoня пoяca: 11-40 (10+d30)
        ","• Бpoня нoг: 11-40 (10+d30)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 35
        ","• Чacть кoмплeктa: Кoмплeкт Cкopпиoнa [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]},{"NewLineToBR":false,"W":60,"H":80,"Binding":1,"IsGift":false,"Name":"leg17","Caption":"Пoнoжи Злoдeяний [10]","Description":["Масса: 10
        Цена: 30 кр.
        Требуется предмет: Пoнoжи Злoдeяний, [Сущнoсть Pесуpсa]x6","
        Долговечность: 0/50
        ","Тpебуется минимaльнoе:
        ","• Лoвкocть: 60
        ","• Интуиция: 45
        ","• Уpoвeнь: 10
        ","• Вынocливocть: 35
        ","• Cилa: 25
        ","Действует на:
        ","• Мф. пpoтив кpитичecкoгo удapa (%): +25
        ","• Мф. кpитичecкoгo удapa (%): +30
        ","• Мф. увepтывaния (%): +30
        ","• Лoвкocть: +2
        ","• Интуиция: +2
        ","• Зaщитa oт мaгии: +25
        ","• Бpoня пoяca: 11-40 (10+d30)
        ","• Бpoня нoг: 11-40 (10+d30)
        ","Свoйствa пpедметa:
        ","• Зaщитa oт уpoнa: 30
        ","• Чacть кoмплeктa: Кoмплeкт Злодияний [10] [0/12]
        ","Предмет доступен после жертвы 100 рубинов."]}],"Name":"leg","Caption":"Поножи","Description":[]}],"Name":"altarshop","Caption":"Ассортимент","Description":["

        Ассортимент магазина Алтаря Крови

        ","","Пожертвовав Алтарю определённое количество рубинов, становится возможным обменивать рубины на различные свитки, эликсиры и Растворители ресурсов. ","","Внимание! Приобрести Поножи [10] могут лишь посвященные первого круга (рыцари Алтаря Крови)."]}],"IsDungeon":false,"Name":"altar","Caption":"Алтарь Крови","Description":[]}); +underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[],"Shops":[{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook1","Caption":"Бронзовая Книга ","Description":["Цена: 15 кр.
        ","Требуется предмет: Бронзовая Квитанция
        ","Задержка использования - 5 ходов.
        ","Срок годности - 360 дней
        ","• Страниц: 50
        ","• Интеллект: +1
        ","• Уровень жизни (HP): +10
        ","Каждая страница этой книги позволяет мгновенно получить +1 ко всем приёмам в бою ( )","
        Только одна книга может использоваться одновременно.","
        Предмет не подлежит ремонту
        ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook2","Caption":"Серебряная Книга","Description":["Цена: 30 кр.
        ","Требуется предмет: Серебряная Квитанция
        ","Срок годности - 360 дней
        ","• Страниц: 75
        ","• Интеллект: +2
        ","• Уровень жизни (HP): +20
        ","Страница этой книги способна исцелить владельца от физических травм.","
        Только одна книга может использоваться одновременно.","
        Предмет не подлежит ремонту","
        ","
        Чем сложнее травма, тем больше используется страниц. От 1 до 3 соответственно.","
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"abook3","Caption":"Золотая Книга ","Description":["Цена: 100 кр.
        ","Требуется предмет: Золотая Квитанция
        ","Задержка использования - 3 часа.
        ","Срок годности - 360 дней
        ","• Страниц: 100
        ","• Интеллект: +3
        ","• Уровень жизни (HP): +30
        ","• Мф. мощности крит. удара (%): +1
        ","• Мф. парирования (%): +1
        ","• Мф. блока щитом (%): +1
        ","• Подавление защиты от магии: +1
        ","• Мф. контрудара (%): +1
        ","• Мф. мощности магии стихий (%): +1
        ","• Мф. мощности урона (%): +1
        ","• Мф. удара сквозь броню (%): +1
        ","• Уменьшение расхода маны (%): +1
        ","Страница этой книги меняет уровень жизни противника с вашим.","
        Только одна книга может использоваться одновременно.","
        Предмет не подлежит ремонту","

        За каждый уровень противника тратится одна страница книги.","
        "]}],"Name":"abooks","Caption":"Книги Саныча","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot7","Caption":"Тайное Знание (том 1)","Description":["Масса: 1
        Цена: 120 кр.
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        Максимум: 1 ед.
        Описание:
        Добавляет +1 дополнительный слот для приемов.
        Каждый том может быть использован лишь один раз.
        Предмет не подлежит ремонту
        Время изучения 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot8","Caption":"Тайное Знание (том 2)","Description":["Масса: 1
        Цена: 200 кр.
        Требуется предмет: [Сущность Ресурса]x15
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 8
        Максимум: 1 ед.
        Описание:
        Добавляет +1 дополнительный слот для приемов.
        Каждый том может быть использован лишь один раз.
        Для изучения требуется знание первого тома.
        Предмет не подлежит ремонту
        Время изучения 5 часов 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot9","Caption":"Тайное Знание (том 3)","Description":["Масса: 1
        Цена: 300 кр.
        Требуется предмет: [Камень затаенного солнца]x3, [Кристалл стабильности]x3, [Лучистый рубин]x3, [Лучистый топаз]x3, [Кристалл голоса предков]x3, [Шепот гор]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 9
        Максимум: 1 ед.
        Описание:
        Добавляет +1 дополнительный слот для приемов.
        Каждый том может быть использован лишь один раз.
        Для изучения требуется знание второго тома.
        Предмет не подлежит ремонту
        Время изучения 7 часов 10 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_slot10","Caption":"Тайное Знание (том 4)","Description":["Масса: 1
        Цена: 500 кр.
        Требуется предмет: [Стихиалия]x5, [Эссенция чистоты]x5, [Эссенция глубины]x5, [Эссенция лунного света]x5, [Эссенция праведного гнева]x5, [Ралиэль]x5
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 10
        Максимум: 1 ед.
        Описание:
        Добавляет +1 дополнительный слот для приемов.
        Каждый том может быть использован лишь один раз.
        Для изучения требуется знание третьего тома.
        Предмет не подлежит ремонту
        Время изучения 8 часов 35 минут
        "]}],"Name":"booklearn_slots","Caption":"Тайные Знания","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_1","Caption":"Хлебнуть Крови (прием)","Description":["Масса: 1
        Цена: 22.5 кр.
        Требуется предмет : [Мясное Ассорти]x5
        Долговечность: 0/1
        Требуется минимальное:
        • Интуиция: 25
        • Уровень: 6
        Максимум: 1 ед.
        Описание:
        В инструкции подробно раскрывается тема здорового питания кровью поверженных врагов
        Обучает приему: Хлебнуть Крови
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_2","Caption":"Превосходство (прием)","Description":["Масса: 1
        Цена: 15 кр.
        Требуется предмет: Нож Довольных, Меч Ученика
        Долговечность: 0/1
        Требуется минимальное:
        • Интуиция: 25
        • Уровень: 7
        Описание:
        В инструкция содержит ряд рекомендаций по защитной технике после успешних парирований
        Обучает приему: Превосходство
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_3","Caption":"Отменить (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Рассеивание Магии
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Выносливость: 25
        • Сила: 25
        Описание:
        В инструкции рассказывается, как избежать тяжелых ранений.
        Обучает приему: Отменить
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_4","Caption":"Выжить (прием)","Description":["Масса: 1
        Цена: 27 кр.
        Требуется предмет: [Восстановление энергии 60HP]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Выносливость: 30
        Описание:
        В инструкции рассказывается, как выживать используя набранные тактики.
        Обучает приему: Выжить
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_5","Caption":"Осторожность (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Великое зелье Отрицания
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Ловкость: 30
        • Выносливость: 20
        Описание:
        В инструкции рассказывается, как бойцы с высокой ловкостью могут уменьшить урон от магии стихий.
        Обучает приему: Осторожность
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_6","Caption":"Магическая Защита (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Эссенция глубины
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Выносливость: 25
        Максимум: 1 ед.
        Описание:
        В инструкции рассказывается, как грамотной защитой можно уменьшить урон от магии стихий.
        Обучает приему: Магическая Защита
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_7","Caption":"Усиленные удары (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Эссенция праведного гнева
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Сила: 25
        Максимум: 1 ед.
        Описание:
        В инструкции рассказывается, об увеличении силы ударов на короткое время.
        Обучает приему: Усиленные Удары
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_8","Caption":"Жажда Крови (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: [Лучистый рубин]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Интуиция: 25
        • Уровень: 7
        Максимум: 1 ед.
        Описание:
        Книга рассказывает, как можно увидеть больше крови.
        Обучает приему: Жажда Крови
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_9","Caption":"Поступь Смерти (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Эссенция чистоты
        Долговечность: 0/1
        Требуется минимальное:
        • Ловкость: 25
        • Уровень: 7
        Максимум: 1 ед.
        Описание:
        Книга о превращении битвы в бойню.
        Обучает приему: Поступь Смерти
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_10","Caption":"Возмездие (прием)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: [Шепот гор]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        • Выносливость: 25
        Максимум: 1 ед.
        Описание:

        В инструкции рассказывается, как отомстить врагу, пробившему вашу защиту.
        Обучает приему: Возмездие
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]}],"Name":"booklearn","Caption":"Боевые приемы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell1","Caption":"Пылающий Ужас (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Ралиэль
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Огня: 7
        Максимум: 1 ед.
        Описание:
        В инструкции рассказывается, как использовать страх огня у горящей цели.
        Обучает приему: Пылающий Ужас
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell8","Caption":"Пылающая Смерть (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Огня: 7
        Максимум: 1 ед.
        Описание:
        Высвобождает энергию вашего заклятия Пожирающее Пламя на цели, если ее уровень жизни менее 33%. Цель получает 125% оставшегося урона Пожирающего Пламени
        Обучает приему: Пылающая Смерть
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell10","Caption":"Разогрев (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Огня: 7
        Максимум: 1 ед.
        Описание:
        Ваше следующее огненное заклинание получит +100 мф. мощности Магии Огня. Этот прием не подвержен действию шока.
        Обучает приему: Разогрев
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell9","Caption":"Пылающий Взрыв (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Огня: 7
        Максимум: 1 ед.
        Описание:
        Высвобождает энергию вашего заклятия Пожирающее Пламя на цели. Цель и еще 4 случайных цели получает 33% оставшегося урона Пожирающего Пламени магией Огня
        Обучает приему: Пылающий Взрыв
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell13","Caption":"Жертва огню (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 30
        • Уровень: 7
        • Мастерство владения стихией Огня: 7
        Максимум: 1 ед.
        Описание:
        Вы теряете 10%HP, но восстанавливаете 20% маны.
        Обучает приему: Жертва Огню
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell12","Caption":"Скрытое Пламя (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Огня: 8
        Максимум: 1 ед.
        Описание:
        Если уровень вашей жизни ниже 33%, то при использовании убирает текущие задержки на заклинаниях школы Огня. Один раз за бой.
        Обучает приему: Скрытое Пламя
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell14","Caption":"Язык Пламени (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Огня: 8
        Максимум: 1 ед.
        Описание:
        Наносит цели 5% урона магией Огня от ее максимального уровня жизни и еще +2% за каждый уровень Цели Огня. Максимальный урон заклинания ограничен. Заклинание не наносит критический урон.
        Обучает приему: Язык Пламени
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell11","Caption":"Огненный Щит (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Огня: 8
        Максимум: 1 ед.
        Описание:
        Вы получаете на 50% меньше урона 2 последующих размена, полученный урон восстанавливает вашу ману. Этот прием не подвержен действию шока.
        Обучает приему: Огненный Щит
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]}],"Name":"booklearn_spell_fire","Caption":"Заклинания Огня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell4","Caption":"Иней (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Эссенция глубины
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Воды: 7
        Максимум: 1 ед.
        Описание:
        В инструкции рассказывается, как тонким слоем льда защитить себя от урона .
        Обучает приему: Иней
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell16","Caption":"Хватка Льда (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Воды: 7
        Максимум: 1 ед.
        Описание:
        Через 2 хода цель теряет возможность использовать приемы или набирать очки тактики на 3 хода.
        Обучает приему: Хватка Льда
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell17","Caption":"Жертва Воде (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Воды: 7
        Максимум: 1 ед.
        Описание:
        Маг теряет 10% жизни за 5 ходов, но цена всех заклятий снижена на 30%.
        Обучает приему: Жертва Воде
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell19","Caption":"Оледенение: Разбить! (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Воды: 7
        Максимум: 1 ед.
        Описание:
        Наносит текущей цели подверженной Оледенению урон магией воды. Наносит дополнительный урон, если уровень жизни цели меньше определенного
        Обучает приему: Оледенениие: Разбить!
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell21","Caption":"Острая Грань (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Сущность Ресурса
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Воды: 7
        Максимум: 1 ед.
        Описание:
        Наносит цели колющий урон
        Обучает приему: Острая Грань
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell18","Caption":"Духи Льда (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Воды: 8
        Максимум: 1 ед.
        Описание:
        На три хода увеличивает мф. мощности Магии Воды на 15. Часть вашего прямого урона магией воды, восстанавливает ману
        Обучает приему: Духи Льда
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell20","Caption":"Ледяное Спасение (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Воды: 8
        Максимум: 1 ед.
        Описание:
        Мгновенно останавливает кровотечения, исцеляя мага, но наносит магу урон последующие 5 ходов
        Обучает приему: Ледяное Спасение
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell22","Caption":"Ледяное Сердце (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Воды: 8
        Максимум: 1 ед.
        Описание:
        При использовании убирает текущие задержки на заклинаниях школы Воды.
        Обучает приему: Ледяное Сердце
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell23","Caption":"Чистота Воды (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Воды: 8
        Максимум: 1 ед.
        Описание:
        Снимает один негативный эффект магии или отравления.
        Обучает приему: Чистота Воды
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell15","Caption":"Кристаллизация (заклинание)","Description":["Масса: 1
        Цена: 25 кр.
        Требуется предмет: [Сущность Ресурса]x2
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 35
        • Уровень: 8
        • Мастерство владения стихией Воды: 8
        Максимум: 1 ед.
        Описание:
        Мгновенно наносит цели урон равный уровню силы цели, но не более определенного. Снижает Силу и Ловкость цели.
        Обучает приему: Кристаллизация
        Предмет не подлежит ремонту
        Время изучения: 5 часов 54 минут
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell24","Caption":"Переохлаждение (заклинание)","Description":["Масса: 1
        Цена: 45 кр.
        Требуется предмет: [Сущность Ресурса]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 75
        • Уровень: 9
        • Мастерство владения стихией Воды: 9
        Максимум: 1 ед.
        Описание:
        Уменьшает эффекты лечения на цели на 10%. Можно применить на одну цель до 5 раз.
        Обучает приему: Переохлаждение
        Предмет не подлежит ремонту
        Время изучения: 7 часов 59 минут
        "]}],"Name":"booklearn_spell_water","Caption":"Заклинания Воды","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell25","Caption":"Искра (заклинание)","Description":["Масса: 1","Цена: 50 кр.","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 60","• Уровень: 8","• Мастерство владения стихией Воздуха: 8","Максимум: 1 ед.","Описание:","Мгновенно наносит враждебной цели 1-95 урона воздухом или исцеляет дружественную","Обучает приему: Искра","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell26","Caption":"Статика (набор заклинаний)","Description":["Масса: 1","Цена: 100 кр.","Требуется предмет: [Сущность Ресурса]x4","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 40","• Уровень: 7","• Мастерство владения стихией Воздуха: 7","Максимум: 1 ед.","Описание:","Обучает набору заклинаний, позволающих накапливать заряд на цели и использовать его в своих целях","Обучает приемам: Статика, Заряд: Собрать, Заряд: Поражение, Заряд: Шок","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell27","Caption":"Воздушный Щит (заклинание)","Description":["Масса: 1","Цена: 10 кр.","Требуется предмет: [Сущность Ресурса]x5","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 80","• Уровень: 9","• Мастерство владения стихией Воздуха: 9","Максимум: 1 ед.","Описание:","Создает воздушный кокон вокруг мага, способный поглотить 1-0 ед. урона.","Этот прием не подвержен действию шока.","Общая задержка с заклинанием Силовое Поле.","Обучает приему: Воздушный Щит","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell28","Caption":"Жертва Воздуху (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Требуется предмет: Сущность Ресурса","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения стихией Воздуха: 7","Максимум: 1 ед.","Описание:","Маг получает 25 мф. мощности магии Воздуха на 4 хода.","Обучает приему: Жертва Воздуху","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell29","Caption":"Скорость Молнии (заклинание)","Description":["Масса: 1","Цена: 30 кр.","Требуется предмет: [Сущность Ресурса]x2","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 60","• Уровень: 8","• Мастерство владения стихией Воздуха: 8","Максимум: 1 ед.","Описание:","Любой следующий прием не тратит хода.","Обучает приему: Скорость Молнии","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell30","Caption":"Энергия Воздуха (заклинание)","Description":["Масса: 1","Цена: 20 кр.","Требуется предмет: Сущность Ресурса","Долговечность: 0/1","Требуется минимальное:","• Интеллект: 25","• Уровень: 7","• Мастерство владения стихией Воздуха: 11","Максимум: 1 ед.","Описание:","Восстанавливает цели 1 - 10% маны за каждый ход работы заклинания. Заклинание прекращает действие при использовании любого другого заклинания или через 5 ходов.","Обучает приему: Энергия Воздуха","Предмет не подлежит ремонту","Время изучения: 4 часа 55 минут "]}],"Name":"booklearn_spell_air","Caption":"Заклинания Воздуха","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell7","Caption":"Каменный Удар (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: [Кристалл стабильности]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения стихией Земли: 7
        Максимум: 1 ед.
        Описание:
        В инструкции рассказывается, как наносить крушащие удары при помощи магии Земли.
        Обучает приему: Каменный Удар
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]}],"Name":"booklearn_spell_earth","Caption":"Заклинания Земли","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell3","Caption":"Глаз за Глаз (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Стихиалия
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения магией Тьмы: 4
        Максимум: 1 ед.
        Описание:
        Название гласит: Практические основы жестокой мести.
        Обучает приему: Глаз за Глаз
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]}],"Name":"booklearn_spell_black","Caption":"Заклинания магии Тьмы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell2","Caption":"Защита Света (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: Эссенция чистоты
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения магией Света: 4
        Максимум: 1 ед.
        Описание:
        Как защитить себя от ошеломления? 10% поглощения урона - много или мало?
        Ответы на подобные вопросы вы найдете только в этой книге!
        Обучает приему: Защита Света
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]}],"Name":"booklearn_spell_white","Caption":"Заклинания магии Света","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":1,"IsGift":false,"Name":"booklearn_spell5","Caption":"Серое Мастерство (заклинание)","Description":["Масса: 1
        Цена: 20 кр.
        Требуется предмет: [Камень затаенного солнца]x3
        Долговечность: 0/1
        Требуется минимальное:
        • Интеллект: 25
        • Уровень: 7
        • Мастерство владения серой магией: 4
        Максимум: 1 ед.
        Описание:
        «...только одна магия истинна - серая магия, включающая в себя все»
        Обучает заклинанию: Серое Мастерство
        Предмет не подлежит ремонту
        Время изучения: 4 часа 55 минут
        "]}],"Name":"booklearn_spell_gray","Caption":"Заклинания Серой магии","Description":[]}],"Name":"shop","Caption":"Ассортимент","Description":["

        Ассортимент книжного магазина

        ","На этой закладке Вы можете ознакомиться с продукцией, которую можно приобрести в книжном магазине. А так же узнать что именно Вам понадобится для покупки того или иного приема, заклинания или слота."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/misc/icons/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flameshock","Caption":"Пылающий Ужас","Description":["Расход маны: 83
        Задержка: 10

        Минимальные требования:
        • Мастерство владения стихией Огня: 7
        • Интеллект: 40
        • Уровень: 7

        Высвобождает энергию вашего заклятия Пожирающее Пламя на цели. Цель получает 75% оставшегося урона Пожирающего Пламени и не может использовать приемы или набирать очки тактики 2 хода."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_boost","Caption":"Разогрев","Description":["Расход маны: 20
        Задержка: 5
        • Прием тратит ход

        Минимальные требования:
        • Мастерство владения стихией Огня: 7
        • Интеллект: 40
        • Уровень: 7

        Ваше следующее огненное заклинание получит +100 мф. мощности Магии Огня.
        Этот прием не подвержен действию шока."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":"Язык Пламени [8]","Description":["Расход маны: 129
        Задержка: 3
        • Прием тратит ход

        Минимальные требования:
        • Мастерство владения стихией Огня: 8
        • Интеллект: 50
        • Уровень: 8

        Наносит цели 3% урона магией Огня от ее максимального уровня жизни. И еще +2% за каждый уровень Цели Огня. Заклинание не может нанести более 200 ед. урона, не наносит критический урон."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":"Язык Пламени [9]","Description":["Расход маны: 155
        Задержка: 3
        • Прием тратит ход

        Минимальные требования:
        • Мастерство владения стихией Огня: 9
        • Интеллект: 60
        • Уровень: 9

        Наносит цели 3% урона магией Огня от ее максимального уровня жизни. И еще +2% за каждый уровень Цели Огня. Заклинание не может нанести более 250 ед. урона, не наносит критический урон."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flametongue","Caption":"Язык Пламени [10]","Description":["Расход маны: 185
        Задержка: 3
        • Прием тратит ход

        Минимальные требования:
        • Мастерство владения стихией Огня: 10
        • Интеллект: 75
        • Уровень: 10

        Наносит цели 3% урона магией Огня от ее максимального уровня жизни. И еще +2% за каждый уровень Цели Огня. Заклинание не может нанести более 300 ед. урона, не наносит критический урон."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flamedeath","Caption":"Пылающая Смерть","Description":["Расход маны: 83
        Задержка: 5

        Минимальные требования:
        • Мастерство владения стихией Огня: 7
        • Интеллект: 40
        • Уровень: 7

        Высвобождает энергию вашего заклятия Пожирающее Пламя на цели, если ее уровень жизни менее 33%. Цель получает 150% оставшегося урона Пожирающего Пламени."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_sacrifice","Caption":"Жертва Огню","Description":[" 5  
        Расход маны: 4
        Задержка: 5

        Минимальные требования:
        • Мастерство владения стихией Огня: 7
        • Интеллект: 40
        • HP: 10%
        • Уровень: 7

        Вы теряете 10%HP, но восстанавливаете 20% маны."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_hiddenpower","Caption":"Скрытое Пламя","Description":["Расход маны: 41
        • Прием тратит ход

        Минимальные требования:
        • Мастерство владения стихией Огня: 8
        • Интеллект: 50
        • Уровень: 8

        Если уровень вашей жизни ниже 33%, то при использовании убирает текущие задержки на заклинаниях школы Огня. Один раз за бой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_shield","Caption":"Огненный Щит","Description":["Расход маны: 124
        Задержка: 10

        Минимальные требования:
        • Мастерство владения стихией Огня: 8
        • Интеллект: 50
        • Уровень: 8

        Вы получаете на 50% меньше урона 2 последующих размена, полученный урон восстанавливает вашу ману.
        Этот прием не подвержен действию шока."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_fire_flamedestroy","Caption":"Пылающий Взрыв","Description":["Расход маны: 83
        Задержка: 5

        Минимальные требования:
        • Мастерство владения стихией Огня: 7
        • Интеллект: 40
        • Уровень: 7

        Высвобождает энергию вашего заклятия Пожирающее Пламя на цели. Цель и еще 4 случайных цели получает 33% оставшегося урона Пожирающего Пламени магией Огня."]}],"Name":"booklearn_spell_fire","Caption":"Заклинания Огня","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_icegrap","Caption":"Хватка Льда","Description":["Расход маны: 83
        Задержка: 10

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Воды: 7
        • Уровень: 7

        Через 2 хода цель теряет возможность использовать приемы или набирать очки тактики на 3 хода."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_break","Caption":"Оледенение: Разбить!","Description":["Расход маны: 167
        Задержка: 5
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Воды: 7
        • Уровень: 7

        Наносит текущей цели подверженной Оледенению ?? урона магией воды и еще ???, если уровень жизни цели менее 65."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_cleance","Caption":"Чистота Воды","Description":["Расход маны: 83
        Задержка: 5

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        Снимает один негативный эффект магии или отравления."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_crystalize","Caption":"Кристаллизация","Description":["Расход маны: 178
        Задержка: 5

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        Мгновенно наносит цели урон равный уровню силы цели но не более чем 10*(ваш уровень).
        Снижает силу и ловкость цели на (количество владений стихией Воды) на три хода.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_hiddenpower","Caption":"Ледяное Сердце","Description":["Расход маны: 166
        Задержка: 10
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        При использовании убирает текущие задержки на заклинаниях школы Воды."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_sacrifice","Caption":"Жертва Воде","Description":[" 5  
        Расход маны: 4
        Задержка: 10

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Воды: 7
        • Уровень: 7

        Маг теряет 10% жизни за 5 ходов, но цена всех заклятий снижена на 50%."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":"Иней [7]","Description":["Расход маны: 83
        Задержка: 8

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Воды: 7
        • Уровень: 7

        Вы получаете на 25% меньше урона 4 последующих размена."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":"Иней [8]","Description":["Расход маны: 124
        Задержка: 8

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        Вы получаете на 25% меньше урона 4 последующих размена, атакующий оружием получает уязвимость к магии воды.
        Этот прием не подвержен действию шока."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_shield","Caption":"Иней [9]","Description":["Расход маны: 182
        Задержка: 8

        Минимальные требования:
        • Интеллект: 60
        • Мастерство владения стихией Воды: 9
        • Уровень: 9

        Вы получаете на 25% меньше урона 4 последующих размена, атакующий оружием получает уязвимость к магии воды и часть поглощенного урона.
        Этот прием не подвержен действию шока."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_spirit","Caption":"Духи Льда","Description":[" 4  
        Сила духа: 5
        Расход маны: 4
        Задержка: 10

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        На три хода увеличивает мф. мощности Магии Воды на 15. Часть вашего прямого урона магией воды, восстанавливают вам ману."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_strike","Caption":"Острая Грань","Description":["Расход маны: 134
        Задержка: 3
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Воды: 7
        • Уровень: 7

        Наносит цели ??? ед. колющего урона."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_tempheal","Caption":"Ледяное Спасение","Description":[" 1  
        Расход маны: 139
        Задержка: 5

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Воды: 8
        • Уровень: 8

        Мгновенно останавливает кровотечения, исцеляя мага на ???HP магией воды, но за последующие 5 ходов цель теряет половину полученного здоровья."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_water_aheal","Caption":"Переохлаждение","Description":[" 1
        Расход маны: 70

        Минимальные требования:
        • Интеллект: 60
        • Мастерство владения стихией Воды: 9
        • Уровень: 9

        Уменьшает эффекты лечения на цели на 10%
        Можно применить на одну цель до 5 раз"]}],"Name":"booklearn_spell_water","Caption":"Заклинания Воды","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_spark","Caption":"Искра","Description":["Расход маны: 83","Задержка: 10","","Минимальные требования:","• Интеллект: 50","• Мастерство владения стихией Воздуха: 8","• Уровень: 8","","Мгновенно наносит враждебной цели 1-57 урона воздухом или исцеляет дружественную."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_shield","Caption":"Воздушный Щит","Description":["Расход маны: 127","Задержка: 12","• Приём тратит ход ","","Минимальные требования:","• Интеллект: 60","• Мастерство владения стихией Воздуха: 9","• Уровень: 9","","Создаёт воздушный кокон вокруг мага, способный поглотить 1-190 ед. урона. ","Этот приём не подвержен действию шока. ","Общая задержка с заклинанием Силовое поле. "]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_sacrifice","Caption":"Жертва Воздуху","Description":[" 5","Расход маны: 7 ","Задержка: 10 ","","Минимальные требования:","• Интеллект: 25","• Мастерство владения стихией Воздуха: 7","• Уровень: 7","","Маг получает 25 мф. мощности магии Воздуха на 4 хода."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_speed","Caption":"Скорость Молнии","Description":["Сила духа: 4","Расход маны: 70","Начальная задержка: 5","Задержка: 10","","Минимальные требования:","• Интеллект: 50","• Мастерство владения стихией Воздуха: 8","• Уровень: 8","","Любой следующий прием не тратит хода."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge","Caption":"Статика","Description":["Сила духа: 1","Расход маны: 20","","Минимальные требования:","• Интеллект: 40","• Мастерство владения стихией Воздуха: 7","• Уровень: 7","","Молния, Цепь молний, Искра, Искры, и удары по Воздушному Щиту будут заряжать цель, увеличивая получаемый от магии Воздуха урон на 1%. Маг может воспользоваться накопленными зарядами."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_shock","Caption":"Заряд: Шок","Description":[" 1","Задержка: 3 ","","Минимальные требования:","• Интеллект: 40","• Мастерство владения стихией Воздуха: 7","• Уровень: 7","","Шокирует противника, лишая его возможности использовать последний примененный прием на 5 ходов и рассеивает один позитивный магический эффект."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_dmg","Caption":"Заряд: Поражение","Description":[" 1","Задержка: 3 ","","Минимальные требования:","• Интеллект: 40","• Мастерство владения стихией Воздуха: 7","• Уровень: 7","","Наносит цели 1-2% урона магией Воздуха от ее максимального уровня жизни за каждый уровень Заряда. Заклинание не может нанести более 200 ед. урона."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_charge_gain","Caption":"Заряд: Собрать","Description":[" 1","Задержка: 3 ","","Минимальные требования:","• Интеллект: 40","• Мастерство владения стихией Воздуха: 7","• Уровень: 7","","Восстанавливает 8 маны за каждый уровень Заряда на цели и снимает с мага один негативный магический эффект."]},{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_air_manaheal","Caption":"Энергия Воздуха","Description":["Сила духа: 3","Задержка: 10","• Прием тратит ход","","Минимальные требования:","• Интеллект: 10","• Мастерство владения стихией воздуха: 11","• Уровень: 7","","Восстанавливает цели 1-10% маны за каждый ход работы заклинания. Заклинание прекращает действие при использовании любого другого заклинания через 5 ходов."]}],"Name":"booklearn_spell_air","Caption":"Заклинания Воздуха","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":"Каменный Удар [7]","Description":["Расход маны: 78
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения стихией Земли: 7
        • Уровень: 7

        Наносит цели 346 ед. дробящего урона"]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":"Каменный Удар [8]","Description":["Расход маны: 93
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 50
        • Мастерство владения стихией Земли: 8
        • Уровень: 8

        Наносит цели 415 ед. дробящего урона"]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":"Каменный Удар [9]","Description":["Расход маны: 112
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 60
        • Мастерство владения стихией Земли: 9
        • Уровень: 9

        Наносит цели 498 ед. дробящего урона"]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_earth_strike","Caption":"Каменный Удар [10]","Description":["Расход маны: 134
        • Прием тратит ход

        Минимальные требования:
        • Интеллект: 75
        • Мастерство владения стихией Земли: 10
        • Уровень: 10

        Наносит цели 597 ед. дробящего урона"]}],"Name":"booklearn_spell_earth","Caption":"Заклинания Земли","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_dark_eyeforeye","Caption":"Глаз за глаз","Description":["Расход маны: 166
        Задержка: 10

        Минимальные требования:
        • Мастерство владения магией Тьмы: 4
        • Интеллект: 40
        • Уровень: 7

        Следующее заклинание или удар нанесет не более половины урона, оставшуюся половину магией тьмы получит атакующий (но не более 500 ед. урона)"]}],"Name":"booklearn_spell_black","Caption":"Заклинания магии Тьмы","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_light_shield","Caption":"Защита Света","Description":["Расход маны: 166
        Задержка: 10

        Минимальные требования:
        • Мастерство владения магией Света: 4
        • Интеллект: 40
        • Уровень: 7

        Снижает весь урон получаемый магом на 10%, ускоряет время восстановления от любых видов оглушения на 1 ход."]}],"Name":"booklearn_spell_white","Caption":"Заклинания магии Света","Description":[]},{"NewLineToBR":true,"Items":[{"NewLineToBR":true,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"wis_gray_mastery","Caption":"Серое Мастерство","Description":["Сила духа: 2
        Расход маны: 41
        Задержка: 5

        Минимальные требования:
        • Интеллект: 40
        • Мастерство владения серой магией: 4
        • Уровень: 7

        Увеличивает навык в магии стихий, применяется до 5 раз. Тратит 5 * (уровень заклинания) маны в ход."]}],"Name":"booklearn_spell_gray","Caption":"Заклинания Серой магии","Description":[]}],"Name":"shop1","Caption":"Заклинания","Description":["

        Книжные магические приемы

        ","На этой закладке Вы можете ознакомиться с характеристиками уже изученного заклинания."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/misc/icons/","Categories":[{"NewLineToBR":true,"Items":[{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"krit_blooddrink","Caption":"Хлебнуть Крови","Description":[" 7   3  
        Сила духа: 2

        Минимальные требования:
        • Уровень: 6

        Ваш следующий критический удар и два удара за ним лечат вас частью нанесенного урона, но не более чем 89HP с противника 7 уровня/107HP с противника 8 уровня/128HP с противника 9 уровня/154HP с противника 10 уровня. Выпитая кровь придает вам силы ."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"block_magicshield","Caption":"Магическая Защита","Description":[" 3  

        Минимальные требования:
        • Уровень: 7

        Следующее заклятие нанесет вам не более 1 повреждения, защита действует не более трех ходов."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"krit_bloodlust","Caption":"Жажда Крови","Description":[" 2   3  

        Минимальные требования:
        • Уровень: 7

        Увеличивает ваш мф. критического удара на 50 до конца боя. Можно применять трижды."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"counter_deathwalk","Caption":"Поступь Смерти","Description":[" 5

        Минимальные требования:
        • Уровень: 7

        Увеличивает максимальный урон оружием на 1*(уровень). Каждый успешный удар увеличивает макс. урон еще на 1*(уровень) ед., до 10*(уровень) и обновляет время эффекта. Эффект длится один ход."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"multi_rollback","Caption":"Отменить","Description":[" 3 3

        Минимальные требования:
        • Уровень: 7
        • Сила: 25
        • Выносливость: 25

        Отменяет последнее полученное повреждение или лечение.
        Использовать прием можно 1 раз за бой."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"block_revenge","Caption":"Возмездие","Description":[" 5

        Минимальные требования:
        • Уровень: 7

        Нанесший вам удар получит 6* (ваш уровень) ед. урона."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"spirit_survive","Caption":"Выжить","Description":["Сила Духа: 10

        Минимальные требования:
        • Уровень: 7
        • Выносливость: 30

        Исцеляет Вас, используя все набранные Вами тактики.
        "]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"counter_ward","Caption":"Осторожность","Description":[" 2
        Задержка: 3

        Минимальные требования:
        • Уровень: 7
        • Ловкость: 30
        • Выносливость: 20

        Уменьшает урон от магии стихий вдвое на три хода."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"parry_supreme","Caption":"Превосходство","Description":[" 3 1

        Минимальные требования:
        • Уровень: 7

        Повышает антикрит и антиуворот до конца боя.
        Можно применять трижды."]},{"NewLineToBR":false,"W":40,"H":25,"Binding":0,"IsGift":false,"Name":"hit_empower","Caption":"Усиленные удары","Description":[" 3

        Минимальные требования:
        • Уровень: 7

        Все удары в следующем размене наносят на 5* (уровень) ед. урона больше."]}],"Name":"fighter","Caption":"Боевые приемы","Description":[]}],"Name":"shop2","Caption":"Боевые приемы","Description":["

        Книжные боевые приемы

        ","На этой закладке Вы можете ознакомиться с характеристиками уже изученного приема."]},{"NewLineToBR":false,"ImageBasePath":"https://img.new-combats.com/i/items/","Categories":[],"Name":"shop3","Caption":"Книги Саныча","Description":["

        Книги Саныча


        Книги Саныча - это первые книги, которые появились в Бойцовском клубе. Приобрести их можно в Книжном магазине, что на Торговой улице \"Capital Capital city.

        Для покупки книги необходима квитанция. Квитанции приобретаются у Алхимиков. На данный момент, такими алхимиками являются - Алхимик Talenor , Алхимик Cptn и Алхимик Enchanter . Персонаж, на которого выписывается квитанция, должен находиться в Capital city. ","

        New! Теперь приобрести квитанции можно в Березке в Артефактном магазине.","

        Бронзовая Квитанция - 28 екр. (покупка через Алхимика), 24.95 екр. (покупка в магазине)
        Серебряная Квитанция - 55 екр. (покупка через Алхимика), 49.95 екр. (покупка в магазине)
        Золотая Квитанция - 550 екр. (покупка через Алхимика), 499.55 екр. (покупка в магазине)

        Квитанция, это не только возможность приобрести книгу в книжном магазине, но и вполне реальная книга Саныча \"Хакеры\" из эксклюзивного коллекционного издания.

        ","","","","","","","","","



        Бронзовая Книга Саныча



        Серебряная Книга Саныча



        Золотая Книга Саныча
        Одевается в слот для свитка.

        При одевании увеличивает:
        • Интеллект: +1
        • Уровень жизни (HP): +10

        При использовании в бою персонаж получает +1 , а книга теряет одну страницу.










        Одевается в слот для свитка.

        При одевании увеличивает:
        • Интеллект: +2
        • Уровень жизни (HP): +20

        При использовании исцеляет персонажа, цена исцеления - одна страница за легкую травму, две за среднюю и три за тяжелую.









        Одевается в слот для свитка.

        При одевании увеличивает:
        • Мф. мощности крит. удара (%): +1
        • Мф. парирования (%): +1
        • Мф. блока щитом (%): +1
        • Подавление защиты от магии: +1
        • Мф. контрудара (%): +1
        • Мф. мощности магии стихий (%): +1
        • Мф. мощности урона (%): +1
        • Интеллект: +3
        • Уровень жизни (HP): +30
        • Мф. удара сквозь броню (%): +1
        • Уменьшение расхода маны (%): +1

        При использовании обменивает ваши HP на HP противника. За каждый уровень противника тратится одна страница книги


        Промежуток при продаже Бронзовых книг в магазине полчаса, т.е. если кто-то покупает книгу, следующая покупка может состояться только через 30 мин.
        Книги связываются \"Связан Общей судьбой с купившим их. После преобретения найти книжку можно в разделе \"Обмундирование\".

        Только одна книга может использоваться одновременно. Все бренно, и через год использования сила книги истощится.

        Но приобретать книги, купив квитанции за еврокредиты - не единственный способ стать их счастливым обладателем. Есть другой вариант приобретения Бронзовой Книги Саныча: вы можете собрать книгу самостоятельно из страничек, которые \"приклееваются\" к некоторым вещам, что вы покупаете в государственных магазинах или меняете на жетоны в каморке Луки, а так же купив странички у торговцев.

        Для сборки необходимо иметь 50 страничек (с 1 по 50) и обложку.

        ","","","","","","","

        Книжная обложка

        Страница - № -
        (Масса: 1)
        Долговечность: 0/1
        На предмете записан текст:
        *неразборчивый полустертый заголовок*
        Описание:
        Обложка от Бронзовой Книги Саныча
        Найдите все 50 страниц книги и соберите ее себе.
        Предмет не подлежит ремонту

        (Масса: 1)
        Долговечность: 0/1
        На предмете записан текст:
        *неразборчивый полустертый текст*
        Описание:
        Одна страница из Бронзовой Книги Саныча
        Предмет не подлежит ремонту



        ","
        Собрать книжку можно в книжном магазине, нажав \"использовать\" на обложке. Необходимо иметь полный набор страничек в рюкзаке, чтобы сборка прошла успешно.
        ","
        После сборки книга свяжется \"Связан Общей судьбой с собравшим ее.
        ","
        Очень часто в торговых залах можно встретить объявления \"Продам Бронзовую Книгу Саныча\", на самом деле, имеется ввиду продажа комплекта, воспользовавшись которым, вы сможете собрать книжку самостоятельно.



        "]}],"IsDungeon":false,"Name":"bookshop","Caption":"Книжный Магазин","Description":[]}); +underground.addDungeon({"RequiredScriptNames":[],"NewLineToBR":true,"CellBackgroundColorString":"#E0E5E9","CellBorderColorString":"#7D8699","Jobs":{"CollectiveJobs":[],"CapturedJobs":[],"KillingJobs":[]},"Floors":[],"Pages":[{"NewLineToBR":false,"ExternalUrl":"","Name":"page1","Caption":"О храме","Description":["
        ","

        Хранитель Знаний о Храме...

        ","
        \"Храм

        На входе в Храм Знаний нас встречает его обитатель - Хранитель Знаний [13]. Его-то мы и распросим о том что это за храм:
        ","
        ","
        Приветствую тебя, Тень, от лица Хранителей Знаний, обитающих в этом священном месте! Наш храм собрал под своими сводами многие тайны мироздания и магии. Если ты докажешь нам, что твое стремление познать неизведанное велико, мы, может быть, откроем тебе некоторые секреты этого мира. Готов ли ты пройти испытание, дабы завоевать наше расположение?

        • Что от меня потребуется?
        Постой, расскажи, чем вы здесь занимаетесь?
        • Пожалуй, в другой раз. (завершить разговор)

        Он расскажет нам о рунах: ","
        ","
        В результате множества экспериментов, было установлено, что цвет определяет свойства силы руны, форма определяет мощь, а знак - тип предметов, для которых руна предназначена. Кроме того, иногда, очень редко, нам встречались уникальные руны, много мощнее остальных и совершенно необычного цвета.


        Он расскажет нам о том, как повысить репутацию в храме Знаний: ","
        ","
        Ты можешь повысить свою репутацию в наших кругах только внеся определенный вклад в развитие храма. Это могут быть практические знания, которые ты будешь получать при создании рун, или же материальные подношения. Обитатели храма постоянно нуждаются в реактивах и материалах для экспериментов, и мы всегда будем рады пополнению наших лабораторий сущностями ресурсов.

        Он расскажет нам об алтарях: ","
        ","
        Большинство вещей в нашем мире содержат достаточную силу, чтобы попытаться ее извлечь и получить руну. Нами было открыто, что чем могущественнее предмет, тем больше шансов превратить его в мощную руну. Извлечь магическую силу из вещи можно только в стенах нашего храма. Для этого ты можешь воспользоваться алтарем, стоящим слева.

        ***

        Руны - это таинственные предметы, наделенные удивительными свойствами. В ходе одного из опытов мой коллега сумел обратить три руны одной формы в новую руну той же формы, но иных свойств. Следуя этим путем, можно получить руны с более привлекательными свойствами. Попробовать свои способности в соединении рун ты можешь на правом алтаре.

        ","
        \"Алтарь \"Алтарь


        Остался без внимания еще один пункт из разговора с Хранителем:","
        ","
        Готов ли ты пройти испытание, дабы завоевать наше расположение?

        • Что от меня потребуется?


        Чтобы узнать, что именно от нас потребуется, обратимся к закладке повествующей нам О задании.


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page2","Caption":"О задании","Description":["
        ","

        Задание Хранителя Знаний

        ","

        Но, увы, растворение вещей и соединение рун нам пока не доступно. Необходимо выполнить квест, который можно взять все у того же Хранителя Знаний [13].
        ","

        ","
        Дело в том, что мы, Хранители Знаний, слишком заняты изучением основ мироздания и магии, постоянно ставим опыты и удивительные эксперименты... поэтому мы редко покидаем стены храма, и вынуждены прибегать к помощи посторонних для сбора новых образцов и реактивов. Тебе выпала честь добыть пробу канализационных вод, что текут под городами. Мы дадим тебе специальную склянку для этой цели. Ищи загрязненный водосток.

        Текущее задание
        : Принести \"Склянку с пробами\" к Хранителю в Храме Знаний. Пробу можно забрать из загрязненного водостока в \"Заброшеной Канализации\".

        Вместе с заданием мы получаем пустую склянку:
        ","
        ","
        ","","","","","
        ","","","","","
        Пустая Склянка (Масса: 1)
        Долговечность: 0/1
        Максимум: 1 ед.
        Описание:
        Стандартная склянка для хранения проб.
        Сделано в Abandoned Plain

        Выполнить задание можно в Канализации. Склянку наполняем водами из загрязненного водостока, расположенного на южной стене, неподалеку от \"\"Мартына Водопроводчика, клетка E11 первого этажа. Чтобы наполнить склянку надо просто кликнуть на водосток.
        ","
        ","
        ","","","","","
        ","","","","","
        Вы получили 'Склянка с пробами' за 'Пустая склянка'

        Задание выполнено! Осталось только отнести склянку с пробами Хранителю Знаний. Возвращаемся в храм и завершаем задание.
        ","
        ","
        Приветствую тебя, путник, от лица Хранителей Знаний, обитающих в этом священном месте! Я вижу, ты выполнил наше поручение и добыл пробу канализационных вод... какой успех! Пожалуй, теперь мы можем открыть тебе частичку наших секретных знаний.

        ***

        Вы отдали \"Склянка с пробами\"
        Вы получили 0 награды за выполнение задания.

        ","

        После выполнения задания можно растворять вещи, получая руны. Чтобы узнать как это делается, обратимся к закладке повествующей нам Об алтарях.


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page3","Caption":"Об алтарях","Description":["
        ","

        Алтарь предметов

        Слева от \"ХранительХранителя Знаний расположился \"Алтарь ","Алтарь Предметов. Здесь можно растворять предметы и взамен получать руны.

        На начальном этапе вы можете растворять ","только вещи [4]-[6] уровня.

        Процесс растворения выглядит так:

        ","
        \"Алтарь


        Из левой колонки выбирается вещь и нажимается кнопка \"растворить\".

        Растворение вещи может ","пройти удачно, в этом случае вы получите взамен Руну и 1 ед. репутации: ","
        ","
        Удачно растворен предмет \"Кольцо Отражения\" и получена руна \"Аква ","Ротаси\".

        Или неудачно. В этом случае вы не получите ничего, а растворенный предмет бесследно ","исчезнет: ","
        ","
        Предмет \"Амулет Здоровья\" растворен неудачно.

        Алтарь ","способен растворять вещи купленные за креды или зубы в государственном магазине, найденные в подземелье, преобретенные в каморке ","Луки, а также вещи из \"\"Березки. Но стоит отметить, что не все вещи удается утилизировать...

        ","
        ","
        Растворяются: шлема, наручи, перчатки, броня, пояса, серьги, амулеты, кольца, поножи, ботинки. ","
        НЕ растворяются: щиты, оружие, плащи, рубашки, а так же вещи связанные общей судьбой с другим человеком. ","
        ","
        ","
        Если вы хотите растворить вещь, но не видите ее в перечне доступных, значит вы не достигли определенного уровня ","репутации.


        Важно:
        Руны даются случайно и никак не зависят от типа ","пожертвованной вещи.
        У рун с одним и тем же названием могут быть разные характеристики.
        Совет: Не стоит сразу растворять все имеющиеся у вас ненужные вещи. Лучше сначала стать Посвященным первого круга. До получения рыцарства шанс неудачного ","растворения вещей больше. Но чем выше уровень репутации, тем меньше шанс неудачи. Так же, стоит отметить, что уровень вещи при ","растворении играет немаловажную роль - чем выше уровень вещи, тем меньше шансов, что она будет неудачного растворена.
        ","
        ","

        Алтарь Рун

        ","\"Алтарь ","Алтарь Рун расположился справа от \"ХранительХранителя Знаний. Здесь можно объединять руны и ","модифицировать вещи здесь.

        Процесс объединения выглядит следующим образом:

        ","
        \"Алтарь


        Объединение Рун:
        Из трех рун одной формы можно собрать 1 руну той же формы, но не имеющую ","свойств тех рун, из которых ее создавали. Получается руна того же уровня, но другая по свойствам. Принцип слияния отличается от ","чарок из Катакомб, тут 3 руны дают не \"более лучшую\" характеристику такого же типа, а характеристику такого же уровня, но другого ","типа (другой мф).

        Модифицирование вещей:
        При использовании руны на какую-либо вещь вы добавляете ей свойства, ","которыми обладает руна. При чаровании одной и той же вещи разными рунами, последующая руна будет заменять предыдущую (возможна ","только одна руна на вещь). При повторном чаровании вещи сохраняют свойства последней использованной руны. При модифицировании ","рунами остальные зачарования не исчезают и не заменяются (относится к вещам зачарованным свитками). Вещи привязываются \"\"общей судьбой.


        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page4","Caption":"О рунах","Description":["
        ","

        О рунах


        Получение Рун

        Руну можно получить взамен ","растворенной вещи, если растворение прошло удачно. Руны отличаются по цвету, форме, знаку и даваемым модификаторам. При ","растворении одной и той же вещи можно получить различные руны. Другими словами, получение руны - полный рандом.

        Руны НЕ ","вяжутся \"\"общей ","судьбой, поэтому их можно продавать или покупать, можно выставлять на аукцион.

        Модифицирование вещей

        Основное предназначение рун - модифицирование вещей.

        Руна дает рандомный ","параметр, не связанный с уровнем и мф. растворенной вещи. На количество даваемых руной мф., частично, влияет уровень ","утилизированного предмета. Руны могут давать мф. защиты, мф. мощности урона, мф. мощности стихий, +уровень маны, + уровень hp, ","статы и первичные мф. такие как крит/антикрит, уворот/антиуворот. При модифицировании руной, вещи связываются \"\"общей судьбой.

        Известны следующие модификаторы рун:

        ","
        ","","","","","","","","","","","","","","","","","","","","","","","","","","
        ","
        Аква
        ","
        Аура
        ","
        Игнис
        ","
        Тера
        ","
        Руны
        [4]
        уровня
        • Защита от режущего урона: +5
        • Мф. мощности режущего урона: +1
        • Мф. против критического удара: +5
        • Защита ","от магии воды: +5
        • Мф. мощности магии воды: +1
        • Защита от колющего урона: +5
        • Мф. мощности колющего урона: +1
        • Мф. увертывания: +5
        • Защита от магии ","воздуха: +5
        • Мф. мощности магии воздуха: +1
        • Защита от рубящего урона: +5
        • Мф. мощности рубящего урона: +1
        • Мф. критического удара: +5
        • Защита от ","магии огня: +5
        • Мф. мощности магии огня: +1
        • Защита от дробящего урона: +5
        • Мф. мощности дробящего урона: +1
        • Мф. против увертывания: +5
        • Защита от ","магии земли: +5
        • Мф. мощности магии земли: +1
        ","
        Руны
        [7]
        уровня
        • Ловкость: +1
        • Защита от режущего урона: +10
        • Мф. мощности режущего урона: +3
        • Мф. против критического ","удара: +10
        • Защита от магии воды: +10
        • Мф. мощности магии воды: +3
        • Интеллект: +1
        • Защита от колющего урона: +10
        • Мф. мощности колющего урона: +3
        • Мф. увертывания: +10
        • ","Защита от магии воздуха: +10
        • Мф. мощности магии воздуха: +3
        • Интуиция: +1
        • Защита от рубящего урона: +10
        • Мф. мощности рубящего урона: +3
        • Мф. критического удара: ","+10
        • Защита от магии огня: +10
        • Мф. мощности магии огня: +3
        • Сила: +1
        • Защита от дробящего урона: +10
        • Мф. мощности дробящего урона: +3
        • Мф. против увертывания: ","+10
        • Защита от магии земли: +10
        • Мф. мощности магии земли: +3
        ","
        Руны
        [9]
        уровня
        • Ловкость: +2
        • Уровень маны: +20
        • Защита от режущего урона: +20
        • Мф. мощности режущего урона: +5
        • Мф. ","против критического удара: +20
        • Защита от магии воды: +20
        • Мф. мощности магии воды: +5
        • Интеллект: +2
        • Уровень маны: +20
        • Защита от колющего урона: +20
        • Мф. мощности колющего урона: +5
        • ","Мф. увертывания: +20
        • Защита от магии воздуха: +20
        • Мф. мощности магии воздуха: +5
        • Интуиция: +2
        • Защита от рубящего урона: +20
        • Мф. мощности рубящего урона: +5
        • Мф. критического удара: ","+20
        • Защита от магии огня: +20
        • Мф. мощности магии огня: +5
        • Мф. мощности магии стихий: +3
        • Мф. мощности крит. ","удара: +5
        • Сила: +2
        • Защита от дробящего урона: +20
        • Мф. мощности дробящего урона: +5
        • Мф. против увертывания: ","+20
        • Защита от магии земли: +20
        • Мф. мощности магии земли: +5
        • Уровень жизни (HP): ","+20


        Супер руны

        В отличие от ","обычных, супер руны связываются \"\"общей судьбой с создателем. Чем выше уровень растворяемого предмета, тем выше шансы получить супер руну. ","Супер руны не сливаются.

        ","
        ","","","","","","","","","","","
        ","

        https://img.new-combats.com/i/items/rune_super_2.gif

        ","

        Унитан (Масса: 1)
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        Действует на: ","
        • Защита от магии: +25
        Описание:
        Этой руной можно улучшить предмет
        Сделано в Abandoned Plain
        Предмет не подлежит ремонту
        ","

        ","

        ","

        Унимоко (Масса: 1)
        Долговечность: 0/1
        Требуется ","минимальное:
        • Уровень: 7
        Действует на:
        • Уровень маны: +50
        Описание: ","
        Этой руной можно улучшить предмет

        Сделано в Abandoned ","Plain
        Предмет не подлежит ремонту

        ","

        ","

        Унифенто (Масса: 1)
        Долговечность: 0/1
        Требуется ","минимальное:
        • Уровень: 7
        Действует на:
        • Мф. мощности магии стихий: +5

        ","

        Описание:
        Этой руной можно улучшить предмет
        Сделано в ","Abandoned Plain
        Предмет не подлежит ремонту

        ","

        ","

        Уникэпо (Масса: 1)
        Долговечность: 0/1
        Требуется ","минимальное:
        • Уровень: 7
        Действует на:
        • Ловкость: +4
        Описание:
        Этой руной ","можно улучшить предмет
        Сделано в Abandoned Plain
        Предмет не подлежит ","ремонту

        ","

        ","

        Униманус (Масса: 1)
        Долговечность: 0/1
        Требуется ","минимальное:
        • Уровень: 7
        Действует на:
        • Сила: +4
        Описание:
        Этой руной ","можно улучшить предмет
        Сделано в Abandoned Plain
        Предмет не подлежит ","ремонту

        ","

        ","

        Уникритус (Масса: 1)
        Долговечность: 0/1
        Требуется ","минимальное:
        • Уровень: 7
        Действует на:
        • Интуиция: +4
        Описание:
        Этой ","руной можно улучшить предмет

        ","

        Сделано в Abandoned Plain
        Предмет не подлежит ","ремонту

        ","

        ","

        Униборо (Масса: 1)
        Долговечность: 0/1
        Требуется минимальное:
        • Уровень: 7
        Действует на: ","
        • Интеллект: +4
        Описание:
        Этой руной можно улучшить предмет
        Сделано в Abandoned Plain
        Предмет не подлежит ремонту


        ","



        ","
        ","

        Тайна рунного имени

        ","

        Имя руны состоит из двух слов. Первое слово указывает на принадлежность руны к стихии, обуславливает ее ","цвет и область улучшаемых характеристик. Второе слово сложено из двух составляющих. Первая составляющая - корень; ","вторая - окончание. Корень указывает на силу руны, окончание на предмет, который руна улучшает.

        Первые слова в ","рунах:
        Аква - вода, фиолетовая;
        Аура - воздух, голубая;
        Игнис - огонь, оранжевая;
        Тера - ","земля, зеленая.

        Корни второго слова:
        (Рота) - круглая, самая слабая;
        (Триа) - треугольная, средняя по ","силе;
        (Квад) - четырехугольная, сильная руна.

        Окончания второго слова:
        [хи] - серьги;
        [хэ] - ","ожерелье;
        [ви] - кольцо;
        [во] - перчатки;
        [кэ] - поножны;
        [ки] - обувь;
        [ми] ","-шлем;
        [си] - наручи;
        [мо] - броня;
        [со] - пояс.

        Например: руна Аура ","(Триа)[хэ] зачарует ожерелье с средней силой. Аква (Рота)[ми] - слабо зачарует ","шлем.

        by Andre_be ","[10] \"\"




        "]},{"NewLineToBR":false,"ExternalUrl":"","Name":"page5","Caption":"О репутации","Description":["
        ","

        Репутация и рыцарства


        Зачем нужна репутация?

        ","

        Уровень репутации в Храме важен для работы с Алтарем Предметов.

        ","

        ","
        Если вы хотите растворить вещь, но не видите её в перечне доступных для растворения, значит вы не достигли определённого уровня репутации.
        ","


        ","

        Первую 1 ед. репутации можно получить за выполненный квест, когда Хранитель знаний просит принести ему \"Склянку с пробами\" .

        ","

        Увеличить уровень репутации можно двумя способами:

        ","


        • Растворяя предметы. За каждое удачное растворение ваша репутация повышается на 1 ед..
        • Жертвуя сущности. Сущность Ресурса дает 2 ед. репутации, до получения значка рыцаря, и 1 ед. репутации после достижения этого рубежа. Сущности жертвуются при разговоре с Хранителем знаний.


        При достижении 100 единиц репутации вы станете \"\"Посвященным первого круга и у вас в информации появится соответствующий значок.
        При достижении 1000 единиц репутации вы станете \"\"Посвященным второго круга и у вас в информации появится соответствующий значок.



        Что дает нам рыцарство?

        До получения рыцарства есть шанс неудачного растворения вещей. Но чем больше уровень репутации, тем меньше шанс неудачи.

        Без значка можно растворять только вещи [4]-[6] уровня.

        Значок Посвященного первого круга позволяет растворять вещи [4]-[8] уровня.

        Значок Посвященного второго круга позволяет растворять вещи [4]-[10] уровня.



        "]}],"Shops":[],"IsDungeon":false,"Name":"temple","Caption":"Храм Знаний","Description":[]}); diff --git a/head/dungeonengine.js b/head/dungeonengine.js index a22cf0f4..cbc77608 100644 --- a/head/dungeonengine.js +++ b/head/dungeonengine.js @@ -44,7 +44,7 @@ d.loadData=function(f) else {loadScript(underground.settings.jsBase+'dungeon.city.'+this.Name+'.js',function(){d.dataLoaded(f);});}} d.createDescriptionPage=function() -{var p={Name:'$description',Caption:'',NewLineToBR:this.NewLineToBR,ExternalUrl:'',hidden:true};p.Description=this.Description;this.data.Pages.push(p);this.descriptionPageIndex=this.data.Pages.length-1;} +{var p={Name:'$description',Caption:'Описание',NewLineToBR:this.NewLineToBR,ExternalUrl:'',hidden:true};p.Description=this.Description;this.data.Pages.push(p);this.descriptionPageIndex=this.data.Pages.length-1;} d.createSettingsPage=function() {} d.createShopPages=function() @@ -53,10 +53,10 @@ d.createShopPages=function() d.getShopItemHtml=function(item,imageBasePath) {var img=[imageBasePath,item.Name,'.gif'].join('');this.imagesToBePreloaded.push(img);var html=['','','',item.Caption,''];if(item.Binding>0) {html.push(' ');} if(item.IsGift) -{this.imagesToBePreloaded.push('https://img.new-combats.com/i/podarok.gif');html.push(' ');} +{this.imagesToBePreloaded.push('https://img.new-combats.com/i/podarok.gif');html.push(' ');} html=html.concat(['
        ',item.Description.join(item.NewLineToBR?'
        ':''),'']);return html.join('');} var showShopPage=function() {var shop=this.Shop;shop.tdId='$shoptd$'+this.Dungeon.Name+'$'+shop.Name;var firstCat=true;var data=[];var chapters=['
          '];for(var i in shop.Categories) @@ -85,15 +85,15 @@ handler.push(')", 10)');handler=handler.join('');html.push('1']);} else {html=html.concat(['']);} -html.push(' .');} -html.push('
          ');html.push(' ');html.push(job.Unique?['',data.mob.Instances[0].Reward,''].join(''):(job.DefCount*data.mob.Instances[lastmii].Reward));html.push(' . .');html.push('');if(job.Unique) -{html.push('
          , .');}} +html.push(' шт.');} +html.push('');html.push('Вы получите ');html.push(job.Unique?['',data.mob.Instances[0].Reward,''].join(''):(job.DefCount*data.mob.Instances[lastmii].Reward));html.push(' ед. награды.');html.push('');if(job.Unique) +{html.push('
          Уникальное задание, выпадает не более одного раза за круг.');}} else -{var countid=job.divId+'$count';var rewardid=job.divId+'$reward';var maxcountid=job.divId+'$maxcount';var maxrewardid=job.divId+'$maxreward';var handler=['setTimeout("ui_recalculateUsualReward(\'',countid,'\', \'',rewardid,'\', \'',maxcountid,'\', ',data.bonus,', ',data.maxFactor,', \'',maxrewardid,'\')", 10)'].join('');html=html.concat([' . ',job.DefCount*data.bonus,' . .']);if(data.maxFactor>1) -{var maxc=Math.floor(job.DefCount*data.maxFactor);html=html.concat(['
          , ',maxc,' ., ',maxc*data.bonus,' . .']);}} +{var countid=job.divId+'$count';var rewardid=job.divId+'$reward';var maxcountid=job.divId+'$maxcount';var maxrewardid=job.divId+'$maxreward';var handler=['setTimeout("ui_recalculateUsualReward(\'',countid,'\', \'',rewardid,'\', \'',maxcountid,'\', ',data.bonus,', ',data.maxFactor,', \'',maxrewardid,'\')", 10)'].join('');html=html.concat(['За шт. Вы получите ',job.DefCount*data.bonus,' ед. награды.']);if(data.maxFactor>1) +{var maxc=Math.floor(job.DefCount*data.maxFactor);html=html.concat(['
          Можно перевыполнить задание, собрав до ',maxc,' шт., и получив до ',maxc*data.bonus,' ед. награды.']);}} html.push('
        ');return html.join('');} var jobPageShow=function() -{var jobs=this.Dungeon.data.Jobs;this.jobTdId='$jobtd$'+this.Dungeon.Name+'$jobs';var html=[];this.jobCats=[{Name:'CollectiveJobs',Caption:' ',Items:jobs.CollectiveJobs},{Name:'CapturedJobs',Caption:' ',Items:jobs.CapturedJobs},{Name:'KillingJobs',Caption:' ',Items:jobs.KillingJobs}];html.push('

        ');html.push('
        ');var firstCat=true;var chapters=[];var data=[];chapters.push('
          ');for(var i in this.jobCats) +{var jobs=this.Dungeon.data.Jobs;this.jobTdId='$jobtd$'+this.Dungeon.Name+'$jobs';var html=[];this.jobCats=[{Name:'CollectiveJobs',Caption:'Собирательные задания',Items:jobs.CollectiveJobs},{Name:'CapturedJobs',Caption:'Задания на трофеи',Items:jobs.CapturedJobs},{Name:'KillingJobs',Caption:'Задания на убийство',Items:jobs.KillingJobs}];html.push('

          Задания

          ');html.push('
          ');var firstCat=true;var chapters=[];var data=[];chapters.push('
            ');for(var i in this.jobCats) {var cat=this.jobCats[i];if(cat.Items.length==0)continue;cat.divId='$jobcat$'+this.Name+'$jobs$'+cat.Name;var st=firstCat?'':'display: none;';data.push('
            ');data.push('

            ');data.push(cat.Caption);data.push('

            ');data.push('
            ');for(var j in cat.Items) {data.push(this.Dungeon.getJobHtml(j,cat.Items[j],i));} data.push('
            ');chapters.push('
          • ');chapters.push(cat.Caption);chapters.push('
          • ');firstCat=false;} @@ -101,9 +101,9 @@ chapters.push('
          ');html.push('');html.push('
        • |
        • ');for(var i in this.data.Floors) +{if(!this.IsDungeon)return'';var html=[];html.push('
        • Описание
        • ');html.push('
        • |
        • ');for(var i in this.data.Floors) {var floor=this.data.Floors[i];html.push('');html.push(floor.Caption);html.push('');} html.push('
        • |
        • ');if(msie)html.push(this.getZoomText());html.push(this.getLookText());return html.join('');} d.openDescription=function() @@ -121,7 +121,7 @@ var frd=fr[n];for(var level in frd) r[n][level]+=frd[level];}}} return r;} d.getStatisticsHtml=function() -{if(!this.IsDungeon)return'';var stats=this.getStatistics();var html=[];html.push(getStatisticsHtml(' ',stats,''));return html.join('');} +{if(!this.IsDungeon)return'';var stats=this.getStatistics();var html=[];html.push(getStatisticsHtml('Статистика по подземелью',stats,''));return html.join('');} d.needData=function(f) {if(!('data'in this)) {this.loadData(f);} @@ -133,7 +133,7 @@ d.hidePages=function() {e.style.display='none';}} document.getElementById('ads').style.display='';} d.getPageDivCloserHtml=function() -{var html=[];html.push('
            ');html.push('
          • ');html.push('
          ');return html.join('');} +{var html=[];html.push('
          ');return html.join('');} d.getNewPageDivHtml=function(id,content) {var html=[];var closer=this.getPageDivCloserHtml();html.push('
          ');html.push(closer);html.push(content);html.push(closer);html.push d.getChapterHtml=function() {var html=[];rendered=true;this.handleHash2();underground.settings.look=this.data.Floors[this.activeFloorIndex].LookDirection;html.push('
          ');html.push('

          ');html.push(d.Caption);html.push('

          ');html.push('
            ');html.push(this.getFloorTabsHtml());html.push('
          ');html.push('
          ');html.push('
          ');html.push(this.data.getMapHtml());html.push('
          ');html.push('
          ');html.push(this.getStatisticsHtml());html.push('
          ');html.push('
          ');return html.join('');} d.getZoomText=function() -{var html=[];html.push('
        • : %
        • ');return html.join('');} +{var html=[];html.push('
        • Масштаб: %
        • ');return html.join('');} d.changeFloor=function(floorIndex) {hideMenu();hidePopup2();var oldActiveFloorIndex=this.activeFloorIndex;this.activeFloorIndex=floorIndex;if(!rendered)return;this.data.Floors[oldActiveFloorIndex].highlightPoint(null);underground.settings.look=this.data.Floors[floorIndex].LookDirection;document.getElementById(this.mapLookId).value=underground.settings.lookTexts[underground.settings.look];document.getElementById(this.floorTabsId).innerHTML=this.getFloorTabsHtml();for(var i in this.data.Floors) {var floor=this.data.Floors[i];var dm=(this.activeFloorIndex==i)?'':'none';document.getElementById(floor.mapId).style.display=dm;}} @@ -197,7 +197,7 @@ d.getLookOption=function(index,caption) {html.push(' selected="yes"');} html.push('>');html.push(caption);html.push('');return html.join('');} d.getLookText=function() -{if(!this.IsDungeon)return'';var html=[];html.push('
        • ');html.push('
        • ');return html.join('');} +{if(!this.IsDungeon)return'';var html=[];html.push('
        • Смотрим на ');html.push('
        • ');return html.join('');} d.getProposedZoom=function() {var v=document.getElementById(this.zoomerId).value;var pv=underground.settings.zoom;if(!isNaN(v)) {pv=parseInt(v);if(isNaN(pv))pv=underground.settings.zoom;if(pv<10)pv=10;if(pv>300)pv=300;} @@ -232,7 +232,7 @@ html=html.concat(['
          ');html.push(vs);html.push('
          ');} html=html.concat(['
          ','
          ']);for(var i in this.Cells) {html.push(this.getCellHtml(this.Cells[i]));} -html.push('');for(var i=0;i
          ');} @@ -240,7 +240,7 @@ html.push('
          ');html.push(this.getRightPartHtml());html.push('
          ');html.push('
          ');html.push(this.getStatisticsHtml());html.push('
          ');html.push('
        ');return html.join('');} f.getRightPartHtml=function() -{var html=[];html.push('
        ');this.floorNavId=baseId+'mapsNav';html.push('
        ');this.floorNavId=baseId+'mapsNav';html.push('
        ');for(var i in underground.knownDungeons) {var kd=underground.knownDungeons[i];var floorCount=kd.FloorNames.length;if(floorCount>1) {html.push('
        ');html.push(kd.Caption);html.push('
        ');} else {html.push('');}}} -html.push('
        ') +html.push('') html.push('');return html.join('');} f.applyZoom=function(zoomFactor) {document.getElementById(this.mapViewId).style.zoom=(zoomFactor+'%');var dim=this.getLookDim();var pos=(dim.w+2)*underground.settings.cellWidth;pos=Math.floor((pos*zoomFactor)/100);document.getElementById(this.rightPartId).style.left=pos+'px';} f.getStatisticsHtml=function() -{var stats=this.getStatistics();return getStatisticsHtml(' ',stats,this.statisticsCheckId);} +{var stats=this.getStatistics();return getStatisticsHtml('Статистика по этажу',stats,this.statisticsCheckId);} f.getBorderStyleHtml=function(code,size) {return['border-',code,':',size,'px ',((size<1)?'none':'solid'),' ',this.dungeon.CellBorderColorString,';','padding-',code,':',(2-size),'px;'].join('');} f.getCellDivId=function(x,y) @@ -323,7 +323,7 @@ if(!(mobref.Level in r[mobref.Name])) r[mobref.Name][mobref.Level]+=mobref.Count;}} return r;} f.showCellMarkerPopup=function(markerIndex) -{showPopup('
        '+htmlstring(this.markers[markerIndex].text));} +{showPopup('
        Заметки на полях
        '+htmlstring(this.markers[markerIndex].text));} f.getHash=function() {var r=[];for(var i=0;i');html.push(getRowMenuItemHtml('/ ','ui_toggleCellMarker(\''+cellDivId+'\','+x+','+y+')'));html.push(getRowMenuSeparatorHtml());html.push(getRowMenuItemHtml('','hideMenu()'));html.push('');return html.join('');} +{var html=[];html.push('');html.push(getRowMenuItemHtml('Поставить/снять маркер','ui_toggleCellMarker(\''+cellDivId+'\','+x+','+y+')'));html.push(getRowMenuSeparatorHtml());html.push(getRowMenuItemHtml('Закрыть','hideMenu()'));html.push('
        ');return html.join('');} f.findCellByDivId=function(cellDivId) {for(var i in this.Cells) {var cell=this.Cells[i];if(cell.divId==cellDivId) @@ -430,7 +430,7 @@ this.getStatisticsHtml=function() this.getStatistics=function() {return{};} this.getCellContentMenuHtml=function(cellDivId,x,y) -{var html=[];html.push('');html.push(getRowMenuItemHtml('','hideMenu()'));html.push('
        ');return html.join('');} +{var html=[];html.push('');html.push(getRowMenuItemHtml('Закрыть','hideMenu()'));html.push('
        ');return html.join('');} this.hotSpot=function(cellDivId) {} this.hideHotSpots=function() @@ -440,23 +440,23 @@ this.getHash=function() this.handleHash=function(hash) {}} function WelcomeDungeon() -{this.baseConstructor=CustomResource;this.baseConstructor();this.Name='welcome';this.Caption='';this.showDescription=function(s) +{this.baseConstructor=CustomResource;this.baseConstructor();this.Name='welcome';this.Caption='Стартовая';this.showDescription=function(s) {document.getElementById('welcomeDungeon_descriptionArea').innerHTML=s;} this.getMenuItemHtml=function(d,di,popupFuncName,openFuncName,url) {var target=' target="_blank"';if(url==null){url='javascript:;';target='';} return['
      • ',d.Caption,'
      • '].join('');} this.getChapterHtml=function() -{var html=[];html.push('


        .

        ');html.push('

        , :

        ');html.push('
          ');for(var di in underground.knownDungeons) +{var html=[];html.push('


          Добро пожаловать в ресурс о Подземельях Бойцовского Клуба.

          ');html.push('

          Пожалуйста, выберите одно из подземелий:

          ');html.push('
            ');for(var di in underground.knownDungeons) {var d=underground.knownDungeons[di];if(!d.IsDungeon)continue;html.push(this.getMenuItemHtml(d,di,'underground.showDungeonPopup','underground.openDungeon'));} -html.push('
          ');html.push('

          :

          ');html.push('
            ');for(var di in underground.knownDungeons) +html.push('
          ');html.push('

          Одно из сопутствующих мест:

          ');html.push('
            ');for(var di in underground.knownDungeons) {var d=underground.knownDungeons[di];if(d.IsDungeon)continue;html.push(this.getMenuItemHtml(d,di,'underground.showDungeonPopup','underground.openDungeon'));} -html.push('
          ');html.push('

          :

          ');html.push('
            ');for(var di in underground.resources) +html.push('
          ');html.push('

          Или один из дополнительных ресурсов:

          ');html.push('
            ');for(var di in underground.resources) {var d=underground.resources[di];html.push(this.getMenuItemHtml(d,di,'underground.showResourcePopup','underground.openResource'));} -html.push('
          ');html.push('

          :

          ');html.push('
            ');for(var di in underground.externals) +html.push('
          ');html.push('

          Также рекомендуем:

          ');html.push('
            ');for(var di in underground.externals) {var d=underground.externals[di];html.push(this.getMenuItemHtml(d,di,'underground.showExternalPopup','javascript:;',d.Url));} html.push('
           
          ');return html.join('');}} function DiggerConst() -{this.baseConstructor=CustomResource;this.baseConstructor();this.Description=[' , , ?',', . , .',', , , .'];this.Name='diggerconst';this.Caption=' ';this.tabIndex=0;this.imagesToBePreloaded=[];this.divId='diggerConstructorAll';this.tabsId='diggerConstructorTabs';this.knapsackId='diggerConstructorKnapsack';this.recipesId='diggerConstructorRecipes';this.allRecipes1Id='diggerConstructorAllRecipes1';this.allRecipesView1Id='diggerConstructorAllRecipesView1';this.allRecipesItem1Id='diggerConstructorAllRecipesItem1';this.allRecipes2Id='diggerConstructorAllRecipes2';this.allRecipesView2Id='diggerConstructorAllRecipesView2';this.allRecipesItem2Id='diggerConstructorAllRecipesItem2';this.allItemsId='diggerConstructorAllItems';this.allItemsViewId='diggerConstructorAllItemsView';this.allItemsItemId='diggerConstructorAllItemsItem';this.basketId='diggerConstructorBasket';this.basketItemsViewId='diggerConstructorBasketItemsView';this.basketSummaryId='diggerConstructorBasketSummaryId';this.tabIds=[this.knapsackId,this.recipesId,this.allRecipes1Id,this.allRecipes2Id,this.allItemsId,this.basketId];this.itemViewIds=[null,null,this.allRecipesItem1Id,this.allRecipesItem2Id,this.allItemsItemId,null];this.knapsackViewId='diggerConstructorKnapsackView';this.knapsackImportDialogId='diggerConstructorKnapsackImportDialog';this.knapsackImportDialogTextId='diggerConstructorKnapsackImportDialogText';this.knapsackImportDialogLabelId='diggerConstructorKnapsackImportDialogLabel';this.knapsackAddIngrDialogId='diggerConstructorKnapsackAddIngrDialogId';this.knapsackAddIngrDialogLabelId='diggerConstructorKnapsackAddIngrDialogLabelId';this.knapsackAddIngrDialogIngrId='diggerConstructorKnapsackAddIngrDialogIngrId';this.knapsackAddIngrDialogCountId='diggerConstructorKnapsackAddIngrDialogCountId';this.knapsackTableId='diggerConstructorKnapsackTable';this.availIngrId='diggerConstructor_availIngr';this.availRecipesId='diggerConstructor_availRecipes';this.chosenIngrId='diggerConstructor_chosenIngr';this.chosenRecipesId='diggerConstructor_chosenRecipes';this.isChest=false;this.toInvPhrase=' ';this.wearPhrase=' ';this.reCount=/^\(X([0-9]+)\)/;this.knapsack={};this.items={};this.components={};this.availi={};this.availr=[];this.choseni={};this.chosenr=[];this.recipes=[];this.basket=[];this.loadCostructorData=function(d) +{this.baseConstructor=CustomResource;this.baseConstructor();this.Description=['Устали рыться в пергаментах с рецептами, постоянно путаетесь в мешочках с ингредиентами, потеряли ступку с колбами?','Хм, что ж. В помощь юному алхимику подготовлен удобный ресурс, с полной базой рецептов и предметов.','Завтра, включив компьютер, вы будете точно знать, что еще необходимо собрать.'];this.Name='diggerconst';this.Caption='Конструктор диггера';this.tabIndex=0;this.imagesToBePreloaded=[];this.divId='diggerConstructorAll';this.tabsId='diggerConstructorTabs';this.knapsackId='diggerConstructorKnapsack';this.recipesId='diggerConstructorRecipes';this.allRecipes1Id='diggerConstructorAllRecipes1';this.allRecipesView1Id='diggerConstructorAllRecipesView1';this.allRecipesItem1Id='diggerConstructorAllRecipesItem1';this.allRecipes2Id='diggerConstructorAllRecipes2';this.allRecipesView2Id='diggerConstructorAllRecipesView2';this.allRecipesItem2Id='diggerConstructorAllRecipesItem2';this.allItemsId='diggerConstructorAllItems';this.allItemsViewId='diggerConstructorAllItemsView';this.allItemsItemId='diggerConstructorAllItemsItem';this.basketId='diggerConstructorBasket';this.basketItemsViewId='diggerConstructorBasketItemsView';this.basketSummaryId='diggerConstructorBasketSummaryId';this.tabIds=[this.knapsackId,this.recipesId,this.allRecipes1Id,this.allRecipes2Id,this.allItemsId,this.basketId];this.itemViewIds=[null,null,this.allRecipesItem1Id,this.allRecipesItem2Id,this.allItemsItemId,null];this.knapsackViewId='diggerConstructorKnapsackView';this.knapsackImportDialogId='diggerConstructorKnapsackImportDialog';this.knapsackImportDialogTextId='diggerConstructorKnapsackImportDialogText';this.knapsackImportDialogLabelId='diggerConstructorKnapsackImportDialogLabel';this.knapsackAddIngrDialogId='diggerConstructorKnapsackAddIngrDialogId';this.knapsackAddIngrDialogLabelId='diggerConstructorKnapsackAddIngrDialogLabelId';this.knapsackAddIngrDialogIngrId='diggerConstructorKnapsackAddIngrDialogIngrId';this.knapsackAddIngrDialogCountId='diggerConstructorKnapsackAddIngrDialogCountId';this.knapsackTableId='diggerConstructorKnapsackTable';this.availIngrId='diggerConstructor_availIngr';this.availRecipesId='diggerConstructor_availRecipes';this.chosenIngrId='diggerConstructor_chosenIngr';this.chosenRecipesId='diggerConstructor_chosenRecipes';this.isChest=false;this.toInvPhrase='В инвентарь ';this.wearPhrase='надеть ';this.reCount=/^\(X([0-9]+)\)/;this.knapsack={};this.items={};this.components={};this.availi={};this.availr=[];this.choseni={};this.chosenr=[];this.recipes=[];this.basket=[];this.loadCostructorData=function(d) {this.data=d;this.collectDiggerItems();} this.collectDiggerItems=function() {for(var cati=this.data.Categories.length-1;cati>=0;cati--) @@ -510,13 +510,13 @@ html.push('>');html.push(caption);html.push('');return html.join('');} this.loadKnapsack=function(isChest) -{this.isChest=isChest;document.getElementById(this.knapsackImportDialogLabelId).innerHTML=isChest?'':'';document.getElementById(this.knapsackImportDialogTextId).value='';document.getElementById(this.knapsackAddIngrDialogId).style.visibility='hidden';document.getElementById(this.knapsackImportDialogId).style.visibility='';} +{this.isChest=isChest;document.getElementById(this.knapsackImportDialogLabelId).innerHTML=isChest?'сундука':'рюкзака';document.getElementById(this.knapsackImportDialogTextId).value='';document.getElementById(this.knapsackAddIngrDialogId).style.visibility='hidden';document.getElementById(this.knapsackImportDialogId).style.visibility='';} this.loadKnapsackCancel=function() {document.getElementById(this.knapsackImportDialogTextId).value='';document.getElementById(this.knapsackImportDialogId).style.visibility='hidden';} this.loadKnapsackOK=function() {this.parseKnapsackFor(this.isChest,document.getElementById(this.knapsackImportDialogTextId).value);this.loadKnapsackCancel();} this.addToKnapsack=function(isChest) -{this.isChest=isChest;document.getElementById(this.knapsackAddIngrDialogLabelId).innerHTML=isChest?'':'';document.getElementById(this.knapsackAddIngrDialogCountId).value='1';document.getElementById(this.knapsackImportDialogId).style.visibility='hidden';document.getElementById(this.knapsackAddIngrDialogId).style.visibility='';} +{this.isChest=isChest;document.getElementById(this.knapsackAddIngrDialogLabelId).innerHTML=isChest?'сундук':'рюкзак';document.getElementById(this.knapsackAddIngrDialogCountId).value='1';document.getElementById(this.knapsackImportDialogId).style.visibility='hidden';document.getElementById(this.knapsackAddIngrDialogId).style.visibility='';} this.addKnapsackOK=function() {var so=document.getElementById(this.knapsackAddIngrDialogIngrId);var cov=document.getElementById(this.knapsackAddIngrDialogCountId).value;if(so.selectedIndex>=0&&!isNaN(cov)&&parseInt(cov)>0) {this.addIngr(this.isChest,so.options[so.selectedIndex].value,parseInt(cov));} @@ -524,7 +524,7 @@ this.addKnapsackCancel();} this.addKnapsackCancel=function() {document.getElementById(this.knapsackAddIngrDialogId).style.visibility='hidden';} this.getDiggerTabsHtml=function() -{var html=[];html.push('
            ');html.push(this.getDiggerTabHtml(' ',0));html.push(this.getDiggerTabHtml(' ',1));html.push(this.getDiggerTabHtml(' ',2));html.push(this.getDiggerTabHtml(' ',3));html.push(this.getDiggerTabHtml(' ',4));html.push(this.getDiggerTabHtml('',5));html.push('
          ');return html.join('');} +{var html=[];html.push('
            ');html.push(this.getDiggerTabHtml('Ваш инвентарь',0));html.push(this.getDiggerTabHtml('Подбор рецептов',1));html.push(this.getDiggerTabHtml('Рецепты по месту сбора',2));html.push(this.getDiggerTabHtml('Рецепты по категории предметов',3));html.push(this.getDiggerTabHtml('Все предметы',4));html.push(this.getDiggerTabHtml('Корзина',5));html.push('
          ');return html.join('');} this.findDiggerItem=function(id) {return this.items[id];} this.cleanKnapsackFor=function(isChest,refresh) @@ -565,24 +565,24 @@ this.findRecipePlace=function(name) return null;} this.getItemRecipeHtml=function(recipe) {var html=[];var place=this.findRecipePlace(recipe.PlaceName);if(place==null)return'bad place';var arp=recipe.RecipeParts;html.push('
          ');html.push(place.Caption);html.push('');if(recipe.Price>0) -{html.push('
          ');html.push(' : ');html.push(recipe.Price);html.push(' .
          ');} +{html.push('
          ');html.push('Стоимость сборки: ');html.push(recipe.Price);html.push(' кр.
          ');} for(var i=0;i');html.push(mater.Caption);html.push(': ');html.push(rp.Count);html.push('.');} +{var rp=arp[i];var mater=this.findDiggerItem(rp.Item);html.push('
          ');html.push(mater.Caption);html.push(': ');html.push(rp.Count);html.push('шт.
          ');} html.push('
          ');return html.join('');} this.getItemDescHtml=function(name) {var item=this.findDiggerItem(name);var html=[];var img=[item.Category.ImageBasePath,item.Name,'.gif'].join('');html.push('
          ');html.push(item.Caption);if(item.Binding>0) {html.push(' ');} if(item.IsGift) -{html.push(' ');} +{html.push(' ');} html.push('
          ');html.push('
          ');html.push('');html.push(item.Description.join(item.NewLineToBR?'
          ':''));html.push('
          ');if(('Recipes'in item)&&(item.Recipes.length>0)) {html.push('
          ');for(var ri in item.Recipes) {html.push(this.getItemRecipeHtml(item.Recipes[ri]));} html.push('
          ');} if('usedIn'in item) {html.push('');for(var ui in item.usedIn) -{var uitem=this.findDiggerItem(ui);var place=this.findRecipePlace(item.usedIn[ui].recipe.PlaceName);html.push('');} +{var uitem=this.findDiggerItem(ui);var place=this.findRecipePlace(item.usedIn[ui].recipe.PlaceName);html.push('');} html.push('
          : ');html.push(uitem.Caption);html.push(' ');html.push(item.usedIn[ui].count);html.push('., ');if(place==null)html.push('bad place');else html.push(place.Caption);html.push('.
          Используется для создания: ');html.push(uitem.Caption);html.push(' в количестве ');html.push(item.usedIn[ui].count);html.push('шт., в ');if(place==null)html.push('bad place');else html.push(place.Caption);html.push('.
          ');} return html.join('');} this.showItemInView=function(name) @@ -591,13 +591,13 @@ this.showItemPopup=function(name) {var html=[];html.push('
          ');html.push(this.getItemDescHtml(name));html.push('
          ');showPopup(html.join(''));} this.getKnapsackTableHtml=function() {var materCount=0;var html=[];html.push('');for(var materi in this.knapsack) -{var materd=this.knapsack[materi];var matern=materd.name;var mater=this.findDiggerItem(matern);html.push('');materCount++;} if(materCount==0) -{html.push('');} +{html.push('');} html.push('
          ');html.push(mater.Caption);html.push(': ');html.push(materd.total);html.push('.
          : ');html.push(materd.knapsack);html.push('.');html.push(' +');if(materd.knapsack>0) -{html.push(' -');} -html.push(' : ');html.push(materd.chest);html.push('.');html.push(' +');if(materd.chest>0) -{html.push(' -');} +{var materd=this.knapsack[materi];var matern=materd.name;var mater=this.findDiggerItem(matern);html.push('
          ');html.push(mater.Caption);html.push('Всего: ');html.push(materd.total);html.push('шт.
          В рюкзаке: ');html.push(materd.knapsack);html.push('шт.');html.push(' +');if(materd.knapsack>0) +{html.push(' -');} +html.push('В сундуке: ');html.push(materd.chest);html.push('шт.');html.push(' +');if(materd.chest>0) +{html.push(' -');} html.push('
          .
          Инвентарь не содержит ингредиентов и других компонентов.
          ');return html.join('');} this.getComponentOptions=function() {var html=[];for(var cati=0;cati0) {html.push('');html.push(chtml.join(''));html.push('');}} return html.join('');} this.getKnapsackTabHtml=function() -{var html=[];html.push('
          ');html.push('');html.push('');html.push('
          ');html.push('
          ');html.push(this.getKnapsackTableHtml());html.push('
          ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push('
          ');return html.join('');} +{var html=[];html.push('
          ');html.push('');html.push('');html.push('
          ');html.push('
          ');html.push(this.getKnapsackTableHtml());html.push('
          ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push(' ');html.push('
          ');return html.join('');} this.refreshRecipesTab=function() -{document.getElementById(this.availIngrId).innerHTML=this.getIngrTable(this.availi,' ');document.getElementById(this.availRecipesId).innerHTML=this.getRecipeTable(this.availr,true,' ');document.getElementById(this.chosenIngrId).innerHTML=this.getIngrTable(this.choseni,' ');document.getElementById(this.chosenRecipesId).innerHTML=this.getRecipeTable(this.chosenr,false,' ');} +{document.getElementById(this.availIngrId).innerHTML=this.getIngrTable(this.availi,'Доступные компоненты');document.getElementById(this.availRecipesId).innerHTML=this.getRecipeTable(this.availr,true,'Доступные рецепты');document.getElementById(this.chosenIngrId).innerHTML=this.getIngrTable(this.choseni,'Использованные компоненты');document.getElementById(this.chosenRecipesId).innerHTML=this.getRecipeTable(this.chosenr,false,'Выбранные рецепты');} this.getRecipesTabHtml=function() -{var html=[];html.push('');return html.join('');} +{var html=[];html.push('');return html.join('');} this.getIngrTable=function(va,title) {var html=[];var count=0;html.push('');if(title!=null) {html.push('');} for(var n in va) -{html.push('');html.push(mater.Caption);html.push('');html.push(va[n]);html.push('.');count++;} +{html.push('');html.push(mater.Caption);html.push('');html.push(va[n]);html.push('шт.');count++;} if(count==0) -{html.push('');} +{html.push('');} html.push('
          ');html.push(title);html.push('
          .
          Нет ингредиентов или других компонентов.
          ');return html.join('');} this.getRecipeTable=function(va,additive,title) {var html=[];var count=0;html.push('');if(title!=null) @@ -628,19 +628,19 @@ html.push('>');html.push(title);html.push('');} for(var n in va) {html.push('');if(place==null)html.push('bad place');else html.push(place.Caption);html.push(': ');html.push(mater.Caption);html.push('');if(additive!=null) {if(additive==false||additive==true||additive=='4basket') -{html.push('');html.push((rd.count<65535)?rd.count:'?');html.push('.');} +{html.push('');html.push((rd.count<65535)?rd.count:'?');html.push('шт.');} html.push('');} html.push('');count++;} if(count==0) -{html.push('');} +{html.push('');} html.push('
          ');if(additive=='2basket') -{html.push('');} +{html.push('Добавить');} else if(additive=='4basket') -{html.push('');} +{html.push('Убрать');} else if(additive==true) -{html.push('');} +{html.push('Добавить');} else -{html.push('');} +{html.push('Убрать');} html.push('
          .
          Нет рецептов.
          ');return html.join('');} this.getSpliceArray=function(a,index) {var r=[];for(var i=0;i
        ');html.push('
        Выберите предмет для просмотра.
        ');html.push('
        ');return html.join('');} this.getItemTable=function(va,title,options) {var html=[];var count=0;html.push('');if(title!=null) {html.push('');} for(var n in va) {html.push('');html.push(mater.Caption);html.push('');if(options&&options.action=='2basket') -{html.push('');} +{html.push('');} html.push('');count++;} if(count==0) -{html.push('');} +{html.push('');} html.push('
        Добавить
        .
        Нет предметов.
        ');return html.join('');} this.openRecipesOfPlace=function(index) {var va=[];var place=this.data.RecipePlaces[index];var placeName=place.Name;for(var i in this.recipes) @@ -698,8 +698,8 @@ this.getAllRecipes2TabHtml=function() {var html=[];html.push('');return html.join('');} +html.push(this.allRecipesView2Id);html.push('">Выберите категорию для просмотра.');html.push('');html.push('
        Выберите предмет для просмотра.
        ');html.push('');return html.join('');} this.openRecipesOfCategory=function(index) {var va=[];var cat=this.data.Categories[index];for(var i in this.items) {var itm=this.items[i];if(itm.Category==cat&&itm.Recipes.length>0) @@ -711,8 +711,8 @@ this.getAllItemsTabHtml=function() {var html=[];html.push('');return html.join('');} +html.push(this.allItemsViewId);html.push('">Выберите категорию для просмотра.');html.push('');html.push('
        Выберите предмет для просмотра.
        ');html.push('');return html.join('');} this.openItemsOfCategory=function(index) {var cat=this.data.Categories[index];var html=[];var title=['
        ',cat.Caption,'
        '];if(cat.Description.length>0) {title.push('
        ');title.push(cat.Description.join(cat.NewLineToBR?'
        ':''));title.push('
        ');} @@ -736,15 +736,15 @@ for(var j in rps) {ingr[idef.name].count+=idef.count;} else {ingr[idef.name]=idef;}}} -html.push('');html.push('');var empty=true;if(price>0) -{html.push('');empty=false;} +html.push('
        ');html.push('');html.push(price);html.push(' .
        ');html.push('');var empty=true;if(price>0) +{html.push('');empty=false;} for(var i in ingr) -{var idef=ingr[i];html.push('');empty=false;} +{var idef=ingr[i];html.push('');empty=false;} if(empty) -{html.push('');empty=false;} +{html.push('');empty=false;} html.push('
        КомпонентКоличество
        Стоимость сборки');html.push('');html.push(price);html.push(' кр.
        ');html.push(idef.item.Caption);html.push('');html.push(idef.count);html.push(' .
        ');html.push(idef.item.Caption);html.push('');html.push(idef.count);html.push(' шт.
        ');html.push(' .');html.push('
        ');html.push('Ничего не требуется.');html.push('
        ');return html.join('');} this.refreshBasketTab=function() -{document.getElementById(this.basketItemsViewId).innerHTML=this.getRecipeTable(this.basket,'4basket','');document.getElementById(this.basketSummaryId).innerHTML=this.getBasketSummary();} +{document.getElementById(this.basketItemsViewId).innerHTML=this.getRecipeTable(this.basket,'4basket','Корзина');document.getElementById(this.basketSummaryId).innerHTML=this.getBasketSummary();} this.addRecipeToBasket=function(placeName,itemName) {var itm=this.items[itemName];if(!('Recipes'in itm))return;for(var rn in itm.Recipes) {var recipe=itm.Recipes[rn];if(recipe.PlaceName==placeName) @@ -761,12 +761,12 @@ this.addItemToBasket=function(itemName) this.refreshBasketTab();} this.getBasketTabHtml=function() {var html=[];html.push('');return html.join('');} this.getChapterHtml=function() -{var html=[];html.push('
        ');html.push('
        ');html.push(this.getDiggerTabsHtml());html.push('
        ');html.push('
        ');html.push(this.getKnapsackTabHtml());html.push(this.getRecipesTabHtml());html.push(this.getAllRecipes1TabHtml());html.push(this.getAllRecipes2TabHtml());html.push(this.getAllItemsTabHtml());html.push(this.getBasketTabHtml());html.push('
        ');return html.join('');}} +{var html=[];html.push('
        Конструктор диггера
        ');html.push('
        ');html.push(this.getDiggerTabsHtml());html.push('
        ');html.push('
        ');html.push(this.getKnapsackTabHtml());html.push(this.getRecipesTabHtml());html.push(this.getAllRecipes1TabHtml());html.push(this.getAllRecipes2TabHtml());html.push(this.getAllItemsTabHtml());html.push(this.getBasketTabHtml());html.push('
        ');return html.join('');}} function Underground() -{this.offline=false;this.titleSuffix=' - '+document.title;this.knownChapters={};this.welcomeDungeon=new WelcomeDungeon();this.activeDungeon=this.welcomeDungeon;this.diggerConstructor=new DiggerConst();this.resources=[this.diggerConstructor];this.externals=[new ExternalResource('https://tarmans.kombats.ru/forum/index.php?showtopic=9159',' ',[' - . , , , . , , , , . - .',' - , , . !'],true),new ExternalResource('https://demonscity.combats.ru/forum.pl?id=1172503495&n=sales',' Ҹ ',[' . , , ? , , , .',' ? , . , , , , .'],true)];this.loadedDungeons={};this.loadedScripts={};this.objects={};this.mobs={};this.imagesToBePreloaded=[];this.preloader=null;this.decoratedOpacityStyle='opacity: 0.3; -moz-opacity: 0.3; KhtmlOpacity: 0.3;filter:alpha(opacity = 30, style = 4);';this.activeChapterHeader=null;this.pngCls=(msie&&!msie7)?'objectImage':'';this.pngClsAttr=(msie&&!msie7)?' class="objectImage"':'';this.settings={cellWidth:40,cellHeight:40,cellLocationShift:0,cellSizeShift:msie?(msie7?4:0):4,monsterPositions:[4,21,12],jsBase:'/head/?r=',mobImagesUrl:'/i/cache/?r=ugmob/',objectImagesUrl:'/i/cache/?r=ugobj/',blankImageUrl:'/i/cache/?r=blank.gif',cellMarkImageUrl:'/i/cache/?r=ugetc/cellmark.gif',compassLocation:'/i/cache/?r=ugetc/compass/',loadingImageUrl:'/i/cache/?r=loading.gif',look:0,rotation:0,zoom:100,highlightObjectImage:'entrancepoint_green1.gif',mapsNavDisplay:'none',lookTexts:['','','','',''],compass:['','compas_N','compas_O','compas_S','compas_W'],levelColors:['Red','Green','SpringGreen','Gold','Magenta','RoyalBlue','Yellow','GreenYellow','DeepPink','DeepSkyBlue','Orange','DarkTurquoise','LawnGreen','Violet','DodgerBlue'],chapterHeaderPlace:'/i/cache/?r=ugetc/',chapterHeaders:{welcome:{name:'welcome',tw:286,th:124,rw:289,rh:180},novice:{name:'novice',tw:261,th:72,rw:367,rh:180},capital:{name:'capital',tw:278,th:111,rw:299,rh:180},angel:{name:'angels',tw:165,th:79,rw:284,rh:180},sand:{name:'sand',tw:179,th:100,rw:277,rh:180},emerald:{name:'emeralds',tw:287,th:118,rw:312,rh:180},demons:{name:'demons',tw:217,th:68,rw:302,rh:180},demons:{name:'demons',tw:217,th:68,rw:302,rh:180},altar:{name:'bloodaltar',tw:153,th:128,rw:263,rh:180},bookshop:{name:'bookshop',tw:180,th:111,rw:302,rh:180},diggerconst:{name:'constructor',tw:247,th:130,rw:307,rh:180},sentinel:null},centinel:'this is last setting always!'};this.setHash=function() +{this.offline=false;this.titleSuffix=' - '+document.title;this.knownChapters={};this.welcomeDungeon=new WelcomeDungeon();this.activeDungeon=this.welcomeDungeon;this.diggerConstructor=new DiggerConst();this.resources=[this.diggerConstructor];this.externals=[new ExternalResource('https://tarmans.kombats.ru/forum/index.php?showtopic=9159','Букмекерская контора Хранителей Азарта Армады',['Существует множество разнообразных видов прогноза - от прогноза погоды до систем расчета поведения групп людей в определенных ситуациях. Но, пожалуй, самой популярной темой для прогнозирования всегда был спорт и все, что с ним связано. Следует признать, что умением прогнозировать правильно обладают далеко не все, но те, кто в этом силен, легко могут существенно увеличить свой капитал. А помогут им в этом Хранители Азарта Армады - они знают о прогнозировании и о спорте все.','Букмекерская контора Армады предлагает Вам возможность сделать ставки на все самые важные и интересные события в мире спорта - хоккей, теннис, футбол и многое другое. Играйте и выигрывай!'],true),new ExternalResource('https://demonscity.combats.ru/forum.pl?id=1172503495&n=sales','Гильдии Тёмных Земель',['В чужой монастырь со своим уставом не суйся. Так как заработать на Территории Тьмы, заработать кредиты, а не очередную травму? Маги, наемники, лекари и торговцы, специально для ващего сообщества были созданы Гильдии Темных Земель.','Что же вам дает вступление кроме ограничений? Поддержку Армады, слаженность команды и помощь в поиске клиентов. Торгуйте, лечите, колдуйте, калечьте по высоким ценам, демпингу не место во Тьме.'],true)];this.loadedDungeons={};this.loadedScripts={};this.objects={};this.mobs={};this.imagesToBePreloaded=[];this.preloader=null;this.decoratedOpacityStyle='opacity: 0.3; -moz-opacity: 0.3; KhtmlOpacity: 0.3;filter:alpha(opacity = 30, style = 4);';this.activeChapterHeader=null;this.pngCls=(msie&&!msie7)?'objectImage':'';this.pngClsAttr=(msie&&!msie7)?' class="objectImage"':'';this.settings={cellWidth:40,cellHeight:40,cellLocationShift:0,cellSizeShift:msie?(msie7?4:0):4,monsterPositions:[4,21,12],jsBase:'/head/?r=',mobImagesUrl:'/i/cache/?r=ugmob/',objectImagesUrl:'/i/cache/?r=ugobj/',blankImageUrl:'/i/cache/?r=blank.gif',cellMarkImageUrl:'/i/cache/?r=ugetc/cellmark.gif',compassLocation:'/i/cache/?r=ugetc/compass/',loadingImageUrl:'/i/cache/?r=loading.gif',look:0,rotation:0,zoom:100,highlightObjectImage:'entrancepoint_green1.gif',mapsNavDisplay:'none',lookTexts:['','Север','Восток','Юг','Запад'],compass:['','compas_N','compas_O','compas_S','compas_W'],levelColors:['Red','Green','SpringGreen','Gold','Magenta','RoyalBlue','Yellow','GreenYellow','DeepPink','DeepSkyBlue','Orange','DarkTurquoise','LawnGreen','Violet','DodgerBlue'],chapterHeaderPlace:'/i/cache/?r=ugetc/',chapterHeaders:{welcome:{name:'welcome',tw:286,th:124,rw:289,rh:180},novice:{name:'novice',tw:261,th:72,rw:367,rh:180},capital:{name:'capital',tw:278,th:111,rw:299,rh:180},angel:{name:'angels',tw:165,th:79,rw:284,rh:180},sand:{name:'sand',tw:179,th:100,rw:277,rh:180},emerald:{name:'emeralds',tw:287,th:118,rw:312,rh:180},demons:{name:'demons',tw:217,th:68,rw:302,rh:180},demons:{name:'demons',tw:217,th:68,rw:302,rh:180},altar:{name:'bloodaltar',tw:153,th:128,rw:263,rh:180},bookshop:{name:'bookshop',tw:180,th:111,rw:302,rh:180},diggerconst:{name:'constructor',tw:247,th:130,rw:307,rh:180},sentinel:null},centinel:'this is last setting always!'};this.setHash=function() {var hash='';hash+=this.activeDungeon.getHash();window.location.hash=hash;document.title=this.activeDungeon.Caption+this.titleSuffix;} this.renderChaptersCore=function() {this.imagesToBePreloaded=[];if(!(this.activeDungeon.Name in this.knownChapters)) @@ -803,7 +803,7 @@ this.addChapter=function(name,html) else {dsurface.innerHTML=dsurface.innerHTML+html;}} this.getUndergroundTabsHtml=function() -{var html=[];html.push('
      • ');html.push(' ');html.push('
      • ');html.push('');html.push(this.activeDungeon.getUndergroundTabsHtml());return html.join('');} +{var html=[];html.push('
      • ');html.push('Выбрать подземелье');html.push('
      • ');html.push('');html.push(this.activeDungeon.getUndergroundTabsHtml());return html.join('');} this.chooseDungeon=function() {this.activeDungeon=this.welcomeDungeon;this.renderChapters();} this.openDungeon=function(chapterIndex) @@ -849,11 +849,11 @@ this.getMobInfoHtml=function(mob,mi,count) {reward=ami.Reward;break;}}} html+='
        ';if(mi.Align!='0') {html+='';} -html+=''+mob.Caption+'';html+=' ['+mi.Level+']';if(count!=null)html+=', '+count+' .';if(reward>0)html+=', x'+reward+' . ';if(mi.HitPoints>0)html+=', '+mi.HitPoints+'HP';html+='
        ';html+='
        ';if(mi.HitPoints>0) +html+=''+mob.Caption+'';html+=' ['+mi.Level+']';if(count!=null)html+=', '+count+' шт.';if(reward>0)html+=', x'+reward+' ед. награды';if(mi.HitPoints>0)html+=', '+mi.HitPoints+'HP';html+='
        ';html+='
        ';if(mi.HitPoints>0) {html+='
        ';html+=''+mi.HitPoints+'';html+='
        ';} html+='';html+='
        ';html+='
        ';if(count!=null) -{html+=' '+count+' .

        ';} -if(mi.Strength!=0)html+=': '+mi.Strength+'
        ';if(mi.Dexterity!=0)html+=': '+mi.Dexterity+'
        ';if(mi.Intuition!=0)html+=': '+mi.Intuition+'
        ';if(mi.Endurance!=0)html+=': '+mi.Endurance+'
        ';if(mi.Intellect!=0)html+=': '+mi.Intellect+'
        ';if(mi.Wisdom!=0)html+=': '+mi.Wisdom+'
        ';html+='
        ';if(mi.Move)html+='
        , .
        ';html+='
        ';var desc=mi.Description;if(desc.length==0)desc=mob.Description;if(desc.length>0) +{html+='В количестве '+count+' шт.

        ';} +if(mi.Strength!=0)html+='Сила: '+mi.Strength+'
        ';if(mi.Dexterity!=0)html+='Ловкость: '+mi.Dexterity+'
        ';if(mi.Intuition!=0)html+='Интуиция: '+mi.Intuition+'
        ';if(mi.Endurance!=0)html+='Выносливость: '+mi.Endurance+'
        ';if(mi.Intellect!=0)html+='Интеллект: '+mi.Intellect+'
        ';if(mi.Wisdom!=0)html+='Мудрость: '+mi.Wisdom+'
        ';html+='
        ';if(mi.Move)html+='
        Монстр перемещается, его расположение заранее неизвестно.
        ';html+='';var desc=mi.Description;if(desc.length==0)desc=mob.Description;if(desc.length>0) {html+='
        '+desc.join('
        ')+'
        ';} return html;} this.getCellObjectInfoHtml=function(o,i) @@ -948,7 +948,7 @@ return false;} function loadScript(url,f) {if(underground.offline)alert('bad call from '+loadScript.caller);var f2=(f!=null)?(function(doc){eval(doc);f();}):null;var script=loadXMLDoc2(url,f2);if(f==null) {if(script=='') -{alert(' '+url);return;} +{alert('Ошибка загрузки скрипта '+url);return;} eval(script);}} function getMobPoint(index,totalCount) {var pt;var MonsterPositions=underground.settings.monsterPositions;switch(totalCount) @@ -966,9 +966,9 @@ if(mobCount==0) {return'';} var html=['
        ',legend,''];if(!checks) {html.push('
        ');} -html.push('');if(checks)html.push('');html.push('');for(var level=minlevel;level<=maxlevel;level++) +html.push('
        ');if(checks)html.push('');html.push('');for(var level=minlevel;level<=maxlevel;level++) {var color=underground.settings.levelColors[level];html=html.concat(['']);} -html.push('');for(var mobn in stats) +html.push('');for(var mobn in stats) {var mob=underground.mobs[mobn];var count=0;var gid=getStatisticsCheckId(checkId,mob.Name,0);html.push('');if(checks) {html=html.concat(['']);} var img=underground.getMobImage(mob);html.push('
        Название [',level,'] 
        Всего
        ');if(checks) @@ -1005,7 +1005,7 @@ function ui_changeDiggerTab(index) function ui_loadKnapsack(isChest) {underground.diggerConstructor.loadKnapsack(isChest);} function ui_clearKnapsack() -{if(!window.confirm(' ?'))return;underground.diggerConstructor.cleanKnapsackFor(false,false);underground.diggerConstructor.cleanKnapsackFor(true,true);} +{if(!window.confirm('Вы действительно хотите очистить инвентарь?'))return;underground.diggerConstructor.cleanKnapsackFor(false,false);underground.diggerConstructor.cleanKnapsackFor(true,true);} function ui_addToKnapsack(toChest) {underground.diggerConstructor.addToKnapsack(toChest);} function ui_loadKnapsackOK() diff --git a/help.php b/help.php index 238f38f4..971ec5b9 100644 --- a/help.php +++ b/help.php @@ -34,29 +34,29 @@ if($chat->str_count($_POST['msg'], 2) == '/[') { $_SESSION['help_step'] = $go_help[$_SESSION['help_step']][$_POST['msg']]; } else { js_help('----------------------------------------------------------------------------------------'); - js_help(', '); + js_help('Ошибка, раздел справки не найден'); } } if($chat->str_count($_POST['msg'],5)=='/help' || $_SESSION['help_step']==1) { - js_help(' !'); - js_help(' : ( . : "/[1]")'); - js_help('[1] '); - js_help('[2] '); - js_help('[3] '); + js_help('Добро пожаловать в раздел справки!'); + js_help('Вырерите раздел справки: (Отправить ответ в чат. Пример: "/[1]")'); + js_help('[1] Информация о пользовании чатом'); + js_help('[2] Нагрузка сервера'); + js_help('[3] Закрыть справку'); }elseif($_SESSION['help_step']==2) { - js_help(': '); - js_help(' - -, , . . . .'); - js_help(' : ( . : "/[1]")'); - js_help('[0] '); + js_help('Раздел: Информация о пользовании чатом'); + js_help('Чат - выглядит как обычная веб-страница, где можно прочесть последние несколько десятков фраз, написанные участниками чата и модераторами. Страница чата автоматически обновляется с заданной периодичностью. Участники чата которые нарушили правила общения могут получают молчанку и не могут общаться определенное время. Для более подробной информации выберите следующий раздел.'); + js_help('Вырерите раздел справки: (Отправить ответ в чат. Пример: "/[1]")'); + js_help('[0] Вернуться назад'); }elseif($_SESSION['help_step']==3) { $load = sys_getloadavg(); - js_help(': '.$load[0].' / '.$load[1].' / '.$load[2]); - js_help('[1] '); - js_help('[0] '); + js_help('Нагрузка: '.$load[0].' / '.$load[1].' / '.$load[2]); + js_help('[1] Обновить'); + js_help('[0] Вернуться назад'); } elseif($_SESSION['help_step']==4) { - js_help(' '); + js_help('Спасибо за использование подсказки'); $_SESSION['help_step'] = null; } js_help('----------------------------------------------------------------------------------------'); diff --git a/hmonitor.php b/hmonitor.php index bdd73823..a8da6947 100644 --- a/hmonitor.php +++ b/hmonitor.php @@ -15,21 +15,21 @@ $u = User::start(); - + - + Монитор поединков -
        : microLogin($u->info['id'], 1) ?>
        +
        Просматривает персонаж: microLogin($u->info['id'], 1) ?>

        - -

                               -

        +

                              Заявки + на хаотические поединки

        !'; + $users = 'Поле боя ждет своих героев!'; } else { $users = rtrim($users, ','); } // $html .= $i . '. ' . date('H:i', $pl['time']) . ' '; $html .= ' '; - $html .= ' (' . $users . ') (' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'] . ') : '; + $html .= ' (' . $users . ') (' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'] . ') Тип боя: '; if ($pl['noinc'] > 0) { - $html .= ''; + $html .= ''; } if ($pl['fastfight'] > 0) { - $html .= ''; + $html .= ''; } if ($pl['arand'] > 0) { - $html .= ''; + $html .= ''; } - $html .= ' ' . $u->timeOut( + $html .= 'Бой начнется через ' . $u->timeOut( $pl['time'] + $pl['time_start'] - time() - ) . ', ' . $u->timeOut($pl['timeout']) . ''; + ) . ', таймаут ' . $u->timeOut($pl['timeout']) . ''; if ($pl['priz'] > 0) { - $html .= '( )'; + $html .= '(Героическое Сражение)'; } $html .= '
        '; } if ($html == '') { - $html = '
        ( )
        '; + $html = '
        (Раздел пуст)
        '; } echo $html; $html = ''; ?> -

        +

        Текущие бои

          '; + $users .= '  против  '; } $users .= $usersa[$userst[$j]]; $users = rtrim($users, ','); @@ -112,19 +112,19 @@ while ($pl = mysql_fetch_array($sp)) { $html .= $i . '. ' . date('d.m.Y H:i', $pl['time_start']) . ' '; $html .= ' '; - $html .= ' (' . $users . ') : '; + $html .= ' (' . $users . ') Тип боя: '; if ($pl['noinc'] > 0) { - $html .= ''; + $html .= ''; } if ($pl['fastfight'] > 0) { - $html .= ''; + $html .= ''; } if ($pl['arand'] > 0) { - $html .= ''; + $html .= ''; } - $html .= ', ' . $u->timeOut($pl['timeout']) . ''; + $html .= ', таймаут ' . $u->timeOut($pl['timeout']) . ''; if ($pl['priz'] > 0) { - $html .= '( )'; + $html .= '(Героическое Сражение)'; } $html .= ' »» '; $html .= '
        '; @@ -132,12 +132,12 @@ while ($pl = mysql_fetch_array($sp)) { // } if ($html == '') { - $html = '
        ( )
        '; + $html = '
        (Раздел пуст)
        '; } echo $html; $html = ''; ?> -

        +

        Башня смерти

        ' . date( + //Ожидаем начала нового турнира + $html .= ' Начало турнира в "Башне Смерти" : ' . date( 'd.m.Y H:i', $pl['time_start'] - ) . ' ( ' . $u->timeOut( + ) . ' ( Начнется через ' . $u->timeOut( $pl['time_start'] - time() - ) . ') : ' . round( + ) . ') Призовой фонд на текущий момент: ' . round( ($pl['money'] / 100 * 85), 2 - ) . ' . : ' . $pl['users'] . ''; + ) . ' кр. Всего подано заявок: ' . $pl['users'] . ''; } else { - // + //Уже идет турнир $users = ''; $spu = mysql_query('SELECT `id` FROM `users` WHERE `inTurnir` = "' . $pl['id'] . '"'); while ($plu = mysql_fetch_array($spu)) { $users .= $u->microLogin($plu['id'], 1) . ','; } $users = rtrim($users, ','); - $html .= ' .'; - $html .= ' : ' . $users . ', : »»'; + $html .= ' Турнир Башни Смерти уже идет.'; + $html .= ' Участники: ' . $users . ', Лог турнира: »»'; } // $html .= '
        '; // } if ($html == '') { - $html = '
        ( )
        '; + $html = '
        (Раздел пуст)
        '; } echo $html; $html = ''; ?> -

        +

        Войны кланов

        ( )'; + $html = '
        (Раздел пуст)
        '; } echo $html; $html = ''; ?> -

        +

        История Великих сражений

        ( )'; + $html = '
        (Раздел пуст)
        '; } echo $html; $html = ''; @@ -198,7 +198,7 @@ $html = '';

        - v2.1 © , www.new-combats.com    
        + Бойцовский Клуб v2.1 © , «www.new-combats.com»™    

        diff --git a/html/buy.php b/html/buy.php index 1ca94034..0ec402c4 100644 --- a/html/buy.php +++ b/html/buy.php @@ -8,13 +8,13 @@ $pgd = mysql_fetch_array(mysql_query('SELECT * FROM `library_content` WHERE `id` if( isset($pgd['id']) ) { echo '
        '; if( $bp != 75 ) { - echo '

          »   '.$pgd['title'].'


        '; + echo '

        Услуги   »   '.$pgd['title'].'


        '; }else{ echo '

        '.$pgd['title'].'


        '; } echo $pgd['text']; echo '
        '; }else{ - echo ' !'; + echo 'Страница не надена!'; } ?> \ No newline at end of file diff --git a/html/class.upload.php b/html/class.upload.php index 191114e8..301267cc 100644 --- a/html/class.upload.php +++ b/html/class.upload.php @@ -3467,8 +3467,8 @@ class upload { $this->log .= '- file name body prepend : ' . $this->file_name_body_pre . '
        '; } if ($this->file_safe_name) { // formats the name - $this->file_dst_name_body = strtr($this->file_dst_name_body, ' ŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝ áâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy'); - $this->file_dst_name_body = strtr($this->file_dst_name_body, array('Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', 'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE', 'æ' => 'ae', 'µ' => 'u')); + $this->file_dst_name_body = strtr($this->file_dst_name_body, 'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝà áâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy'); + $this->file_dst_name_body = strtr($this->file_dst_name_body, array('Гћ' => 'TH', 'Гѕ' => 'th', 'Гђ' => 'DH', 'Г°' => 'dh', 'Гџ' => 'ss', 'Е’' => 'OE', 'Е“' => 'oe', 'Г†' => 'AE', 'Г¦' => 'ae', 'Вµ' => 'u')); $this->file_dst_name_body = preg_replace(array('/\s/', '/\.[\.]+/', '/[^\w_\.\-]/'), array('_', '.', ''), $this->file_dst_name_body); $this->log .= '- file name safe format
        '; } @@ -4058,7 +4058,7 @@ class upload { // unsharp mask if ($gd_version >= 2 && $this->image_unsharp && is_numeric($this->image_unsharp_amount) && is_numeric($this->image_unsharp_radius) && is_numeric($this->image_unsharp_threshold)) { // Unsharp Mask for PHP - version 2.1.1 - // Unsharp mask algorithm by Torstein Hønsi 2003-07. + // Unsharp mask algorithm by Torstein HГёnsi 2003-07. // Used with permission // Modified to support alpha transparency if ($this->image_unsharp_amount > 500) $this->image_unsharp_amount = 500; diff --git a/html/index.html b/html/index.html index afae9adc..e08f6603 100644 --- a/html/index.html +++ b/html/index.html @@ -1,8 +1,8 @@ - - + +Бойцовский Клуб @@ -326,8 +326,8 @@ html, body {

        -
        - +
        +
          @@ -369,12 +369,12 @@ html, body {
        - + Обновление информационной части проекта - ! - : , , , , - .

        - . + Уважаемые игроки! В настоящий момент мы работаем над установкой нового дизайна + для следующих разделов: главной страницы, библиотеки, рейтинга, услуг, а так-же событий.

        + Данные работы займут все выходные. 04.04.2014
        @@ -389,12 +389,12 @@ html, body {
        - + Обновление информационной части проекта - ! - : , , , , - .

        - . + Уважаемые игроки! В настоящий момент мы работаем над установкой нового дизайна + для следующих разделов: главной страницы, библиотеки, рейтинга, услуг, а так-же событий.

        + Данные работы займут все выходные. 04.04.2014
        @@ -409,12 +409,12 @@ html, body {
        - + Обновление информационной части проекта - ! - : , , , , - .

        - . + Уважаемые игроки! В настоящий момент мы работаем над установкой нового дизайна + для следующих разделов: главной страницы, библиотеки, рейтинга, услуг, а так-же событий.

        + Данные работы займут все выходные. 04.04.2014
        @@ -429,12 +429,12 @@ html, body {
        - + Обновление информационной части проекта - ! - : , , , , - .

        - . + Уважаемые игроки! В настоящий момент мы работаем над установкой нового дизайна + для следующих разделов: главной страницы, библиотеки, рейтинга, услуг, а так-же событий.

        + Данные работы займут все выходные. 04.04.2014
        diff --git a/html/index_img/�'��� ��_��_��-1.psd b/html/index_img/#Ufffd'#Ufffd#Ufffd#Ufffd #Ufffd#Ufffd_#Ufffd#Ufffd_#Ufffd#Ufffd-1.psd similarity index 100% rename from html/index_img/�'��� ��_��_��-1.psd rename to html/index_img/#Ufffd'#Ufffd#Ufffd#Ufffd #Ufffd#Ufffd_#Ufffd#Ufffd_#Ufffd#Ufffd-1.psd diff --git a/html/library.php b/html/library.php index 85cfd8ee..dbdb00d3 100644 --- a/html/library.php +++ b/html/library.php @@ -8,21 +8,21 @@ if( $url[2] == 'upload' && $u->info['admin'] > 0 ) { $html = ''; if( $u->info['molch1'] > time() ) { - $html = ' .'; + $html = 'Персонажи с молчанкой не могут публиковать изображения.'; }elseif( $u->info['banned'] > 0 ) { - $html = ' .'; + $html = 'Заблокированные персонажи не могут публиковать изображения.'; }elseif( $u->info['align'] == 2 ) { - $html = ' .'; + $html = 'Хаосники не могут публиковать изображения.'; }elseif( !isset($u->info['id']) ) { - $html = '

        '; + $html = '

        Загружать изображения могут только зарегистрированные пользователи
        '; }elseif( ($url[3] == 'me' || ($url[3] == 'all' && $u->info['admin'] > 0)) ) { if( $url[3] == 'me' ) { $sp = mysql_query('SELECT * FROM `upload_images` WHERE `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1000'); }elseif( $url[3] == 'all' ) { $sp = mysql_query('SELECT * FROM `upload_images` ORDER BY `id` DESC LIMIT 1000'); } - $html .= ' -
        - -
        '; + $html .= 'Левая Кнопка Мыши - Открыть изображение в новом окне
        + Правая Кнопка Маши - Удалить изображение с сервера
        '; $i = 0; $usrs = array(); while($pl = mysql_fetch_array($sp)) { @@ -33,16 +33,16 @@ if( $url[2] == 'upload' && $u->info['admin'] > 0 ) { if( !isset($usrs[$pl['uid']]) ) { $usrs[$pl['uid']] = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); if(!isset($usrs[$pl['uid']]['id'])) { - $usrs[$pl['uid']]['login'] = '! !'; + $usrs[$pl['uid']]['login'] = '!НЕТ АВТОРА!'; } $usrs[$pl['uid']] = $usrs[$pl['uid']]['login']; } - $html .= ''; + $html .= ''; } $i++; } if( $i == 0 ) { - $html .= ' '; + $html .= 'Нет загруженных изображений на сервере'; } }else{ @@ -51,7 +51,7 @@ if( $url[2] == 'upload' && $u->info['admin'] > 0 ) { $handle = new upload($_FILES['filename']); $count = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `uid` = "'.$u->info['id'].'" AND `time` > '.(time()-60).' LIMIT 1')); if( $count > 3 && $u->info['admin'] == 0 ) { - $html = ' '; + $html = 'Вы не можете так часто заливать изображения на сервер'; }elseif ($handle->uploaded) { if( $handle->file_src_name_ext == 'png' || $handle->file_src_name_ext == 'jpg' || $handle->file_src_name_ext == 'gif' ) { @@ -82,75 +82,75 @@ if( $url[2] == 'upload' && $u->info['admin'] > 0 ) { mysql_query('INSERT INTO `upload_images` (`uid`,`time`,`img`,`type`) VALUES ( "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($fname).'","'.mysql_real_escape_string($handle->file_src_name_ext).'" ) '); - $html .= ' https://new-combats.com/ui/'.$fname.'.'.$handle->file_src_name_ext.' .'; + $html .= 'Файл https://new-combats.com/ui/'.$fname.'.'.$handle->file_src_name_ext.' был успешно загружен.'; $handle->clean(); } else { - $html .= ' .'; + $html .= 'Возникла ошибка при добавлении файла.'; } }else{ - $html .= ' !'; + $html .= 'Возникла ошибка при добавлении файла!'; } } }else{ $html .= '
        - :
        - •
        - • 1000
        - • 800px 800px
        - • : JPEG , GIF , PNG
        + Правила публикации изображений:
        + • Изображение не должно нарушать правила проекта
        + • Изображение должно весить не более 1000 Кб
        + • Изображение не должно быть более 800px х 800px
        + • Форматы изображения: JPEG , GIF , PNG
        -
        '; +
        '; if( $u->info['admin'] > 0 ) { - $html .= '[ ] '; + $html .= '[ Все изображения ] '; } - $html .= '[ ]'; + $html .= '[ Мои изображения ]'; $html .= '
        '; } } - echo '

        '.$html.'
        '; + echo '

        Загрузка изображений

        '.$html.'
        '; }elseif( $url[2] == 'list' ) { $sp = mysql_query('SELECT * FROM `library_content` WHERE `delete` = 0 AND `moder` = 0 AND `uid` > 0 ORDER BY `id` ASC'); $html = ''; $i = 1; while($pl = mysql_fetch_array($sp)) { - $html .= '>> '.$pl['title'].'
        : '.$u->microLogin($pl['uid'],1).' / : '.date('d.m.Y',$pl['time']).'
        '; + $html .= '>> '.$pl['title'].'
        Автор: '.$u->microLogin($pl['uid'],1).' / Дата публикации: '.date('d.m.Y',$pl['time']).'
        '; $i++; } if( $html == '' ) { - $html = ' .
        -
        - https://new-combats.com/library/new/
        -
        - https://new-combats.com/library/public/'; + $html = 'В настоящий момент непроверенных статей нет.
        +
        Если Вы хотите написать свою статью - https://new-combats.com/library/new/
        +
        Более подробная информация - https://new-combats.com/library/public/'; } - echo '

        :

        '.$html.'
        '; + echo '

        Список непроверенных статей:

        '.$html.'
        '; }elseif( $url[2] == 'new' && !isset($u->info['id']) ) { - echo '
        .
        .
        '; + echo '
        Для публикации статьи Вы должны авторизироваться своим персонажем.
        Гостям данный раздел недоступен.
        '; }elseif( $url[2] == 'new' && isset($u->info['id']) ) { ?> -
        +
        Публикация статьи
        info['id'])) { - $_POST['lib_title'] = htmlspecialchars($_POST['lib_title'],NULL,'cp1251'); + $_POST['lib_title'] = htmlspecialchars($_POST['lib_title'],NULL); $mbpage_last = mysql_fetch_array(mysql_query('SELECT `time` FROM `library_content` WHERE `uid` = "'.$u->info['id'].'" ORDER BY `id` DESC LIMIT 1')); if( $u->info['molch1'] > time() ) { - echo ' .'; + echo 'Персонажи с молчанкой не могут публиковать статьи.'; }elseif( $u->info['banned'] > 0 ) { - echo ' .'; + echo 'Заблокированные персонажи не могут публиковать статьи.'; }elseif( $u->info['align'] == 2 ) { - echo ' .'; + echo 'Хаосники не могут публиковать статьи.'; }elseif( isset($mbpage_last['time']) && $mbpage_last['time'] > time() - 3600 && $u->info['admin'] == 0 ) { - echo ' .
        '.$u->timeOut(($mbpage_last['time']+3600-time())).'.'; + echo 'Нельзя публиковать статьи чаще одного раза в час.
        Вы можете опубликовать статью через '.$u->timeOut(($mbpage_last['time']+3600-time())).'.'; }elseif( isset($_POST['hide_id']) ) { $mbpage = mysql_fetch_array(mysql_query('SELECT * FROM `library_content` WHERE `url_name` = "'.mysql_real_escape_string($_POST['hide_id']).'" AND `delete` = "0" ORDER BY `id` DESC LIMIT 1')); if(isset($mbpage['id'])) { @@ -159,24 +159,24 @@ if(isset($_POST['save']) && isset($u->info['id'])) { $sid = $mbpage['id']; if( $sid > 0 ) { ?> - info['sex'] == 0 ) { echo ''; }else{ echo ''; } ?> info['login']?>, !
        + Уважаемinfo['sex'] == 0 ) { echo 'ый'; }else{ echo 'ая'; } ?> info['login']?>, благодарим Вас за дополнение статьи!

        - : ""
        - : https://new-combats.com/library// + Название статьи: ""
        + Ссылка для просмотра: https://new-combats.com/library//
        - + Мы ценим проделанную Вами работу и постараемся как можно скорее рассмотреть заявку на добавление данной статьи







        - ,
        - "new-combats". + , с уважением
        + Администрация Бойцовского Клуба "new-combats". , .'; + echo 'Произошла ошибка изменения статьи!
        Статья не найдена, либо у Вас нет прав для её изменения.'; } }else{ - echo ' .
        , .'; + echo 'Произошла ошибка изменения статьи.
        Статья не найдена, либо у Вас нет прав для её изменения.'; } }else{ $sid = 0; @@ -187,19 +187,19 @@ if(isset($_POST['save']) && isset($u->info['id'])) { if($sid > 0) { mysql_query('UPDATE `library_content` SET `url_name` = "id'.$sid.'" WHERE `id` = "'.$sid.'" LIMIT 1'); ?> - info['sex'] == 0 ) { echo ''; }else{ echo ''; } ?> info['login']?>, !
        + Уважаемinfo['sex'] == 0 ) { echo 'ый'; }else{ echo 'ая'; } ?> info['login']?>, благодарим Вас за добавление статьи!

        - : ""
        - : #
        - : https://new-combats.com/library/id/ + Название статьи: ""
        + Номер Вашей статьи: #
        + Ссылка для просмотра: https://new-combats.com/library/id/
        - + Мы ценим проделанную Вами работу и постараемся как можно скорее рассмотреть заявку на добавление данной статьи







        - ,
        - "new-combats". + , с уважением
        + Администрация Бойцовского Клуба "new-combats". !'; + echo 'Произошла ошибка добавления статьи.
        Обратитесь к Администрации!'; } } }else{ @@ -210,7 +210,7 @@ if(isset($_POST['save']) && isset($u->info['id'])) { }else{ unset($mbpage); echo '
        '; - echo ' . .'; + echo 'Данная статья не найдена. Либо у Вас нет правд для её редактирования.'; echo '
        '; } } @@ -220,12 +220,12 @@ if(isset($_POST['save']) && isset($u->info['id'])) { if( isset($mbpage['id']) ) { if( isset($_POST['save2']) ) { - // + //Изменения if( $u->info['admin'] > 0 ) { $red500 = false; if( isset($_POST['lib_urlname']) && $_POST['lib_urlname'] != '' && $_POST['lib_urlname'] != $mbpage['url_name'] ) { mysql_query('UPDATE `library_content` SET `delete` = "'.time().'" WHERE `url_name` = "'.$mbpage['url_name'].'" AND `id` != "'.$mbpage['id'].'"'); - $mbpage['url_name'] = htmlspecialchars($_POST['lib_urlname'],NULL,'cp1251'); + $mbpage['url_name'] = htmlspecialchars($_POST['lib_urlname'],NULL); mysql_query('UPDATE `library_content` SET `url_name` = "'.mysql_real_escape_string($mbpage['url_name']).'" WHERE `id` = "'.$mbpage['id'].'" LIMIT 1'); $red500 = true; } @@ -248,7 +248,7 @@ if( isset($mbpage['id']) ) { $mbpage['title'] = $_POST['lib_title']; $mbpage['text'] = $_POST['con_text']; $mbpage['time'] = time(); - mysql_query('UPDATE `library_content` SET `time` = "'.time().'",`title` = "'.mysql_real_escape_string(htmlspecialchars($mbpage['title'],NULL,'cp1251')).'",`text` = "'.mysql_real_escape_string($mbpage['text']).'" WHERE `id` = "'.$mbpage['id'].'" LIMIT 1'); + mysql_query('UPDATE `library_content` SET `time` = "'.time().'",`title` = "'.mysql_real_escape_string(htmlspecialchars($mbpage['title'],NULL)).'",`text` = "'.mysql_real_escape_string($mbpage['text']).'" WHERE `id` = "'.$mbpage['id'].'" LIMIT 1'); } } } @@ -262,7 +262,7 @@ if( isset($mbpage['id']) ) {
        - + - + @@ -335,21 +335,21 @@ if( isset($mbpage['id']) ) { } if( isset($pl['id']) ) { if($pl['moder'] == 0) { - echo '
        !
        '; + echo '
        Данная статья не прошла проверку и информация на ней не подтверждена!
        '; } echo '
        '.$pl['title'].'
        '.$pl['text'].'
        '; if($pl['uid'] > 0 || $u->info['admin'] > 0) { - echo '
          : '.date('d.m.Y',$pl['time']).'   /   : '.$u->microLogin($pl['uid'],1).''; + echo '
          Дата публицации: '.date('d.m.Y',$pl['time']).'   /   Автор: '.$u->microLogin($pl['uid'],1).''; if($pl['uid'] == $u->info['id'] || $u->info['admin'] > 0) { - echo '   /   '; + echo '   /   Изменить'; if( $u->info['admin'] > 0 ) { - echo '   /   '; + echo '   /   Удалить'; } } echo '
        '; } }else{ - echo '
        . , .
        '; + echo '
        Статья не найдена. Скорее всего она была удалена, либо еще не создана.
        '; } } ?> \ No newline at end of file diff --git a/html/m_top.php b/html/m_top.php index cbf1eeb1..bcc943bc 100644 --- a/html/m_top.php +++ b/html/m_top.php @@ -13,21 +13,21 @@ if ($url[2] == 'referal') { } if( $rz == 1 ) { - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг воинов'; }else{ - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг воинов'; } if( $rz == 2 ) { - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг рефералов'; }else{ - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг рефералов'; } if( $rz == 3 ) { - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг кланов'; }else{ - $lib['html'] .= ' '; + $lib['html'] .= 'Рейтинг кланов'; } diff --git a/html/top.php b/html/top.php index 8d1be177..5252d48f 100644 --- a/html/top.php +++ b/html/top.php @@ -8,16 +8,16 @@ if($url[2] == 'clans') { } ?> -

        +

        Рейтинг

        :Название статьи:
        :Проверенная статья: 0){ echo 'checked="checked"'; } ?> name="lib_prov" id="lib_prov" value="1" /> 0) { echo $u->microLogin($mbpage['moder'],1); @@ -297,19 +297,19 @@ if( isset($mbpage['id']) ) {
        - + - +
        :Дата публикации: info['admin'] > 0 || $u->info['id'] == $mbpage['uid']) { ?> - + - +
        :Автор: microLogin($mbpage['uid'],1)?>
        - + - + @@ -37,7 +37,7 @@ if($url[2] == 'clans') { }elseif( $rz == 3 ) { $sp = mysql_query('SELECT * FROM `clan` WHERE `exp` > 0 ORDER BY `exp` DESC LIMIT 100'); while($pl = mysql_fetch_array($sp)) { - $r .= ''; + $r .= ''; $i++; } }elseif( $rz == 2 ) { @@ -65,10 +65,10 @@ if($url[2] == 'clans') { $rk = array_keys($rf2); $i = 0; while( $i < count( $rk ) ) { - $r = ''.$r; + $r = ''.$r; $i++; } - $r .= ' : '.$mas.' .
        '; + $r .= 'Активных рефералов: '.$mas.' чел.
        '; } echo $r; ?> @@ -84,7 +84,7 @@ if($url[2] == 'clans') {
        рейтинг  
        '.$i.' . '.$pl['level'].' '.$pl['name'].''.$pl['exp'].'
        '.$i.' Ур. '.$pl['level'].' '.$pl['name'].''.$pl['exp'].'
        '.(count( $rk )-$i).''.$u->microLogin($rk[$i],1).''.$rf2[$rk[$i]].' ( '.$rf1[$rk[$i]].' . )
        '.(count( $rk )-$i).''.$u->microLogin($rk[$i],1).''.$rf2[$rk[$i]].' ( '.$rf1[$rk[$i]].' чел. )
        - . + Рейтинг постоянно изменяется.
        diff --git a/i/main.css b/i/main.css index 579da351..338a65f8 100644 --- a/i/main.css +++ b/i/main.css @@ -1,4 +1,4 @@ -@charset "windows-1251"; + BODY { FONT-SIZE: 10pt; FONT-FAMILY: Verdana, Arial, Helvetica, Tahoma, sans-serif diff --git a/i/move/design3.css b/i/move/design3.css index 6279f884..c786f9e9 100644 --- a/i/move/design3.css +++ b/i/move/design3.css @@ -1,4 +1,4 @@ -@charset "windows-1251"; + /* CSS Document */ body{margin:0px 1px 0px 1px;padding:0px 1px 0px 1px;background-color:#dedede;color:#000000;} .main_text{font-weight:bold;font-size:10px;text-decoration:none;color:#f0f0f0;cursor:hand;} diff --git a/img.new-combats.com/.htaccess b/img.new-combats.com/.htaccess deleted file mode 100644 index e69de29b..00000000 diff --git a/img.new-combats.com/.well-known/acme-challenge/k9tsmPGENSb8aDDacOv15HTUoF3r5nABtcqaNxDSLYw b/img.new-combats.com/.well-known/acme-challenge/k9tsmPGENSb8aDDacOv15HTUoF3r5nABtcqaNxDSLYw deleted file mode 100644 index 1da5c162..00000000 --- a/img.new-combats.com/.well-known/acme-challenge/k9tsmPGENSb8aDDacOv15HTUoF3r5nABtcqaNxDSLYw +++ /dev/null @@ -1 +0,0 @@ -k9tsmPGENSb8aDDacOv15HTUoF3r5nABtcqaNxDSLYw.NPfhE_fUIISYzIbXCndzqxcG9WEwkxBGsI7Usf8GGXQ \ No newline at end of file diff --git a/img.new-combats.com/chars/0/ekr.php b/img.new-combats.com/chars/0/ekr.php index 2283f11b..e4ca6b70 100644 --- a/img.new-combats.com/chars/0/ekr.php +++ b/img.new-combats.com/chars/0/ekr.php @@ -2,7 +2,7 @@ if(!isset($backdoor)) { define('GAME',true); - //10:05 ! 0.13 . ! + //10:05 Внимание! Вы успешно пополнили свой игровой счёт на 0.13 ЕКР. Приятной Вам игры! include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); @@ -30,15 +30,15 @@ if(!isset($backdoor)) { } if( $mnw != 0 && $mnw > $width ) { - self::$error = ' '.$mnw.' . ( '.$width.'x'.$height.')'; + self::$error = 'Минимальная ширина картинки '.$mnw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mxw != 0 && $mxw < $width ) { - self::$error = ' '.$mxw.' . ( '.$width.'x'.$height.')'; + self::$error = 'Максимальная ширина картинки '.$mxw.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mnh != 0 && $mnh > $height ) { - self::$error = ' '.$mnh.' . ( '.$width.'x'.$height.')'; + self::$error = 'Минимальная высота картинки '.$mnh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( $mxh != 0 && $mxh < $height ) { - self::$error = ' '.$mxh.' . ( '.$width.'x'.$height.')'; + self::$error = 'Максимальная высота картинки '.$mxh.' пикселей. (Размер этой картинки '.$width.'x'.$height.')'; }elseif( !is_dir( self::$save_path ) ) { - self::$error = ' !'; + self::$error = 'Ошибка на стороне сервера!'; }elseif (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) { if ( (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&& @@ -53,21 +53,21 @@ if(!isset($backdoor)) { $fn2 = $cnm; } if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) { - // , Rimage + // система изменения размера , требуется Rimage //Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2); - //@unlink(self::$save_path . $fn); // + //@unlink(self::$save_path . $fn); // удаление файла return array($fn2,$fn,self::$save_path . $fn); } else { - self::$error = ' '; + self::$error = 'Ошибка загрузки файла'; } } else { - self::$error = ' . : '.$exts.''; + self::$error = 'Неверный тип файла. Допустимые типы : '.$exts.''; } } else { - self::$error = ' . '.$max_mb.' '; + self::$error = 'Неверный размер файла. Максимальный размер файла '.$max_mb.' МБ'; } } else { - self::$error = ' '; + self::$error = 'Файл не найден'; } return false; } // end saveimg @@ -81,8 +81,8 @@ if(!isset($backdoor)) { $ball = 0+$ball[0]; } -$day1def = 50; // . . -$day2def = 5000 * ($u->info['level']-8); // . . +$day1def = 50; //сколько екр. в день можно менять на кр. +$day2def = 5000 * ($u->info['level']-8); //сколько кр. в день можно менять на екр. $day1 = $day1def; $day2 = $day2def; @@ -91,8 +91,8 @@ if( $day2 < 0 ) { $day2 = 0; } $timetoday = strtotime(date('d.m.Y')); // -$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); -$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); +$dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); +$dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; @@ -103,7 +103,7 @@ if($day1 < 0) { $day1 = 0; } if($day2 < 0) { $day2 = 0; } -$b1 = 0; // +$b1 = 0; //бонус накопительный $bt = mysql_fetch_array(mysql_query('SELECT * FROM `bank_table` ORDER BY `time` DESC LIMIT 1')); @@ -168,9 +168,9 @@ if(!isset($backdoor)) { if(isset($_POST['do']) && $_POST['do'] == 'newShadow') { $o = mysql_fetch_array(mysql_query('SELECT * FROM `_obraz` WHERE `uid` = "'.$u->info['id'].'" AND `good` = 0 AND `cancel` = 0 AND `img` = "'.mysql_real_escape_string($_POST['ffinput']).'" LIMIT 1')); if(!isset($o['id'])) { - $u->error = ' ! !'; + $u->error = 'Данный образ не найден! Возможно он уже был подтвержден!'; }elseif( $o['price'] > $u->bank['money2'] ) { - $u->error = ' '; + $u->error = 'На счету недостаточно ЕКР'; }else{ // $u->bank['money2'] -= $o['price']; @@ -178,13 +178,13 @@ if(!isset($backdoor)) { // mysql_query('UPDATE `_obraz` SET `good` = "'.time().'" WHERE `id` = "'.$o['id'].'" LIMIT 1'); if( $o['type'] == 1 || $o['type'] == 2 ) { - // + //Личный или Клановый copy('clan_prw/'.$o['img'],'../img.new-combats.com/i/obraz/'.$o['sex'].'/buy'.$o['id'].'.gif'); }elseif( $o['type'] == 3 ) { - // + //Питомец copy('clan_prw/'.$o['img'],'../img.new-combats.com/i/obraz/0/buy'.$o['id'].'.gif'); }elseif( $o['type'] == 5 ) { - // + //Смайлы copy('clan_prw/'.$o['img'],'../img.new-combats.com/i/smile/s'.$o['id'].'.gif'); } // @@ -202,45 +202,45 @@ if(!isset($backdoor)) { // $animal = 1; if( $o['type'] == 1 || $o['type'] == 2 ) { - // + //Личный и клановый mysql_query('INSERT INTO `obraz` ( `sex`,`uid`,`img`,`usr_add`,`clan` ) VALUES ( "'.$o['sex'].'","'.$o['uid1'].'","buy'.$o['id'].'.gif","'.$o['uid'].'","'.$o['clan'].'" )'); }elseif( $o['type'] == 3 ) { - // + //Питомца mysql_query('INSERT INTO `obraz` ( `uid`,`animal`,`img` ) VALUES ( "'.$u->info['id'].'","'.$animal.'","'.mysql_real_escape_string('buy'.$o['id'].'.gif').'" )'); }elseif( $o['type'] == 5 ) { - // + //Смайлик $u->info['add_smiles'] .= ',s'.$o['id'].''; $u->info['add_smiles'] = ltrim($u->info['add_smiles'],','); mysql_query('UPDATE `users` SET `add_smiles` = "'.$u->info['add_smiles'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); } // if( $o['type'] == 1 ) { - $u->error = ' ! , .'; + $u->error = 'Личный образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; }elseif( $o['type'] == 2 ) { - $u->error = ' ! , .'; + $u->error = 'Клановый образ успешно установлен! Можете выбрать его в инвентаре, в разделе Образ.'; }elseif( $o['type'] == 3 ) { - $u->error = ' ! , .'; + $u->error = 'Личный образ питомца успешно установлен! Можете выбрать его в инвентаре, в разделе Звери.'; }elseif( $o['type'] == 5 ) { - $u->error = ' ! . :s'.$o['id'].':'; + $u->error = 'Личный смайлик успешно установлен! Можете выбрать его в разделе Личные смайлики. Код смайлика :s'.$o['id'].':'; } } }elseif(isset($_FILES['img'])) { - // + //Личный образ if(date('m') == 12 || date('m') == 1) { $ekr = 5; }else{ $ekr = 5; } if( $u->bank['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow1_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow1').'.gif'; // @@ -267,14 +267,14 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img5'])) { - // + //Личный смайлик if(date('m') == 12 || date('m') == 1) { $ekr = 1.20; }else{ $ekr = 2.99; } if( $u->bank['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_smile_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#smile').'.gif'; // @@ -301,16 +301,16 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img2'])) { - // + //Клановый образ if(date('m') == 12 || date('m') == 1) { $ekr = 20; }else{ $ekr = 49.99; } if( $u->info['clan'] == 0 ) { - echo '{"err":" "}'; + echo '{"err":"Вы должны состоять в клане"}'; }elseif( $u->bank['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow2_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow2').'.gif'; // @@ -337,14 +337,14 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_FILES['img4'])) { - // + //Питомец образ if(date('m') == 12 || date('m') == 1) { $ekr = 2; }else{ $ekr = 4.99; } if( $u->bank['money2'] < $ekr ) { - echo '{"err":" "}'; + echo '{"err":"На счету недостаточно ЕКР"}'; }else{ $obraz = 'f_shadow3_'.$u->info['id'].'-'.md5((time()-rand(0,1000)).'#shadow3').'.gif'; // @@ -371,21 +371,21 @@ if(!isset($backdoor)) { } die(); }elseif(isset($_POST['kr001'])) { - // . + //Обмен екр на кр. $kr = round($_POST['kr001'],2); if( $c['crtoecr'] < 0.01 ) { - $u->error = ' .'; + $u->error = 'Сегодня обменник закрыт.'; }elseif( $day2 < 0.01 ) { - $u->error = ' , .'; + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; }elseif( $kr < round($c['crtoecr']/100,2) ) { - $u->error = ' '.round($c['crtoecr']/100,2).' .'; + $u->error = 'Минимальная сумма обмена '.round($c['crtoecr']/100,2).' КР.'; }elseif( $kr > $day2 ) { - $u->error = ' '.$day2.' .'; + $u->error = 'Вы можете обменять еще '.$day2.' КР сегодня.'; }elseif( $kr > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег для обмена.'; }else{ $ekr = round($kr / $c['crtoecr'],2); - $u->error = ' '.$kr.' '.$ekr.' .'; + $u->error = 'Вы успешно обменяли '.$kr.' КР на '.$ekr.' ЕКР.'; // $u->info['money'] -= $kr; $u->bank['money2'] += $ekr; @@ -393,31 +393,31 @@ if(!isset($backdoor)) { mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `bank` SET `money2` = "'.$u->bank['money2'].'" WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'"," ","'.$u->info['money'].'","'.$u->bank['money2'].'" + "'.$u->info['id'].'","'.time().'","'.round(-$kr,2).'","'.round($ekr,2).'","Обмен КР на ЕКР","'.$u->info['money'].'","'.$u->bank['money2'].'" )'); } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; $day1 = round($day1def+$dc1,2); $day2 = round($day2def+$dc2,2); }elseif(isset($_POST['ekr2'])) { - // . + //Обмен екр на кр. $ekr = round($_POST['ekr2'],2); if( $c['ecrtocr'] < 0.01 ) { - $u->error = ' .'; + $u->error = 'Сегодня обменник закрыт.'; }elseif( $day1 < 0.01 ) { - $u->error = ' , .'; + $u->error = 'Сегодня для вас обмен закрыт, приходите завтра.'; }elseif( $ekr < 0.01 ) { - $u->error = ' 0.01 .'; + $u->error = 'Минимальная сумма обмена 0.01 ЕКР.'; }elseif( $ekr > $day1 ) { - $u->error = ' '.$day1.' .'; + $u->error = 'Вы можете обменять еще '.$day1.' ЕКР сегодня.'; }elseif( $ekr > $u->bank['money2']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег для обмена.'; }else{ $kr = round($ekr * $c['ecrtocr'],2); - $u->error = ' '.$ekr.' '.$kr.' .'; + $u->error = 'Вы успешно обменяли '.$ekr.' ЕКР на '.$kr.' КР.'; // $u->info['money'] += $kr; $u->bank['money2'] -= $ekr; @@ -425,11 +425,11 @@ if(!isset($backdoor)) { mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `bank` SET `money2` = "'.$u->bank['money2'].'" WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('INSERT INTO `user_operation` ( `uid`,`time`,`money`,`money2`,`type`,`b1`,`b2` ) VALUES ( - "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'"," ","'.$u->info['money'].'","'.$u->bank['money2'].'" + "'.$u->info['id'].'","'.time().'","'.round($kr,2).'","'.round(-$ekr,2).'","Обмен ЕКР на КР","'.$u->info['money'].'","'.$u->bank['money2'].'" )'); } - $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); - $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = " " LIMIT 1')); + $dc1 = mysql_fetch_array(mysql_query('SELECT SUM(`money2`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен ЕКР на КР" LIMIT 1')); + $dc2 = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `user_operation` WHERE `time` >= "'.$timetoday.'" AND `uid` = "'.$u->info['id'].'" AND `type` = "Обмен КР на ЕКР" LIMIT 1')); $dc1 = $dc1[0]; $dc2 = $dc2[0]; $day1 = round($day1def+$dc1,2); @@ -439,7 +439,7 @@ if(!isset($backdoor)) { function en_ru($txt) { $g = false; $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9-- _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } @@ -447,7 +447,7 @@ if(!isset($backdoor)) { } // function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM޸'; + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; $r = false; $i = 0; while( $i != -1 ) { @@ -478,11 +478,11 @@ if(!isset($backdoor)) { function is_login($login) { $r = true; // - $login = htmlspecialchars($login,NULL,'cp1251'); + $login = htmlspecialchars($login,NULL); // $bad = array( - '' => 1, - '' => 1 + 'Мусорщик' => 1, + 'Мироздатель' => 1 ); // $login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); @@ -492,8 +492,8 @@ if(!isset($backdoor)) { $true = true; // /* - 2 16 , , , '_', '-' . - '_', '-' . + Логин может содержать от 2 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. */ // $login = str_replace(' ',' ',$login); @@ -514,7 +514,7 @@ if(!isset($backdoor)) { $true = false; }elseif( testBad($login) == true ) { $true = false; - }elseif( en_ru(str_replace('','',str_replace('','',$login))) == true ) { + }elseif( en_ru(str_replace('ё','е',str_replace('Ё','Е',$login))) == true ) { $true = false; } // @@ -532,11 +532,11 @@ if(!isset($backdoor)) { $ekr = 4.99; } if( $u->info['login'] == $_POST['login'] ) { - $u->error = ' ...'; + $u->error = 'Выберите другой логин...'; }elseif( $u->bank['money2'] < $ekr ) { - $u->error = ' .'; + $u->error = 'Недостаточно средств.'; }else{ - $login = htmlspecialchars($_POST['login'],NULL,'cp1251'); + $login = htmlspecialchars($_POST['login'],NULL); if( is_login($login) == true ) { mysql_query('INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES ( "'.$u->info['id'].'","'.$u->info['login'].'","'.mysql_real_escape_string($login).'","'.time().'" @@ -553,9 +553,9 @@ if(!isset($backdoor)) { // mysql_query('UPDATE `users` SET `login` = "'.mysql_real_escape_string($u->info['login']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `bank` SET `money2` = "'.$u->bank['money2'].'" WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$u->info['login'].'" .'; + $u->error = 'Вы успешно сменили логин на "'.$u->info['login'].'" перезайдите в игру с главной страницы.'; }else{ - $u->error = ' ...'; + $u->error = 'Выберите другой логин...'; } } }elseif(isset($_GET['buy_ekr'])) { @@ -571,11 +571,11 @@ if(!isset($backdoor)) { $out_ekr = 0; } $out_summ = round($out_ekr*$bt['cur'],2); - $inv_desc = ' '.$out_ekr.' ., '.$u->info['id'].', '.round((int)$_POST['ref']).''; + $inv_desc = 'Приобрести '.$out_ekr.' екр., персонаж №'.$u->info['id'].', дилер №'.round((int)$_POST['ref']).''; // $shp_item = 0; // - // , + //Бонус опытовый, первичный и накопительный $out_ekr0 = $out_ekr; // $out_ekr += round($out_ekr0/100*$bns[$b1][1],2); @@ -591,7 +591,7 @@ if(!isset($backdoor)) { $out_ekr += round($out_ekr0/100*20,2); } // - // + //Добавляем в базу mysql_query('INSERT INTO `pay_operation` ( `uid`,`bank`,`code`,`ekr`,`time`,`good`,`cur`,`var`,`val`,`ref`,`ref2`,`ip`,`date` ) VALUES ( @@ -603,27 +603,27 @@ if(!isset($backdoor)) { $shp_item = mysql_insert_id(); if($shp_item > 0) { - // + //ожидаем оплаты }else{ - die(' , '); + die('Ошибка в обработке платежа, обратитесь к Администрации'); } if($out_ekr < 1) { - die(' 1 .'); + die('Минимальная сумма покупки 1 екр.'); } // - // + // предлагаемая валюта платежа // default payment e-currency $in_curr = ""; - // + // язык // language $culture = "ru"; - // + // формирование подписи // generate signature $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); - // + // форма оплаты товара // payment form $url = 'http://www.free-kassa.ru/merchant/cash.php?'; $url .= 'MrchLogin='.$mrh_login.'&'; @@ -639,7 +639,7 @@ if(!isset($backdoor)) { die(); print "". "
        ". - " : ".$out_ekr." . ". + "Сумма платежа: ".$out_ekr." Екр. ". "". "". "". @@ -648,12 +648,12 @@ if(!isset($backdoor)) { "". "". "". - "
        ". - "( )". + "
        ". + "(Все средства идут на развитие и улучшение игры)". "
        "; die(); } - // + //цены if(date('m') >= 12 || date('m') == 1) { $ekr_pet = 2; $ekr_shadow = 8; @@ -673,10 +673,10 @@ if(!isset($backdoor)) { ?> - - TrueBk + Покупка ЕвроКредитов - TrueBk - + @@ -705,18 +705,18 @@ if(!isset($backdoor)) {
        - + info['id'])) { ?> -
        : '.$u->microLogin($u->info['id'],1).'';?>
        +
        Персонаж: '.$u->microLogin($u->info['id'],1).'';?>
        error != '' ) { echo '
        '.$u->error.'
        '; @@ -725,16 +725,16 @@ if(!isset($backdoor)) { - +'; + $gs[2] = ''; } - echo '

        ! ,
        20% .
        Акция! При первом пополнении баланса,
        Вы получаете дополнительно 20% ЕКР к сумме покупки БЕСПЛАТНО.
        - : % ( ) + Ваш накопительный бонус: % ( ЕКР)
        - +
         
         
         
        @@ -768,35 +768,35 @@ if(!isset($backdoor)) { var ekrr = ekr + ekr2 + ekr3 + ekr7; ekrr = Math.round(ekrr*100)/100; - //document.getElementById('calc').innerHTML = ekr+' + '+ekr2+' + '+ekr3+' = '+ekrr+' '; - document.getElementById('calc').innerHTML = ' : '+ekr2+'
        : '+ekr3+'
        1- : '+ekr7+'
        : '+ekrr+' '; + //document.getElementById('calc').innerHTML = ekr+' + '+ekr2+' + '+ekr3+' = '+ekrr+' ЕКР'; + document.getElementById('calc').innerHTML = 'Накопительный бонус: '+ekr2+' ЕКР
        Оптовый бонус: '+ekr3+' ЕКР
        Акция на 1-ое пополнение: '+ekr7+' ЕКР
        Итого: '+ekrr+' ЕКР'; } calc(); - - + +
        1
        1 *
        1 ЕКР Рублей
        1 ЕКР Доллара *

        @@ -807,16 +807,16 @@ if(!isset($backdoor)) {
        - : bank['money2']?> info['money']?> . + Ваш баланс счёта: bank['money2']?> ЕКР и info['money']?> КР.
        - -
        - 1=:    
        + Обмен + + Обменять ЕКР на КР по курсу 1ЕКР=КР:    
        -
        - =1:  
        + + Обменять КР на ЕКР по курсу КР=1ЕКР:  
        - + Накопительные бонусы - - - - - - - - - - - + + + + + + + + + + +
        800 10%3 000 30%
        700 9%2 500 27%
        600 8%2 000 25%
        500 7%1 700 23%
        400 6%1 500 21%
        300 5%1 300 19%
        200 4%1 200 17%
        100 3%1 100 15%
        50 2%1 000 13%
        10 1%900 11%
        ЕКРБонусЕКРБонус
        800 ЕКР10%3 000 ЕКР 30%
        700 ЕКР9%2 500 ЕКР 27%
        600 ЕКР8%2 000 ЕКР 25%
        500 ЕКР7%1 700 ЕКР 23%
        400 ЕКР6%1 500 ЕКР 21%
        300 ЕКР5%1 300 ЕКР 19%
        200 ЕКР4%1 200 ЕКР 17%
        100 ЕКР3%1 100 ЕКР 15%
        50 ЕКР2%1 000 ЕКР 13%
        10 ЕКР1%900 ЕКР11%
        - + Оптовые бонусы - - - - + + + +
        1%2%3%4%5%
        10 20 30 40 50
        6%7%8%9%10%
        60 70 80 90 100
        Бонус1%2%3%4%5%
        Сумма10 ЕКР20 ЕКР30 ЕКР40 ЕКР50 ЕКР
        Бонус6%7%8%9%10%
        Сумма60 ЕКР70 ЕКР80 ЕКР90 ЕКР100 ЕКР
        @@ -887,16 +887,16 @@ if(!isset($backdoor)) {
        Коммерческие услуги
        :

        ' . $gs[2] . '
        Букеты:

        ' . $gs[2] . '
        ' . $gs[2] . '
        :

        ' . $gs[0] . '
        ' . $gs[1] . '
        '; + echo '

        ' . $gs[2] . '
        Подарки:

        ' . $gs[0] . '
        ' . $gs[1] . '
        '; $ij4 = mysql_fetch_array( mysql_query( 'SELECT COUNT(`iu`.`id`) FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = 28 OR `im`.`type` = 63 OR `im`.`type` = 38 OR `im`.`type` = 64 OR `im`.`type` = 37 OR `iu`.`data` LIKE "%|giftsee=1%" OR `iu`.`data` LIKE "%|giftsee=2%") AND `iu`.`uid` = "' . $inf['id'] . '" AND `iu`.`gift` != "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" LIMIT 1' @@ -1772,9 +1771,9 @@ if (isset($uer)) { $ij4 = $ij4[0]; if ($ij1 + $ij2 + $ij3 < $ij4) { if (!isset($_GET['maxgift'])) { - echo ' , ...'; + echo 'Нажмите сюда, чтобы увидеть все подарки...'; } else { - echo ' , '; + echo 'Нажмите сюда, чтобы скрыть подарки'; } } } @@ -1907,35 +1906,35 @@ if (isset($uer)) { ); } - echo ' !'; + echo 'Новые данные были успешно сохранены!'; } ?> - :
        + Параметры монстра:
        - - - @@ -1946,43 +1945,43 @@ if (isset($uer)) { - - - + - + - + - + - + + Награда (победа игрока): - + - + - + - + - + - + + Награда (поражение игрока): - + - + - + - + - + - +
        (id ): + Место появления (id комнаты): -  
        : Время ожидания после поражения бота: . + type="text"> мин.
        : + Исчезнет после своей победы:
        , - + Появляется, + ДН - + Д - + М - + Ч - + Мин
        ,     + Исчезает,    ДН - + Д - + М - + Ч - + Мин
        ( {b}, {u}):Текст появления (Логин бота {b}, Логины игроков {u}):
        :Текст исчезновения:
        :Текст победы игрока:
        :Текст поражения игрока:
        :Текст ничьей:
        - ( ):
        .:Кр.:
        .:Екр.:
        ( 100% ):Опыт (За 100% НР монстра):
        (id@kolvo@data, ...):Предметы (id@kolvo@data, ...):
        :Эффект:
        :Подвиги:
        - ( ):
        .:Кр.:
        .:Екр.:
        :Опыт:
        :Предметы:
        :Эффект:
        :Подвиги:
        - +


        @@ -2256,7 +2255,7 @@ if (isset($uer)) { align="center">
        + align="center">Скрыть
        + align="center">Настройка монстра info['align'] >= 1.1 && $u->info['align'] <= 1.99 && $inf['admin'] < 1) || ($u->info['align'] >= 3.05 && $u->info['align'] <= 3.99 && $inf['admin'] < 1) || $u->info['admin'] > 0 || $u->info['nadmin'] > 0)) { @@ -2310,19 +2309,19 @@ if (isset($uer)) { } if ($nopal) { - //echo '

        ...

        '; + //echo '

        Вы не можете просматривать информацию старшего по званию...

        '; } elseif ($u->info['admin'] == 0 && (($u->info['admin'] == 0 && (floor( $u->info['align'] ) == 1 && $inf['align'] >= 3.01 && $inf['align'] <= 3.99) || (floor( $u->info['align'] ) == 3 && $inf['align'] >= 1.1 && $inf['align'] <= 1.99)) || ($u->info['admin'] == 0 && $inf['admin'] > 0))) { - echo '

        ...

        '; + echo '

        Персонаж носит вражескую склонность...

        '; } else { - echo '

        :
        '; + echo '

        За игроком замечены следующие темные делишки:
        '; if (!isset($_GET['mod_inf'])) { - echo ' '; + echo 'Показать личное дело'; } else { - // + //Личное дело персонажа $log = mysql_query( 'SELECT * FROM `users_delo` WHERE `uid`="' . $inf['id'] . '" AND `type`="0" ORDER by `id` DESC LIMIT 21' ); @@ -2333,21 +2332,21 @@ if (isset($uer)) { ) . ' ' . $log_w['text'] . '
        '; $i++; } - echo ' '; + echo 'Скрыть личное дело'; } echo '

        '; - // \\ + //Информация для паладинов\тарманов\ангелов if (($u->info['align'] >= 1.4 && $u->info['align'] <= 1.99 && $u->info['align'] != 1.6 && $u->info['align'] != 1.75 && $inf['admin'] < 1) || ($u->info['align'] >= 3.05 && $u->info['align'] <= 3.99 && $u->info['align'] != 3.06 && $inf['admin'] < 1) || $u->info['admin'] > 0) { if ((int)$u->info['align'] == 1) { - $rang = ''; + $rang = 'Паладинов'; } elseif ((int)$u->info['align'] == 3) { - $rang = ''; + $rang = 'Тарманов'; } else { - $rang = ''; + $rang = 'Ангелов'; } if ($u->info['admin'] == 1) { - echo ': ' . $inf['room'] . '
        '; + echo 'Комната: ' . $inf['room'] . '
        '; } if ((int)$inf['host_reg'] >= 1) { $inf['ref'] = $u->microLogin((int)$inf['host_reg'], 1); @@ -2359,11 +2358,11 @@ if (isset($uer)) { } echo '
        - ' . $rang . '
        - : ' . $inf['bithday'] . '
        '; + Только для ' . $rang . '
        + День рождения: ' . $inf['bithday'] . '
        '; if ($inf['vip'] == 1) { - echo 'VIP
        '; + echo 'VIP персонаж
        '; } if ($u->info['admin'] > 0) { @@ -2377,7 +2376,7 @@ if (isset($uer)) { ) ); if (isset($mls['name'])) { - echo 'E-mail: ' . $inf['mail'] . ' ()'; + echo 'E-mail: ' . $inf['mail'] . ' (РАССЫЛКА)'; } else { echo 'E-mail: ' . $inf['mail']; } @@ -2392,11 +2391,11 @@ if (isset($uer)) { $inf['ipReg'] = $inf['no_ip']; $inf['ip'] = $inf['no_ip']; } - echo ' : ' . $inf['ref'] . '
        - : ' . date('d.m.Y H:i', $inf['online']) . '
        - ' . $pr['login'] . 'IP : ' . $inf['ipReg'] . '
        '; + echo 'Персонажа пригласили: ' . $inf['ref'] . '
        + Последний раз заходил в клуб: ' . date('d.m.Y H:i', $inf['online']) . '
        + ' . $pr['login'] . 'IP при регистрации: ' . $inf['ipReg'] . '
        '; if ($inf['no_ip'] == '' || $u->info['admin'] > 0) { - echo 'IP : ' . $inf['ip'] . ''; + echo 'IP последние: ' . $inf['ip'] . ''; $auth = mysql_query( 'SELECT * FROM `logs_auth` WHERE `uid`="' . $inf['id'] . '" AND `type`="1" ORDER by `id` DESC LIMIT 10' ); @@ -2407,13 +2406,13 @@ if (isset($uer)) { ) . ')
        '; } } else { - echo 'IP : ' . $inf['no_ip'] . ''; + echo 'IP последние: ' . $inf['no_ip'] . ''; } if ($inf['no_ip'] == '' || $u->info['admin'] > 0) { if ($mults != '' && $inf['admin'] == 0) { $mults = trim($mults, ', '); - echo ' : ' . $mults . '
        '; + echo 'Другие ники этого бойца: ' . $mults . '
        '; } } @@ -2424,9 +2423,9 @@ if (isset($uer)) { 'SELECT `id`,`login`,`ip`,`ipreg`,`timereg`,`online` FROM `users` WHERE `host_reg` = "' . $inf['id'] . '" ORDER BY `timereg` DESC' ); while ($pl = mysql_fetch_array($sp)) { - $referalos .= '
        .: ' . date( + $referalos .= '
        Дата рег.: ' . date( 'd.m.Y H:i', $pl['timereg'] - ) . ' / : ' . date( + ) . ' / Был тут: ' . date( 'd.m.Y H:i', $pl['online'] ) . '   ' . $u->microLogin( $pl['id'], 1 @@ -2435,30 +2434,30 @@ if (isset($uer)) { } if ($referalos == '') { - $referalos = ''; + $referalos = 'Отсутствуют'; } - echo '
        :' . $referalos . '
        '; + echo '
        Рефералы бойца:' . $referalos . '
        '; if ($u->info['admin'] > 0) { - echo '. :
        '; + echo 'Доп. возможности: сбросить характеристики
        '; $on1 = mysql_fetch_array( mysql_query( 'SELECT `time_all`,`time_today` FROM `online` WHERE `uid` = "' . $inf['id'] . '" LIMIT 1' ) ); - echo ' (): ' . timeOut( + echo 'Время в онлайне (всего): ' . timeOut( $on1['time_all'] - ) . '
        (): ' . timeOut( + ) . '
        Время в онлайне (сегодня): ' . timeOut( $on1['time_today'] ) . '
        '; } if ($inf['molch3'] < time() && $inf['molch1'] > time()) { - echo '
        '; + echo 'Запретить персонажу отправлять сообщения с молчанкой
        '; } echo ' - : ' . $inf['exp'] . '
        - UP-: ' . $inf['ability'] . '
        - : ' . $inf['money'] . '
        : ' . $inf['money2'] . '
        : ' . $u->zuby( + Опыт: ' . $inf['exp'] . '
        + Число неиспользованных UP-ов: ' . $inf['ability'] . '
        + Кредитов: ' . $inf['money'] . '
        ЕвроКредитов: ' . $inf['money2'] . '
        Зубов: ' . $u->zuby( $inf['money4'] ) . ''; $bnk = ''; @@ -2471,16 +2470,16 @@ if (isset($uer)) { } else { $bnk .= '
        '; } - $bnk .= '  • ' . $pl['id'] . ''; - $bnk .= '' . $pl['money1'] . ' .'; - $bnk .= '' . $pl['money2'] . ' .'; + $bnk .= '  • ' . $pl['id'] . ''; + $bnk .= '' . $pl['money1'] . ' кр.'; + $bnk .= '' . $pl['money2'] . ' екр.'; if ($u->info['admin'] > 0) { - $bnk .= ': ' . htmlspecialchars( - $pl['pass'], null, 'cp1251' + $bnk .= 'Пароль: ' . htmlspecialchars( + $pl['pass'], null ) . ''; } if ($pl['moneyBuy'] > 0) { - $ds = '    : ' . $pl['moneyBuy'] . '
        '; + $ds = 'Персонаж покупал еврокредиты  Сумма : ' . $pl['moneyBuy'] . '
        '; } $bmn1 += $pl['money1']; $bmn2 += $pl['money2']; @@ -2491,9 +2490,9 @@ if (isset($uer)) { 'SELECT SUM(`ekr`) FROM `pay_operation` WHERE `uid` = "' . $inf['id'] . '" AND `good` > 0 LIMIT 1' ) ); - echo '
           : ' . $pk[0] . '
        '; + echo '
        Персонаж покупал еврокредиты  Сумма : ' . $pk[0] . ' ЕКР
        '; if ($bnk != '') { - echo '
        :' . $bnk . '   ( ):   ' . $bmn1 . ' .     ' . $bmn2 . ' .
        ' . $ds; + echo '
        Банковские счета:' . $bnk . '   Деньги (Всего в банке):   ' . $bmn1 . ' кр.     ' . $bmn2 . ' екр.
        ' . $ds; } if ($u->info['admin'] > 0 && $inf['admin'] > 0) { echo '
        admin: ' . $inf['admin'] . ''; @@ -2508,7 +2507,7 @@ if (isset($uer)) {
        - @@ -2566,13 +2565,13 @@ if ($u->info['align'] > 3 && $u->info['align'] < 4) { if ($inf['level'] < 8 && $inf['admin'] == 0 && $u->info['admin'] == 0 && $moder == 0) { ?>
        -

        8

        +

        Обезличен до достижения 8 уровня

        -

        1) { - echo ' ' . date('d.m.Y H:i', $inf['info_delete']) . '.'; +

        Персонаж обезличен 1) { + echo 'до ' . date('d.m.Y H:i', $inf['info_delete']) . '.'; } else { echo '.'; } ?>

        @@ -2586,18 +2585,18 @@ if ($inf['info_delete'] == 0 || (($u->info['align'] > 1 && $u->info['align'] < 2 ?>

        -

        +

        Анкетные данные

        - :
        - : - Имя:
        + Пол: +
        - / :
        + Увлечения / хобби:
        ', $inf['hobby']); } diff --git a/interrpaykassa.php b/interrpaykassa.php index 3f512367..dda6c826 100644 --- a/interrpaykassa.php +++ b/interrpaykassa.php @@ -1,36 +1,36 @@ $val) { // $answer .= $key.' => '.$val.PHP_EOL; //} $c = array( - /* MySQL */ - 'db_name' => 'pay_operations', // + /* MySQL База данных */ + 'db_name' => 'pay_operations', //Таблица в которую заносятся данные 'db_host' => 'localhost', 'db_user' => 'newcom1_abk', 'db_pass' => '4nWYsIM[c?}P', 'db_base' => 'newcom1_abk', - /* - 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), // ( IP) + /* Настройки платежей + 'ip_list' => array('127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'), //Указывать через запятую (Разрешенные IP) 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID */ + 'id' => '65643' //ID проекта*/ ); function connect_db($c) { - $db = mysql_connect($c['db_host'],$c['db_user'],$c['db_pass']) or die(' MySQL !'); - mysql_select_db($c['db_base'],$db) or die(' !'); - mysql_query('SET NAMES cp1251'); + $db = mysql_connect($c['db_host'],$c['db_user'],$c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); + mysql_select_db($c['db_base'],$db) or die('Ошибка подключения к базе данных!'); + mysql_query('SET NAMES utf8mb4'); } $needle = $dataSet['ik_sign']; -unset($dataSet['ik_sign']);// -ksort($dataSet, SORT_STRING); // -$test_key = '8RRwZKMHllBKtux6'; // -array_push($dataSet, $test_key); // -$signString = implode(':', $dataSet); // ":" -$sign = base64_encode(md5($signString, true)); // MD5 BASE64 +unset($dataSet['ik_sign']);// удаляем из данных строку подписи +ksort($dataSet, SORT_STRING); // сортируем по ключам в алфавитном порядке элементы массива +$test_key = '8RRwZKMHllBKtux6'; // В данном случае используется тестовый ключ +array_push($dataSet, $test_key); // добавляем в конец массива ключ +$signString = implode(':', $dataSet); // конкатенируем значения через символ ":" +$sign = base64_encode(md5($signString, true)); // берем MD5 хэш в бинарном виде по сформированной строке и кодируем в BASE64 if ($needle == $sign) { $answer .= 'Sign successfully'.PHP_EOL; echo 'OK'; @@ -42,7 +42,7 @@ if ($needle == $sign) { { if ($nick['good']!=0) { - echo " "; + echo "Уже начисленно"; } else { @@ -53,57 +53,54 @@ if ($needle == $sign) { //mysql_query('INSERT INTO `'.$c['db_name'].'` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("'.time().'","'.mysql_real_escape_string($type).'","'.$_SERVER['HTTP_X_REAL_IP'].'","'.mysql_real_escape_string($value).'","'.mysql_real_escape_string($money).'","'.mysql_real_escape_string($this->id).'")'); - $r = ''.date('d.m.Y H:i').' / : '; + $r = ''.date('d.m.Y H:i').' Алхимик Администратор / Автоматическая оплата сообщает: '; if($user['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' '.$user['login'].', '.$nick['ekr'].' . !'; - //$str1 = iconv("cp1251","UTF-8",$r); + $r .= ' '.$user['login'].', на Ваш игровой счет зачислено '.$nick['ekr'].' Еврокредитов. Благодарим Вас за покупку!'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$user['city']."','".$user['room']."','','".$user['login']."','".$r."','-1','5','0')"); - //echo $r."r
        "; - + if ($nick['ref'] !=0) { $refecr=round(($nick['ekr']/10)); mysql_query('UPDATE `users` SET `money2` = `money2` + '.$refecr.' WHERE `id` = "'.$nick['ref'].'" LIMIT 1'); $referal = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$nick['ref'].'" LIMIT 1')); - $r = ''.date('d.m.Y H:i').' / : '; + $r = ''.date('d.m.Y H:i').' Алхимик Администратор / Реферальный заработок сообщает: '; if($referal['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; } else { - $r .= ''; + $r .= 'Уважаемый'; } - $r .= ' '.$referal['login'].', '.$refecr.' . !'.$user['login'].''; - //$str1 = iconv("cp1251","UTF-8",$r); + $r .= ' '.$referal['login'].', на Ваш игровой счет зачислено '.$refecr.' Еврокредитов. Благодоря вашему рефералу!'.$user['login'].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$referal['city']."','".$referal['room']."','','".$referal['login']."','".$r."','-1','5','0')"); } - echo ": ".$user['login']." | ID: ".$nick['uid']." | : ".$nick['ekr']." | ID : ".$dataSet['ik_pm_no']."
        "; + echo "Покупател: ".$user['login']." | ID: ".$nick['uid']." | Сумма: ".$nick['ekr']." | ID операции: ".$dataSet['ik_pm_no']."
        "; if (isset ($referal['id'])) { - echo "( ): ".$referal['login']." | ID: ".$referal['id']." | : ".$refecr."
        "; + echo "Реферал(тот кто привел): ".$referal['login']." | ID: ".$referal['id']." | Сумма: ".$refecr."
        "; } else { - echo " !!"; + echo "Пользователь реферал не найден!!"; } } } else { - echo " !"; + echo "Покупатель не указан!"; } diff --git a/inx/ckeditor/CHANGES.md b/inx/ckeditor/CHANGES.md index d4bf24aa..96a98044 100644 --- a/inx/ckeditor/CHANGES.md +++ b/inx/ckeditor/CHANGES.md @@ -29,7 +29,7 @@ Other Changes: **Security Updates:** -* Fixed XSS vulnerability in the HTML data processor reported by [Michał Bentkowski](https://twitter.com/securitymb) of Securitum. +* Fixed XSS vulnerability in the HTML data processor reported by [MichaЕ‚ Bentkowski](https://twitter.com/securitymb) of Securitum. Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode or (i) copy the specially crafted HTML code, prepared by the attacker and (ii) paste it into CKEditor in WYSIWYG mode. @@ -289,7 +289,7 @@ New Features: * [#1815](https://github.com/ckeditor/ckeditor4/issues/1815): The [Auto Link](https://ckeditor.com/cke4/addon/autolink) plugin supports typing link completion. * [#2478](https://github.com/ckeditor/ckeditor4/issues/2478): [Link](https://ckeditor.com/cke4/addon/link) can be inserted using the Ctrl/Cmd + K keystroke. * [#651](https://github.com/ckeditor/ckeditor4/issues/651): Text pasted using the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin preserves indentation in paragraphs. -* [#2248](https://github.com/ckeditor/ckeditor4/issues/2248): Added support for justification in the [BBCode](https://ckeditor.com/cke4/addon/bbcode) plugin. Thanks to [Matěj Kmínek](https://github.com/KminekMatej)! +* [#2248](https://github.com/ckeditor/ckeditor4/issues/2248): Added support for justification in the [BBCode](https://ckeditor.com/cke4/addon/bbcode) plugin. Thanks to [MatД›j KmГ­nek](https://github.com/KminekMatej)! * [#706](https://github.com/ckeditor/ckeditor4/issues/706): Added a different cursor style when selecting cells for the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin. * [#2072](https://github.com/ckeditor/ckeditor4/issues/2072): The [UI Button](https://ckeditor.com/cke4/addon/button) plugin supports custom `aria-haspopup` property values. The [Menu Button](https://ckeditor.com/cke4/addon/menubutton) `aria-haspopup` value is now `menu`, the [Panel Button](https://ckeditor.com/cke4/addon/panelbutton) and [Rich Combo](https://ckeditor.com/cke4/addon/richcombo) `aria-haspopup` value is now `listbox`. * [#1176](https://github.com/ckeditor/ckeditor4/pull/1176): The [Balloon Panel](https://ckeditor.com/cke4/addon/balloonpanel) can now be attached to a selection instead of an element. @@ -303,7 +303,7 @@ Fixed Issues: * [#2276](https://github.com/ckeditor/ckeditor4/issues/2276): [iOS] Fixed: [Button](https://ckeditor.com/cke4/addon/button) state does not refresh properly. * [#1489](https://github.com/ckeditor/ckeditor4/issues/1489): Fixed: Table contents can be removed in read-only mode when the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin is used. * [#1264](https://github.com/ckeditor/ckeditor4/issues/1264) Fixed: Right-click does not clear the selection created with the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin. -* [#586](https://github.com/ckeditor/ckeditor4/issues/586) Fixed: The `required` attribute is not correctly recognized by the [Form Elements](https://ckeditor.com/cke4/addon/forms) plugin dialog. Thanks to [Roli Züger](https://github.com/rzueger)! +* [#586](https://github.com/ckeditor/ckeditor4/issues/586) Fixed: The `required` attribute is not correctly recognized by the [Form Elements](https://ckeditor.com/cke4/addon/forms) plugin dialog. Thanks to [Roli ZГјger](https://github.com/rzueger)! * [#2380](https://github.com/ckeditor/ckeditor4/issues/2380) Fixed: Styling HTML comments in a top-level element results in extra paragraphs. * [#2294](https://github.com/ckeditor/ckeditor4/issues/2294) Fixed: Pasting content from Microsoft Outlook and then bolding it results in an error. * [#2035](https://github.com/ckeditor/ckeditor4/issues/2035) [Edge] Fixed: `Permission denied` is thrown when opening a [Panel](https://ckeditor.com/cke4/addon/panel) instance. @@ -632,7 +632,7 @@ New Features: * [#16755](https://dev.ckeditor.com/ticket/16755): Added the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column). * [#16961](https://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel. -* [#13381](https://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.template.html) removed. CKEditor can now be used without the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)! +* [#13381](https://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.template.html) removed. CKEditor can now be used without the `unsafe-eval` Content Security Policy. Thanks to [Caridy PatiГ±o](http://caridy.name)! * [#16971](https://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](https://ckeditor.com/cke4/addon/tabletools) plugin. * [#16847](https://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. * [#16818](https://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. @@ -731,7 +731,7 @@ New Features: * Backward incompatibility: The [`config.pasteFromWordNumberedHeadingToList`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-pasteFromWordNumberedHeadingToList) and [`config.pasteFromWordRemoveStyles`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-pasteFromWordRemoveStyles) options were dropped and no longer have any effect on pasted content. * Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels). * Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste. -* Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)! +* Added new translation: Occitan. Thanks to [CГ©dric Valmary](https://totenoc.eu/)! * [#10015](https://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus. * [#13794](https://dev.ckeditor.com/ticket/13794): The [Upload Image](https://ckeditor.com/cke4/addon/uploadimage) feature now uses `uploaded.width/height` if set. * [#12541](https://dev.ckeditor.com/ticket/12541): Added the [Upload File](https://ckeditor.com/cke4/addon/uploadfile) plugin that lets you upload a file by drag&dropping it into the editor content. @@ -979,7 +979,7 @@ Fixed Issues: * [#13422](https://dev.ckeditor.com/ticket/13422): Fixed: A monospaced font should be used in the `"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: jQuery.isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( ">tbody", elem )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - div.style.cssText = - "box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - jQuery.extend( support, { - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - computeStyleTests(); - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i, - val = 0; - - // If we already have the right measurement, avoid augmentation - if ( extra === ( isBorderBox ? "border" : "content" ) ) { - i = 4; - - // Otherwise initialize for horizontal or vertical properties - } else { - i = name === "width" ? 1 : 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Fall back to offsetWidth/Height when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - if ( val === "auto" ) { - val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; - } - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 13 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnothtmlwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = jQuery.isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 13 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available, append data to url - if ( s.data ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( jQuery.isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - - - - - - - - - - - - - -Контакты - Fast ChangerFast Changer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
        - -
        -
        - - - - - - - -
        - -
        -
        -
        -

        Контакты

        -
        - - - Telegram - -

        Если что-то пошло не так, для большей оперативности напишите нам в telegram, кнопка для связи в верхней правой части экрана. Наши специалисты с радостью ответят на любые Ваши вопросы.

        -
        -
        - -
        -
        - - - - - - -
        - -
        - - - - - -
        Спасибо, заявка отправлена
        - - - - - - - - diff --git a/kula153/obuch1.php b/kula153/obuch1.php deleted file mode 100644 index 290c2202..00000000 --- a/kula153/obuch1.php +++ /dev/null @@ -1,10 +0,0 @@ - 1 )) -{ - print (" 1"); -} - -?> \ No newline at end of file diff --git a/kula153/polzovatelyam.html b/kula153/polzovatelyam.html deleted file mode 100644 index 4b30cde3..00000000 --- a/kula153/polzovatelyam.html +++ /dev/null @@ -1,716 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ПОЛЬЗОВАТЕЛЯМ - Faster Change - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
        -
        -
        - -
        -
        -
        -
        -
        -
        -
        - -
        - - -
        -
        - - - -
        - -
        -
        -
        -

        ПОЛЬЗОВАТЕЛЯМ

        -
        -
        -
        - -
        - Процесс регистрации в нашем сервисе находится на техническом обслуживании -
        -
        -
        - -
        - Максимальную и минимальную сумму на обмен по интересующему Вас направлению вы можете найти на платформе, где - нашли наш сервис (обменник). -
        -
        -
        - -
        - При создании первой заявки, Вам было выслано письмо для подтверждения адреса электронной почты. В случае, если - Вы не подтвердили Ваш адрес, письма не будут поступать. -
        -
        -
        - -
        - Вам необходимо нажать на кнопку "Забыли пароль?" на странице авторизации в личный кабинет. После ввода Вашего - e-mail адреса, Вам придет письмо со ссылкой для восстановления пароля. -
        -
        -
        - -
        - Все обмены производятся только по заявкам. Если Вы по какой-либо причине отправили средства на наши реквизиты - без создания заявки, они будут Вам возвращены за вычетом комиссии, если таковая будет присутствовать. При - отправке нам средств с карты, не верифи -
        -
        -
        - -
        - Номер заявки Вы можете узнать в личном кабинете или в письме на почте, которую Вы указали при создании заявки. -
        -
        -
        - -
        - Верификация карты — это процедура, которую необходимо пройти всем клиентам, осуществляющим первый обмен с - банковской карты. Цель верификации — предотвратить возможные мошеннические действия в отношении держателя - карты. -
        -
        -
        - -
        - Веб-страницы нашего сайта могут отображаться некорректно в связи с тем, что в них были внесены изменения, а - Ваш браузер продолжает использовать устаревшие данные из кэша. В таких случаях мы просим почистить кэш и куки - для того, чтобы весь функционал нашего сервиса работал полноценно и безошибочно. -
        -
        -
        - -
        Мы всегда готовы к сотрудничеству и рады выслушать все Ваши предложения на нашей почте.
        -
        -
        -
        - -
        -
        - - - - - -
        - - -
        - - - - - -
        Спасибо, заявка отправлена
        - - - - - - - - diff --git a/kula153/pravila-obmena.html b/kula153/pravila-obmena.html deleted file mode 100644 index 94100c1d..00000000 --- a/kula153/pravila-obmena.html +++ /dev/null @@ -1,1296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ПРАВИЛА ОБМЕНА - Faster Change - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
        -
        -
        - -
        -
        -
        -
        -
        -
        -
        - -
        - - -
        -
        - - - -
        - -
        -
        -
        -

        ПРАВИЛА ОБМЕНА

        -
        -

        - Перед тем как воспользоваться услугами сервиса Fastchanger, Пользователь обязан ознакомиться в - полном объеме с Правилами и условиями предоставления услуг сервисом Fastchanger. Использование услуг сервиса - Fastchanger возможно только в случае, если Пользователь принимает все условия соглашения. -

        -

        Правила и условия предоставления услуг сервисом Fastchanger:

        -

        1. Термины и определения

        -

        1.1. Fastchanger («Сервис») – это сервис предоставляющий услуги по обращению цифровых валют.

        -

        - 1.2. Пользователь — это любое физическое лицо, согласившееся со всеми условиями, предложенными Сервисом и - присоединившееся к данному соглашению. Пользователь и Сервис — совместно именуются «Стороны». -

        -

        - 1.3. Заявка — информация, поданная Пользователем с использованием средств Сервиса в электронном виде, - свидетельствующая о его намерениях воспользоваться услугами Сервиса на условиях, предложенных Сервисом и указанных - в параметрах заявки. -

        -

        - 1.4. Обмен – операции, влекущие за собой переход цифровой валюты от одного обладателя к другому с использованием - денежных средств. -

        -

        1.5. Курс обмена — стоимостное соотношение двух обмениваемых валют.

        -

        - 1.6. Соглашение — это заключенный между Сторонами договор по обращению цифровых валют заключенный на правилах и - условиях предоставления услуг Сервисом. -

        -

        2. Предмет соглашения и порядок вступления его в силу

        -

        - 2.1. Предметом настоящего соглашения являются услуги по обращения цифровых валют, осуществляемые по заказу - Пользователя, а также другие услуги, описанные на веб-сайте Сервиса. -

        -

        - 2.2. Соглашение считается принятым в ходе подачи Пользователем Заявки, являющейся неотъемлемой частью настоящего - соглашения. Каждая заявка Пользователя является новым Соглашением и на новых условиях на момент подачи заявки. -

        -

        - 2.3. Данное соглашение вступает в действие с момента завершения формирования Заявки Пользователем и присвоения - индивидуального номера заявки. -

        -

        - 2.4. Дата и время, а также параметры условий Заявки фиксируются Сервисом автоматически в момент завершения - формирования Заявки и присвоения индивидуального номера заявки. -

        -

        - 2.5. Данное соглашение прекращает свое действие с момента поступления на реквизиты Пользователем денежных средств - или цифровых валют в сумме, предусмотренной параметрами Заявки Пользователя, либо с момента аннулирования заявки. -

        -

        - 2.6. Сервис оставляет за собой право в одностороннем порядке вносить изменения в данное Соглашение без - соответствующего уведомления об этом Пользователя, но с обязательной публикацией актуальной версии соглашения на - данной странице. -

        -

        3. Условия предоставления услуг

        -

        - 3.1. Воспользоваться услугами Сервиса могут только те Пользователи, которые в полном объеме ознакомились и - согласны с правилами и условиями предоставления услуг сервисом Fastchanger. -

        -

        3.2 Сервис автоматически устанавливает курс обмена и публикует его на Интернет-сайте Сервиса.

        -

        - 3.3 Сервис вправе самостоятельно изменять курсы обмена в любое время в одностороннем порядке, о чем уведомляет - Пользователей Сервиса размещением актуальной информации на Интернет-сайте Сервиса. -

        -

        3.4 Фиксация курса обмена и порядок изменения курса в заявке:

        -
          -
        • - Курс фиксируется на 10 минут с момента выбора направления обмена, по истечению времени автоматически будет - предложен новый курс; -
        • -
        • - Если пользователь успел сформировать заявку в течение 10 минут, то данный курс продлевается еще на 15 минут для - совершения оплаты заявки. Если Пользователь не успел совершить оплату и сменить статус заявки на оплаченный, - посредством нажатия на кнопку “Я оплатил”, то по истечению времени автоматически будет предложен новый курс - обмена; -
        • -
        • - Сервис оставляет за собой право в одностороннем порядке изменить курс обмена, если прошло более 8 часов с - момента появления транзакции в сети цифровой валюты, и отсутствует 2 подтверждения транзакции от сети цифровой - валюты; -
        • -
        • - Сервис оставляет за собой право в одностороннем порядке изменить курс обмена, если заявка содержит ошибку по - вине Пользователя, и Пользователь в течение 8 часов не предоставил верную информацию на электронную почту - Сервиса; -
        • -
        • - Сервис оставляет за собой право в одностороннем порядке изменить курс обмена, если исходный курс изменился более - чем на 1% до совершения оплаты заявки и смены статуса заявки на оплаченный, посредством нажатия на кнопку “Я - оплатил”. -
        • -
        -

        - 3.5. Управление процессом обмена или получение информации о ходе выполнения услуги Пользователем производятся при - помощи соответствующего пользовательского интерфейса, расположенного на Интернет-сайте Сервиса. -

        -

        - 3.6. Сервис совершает обмен по заявкам Пользователя в строгом соответствии с политикой приватности, а также - политикой по противодействию отмыванию денег и предотвращению операций, носящих незаконный характер. -

        -

        - 3.7. Любая завершенная операция, проведенная Сервисом по заявке Пользователя, не может быть отменена Пользователем - после ее завершения — отправки Сервисом денежных средств или цифровых валют, причитающихся Пользователю по ранее - принятым условиям обмена. -

        -

        - 3.8. В случае непоступления от Пользователя денежных средств или цифровых валют в течение одного часа с момента - создания Пользователем заявки, Соглашение считается расторгнутым Сервисом в одностороннем порядке, как не - вступившее в действие. -

        -

        - 3.9. В случае расторжения соглашения, денежные средства или цифровые валюты, поступившие после указанного выше - срока, по запросу Пользователя подлежат возврату на реквизиты Пользователя, с которых поступили средства. При - осуществлении возврата все комиссионные расходы на перевод денежных средств или цифровых валют производятся из - поступивших средств за счет Пользователя. Сервис не несет ответственность за возможные задержки при возврате, если - они возникли не по вине Сервиса. -

        -

        - 3.10. В случае, если количество поступивших денежных средств или цифровых валют отличается от заявленного - Пользователем, Сервис может в одностороннем порядке расторгнуть соглашение путем отказа от исполнения заявки и - возврата поступивших средств на реквизиты Пользователя, с которых поступили средства, или пересчитать сумму по - фиксированному в заявке курсу. При осуществлении возврата все комиссионные расходы на перевод денежных средств или - цифровых валют производятся из поступивших средств за счет Пользователя. Сервис не несет ответственность за - возможные задержки при возврате, если они возникли не по вине Сервиса. -

        -

        - 3.11. В случае если Сервис не осуществил перевод денежных средств или цифровых валют на указанные Пользователем - реквизиты в течение 72 часов с момента поступления от Пользователя оплаты, при отсутствии причин для блокировки - денежных средств или цифровых валют, поступивших по Заявке Пользователя со стороны Сервиса, Пользователь может - потребовать расторжения соглашения путем аннулирования своей заявки и возврата денежных средств или цифровых валют - в полном объеме. -

        -

        - 3.12. В случае аннулирования заявки возврат денежных средств или цифровых валют производится Сервисом на реквизиты - отправителя в течение 3-х рабочий дней с момента получения требования об аннулировании. Сервис не несет - ответственность за возможные задержки при возврате, если они возникли не по вине Сервиса. -

        -

        - 3.13. В случае увеличения курса обмена более, чем на 1% все не востребованные более суток средства, - поступающие в пользу сервиса, подлежат обмену или возврату по курсу, зафиксированному на момент создания заявки. -

        -

        3.14. Сервис имеет право привлекать для исполнения своих обязательств сторонних исполнителей.

        -

        - 3.15. Сервис имеет право аннулировать заявку и вернуть внесенные Пользователем денежные средства или цифровые - валюты с возмещением комиссий Пользователю без объяснения причин. -

        -

        3.16. Сервис имеет право отказать Пользователю в дальнейшем обслуживании без объяснения причин.

        -

        - 3.17. Сервис имеет право приостановить совершение обмена для проведения идентификации отправителя перевода. В - случае не прохождения идентификации заявка аннулируется. При осуществлении возврата все комиссионные расходы на - перевод денежных средств или цифровых валют производятся из поступивших средств за счет Пользователя. Сервис не - несет ответственность за возможные задержки при возврате, если они возникли не по вине Сервиса. -

        -

        - 3.18. При пользовании услугами Сервиса, Пользователь подтверждает, что законно владеет и распоряжается - используемыми денежными средствами и цифровыми валютами. Пользователь гарантирует, что он не является вовлеченным - в: -

        -
          -
        • операции по отмыванию денежных средств;
        • -
        • получение доходов от незаконного оборота наркотиков;
        • -
        • получение доходов от преступной и/или террористической деятельности;
        • -
        • получение доходов от торговли со странами, торговля с которыми запрещена международными организациями;
        • -
        • получение дохода от любой другой незаконной деятельности.
        • -
        -

        - 3.19. При отправке Пользователем цифровых валют, Сервис приступит к исполнению своих обязательств по обмену, - только после двух подтверждений сети цифровой валюты. -

        -

        - 3.20. В случае, если отправка средств на реквизиты, предоставленные клиентом не может быть осуществлена по - независящим от сервиса причинам или если клиент ошибся реквизитами, то сервис в праве потребовать у клиента - отправить в чат поддержки верные реквизиты, прислать верификацию карты либо реквизиты для возврата средств. -

        -

        4. Политика конфиденциальности

        -

        - 4.1. Для проведения операций Сервис принимает от Пользователя его персональные данные, которые Сервис обязуется - хранить в зашифрованном виде, не придавать огласке, не передавать третьим лицам, за исключением случаев, описанных - в п. 4.4 и п. 5.5 настоящего соглашения. -

        -

        - 4.2. Проведение всех операций с Заявками, а также передача персональных данных от Пользователя к Сервису - осуществляется по зашифрованному SSL-каналу с длиной ключа 256 бит. -

        -

        - 4.3. Сервис имеет право при необходимости самостоятельно осуществлять деятельность по сбору дополнительных данных - о Пользователе любыми доступными способами. Вся информация, собранная в результате такой деятельности не придается - огласке, не передается третьим лицам, за исключением случаев, описанных в п. 4.4 и п. 5.5 настоящего соглашения. -

        -

        - 4.4. Сервис имеет право передавать персональные данные Пользователя и детали, совершенных им операций, по - официальному запросу правоохранительных органов, суда, а также по собственной инициативе для защиты собственных - прав. -

        -

        - 4.5. Все собранные данные о Пользователе, а также детали совершенных им операций, хранятся в базе данных Сервиса в - течение пяти лет. -

        -

        5. Политика противодействия отмыванию денег и незаконным операциям

        -

        - 5.1. В соответствии с международным законодательством Сервис придерживается ряда правил и реализует ряд процедур, - направленных на предотвращение использования Сервиса с целью проведения операций по отмыванию денег, а также - проведению иных операций, носящих незаконный характер. -

        -

        - 5.2. Для предотвращения операций незаконного характера Сервис устанавливает определенные требования ко всем - Заявкам, создаваемым Пользователем: -

        -
          -
        • Переводы в пользу третьих лиц категорически запрещены;
        • -
        • - Все контактные данные, заносимые Пользователем в Заявку, а также иные персональные данные, передаваемые - Пользователем Сервису, должны быть актуальными и полностью достоверными; -
        • -
        • - Категорически запрещено создание Заявок Пользователем с использованием анонимных прокси-серверов или каких-либо - других анонимных подключений к Интернету. -
        • -
        -

        - 5.3. Сервис оставляет за собой право приостановить все текущие заявки Пользователя до момента получения от - Пользователя копий документов, удостоверяющих личность Пользователя и другую информацию, необходимую для проверки - производимой операции в следующих случаях: -

        -
          -
        • При выявлении нарушения любого из требований, представленных в пункте 5.2 настоящего Соглашения;
        • -
        • При остановке заявки Пользователя системой предотвращения незаконных операций;
        • -
        • - При возникновении обоснованных подозрений у Сервиса в том, что пользователь пытается воспользоваться услугами - Сервиса с целью проведения незаконных операций. -
        • -
        -

        - В свою очередь, Пользователь обязуется предоставить запрашиваемый документ в течение 7 рабочих дней с получения - запроса на его предоставление, либо запросить аннулирование заявки. -

        -

        - 5.4. В случае отказа Пользователя предоставить запрашиваемые документы Сервис согласно п. 3.15 оставляет за собой - право отказать Пользователю в дальнейшем обслуживании и предпринять действия, описанные в п. 3.14 настоящего - соглашения. -

        -

        - 5.5. Сервис оставляет за собой право отказать Пользователю в дальнейшем обслуживании и предпринять действия, - описанные в п. 3.14 настоящего соглашения, после чего передать все имеющиеся у Сервиса данные Пользователя, а - также всю имеющуюся информацию об операциях Пользователя в правоохранительные органы в случаях: -

        -

        - 5.5.1. В случае аннулирования заявки возврат денежных средств или цифровых валют производится Сервисом на - реквизиты отправителя в течение 72-х часов с момента получения требования об аннулировании. Сервис не несет - ответственность за возможные задержки при возврате, если они возникли не по вине Сервиса. Удержание - комиссии 12,6% -

        -
          -
        • - Выявления транзакций, целью которых является отмывание денег, финансирование террористических организаций, - мошенничество любого рода, а также транзакций, направленных на проведение любых других незаконных и - неправомерных операций; -
        • -
        • - При возникновении обоснованного подозрения у Сервиса в том, что предоставленный Пользователем документ для - идентификации личности Пользователя является поддельным или недействительным; -
        • -
        • - Поступления информации от уполномоченных на то органов о неправомочности владения Пользователем денежными - средствами или цифровыми валютами или иная информация, делающая невозможным предоставление Сервисом услуг - Пользователю; -
        • -
        • - Выявления любых действий или попытки совершения действий Пользователем, направленных на оказание любого - негативного влияния на программно-аппаратный комплекс Сервиса; -
        • -
        • - Выявления любых действий или попытки совершения действий Пользователем, направленных на хищение баз данных и - другого материального и нематериального имущества Сервиса; -
        • -
        • - Выявления любых действий или попытки совершения действий Пользователем, способных нанести любой физический, - материальный и нематериальный вред Сервису. -
        • -
        • - В случае, если средства поступают с карты, отличающейся от той, что была верифицирована, Сервис приостанавливает - совершение обмена. Средства по данной заявке будут возвращены отправителю в течение 24 часов после обращения и - при условии обязательной верификации карты, с которой поступили средства. При осуществлении возврата все - комиссионные расходы на перевод денежных средств или цифровых валют производятся из поступивших средств за счет - Пользователя. -
        • -
        -

        - 5.6. Сервис оставляет за собой право приостановить все текущие заявки Пользователя до момента получения от - Пользователя копий документов или иную информацию, подтверждающую факт оплаты заявки. -

        -

        6. Ограничение ответственности

        -

        - 6.1. Пользователь гарантирует, что не является гражданином и налоговым резидентом Соединенных Штатов Америки, - Северной Кореи и Ирана. -

        -

        6.2. Пользоваться услугами сервиса могут только лица достигшие совершеннолетия.

        -

        - 6.3. Пользователь соглашается с тем, что объем ответственности Сервиса ограничивается средствами, полученными от - Пользователя для исполнения предмета настоящего соглашения, что Сервис не обеспечивает дополнительных гарантий и - не несет никакой дополнительной ответственности перед Пользователем, также как и Пользователь не несет - дополнительной ответственности перед Сервисом. -

        -

        - 6.4. Сервис приложит все усилия, но не гарантирует, что его услуги будут доступны круглосуточно, ежедневно. Сервис - не несет никакой ответственности за убытки, неполученную прибыль и иные издержки Пользователя, возникшие в - результате невозможности получения доступа к сайту и услугам Сервиса. -

        -

        - 6.5. Сервис не несет никакой ответственности за убытки, неполученную прибыль и иные издержки Пользователя, - явившиеся результатом задержек, ошибок или сбоев в проведении банковских платежей или электронных переводов. -

        -

        - 6.6. Сервис не несет никакой ответственности за убытки, неполученную прибыль и иные издержки Пользователя, - явившиеся результатом ошибочных ожиданий Пользователя в отношении курса обмена Сервиса, прибыльности транзакций и - иных субъективных факторов. -

        -

        - 6.7. В случае предоставления Пользователем ошибочных данных в информации о реквизитах получателя денежных средств - Сервис не несет никакой ответственности за любые неблагоприятные последствия или ущерб, возникшие в результате - этой ошибки. -

        -

        - 6.8. Пользователь обязуется не фальсифицировать коммуникационные потоки, связанные с функционированием Сервиса, не - вмешиваться в его программную и/или аппаратную часть, а также не оказывать какого-либо иного влияния, способного - нарушить нормальную работу Сервиса, понимая, что подобные действия будут иметь судебное преследование по всей - строгости закона. -

        -

        - 6.9. Ни Пользователь, ни Сервис не будут ответственны друг перед другом за задержки или неисполнение своих - обязательств, являющихся результатом возникновения обстоятельств непреодолимой силы, включая стихийные бедствия, - пожар, наводнение, террористические акты, смены власти, гражданские волнения, а также сбои в функционировании - Электронных расчетных систем, систем энергоснабжения, сетей связи и поставщиков Интернет-услуг. -

        -

        - 6.10. Электронные расчетные системы или финансовые учреждения несут исключительную ответственность за средства, - вверенные им Пользователем. Сервис не может являться стороной в соглашении между Платежной системой или финансовым - учреждением и Пользователем. -

        -

        7. Порядок принятия претензий и разрешения споров

        -

        - 7.1. Споры и разногласия, возникшие в рамках предоставления услуг Сервисом Пользователю, разрешаются путем - переговоров Пользователя с администрацией Сервиса, на основе положений настоящего соглашения. -

        -

        - 7.2. Любые претензии по настоящему соглашению Пользователь должен отправить в электронном виде на адрес - электронной почты указанный на сайте Сервиса. -

        -

        8. Заключительные положения

        -

        - 8.1. Сервис вправе отправлять Пользователю на указанный им e-mail информацию о состоянии процесса обмена, а также - иную информацию относящуюся к обмену. -

        -

        - 8.2.Информация на сайте, включая графические изображения, текстовую информацию, программные коды и т.п. является - собственностью Сервиса и охраняется законами об авторском праве. -

        -

        - 8.3. Пользователь подтверждает, что он ознакомился со всеми положениями настоящего Соглашения, и безусловно - принимает их, в противном случае Пользователь не может использовать Сервис. -

        -

         

        -

        СОГЛАШЕНИЕ ОБ ИСПОЛЬЗОВАНИИ ФАЙЛОВ COOKIE

        -

        - Данное соглашение касается использования Сайтом информации, получаемой от пользователей Сайта. В этом документе - также содержится информация о файлах cookie, об использовании файлов cookie Сайтом, а также о том, как вы можете - отказаться от такого рода файлов. -

        -

        - Файл cookie – небольшой текстовый файл, размещаемый интернет-сайтом на персональном компьютере, телефоне либо - другом устройстве пользователя с информацией о его навигации по интернет-сайту. В файлах cookie хранится - информация о Ваших предпочтениях в интернете. -

        -

        Файлы cookie используются в различных целях, в том числе, чтобы:

        -
          -
        • Анализировать информацию о посещении страниц пользователями для совершенствования Сайта.
        • -
        • - Предоставлять сообщения и контент, созданные нами и третьими лицами, на данном сайте и сайтах других лиц, - учитывая интересы пользователя. -
        • -
        • Помогать пользователю в получении необходимой информации.
        • -
        • - Определять количество посетителей и то, как они используют наш сайт, — для повышения эффективности сайта и для - наилучшего понимания интересов их аудитории. -
        • -
        -

        - Прежде чем интерет-сайт установит файлы cookie на вашем компьютере, вы увидите всплывающее окно с просьбой дать - согласие на установку этих файлов cookie. Предоставляя свое согласие на настройку наших файлов cookie, Вы даете - нам возможность предоставлять Вам наилучшие возможности и обслуживание через наш интернет-сайт. Если вы хотите - отказать в своем согласии на размещение файлов cookie, некоторые функции интернет-сайта могут работать не - полностью или не по назначению. -

        -

        - Ни один из файлов cookie, установленных сайтом, никоим образом не ставит под угрозу вашу конфиденциальность. В - используемых нами файлах cookie мы не сохраняем личную и конфиденциальную информацию, которая идентифицирует - личность пользователя, такую как адрес, пароль, данные дебетовой или кредитной карты и т.д. -

        -

        - Если Вы хотите избежать использование файлов cookie на данном интерент-сайте, то Вы можете в любой момент - отключить сохранение файлов cookie в своем браузере, а затем удалить сохраненные в Вашем браузере файлы cookie, - связанные с использованием нашего сайта. -

        -

        - Обратите внимание: в таком случае отображение страниц и руководство по использованию интернет-сайта будут - ограниченными. -

        -

        - Мы не несем ответственность за контент, способы сбора и обработки информации сторонними сайтами, в том числе - сайтами, ссылки на которые могут быть опубликованы на нашем ресурсе. Пожалуйста, ознакомьтесь с политикой - конфиденциальности тех ресурсов, которые Вы посещаете, прежде чем предоставлять свои данные. -

        -

         

        -

        Политика в отношении обработки персональных данных пользователей сайта

        -

         

        -

        Общие положения

        -

        - 1.1. Настоящий документ определяет политику сайта Fastchanger (далее – Оператор) в отношении обработки - персональных данных пользователей сайта и излагает систему основных принципов, применяемых в отношении обработки - персональных данных. -

        -

        - 1.2 Политика в отношении обработки персональных данных пользователей сайта (далее — Политика) разработана с целью - соблюдения требований законодательства Российской Федерации, содержащих персональные данные и идентификации - пользователей, находящихся на сайте. -

        -

        Политика действует в отношении всех персональных данных, которые подлежат обработке Оператором.

        -

        - 1.3 Политика разработана в соответствии с Конституцией Российской Федерации, Гражданским кодексом Российской - Федерации, Федеральным законом от 27 июля 2006 года № 152-ФЗ «О персональных данных» и иным действующим - законодательством Российской Федерации в области защиты персональных данных. -

        -

        - 1.4 Политика устанавливает порядок обработки персональных данных пользователей сайта: действия по сбору, - систематизации, накоплению, хранению, уточнению (обновлению, изменению), уничтожению персональных данных. -

        -

        - 1.5 Политика устанавливает обязательные для сотрудников Оператора, задействованных в обслуживании сайта, общие - требования и правила по работе со всеми видами носителей информации, содержащими персональные данные пользователей - сайта. -

        -

        - 1.6 В Политике не рассматриваются вопросы обеспечения безопасности персональных данных, отнесенных в установленном - порядке к сведениям, составляющим государственную тайну Российской Федерации. -

        -

        1.7 Термины и определения

        -

        - Персональные данные – любая информация, относящаяся прямо или косвенно к определенному или определяемому - физическому лицу (субъекту персональных данных). -

        -

        - Оператор – государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или - совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие - цели обработки персональных данных, состав персональных данных, подлежащих обработке, действия (операции), - совершаемые с персональными данными. -

        -

        - Обработка персональных данных — любое действие (операция) или совокупность действий (операций), совершаемых с - использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, - запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, - передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение - персональных данных. -

        -

        Пользователь — пользователь сети Интернет.

        -

        - Автоматизированная обработка персональных данных – обработка персональных данных с помощью средств вычислительной - техники. -

        -

        - Предоставление персональных данных – действия, направленные на раскрытие персональных данных определенному лицу - или определенному кругу лиц. -

        -

        - Блокирование персональных данных – временное прекращение обработки персональных данных (за исключением случаев, - если обработка необходима для уточнения персональных данных). -

        -

        - Уничтожение персональных данных – действия, в результате которых становится невозможным восстановить содержание - персональных данных в информационной системе персональных данных и/или в результате которых уничтожаются - материальные носители персональных данных. -

        -

        - Обезличивание персональных данных – действия, в результате которых становится невозможным без использования - дополнительной информации определить принадлежность персональных данных к конкретному субъекту персональных - данных. -

        -

        - 1.8 Оператор обеспечивает конфиденциальность и безопасность персональных данных при их обработке в соответствии с - требованием законодательства и не раскрывает третьим лицами и не распространяет персональные данные без согласия - на это субъекта персональных данных, если иное не предусмотрено федеральным законодательством. -

        -

        - В соответствии с перечнем персональных данных, обрабатываемых на сайте, персональные данные пользователей сайта - являются конфиденциальной информацией. -

        -

         

        -

        2. Основные права и обязанности Оператора и Субъекта персональных данных.

        -

         

        -

        2.1 Оператор имеет право:

        -

        - получать персональные данные от субъектов персональных данных и от третьих лиц (лиц, не являющихся субъектами - персональных данных), при этом Оператор выполняет обязанности, предусмотренные Федеральным законом от 27 июля - 2006 года № 152-ФЗ «О персональных данных»; -

        -

        - самостоятельно определять состав и перечень мер, необходимых и достаточных для обеспечения выполнения - обязанностей, предусмотренных Законом о персональных данных и принятыми в соответствии с ним нормативными - правовыми актами, если иное не предусмотрено Законом о персональных данных или другими федеральными законами; -

        -

        - в случае отзыва субъектом персональных данных согласия на обработку персональных данных Оператор вправе продолжить - обработку персональных данных без согласия субъекта персональных данных при наличии оснований, указанных в Законе - о персональных данных. -

        -

        2.2 Оператор обязан:

        -

        организовывать обработку персональных данных в соответствии с требованиями Закона о персональных данных;

        -

        - отвечать на обращения и запросы субъектов персональных данных и их законных представителей в соответствии с - требованиями Закона о персональных данных. -

        -

        2.3. Субъект персональных данных имеет право:

        -

        - получать информацию, касающуюся обработки его персональных данных, за исключением случаев, предусмотренных - федеральными законами. Сведения предоставляются субъекту персональных данных Оператором в доступной форме, и в них - не должны содержаться персональные данные, относящиеся к другим субъектам персональных данных, за исключением - случаев, когда имеются законные основания для раскрытия таких персональных данных. Перечень информации и порядок - ее получения установлен Законом о персональных данных; -

        -

        - требовать от оператора уточнения его персональных данных, их блокирования или уничтожения в случае, если - персональные данные являются неполными, устаревшими, неточными, незаконно полученными или не являются необходимыми - для заявленной цели обработки; -

        -

        - иные права, предусмотренные главой 3 Федерального закона от 27 июля 2006 года № 152-ФЗ «О персональных - данных» -

        -

         

        -

        3. Цели сбора персональных данных

        -

        - 3.1 Обработка персональных данных ограничивается достижением конкретных, заранее определенных и законных целей. Не - допускается обработка персональных данных, несовместимая с целями сбора персональных данных. -

        -

        3.2 Обработке подлежат только персональные данные, которые отвечают целям их обработки.

        -

        - 3.3 Обработка персональных данных пользователей сайта осуществляется исключительно в целях предоставления - пользователю возможности взаимодействовать с сайтом. -

        -

        - 3.4 Сведениями, составляющими персональные данные на сайте, является любая информация, относящаяся к определенному - или определяемому на основании такой информации физическому лицу (субъекту персональных данных). -

        -

         

        -

        4. Объем обрабатываемых персональных данных.

        -

        - 4.1. Содержание и объем обрабатываемых персональных данных пользователей сайта соответствует заявленным целям - обработки, предусмотренным в разделе 3 настоящей Политики. Обрабатываемые персональные данные не должны быть - избыточными по отношению к заявленным целям их обработки. -

        -

        4.2. Оператор может обрабатывать следующие персональные данные пользователей:

        -
          -
        • источник захода на сайт (сайты) и информация поискового или рекламного запроса;
        • -
        • - данные о пользовательском устройстве (среди которых разрешение, версия и другие атрибуты, характеризующие - пользовательское устройство); -
        • -
        • пользовательские клики, просмотры страниц, заполнения полей, показы и просмотры баннеров и видео;
        • -
        • данные, характеризующие аудиторные сегменты;
        • -
        • параметры сессии;
        • -
        • данные о времени посещения;
        • -
        • идентификатор пользователя, хранимый в cookie;
        • -
        • фамилия;
        • -
        • имя;
        • -
        • отчество;
        • -
        • номер контактного телефона;
        • -
        • адрес электронной почты;
        • -
        -

        - 4.3 Оператором не осуществляется обработка специальных категорий персональных данных, касающихся расовой, - национальной принадлежности, политических взглядов, религиозных или философских убеждений, состояния здоровья, - интимной жизни, за исключением случаев, предусмотренных законодательством Российской Федерации. -

        -

        4.4 Оператор не осуществляет обработку биометрических персональных данных.

        -

        4.5 Оператор не осуществляет трансграничную передачу персональных данных.

        -

         

        -

        5. Порядок и условия обработки персональных данных.

        -

         

        -

        - 5.1 Обработка персональных данных осуществляется Оператором в соответствии с требованиями законодательства - Российской Федерации. -

        -

        - 5.2 Обработка персональных данных осуществляется с согласия субъектов персональных данных на обработку их - персональных данных, а также без такового в случаях, предусмотренных законодательством Российской Федерации. -

        -

        5.3 Оператор осуществляет как автоматизированную, так и неавтоматизированную обработку персональных данных.

        -

        - 5.4 К обработке персональных данных допускаются работники Оператора, в должностные обязанности которых входит - обработка персональных данных. -

        -

        - 5.5 Не допускается раскрытие и предоставление третьим лицам и распространение персональных данных без согласия - субъекта персональных данных, если иное не предусмотрено федеральным законом. -

        -

        - 5.6 Передача персональных данных органам дознания и следствия, в Федеральную налоговую службу, Пенсионный фонд - Российской Федерации, Фонд социального страхования и другие уполномоченные органы исполнительной власти и - организации осуществляется в соответствии с требованиями законодательства Российской Федерации. -

        -

        - 5.7 Оператор принимает необходимые правовые, организационные и технические меры для защиты персональных данных от - неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, распространения и других - несанкционированных действий, в том числе: -

        -
          -
        • определяет угрозы безопасности персональных данных при их обработке;
        • -
        • - принимает локальные нормативные акты и иные документы, регулирующие отношения в сфере обработки и защиты - персональных данных; -
        • -
        • создает необходимые условия для работы с персональными данными;
        • -
        • организует учет документов, содержащих персональные данные;
        • -
        • организует работу с информационными системами, в которых обрабатываются персональные данные;
        • -
        • - хранит персональные данные в условиях, при которых обеспечивается их сохранность и исключается неправомерный - доступ к ним. -
        • -
        -

        - 5.8 Оператор осуществляет хранение персональных данных в форме, позволяющей определить субъекта персональных - данных, не дольше, чем этого требуют цели обработки персональных данных, если срок хранения персональных данных не - установлен федеральным законом, договором. -

        -

        - 5.9 При сборе персональных данных, в том числе посредством информационно-телекоммуникационной сети Интернет, - Оператор обеспечивает запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение - персональных данных граждан Российской Федерации с использованием баз данных, находящихся на территории Российской - Федерации, за исключением случаев, указанных в Законе о персональных данных. -

        -
        - -
        -
        - - - - - -
        - - -
        - - - - - -
        Спасибо, заявка отправлена
        - - - - - - - - diff --git a/kula153/send.php b/kula153/send.php deleted file mode 100644 index fe5dacde..00000000 --- a/kula153/send.php +++ /dev/null @@ -1,30 +0,0 @@ -Новый заказ:%0A"; - $arr = array( - 'Имя:' => $_POST['name'], - 'Телефон:' => $_POST['phone'], - 'Email:' => $_POST['email'], - 'Номер кошелька:' => $_POST['wallet'], - 'Номер заявки:' => $_POST['order_id'] - ); - - foreach($arr as $key => $value) { - $txt .= "".$key." ".$value."%0A"; - }; - - $sendToTelegram = fopen("https://api.telegram.org/bot{$myToken}/sendMessage?chat_id={$my_chat_id}&parse_mode=html&text={$txt}","r"); - - echo json_encode($arr); - exit; -} - -?> \ No newline at end of file diff --git a/kula153/textolite/.htaccess b/kula153/textolite/.htaccess deleted file mode 100644 index f7d04755..00000000 --- a/kula153/textolite/.htaccess +++ /dev/null @@ -1,16 +0,0 @@ - -RewriteEngine on - -DirectoryIndex textolite.php - -RewriteCond %{REQUEST_FILENAME} !-f - -RewriteRule ^.*$ textolite.php?q=$0 [L,NC,QSA] - - - -deny from all - - - -Options -Indexes \ No newline at end of file diff --git a/kula153/textolite/conf.ini b/kula153/textolite/conf.ini deleted file mode 100644 index 70515d90..00000000 --- a/kula153/textolite/conf.ini +++ /dev/null @@ -1,54 +0,0 @@ -lang = en,ru - -password = 6fbde3e2135f10ee603ff6f59bc97d4b0a4d4e9a - -session = ed06f264d218525c0b2829155cacf372be9089da - -pass_complexity = 500000 - -pass_complexity_js = 14972 - -auth_time = 1651763961 - -auth_error_time = 1651763931 - -auth_error_list = a%3A1%3A%7Bs%3A13%3A%22194.26.223.70%22%3Bi%3A3%3B%7D - -auth_error_limit = 5 - -auth_lockout_duration = 1 - -auth_session_reset = 60 - -auth_bot_filter = 1 - -logout_to_site = 0 - -site_scripts = 1 - -site_styles = 1 - -code_redraw_delay = 200 - -code_undo_limit = 50 - -code_highlighting = 1 - -allowed_ext = - -visual_ext = html,htm,shtml,shtm,stm,php - -editable_ext = html,htm,shtml,shtm,stm,php,css,js,xml,txt - -default_file = index.html - -folder_size = 1 - -document_root = - -update_final = 1 - -update_beta = 0 - -cache = a%3A191%3A%7Bs%3A1%3A%22%2F%22%3Bi%3A28918427%3Bs%3A6%3A%22%2F.git%2F%22%3Bi%3A20945964%3Bs%3A12%3A%22%2F.git%2Fhooks%2F%22%3Bi%3A23442%3Bs%3A11%3A%22%2F.git%2Finfo%2F%22%3Bi%3A240%3Bs%3A11%3A%22%2F.git%2Flogs%2F%22%3Bi%3A940%3Bs%3A16%3A%22%2F.git%2Flogs%2Frefs%2F%22%3Bi%3A470%3Bs%3A22%3A%22%2F.git%2Flogs%2Frefs%2Fheads%2F%22%3Bi%3A470%3Bs%3A14%3A%22%2F.git%2Fobjects%2F%22%3Bi%3A20908818%3Bs%3A17%3A%22%2F.git%2Fobjects%2F00%2F%22%3Bi%3A355622%3Bs%3A17%3A%22%2F.git%2Fobjects%2F01%2F%22%3Bi%3A15907%3Bs%3A17%3A%22%2F.git%2Fobjects%2F02%2F%22%3Bi%3A12708%3Bs%3A17%3A%22%2F.git%2Fobjects%2F04%2F%22%3Bi%3A93%3Bs%3A17%3A%22%2F.git%2Fobjects%2F08%2F%22%3Bi%3A586%3Bs%3A17%3A%22%2F.git%2Fobjects%2F0b%2F%22%3Bi%3A298422%3Bs%3A17%3A%22%2F.git%2Fobjects%2F0c%2F%22%3Bi%3A288%3Bs%3A17%3A%22%2F.git%2Fobjects%2F0d%2F%22%3Bi%3A84674%3Bs%3A17%3A%22%2F.git%2Fobjects%2F0e%2F%22%3Bi%3A38667%3Bs%3A17%3A%22%2F.git%2Fobjects%2F0f%2F%22%3Bi%3A201467%3Bs%3A17%3A%22%2F.git%2Fobjects%2F10%2F%22%3Bi%3A2173%3Bs%3A17%3A%22%2F.git%2Fobjects%2F11%2F%22%3Bi%3A291%3Bs%3A17%3A%22%2F.git%2Fobjects%2F12%2F%22%3Bi%3A25812%3Bs%3A17%3A%22%2F.git%2Fobjects%2F13%2F%22%3Bi%3A303%3Bs%3A17%3A%22%2F.git%2Fobjects%2F14%2F%22%3Bi%3A157245%3Bs%3A17%3A%22%2F.git%2Fobjects%2F17%2F%22%3Bi%3A487484%3Bs%3A17%3A%22%2F.git%2Fobjects%2F1c%2F%22%3Bi%3A2382%3Bs%3A17%3A%22%2F.git%2Fobjects%2F1e%2F%22%3Bi%3A409365%3Bs%3A17%3A%22%2F.git%2Fobjects%2F1f%2F%22%3Bi%3A375103%3Bs%3A17%3A%22%2F.git%2Fobjects%2F22%2F%22%3Bi%3A1498%3Bs%3A17%3A%22%2F.git%2Fobjects%2F23%2F%22%3Bi%3A115357%3Bs%3A17%3A%22%2F.git%2Fobjects%2F24%2F%22%3Bi%3A5134%3Bs%3A17%3A%22%2F.git%2Fobjects%2F25%2F%22%3Bi%3A336%3Bs%3A17%3A%22%2F.git%2Fobjects%2F26%2F%22%3Bi%3A124899%3Bs%3A17%3A%22%2F.git%2Fobjects%2F27%2F%22%3Bi%3A319264%3Bs%3A17%3A%22%2F.git%2Fobjects%2F29%2F%22%3Bi%3A459573%3Bs%3A17%3A%22%2F.git%2Fobjects%2F2d%2F%22%3Bi%3A281%3Bs%3A17%3A%22%2F.git%2Fobjects%2F2e%2F%22%3Bi%3A426%3Bs%3A17%3A%22%2F.git%2Fobjects%2F2f%2F%22%3Bi%3A875756%3Bs%3A17%3A%22%2F.git%2Fobjects%2F30%2F%22%3Bi%3A733%3Bs%3A17%3A%22%2F.git%2Fobjects%2F31%2F%22%3Bi%3A320%3Bs%3A17%3A%22%2F.git%2Fobjects%2F32%2F%22%3Bi%3A443648%3Bs%3A17%3A%22%2F.git%2Fobjects%2F33%2F%22%3Bi%3A319%3Bs%3A17%3A%22%2F.git%2Fobjects%2F36%2F%22%3Bi%3A336858%3Bs%3A17%3A%22%2F.git%2Fobjects%2F3b%2F%22%3Bi%3A3990%3Bs%3A17%3A%22%2F.git%2Fobjects%2F3c%2F%22%3Bi%3A42608%3Bs%3A17%3A%22%2F.git%2Fobjects%2F3d%2F%22%3Bi%3A14590%3Bs%3A17%3A%22%2F.git%2Fobjects%2F3e%2F%22%3Bi%3A1436%3Bs%3A17%3A%22%2F.git%2Fobjects%2F3f%2F%22%3Bi%3A7177%3Bs%3A17%3A%22%2F.git%2Fobjects%2F41%2F%22%3Bi%3A519492%3Bs%3A17%3A%22%2F.git%2Fobjects%2F47%2F%22%3Bi%3A346408%3Bs%3A17%3A%22%2F.git%2Fobjects%2F48%2F%22%3Bi%3A68767%3Bs%3A17%3A%22%2F.git%2Fobjects%2F4a%2F%22%3Bi%3A1606%3Bs%3A17%3A%22%2F.git%2Fobjects%2F4b%2F%22%3Bi%3A401%3Bs%3A17%3A%22%2F.git%2Fobjects%2F4c%2F%22%3Bi%3A241453%3Bs%3A17%3A%22%2F.git%2Fobjects%2F51%2F%22%3Bi%3A292%3Bs%3A17%3A%22%2F.git%2Fobjects%2F52%2F%22%3Bi%3A423626%3Bs%3A17%3A%22%2F.git%2Fobjects%2F53%2F%22%3Bi%3A150790%3Bs%3A17%3A%22%2F.git%2Fobjects%2F54%2F%22%3Bi%3A15831%3Bs%3A17%3A%22%2F.git%2Fobjects%2F56%2F%22%3Bi%3A323865%3Bs%3A17%3A%22%2F.git%2Fobjects%2F57%2F%22%3Bi%3A44840%3Bs%3A17%3A%22%2F.git%2Fobjects%2F58%2F%22%3Bi%3A302%3Bs%3A17%3A%22%2F.git%2Fobjects%2F59%2F%22%3Bi%3A104%3Bs%3A17%3A%22%2F.git%2Fobjects%2F5d%2F%22%3Bi%3A443%3Bs%3A17%3A%22%2F.git%2Fobjects%2F5e%2F%22%3Bi%3A109948%3Bs%3A17%3A%22%2F.git%2Fobjects%2F5f%2F%22%3Bi%3A164500%3Bs%3A17%3A%22%2F.git%2Fobjects%2F60%2F%22%3Bi%3A401135%3Bs%3A17%3A%22%2F.git%2Fobjects%2F63%2F%22%3Bi%3A221845%3Bs%3A17%3A%22%2F.git%2Fobjects%2F65%2F%22%3Bi%3A135%3Bs%3A17%3A%22%2F.git%2Fobjects%2F66%2F%22%3Bi%3A542%3Bs%3A17%3A%22%2F.git%2Fobjects%2F67%2F%22%3Bi%3A72%3Bs%3A17%3A%22%2F.git%2Fobjects%2F68%2F%22%3Bi%3A99831%3Bs%3A17%3A%22%2F.git%2Fobjects%2F69%2F%22%3Bi%3A1106%3Bs%3A17%3A%22%2F.git%2Fobjects%2F6c%2F%22%3Bi%3A276%3Bs%3A17%3A%22%2F.git%2Fobjects%2F6e%2F%22%3Bi%3A270229%3Bs%3A17%3A%22%2F.git%2Fobjects%2F6f%2F%22%3Bi%3A387%3Bs%3A17%3A%22%2F.git%2Fobjects%2F72%2F%22%3Bi%3A203%3Bs%3A17%3A%22%2F.git%2Fobjects%2F73%2F%22%3Bi%3A142023%3Bs%3A17%3A%22%2F.git%2Fobjects%2F76%2F%22%3Bi%3A112%3Bs%3A17%3A%22%2F.git%2Fobjects%2F77%2F%22%3Bi%3A430713%3Bs%3A17%3A%22%2F.git%2Fobjects%2F78%2F%22%3Bi%3A62284%3Bs%3A17%3A%22%2F.git%2Fobjects%2F79%2F%22%3Bi%3A176806%3Bs%3A17%3A%22%2F.git%2Fobjects%2F7a%2F%22%3Bi%3A7644%3Bs%3A17%3A%22%2F.git%2Fobjects%2F7b%2F%22%3Bi%3A417118%3Bs%3A17%3A%22%2F.git%2Fobjects%2F7c%2F%22%3Bi%3A994%3Bs%3A17%3A%22%2F.git%2Fobjects%2F7e%2F%22%3Bi%3A128095%3Bs%3A17%3A%22%2F.git%2Fobjects%2F7f%2F%22%3Bi%3A7139%3Bs%3A17%3A%22%2F.git%2Fobjects%2F80%2F%22%3Bi%3A130486%3Bs%3A17%3A%22%2F.git%2Fobjects%2F82%2F%22%3Bi%3A8084%3Bs%3A17%3A%22%2F.git%2Fobjects%2F83%2F%22%3Bi%3A13399%3Bs%3A17%3A%22%2F.git%2Fobjects%2F84%2F%22%3Bi%3A557601%3Bs%3A17%3A%22%2F.git%2Fobjects%2F85%2F%22%3Bi%3A14922%3Bs%3A17%3A%22%2F.git%2Fobjects%2F87%2F%22%3Bi%3A20547%3Bs%3A17%3A%22%2F.git%2Fobjects%2F89%2F%22%3Bi%3A119119%3Bs%3A17%3A%22%2F.git%2Fobjects%2F8c%2F%22%3Bi%3A406714%3Bs%3A17%3A%22%2F.git%2Fobjects%2F8e%2F%22%3Bi%3A126%3Bs%3A17%3A%22%2F.git%2Fobjects%2F8f%2F%22%3Bi%3A58299%3Bs%3A17%3A%22%2F.git%2Fobjects%2F90%2F%22%3Bi%3A5016%3Bs%3A17%3A%22%2F.git%2Fobjects%2F91%2F%22%3Bi%3A124762%3Bs%3A17%3A%22%2F.git%2Fobjects%2F92%2F%22%3Bi%3A1239%3Bs%3A17%3A%22%2F.git%2Fobjects%2F95%2F%22%3Bi%3A136618%3Bs%3A17%3A%22%2F.git%2Fobjects%2F97%2F%22%3Bi%3A280%3Bs%3A17%3A%22%2F.git%2Fobjects%2F98%2F%22%3Bi%3A27559%3Bs%3A17%3A%22%2F.git%2Fobjects%2F9a%2F%22%3Bi%3A404479%3Bs%3A17%3A%22%2F.git%2Fobjects%2F9b%2F%22%3Bi%3A104203%3Bs%3A17%3A%22%2F.git%2Fobjects%2F9d%2F%22%3Bi%3A657248%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa0%2F%22%3Bi%3A103%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa1%2F%22%3Bi%3A190287%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa2%2F%22%3Bi%3A101%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa3%2F%22%3Bi%3A123700%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa4%2F%22%3Bi%3A602252%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa5%2F%22%3Bi%3A15777%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa8%2F%22%3Bi%3A402%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fa9%2F%22%3Bi%3A272912%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fab%2F%22%3Bi%3A1139%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fac%2F%22%3Bi%3A276%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fad%2F%22%3Bi%3A273%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fae%2F%22%3Bi%3A163161%3Bs%3A17%3A%22%2F.git%2Fobjects%2Faf%2F%22%3Bi%3A14354%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb2%2F%22%3Bi%3A61688%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb4%2F%22%3Bi%3A129%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb6%2F%22%3Bi%3A312%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb7%2F%22%3Bi%3A1225%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb8%2F%22%3Bi%3A2290%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fb9%2F%22%3Bi%3A409217%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fba%2F%22%3Bi%3A20627%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fbb%2F%22%3Bi%3A279%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fbc%2F%22%3Bi%3A631113%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fbe%2F%22%3Bi%3A180%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fbf%2F%22%3Bi%3A356573%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc0%2F%22%3Bi%3A91109%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc1%2F%22%3Bi%3A280%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc4%2F%22%3Bi%3A462430%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc5%2F%22%3Bi%3A299%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc6%2F%22%3Bi%3A298%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fc7%2F%22%3Bi%3A312%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fcb%2F%22%3Bi%3A1250293%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fcc%2F%22%3Bi%3A4343%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fcd%2F%22%3Bi%3A224965%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fce%2F%22%3Bi%3A38425%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fcf%2F%22%3Bi%3A138501%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd2%2F%22%3Bi%3A11525%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd3%2F%22%3Bi%3A358%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd5%2F%22%3Bi%3A4001%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd6%2F%22%3Bi%3A106182%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd7%2F%22%3Bi%3A368045%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd8%2F%22%3Bi%3A116%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fd9%2F%22%3Bi%3A359233%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fda%2F%22%3Bi%3A814%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fdc%2F%22%3Bi%3A333%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fdd%2F%22%3Bi%3A329%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fde%2F%22%3Bi%3A924818%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe0%2F%22%3Bi%3A288%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe2%2F%22%3Bi%3A162127%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe4%2F%22%3Bi%3A17614%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe5%2F%22%3Bi%3A9284%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe6%2F%22%3Bi%3A27122%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fe9%2F%22%3Bi%3A791471%3Bs%3A17%3A%22%2F.git%2Fobjects%2Feb%2F%22%3Bi%3A303%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fec%2F%22%3Bi%3A43851%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fef%2F%22%3Bi%3A15265%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff0%2F%22%3Bi%3A139765%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff1%2F%22%3Bi%3A208%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff2%2F%22%3Bi%3A273%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff3%2F%22%3Bi%3A349%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff4%2F%22%3Bi%3A6348%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff7%2F%22%3Bi%3A179%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff8%2F%22%3Bi%3A295%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ff9%2F%22%3Bi%3A276%3Bs%3A17%3A%22%2F.git%2Fobjects%2Ffd%2F%22%3Bi%3A42908%3Bs%3A17%3A%22%2F.git%2Fobjects%2Fff%2F%22%3Bi%3A660%3Bs%3A19%3A%22%2F.git%2Fobjects%2Finfo%2F%22%3Bi%3A0%3Bs%3A19%3A%22%2F.git%2Fobjects%2Fpack%2F%22%3Bi%3A0%3Bs%3A11%3A%22%2F.git%2Frefs%2F%22%3Bi%3A41%3Bs%3A17%3A%22%2F.git%2Frefs%2Fheads%2F%22%3Bi%3A41%3Bs%3A16%3A%22%2F.git%2Frefs%2Ftags%2F%22%3Bi%3A0%3Bs%3A5%3A%22%2Fcss%2F%22%3Bi%3A198837%3Bs%3A8%3A%22%2Fimages%2F%22%3Bi%3A6205889%3Bs%3A20%3A%22%2Fimages%2Fattractions%2F%22%3Bi%3A909939%3Bs%3A16%3A%22%2Fimages%2Freviews%2F%22%3Bi%3A74162%3Bs%3A14%3A%22%2Fimages%2Frooms%2F%22%3Bi%3A3597843%3Bs%3A16%3A%22%2Fimages%2Frooms%2F2%2F%22%3Bi%3A1041141%3Bs%3A16%3A%22%2Fimages%2Frooms%2F4%2F%22%3Bi%3A970164%3Bs%3A16%3A%22%2Fimages%2Frooms%2F6%2F%22%3Bi%3A1586538%3Bs%3A15%3A%22%2Fimages%2Fslider%2F%22%3Bi%3A641894%3Bs%3A4%3A%22%2Fjs%2F%22%3Bi%3A465760%3Bs%3A9%3A%22%2Fprivacy%2F%22%3Bi%3A287863%3Bs%3A13%3A%22%2Fprivacy%2Fcss%2F%22%3Bi%3A93511%3Bs%3A12%3A%22%2Fprivacy%2Fjs%2F%22%3Bi%3A194352%3Bs%3A7%3A%22%2Frules%2F%22%3Bi%3A287863%3Bs%3A11%3A%22%2Frules%2Fcss%2F%22%3Bi%3A93511%3Bs%3A10%3A%22%2Frules%2Fjs%2F%22%3Bi%3A194352%3Bs%3A11%3A%22%2Ftextolite%2F%22%3Bi%3A125031%3B%7D - diff --git a/kula153/textolite/lang.ini b/kula153/textolite/lang.ini deleted file mode 100644 index 24a5b7d9..00000000 --- a/kula153/textolite/lang.ini +++ /dev/null @@ -1,237 +0,0 @@ -[ru] - - 404 = "Страница не найдена" - 307 = "Временное перенаправление" - 403 = "Доступ запрещен" - - auth = "Авторизация" - login = "Войти" - password = "Пароль" - show_password = "Показать пароль" - hide_password = "Скрыть пароль" - - files = "Файлы" - settings = "Настройки" - logout = "Выход" - save = "Сохранить" - not_save = "Не сохранять" - - file_name = "Имя" - file_size = "Размер" - file_changed = "Изменён" - file_menu = "Меню" - add_file = "Добавить файл" - delete_file = "Удалить файл" - deletion_confirm = "Подтверждение удаления" - deletion_cancel = "Отменить удаление" - - request_rejected = "Запрос отклонён" - request_blocked = "Настройки сервера блокируют запрос" - no_response = "Сервер не отвечает" - old_browser = "Нужен новый браузер" - requires_javascript = "Нужен JavaScript" - not_writable = "Нет прав на запись в файл" - document_root_error = "Проблема с DOCUMENT_ROOT" - no_frames = "Не работает iframe" - - password_hashing = "Создание хеша" - password_checking = "Проверка пароля" - access_granted = "Доступ разрешен" - access_denied = "Доступ запрещен" - - saving = "Сохранение" - saved = "Изменения сохранены" - not_saved = "Изменения не сохранены" - reset_session = "Сброс сессии" - access_closed = "Доступ закрыт" - login_again = "Войти снова" - - uploading = "Загрузка файлов" - uploading_complete = "Загрузка файлов завершена" - uploading_error = "Сбой в загрузке файлов" - extension_error = "Файл имеет недопустимое расширение" - count_limit = "Лимит сервера на количество файлов за раз" - size_limit = "Лимит сервера на размер файла" - file_deletion = "Удаление файла" - file_deleted = "Файл успешно удалён" - deletion_error = "Сбой в удалении файла" - - unknown_relation = "Элемент имеет неизвестные зависимости" - element_busy = "Элемент используется скриптами" - disable_script = "Отключить скрипты сайта" - disable = "отключить" - disabling_scripts = "Отключение скриптов сайта" - scripts_disabled = "Скрипты сайта отключены" - - new_version = "Доступна новая версия" - need_update = "Необходимо установить новую версию" - install = "установить" - not_install = "Не устанавливать" - download_installer = "Загрузка установочных файлов" - system_update = "Обновление системных файлов" - update_error = "Не удалось перезаписать системные файлы" - install_complete = "Установка завершена" - no_connect = "Нет соединения с сервером" - - attachment_domain = "Привязка кода активации к домену" - attachment_notice = "Процедура привязки необратима, изменить домен в будущем будет невозможно. Убедитесь, что система установлена на правильном домене и подтвердите свои действия." - attach = "Привязать" - cancel = "Отмена" - - new_password = "Новый пароль" - login_attempts = "Попыток авторизации с неверным паролем" - lockout_duration = "Длительность блокировки в часах" - session_autoreset = "Завершение сессии после бездействия в минутах" - redirect_to_site = "Перенаправлять на сайт после выхода из системы" - source_editor = "Редактор исходного кода" - visual_editor = "Визуальный редактор" - file_manager = "Файловый менеджер" - enable_scripts = "Включить скрипты сайта во время редактирования" - enable_styles = "Включить стили сайта во время редактирования" - redraw_delay = "Обновлять код после бездействия в миллисекундах" - steps_for_undo = "Количество шагов для отката изменений через Ctrl+Z" - enable_highlighting = "Включить подсветку синтаксиса и нумерацию строк" - display_catalog_size = "Отображать размер каталогов в файловом менеджере" - main_page_or_file = "Главная страница или файл сайта" - new_version_notify = "Сообщать о появлении новых версий системы" - beta_version_notify = "Сообщать о появлении новых бета-версий системы" - restore_settings="Восстановить настройки по умолчанию" - language = "Язык интерфейса" - standard = "Стандартная версия" - extended = "Расширенная версия" - activate = "Код активации" - system = "Система" - - auth_error_limit_desc = "Ограничивает максимально допустимое количество ошибок при введении пароля. Если количество ошибок с одного IP-адреса превышает это значение, пользователь блокируется на период, который можно настроить в следующем параметре." - auth_lockout_duration_desc = "Отвечает за длительность блокировки пользователей, превысивших максимально допустимое количество ошибок при введении пароля. После истечения указанного периода пользователь получает одну дополнительную попытку авторизации." - auth_session_reset_desc = "Ограничивает время жизни сессии после потери системой возможности поддерживать соединение с сервером." - logout_to_site_desc = "В случае включения выход из системы будет сопровождаться перенаправлением пользователя на сайт по адресу последней редактируемой страницы или файла." - site_scripts_desc = "Скрипты сайта могут мешать редактированию некоторых элементов в визуальном редакторе. Отключение скриптов может сделать такие элементы доступными для визуального редактирования." - site_styles_desc = "Стили сайта могут мешать редактированию некоторых элементов в визуальном редакторе. Отключение стилей может помочь добраться до таких элементов в визуальном редакторе." - code_redraw_delay_desc = "Когда пользователь вводит новый код в редакторе исходного кода, система ждет паузу в процессе ввода, чтобы проверить и оформить новый код. Данный параметр определяет, какой должна быть пауза, чтобы система могла начать переоформление. Чем меньше его значение, тем чаще будет переоформляться новый код в процессе ввода. Увеличение значения может заметно снизить нагрузку на браузер." - code_undo_limit_desc = "Определяет максимальную глубину отката изменений в редакторе исходного кода через Ctrl+Z." - folder_size_desc = "Получение данных о размере каталогов может замедлять работу файлового менеджера на больших сайтах со сложными структурами. На таких сайтах можно отключить отображение размера каталогов." - code_highlighting_desc = "Подсветка синтаксиса и нумерация строк облегчает редактирование кода. Отключение может заметно снизить нагрузку на браузер." - default_file_desc = "Значение должно содержать имя реально существующего в корне сайта файла. Система будет открывать в редакторе этот файл в качестве главной страницы сайта, а также во всех случаях, когда файл для редактирования не выбран или не может быть открыт" - - ru = "Русский" - en = "Английский" - -[en] - - 404 = "Page not found" - 307 = "Temporary redirect" - 403 = "Forbidden" - - auth = "Authorization" - login = "Log in" - password = "Password" - show_password = "Show password" - hide_password = "Hide password" - - files = "Files" - settings = "Settings" - logout = "Logout" - save = "Save" - not_save = "Do not save" - - file_name = "Name" - file_size = "Size" - file_changed = "Changed" - file_menu = "Menu" - add_file = "Add file" - delete_file = "Delete file" - deletion_confirm = "Confirm" - deletion_cancel = "Cancel" - - request_rejected = "The request was rejected" - request_blocked = "Server settings blocked the request" - no_response = "Server is not responding" - old_browser = "Requires a newer browser" - requires_javascript = "Requires JavaScript" - not_writable = "No permissions to write to file" - document_root_error = "The problem with DOCUMENT_ROOT" - no_frames = "Iframe is not working" - - password_hashing = "Password hashing" - password_checking = "Password checking" - access_granted = "Access granted" - access_denied = "Access denied" - - saving = "Saving" - saved = "The changes have been saved" - not_saved = "The changes are not saved" - reset_session = "Reset session" - access_closed = "Access is closed" - login_again = "Login again" - - uploading = "Uploading files" - uploading_complete = "Files uploaded" - uploading_error = "Failure in file uploading" - extension_error = "Forbidden extension" - count_limit = "Number of files exceeds server limit" - size_limit = "File size exceeds server limit" - file_deletion = "File deletion" - file_deleted = "File is deleted" - deletion_error = "Failure in file deletion" - - unknown_relation = "The element has unknown relations" - element_busy = "The element is used by scripts" - disable_script = "Disable website scripts" - disable = "disable" - disabling_scripts = "Disabling website scripts" - scripts_disabled = "Website scripts is disabled" - - new_version = "A new version is available" - need_update = "Requires a newer version" - install = "install" - not_install = "Do not install" - download_installer = "Download installation files" - system_update = "System files update" - update_error = "Unable to overwrite system files" - install_complete = "Installation complete" - no_connect = "Could not connect to server" - - attachment_domain = "Attachment of an activation code to the domain name" - attachment_notice = "The procedure of an attachment is irreversible, changing the domain name in the future will be impossible. Make sure that the system is installed on the correct domain name and confirm your actions." - attach = "Attach" - cancel = "Cancel" - - new_password = "New password" - login_attempts = "Login attempts with an incorrect password" - lockout_duration = "Lockout duration in hours" - session_autoreset = "Completion of session after inaction in minutes" - redirect_to_site = "Redirect to website after logout" - source_editor = "Source editor" - visual_editor = "Visual editor" - file_manager = "File manager" - enable_scripts = "Enable website scripts during editing" - enable_styles = "Enable website styles during editing" - redraw_delay = "Redraw a code after inactivity in milliseconds" - steps_for_undo = "Quantity of steps for rollback of changes through Ctrl+Z" - enable_highlighting = "Enable syntax highlighting and line numbering" - display_catalog_size = "Display the size of catalogs in the file manager" - main_page_or_file = "Main page or file of website" - new_version_notify = "Notify when new versions are available" - beta_version_notify = "Notify when new beta versions are available" - restore_settings="Restore the default settings" - language = "Interface language" - standard = "Standard version" - extended = "Extended version" - activate = "Activation code" - system = "System" - - auth_error_limit_desc = "Login attempts with an incorrect password" - auth_lockout_duration_desc = "Lockout duration in hours" - auth_session_reset_desc = "Completion of session after inaction in minutes" - logout_to_site_desc = "Redirect to website after logout" - site_scripts_desc = "Enable website scripts during editing" - site_styles_desc = "Enable website styles during editing" - code_redraw_delay_desc = "Redraw a code after inactivity in milliseconds" - code_undo_limit_desc = "Quantity of steps for rollback of changes through Ctrl+Z" - code_highlighting_desc = "Enable syntax highlighting and line numbering" - folder_size_desc = "Display the size of catalogs in the file manager" - default_file_desc = "Main page or file of website" - - ru = "Russian" - en = "English" \ No newline at end of file diff --git a/kula153/textolite/textolite.css b/kula153/textolite/textolite.css deleted file mode 100644 index 85f6887b..00000000 --- a/kula153/textolite/textolite.css +++ /dev/null @@ -1 +0,0 @@ -/* Textolite v2.12s */ *{margin:0;padding:0}fieldset,iframe{border:none}ul,ol{list-style-type:none}:focus{outline:none}body{font-family:Verdana;font-size:11px;line-height:20px;color:#b7b8bd;text-shadow:1px 1px 0 #3f3f41}h1{font-weight:normal}a{color:#e5e6eb;text-decoration:none}a:visited{color:#e5e6eb}a:hover{color:#adc8fe;text-decoration:underline}a:active{color:#a6c0e1}input[type="text"],input[type="password"]{display:block;width:145px;height:17px;padding:3px;border:1px solid #38383a;border-bottom-color:#5c5c5e;border-right-color:#555557;border-left-color:#3c3c3e;border-radius:5px;font-family:"Courier New";font-size:16px;line-height:16px;letter-spacing:-1px;text-shadow:1px 1px 0 #38383a;color:#fff;background-color:#434345}input[type="text"][disabled],input[type="password"][disabled]{color:#5c5c5e}input[type="button"]{display:block;width:94px;height:22px;margin-left:-1px;padding:0 0 2px 0;border-top:1px solid #6ed76e;border-bottom:1px solid #5fb85f;border-left:1px solid #68cb68;border-right:1px solid #68cb68;border-radius:5px;font-size:11px;line-height:20px;font-family:Verdana;text-align:center;white-space:nowrap;color:#fff;text-shadow:1px 1px 0 #509b50;background:#68cb68;background:#68cb68 linear-gradient(to bottom,#6ed76e,#5fb85f);cursor:pointer}input[type="button"]:hover{border-top-color:#75e375;border-bottom-color:#64c364;border-left-color:#6fd86f;border-right-color:#6fd86f;background:#6fd86f;background:#6fd86f linear-gradient(to bottom,#75e375,#64c364)}input[type="button"]:active{border-top-color:#46cc46;border-bottom-color:#3da13d;border-left-color:#42b042;border-right-color:#42b042;color:#deeede;background:#42b042;background:#42b042 linear-gradient(to bottom,#46cc46,#3da13d)}input[type="button"][disabled],input[type="button"][disabled]:hover,input[type="button"][disabled]:active{border:1px solid #565658;box-shadow:1px 1px 0 0 #6f6f72,inset 1px 1px 0 0 #6f6f72;text-shadow:1px 1px 0 #545456;color:#87878b;background:#626265;cursor:default}@font-face{font-family:'textolite';src:url('data:font/woff;base64,d09GRgABAAAAABfgAA8AAAAAJbAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIwleU9TLzIAAAGUAAAAQgAAAFZeH2kSY21hcAAAAdgAAACvAAACdBHLSCxjdnQgAAACiAAAABMAAAAgBtX/BGZwZ20AAAKcAAAFkAAAC3CKkZBZZ2FzcAAACCwAAAAIAAAACAAAABBnbHlmAAAINAAADDMAABDI4tpuUGhlYWQAABRoAAAAMwAAADYM4wHJaGhlYQAAFJwAAAAgAAAAJAd5A6NobXR4AAAUvAAAADUAAABQRFj/82xvY2EAABT0AAAAKgAAACopfiRqbWF4cAAAFSAAAAAgAAAAIAFbDJRuYW1lAAAVQAAAAYIAAALZ9zve9XBvc3QAABbEAAAAnQAAANZEtTfocHJlcAAAF2QAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYMpJLMlj4HNx8wlhkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAKVkFSAB4nGNgZM5mnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4cDBwSzEH/sxiimIMYpgGFGUFyAL7fCfAAAHic7ZFLcoQwDAXbQMgjIRMG8uEQc5Y5UFY59OzJE9Ixoqq2yrKtcqmBJ6A3NzNA+6UR8eNqO+s9L2d94O796NzoNGk/DhBaIjuaz/Yzd34zuPPIsy9Mfv/KzBsX3lm4srL52sh/zOf6qN0W80xi9io8T1SEKxXhS0V4VOG5o8IGUBGNVdgKKsKvlsSm0DWJ32lNbA9tiT2ij8RG0WdC9PhKiB7fCdFjT9j+AORuDEYAeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPeJyNV2lsXNd1vudub5vtcd4yFGeGo3nkDDkkh9SsEklTI4kSRWosKxItUaotE4YiU1xCR3CiNrALeYGRxH8MQ0ldIzUigGqCIAsUAfWPGkbQoouLFHEBA03SBijqFJEDNG3RGIgFa9hz31CKigBFxdF9727nnnfOd75zLmHb29ur7DY7ScbIE+QVcr71ewPACMwZ2FLC6AYBqlHQNkzQONX4GuGScrlGKCVLOhASOUqkFEtEiKiYX14eLwNZfmX5y88/t7nWPlZ+YvyJPi9qkTEYsYQzAnlNhn+u401BpdGcgWaj2ajuo5V+8PDX2A+NQrEwDoVgj8jHQXq+Gnb3gdPduI/GoB8cr6L2NRv1WrEQ/u0pBAXYE8TAz4KPm6r7AJfshxlAWZpEScE+yOPCoAzFMgTwny98duPwLse2pPg0l+B99pFdg3vKQ/kY55LrUKOCF/qihVGY01mFAhtLW9lcNmZG4wxoRRj87Jgp3FRq1HZ2xQH4J+8zFNN7/ZlStT4+OSVsX1BWEbrr6n27zi+eqIOTNUBydnJmeqVYHqoxoQm++HIQNS2NAeAR/KwwICKodlmeYTob2+vNH9+3NuZZiTh2z4Bkj2z2Jg8fO3FsYSblpaNAO6Ogi2f/YsK2zBhwnZr8jE4lo2y0tJDZn+eS4D9QDbtBXycuybRQWQIwRyjQTZyCTZy86PgOE/4IOBrIfBEKNXQDeiRsPHYj0cklRhOdX8bjbXxuwWewbSeo5+FEPA5e2E3cgM1Eoh1X523/B32fvkwGSLbVl+9NaByPm0O7EboJoM5LOw4XqZFBBx2THwdNNerU4r2jm+HROO179P3usVvdY/CZ+G0/Ht/aij/tqZcbN+K/uzBeVgsI2/5o+yb7b8R5nOwmVVJvVfpsyqiBdicUrSEYumuDMDQXI8v4DRz4YwjqiJj39xaLhUCKXSOD9VoBMSwzCEC/WmkUkwi/ENSu73hNHGHgaTHQducRk00EX8WjU6a2rplhA6bQtC9IXRgR7Sk9osO3HdfI93zypz15w3XgO0a+kD+1qpumjg1E/hEQLxLRuC10kDTxya+CwO4BJxEErMd2nK5vtz9m15lFHOK3HAxWdKgys/JqUK+GXrUdGaBGdbvWwKDzMrC74rHrC9W7Z6sLC9Vb1QW4gv+3O1dUl6ZU27NACEVu+Jj3ouweMkxGW8OEcYaYQfFANvCAzxBOKV8knNMlQjltB5NBoy5ELwIpDjHAQ8ugQrCKBxbd3XkZp2iWB9XgvT1/njpduHs9mQb77dTpQfpEMvuDzkT9cvA2BYCueuO1o7Dfdn6WHorlw/Z752rDP2OaoL/VlijfoS1u0+eITfLo4yOtQxbqR6OAPDaHujLKQxdTRtaI+g5YIxIVlxQdLgQsYmAoJgPR9r0Bx015mugbgULRcx1ZhnqtKbUs5BpQK2h5iRRWQf5poNeFo0meG0DwNhujwH207qNX86+991r+6qPH/gX4v3beSlhHLiS8xOyElYCfWMc7v+n8tPOb45Z1HHQogH7cgsmXDkweeuoaffXSockDL13+4hdhHtdeOGwlEtbEbOKHyeTzb7zxfLLgXH2DvvmH6HyB3/uX+L03iUF2kRkyS86QM63FWh8l/JREfj55CIP8xMHhIqJHAp8jgguFDkQ8IK9L/KEBGP7WCGPoTUJCb5IlfCHt9rFkuXfAyWgK+c0yNNX3e7/z8U3HlVTxK7IrmqisYhh5vVrxkdgrir01L4nsnfR8NBNGR6BYv1BsKqKGxsjEXkAznYfVB0z0d1O/nEoLU5s1ek+8XLGs05/8UaXSL0wWswYsMNyl+T/hdyyvuPjPzw5f+dvDBx4P6k/mrEuPBKsPKeO9Ck89aLrPcbjUOXepYhSlqZUGfv9hu9Tz4utmw5DSkSA6d49f7YNU7/lkcmBseXXBfOnShdb+gScbSYwBtPEqO4u8IUmKVFsTSF8M5rhqMU2q7Ii0psyHeZDSKJ0nJOXZMcvADVKolGcrE/gCGWM3BmJIDRgBzd10Kqp/oOudmzkPxrP+3R7MXPj6Dq2Brus/16I9Xhbu3gpH2bP4IPfjvQdjMiDDrQLhjIcs/rRAdQhbxAcjSxifjLSD6mBQDXkLEL/FABstyBeadWyK6Ltmtd6NRN9FP7GenHc75615Obgdnnk766/hi+q8pUY/RHVy7oc7o15OLQ/t8zF9EfXRSD8ptYqCURJy6gaaAyGFmVFBCpYIcGgHycFGMqFUSu5GLsVsLR6wia8UqniaUucWZBY/vwjwXs67+2Goj33th1+lykg31qcW6YmHrnfeCTWCg6jc+sVr1y6uZ0P73GTnWIQMktnWgf4kEvuAibFgYIZlc117MYE0JojYlKgn2dxJhXARSDbdm+pJRC3BySAMasp9Fc+RaLRas4gILyjE+03E+QxkQRbzRc1zNL9Bv7GwsnJtFeDd6pFjKyvHjlTfhZWvXqSr83P4hqPgr762ujqvRS5M4MvEhYi2sELXX10HfI3h4D3f3mQv0l+QLMm1MgmNKqihJ9kmGhRIqKPv1sPMCTuZ0+46tW7vpNAmZk8fc/aL7rA35dwY6p/LlracaafkurDmTGPjQi3tYXercyUzAIU0fGnLdUvulJpyO1/xQj1+xJRPQz1ScXq/YMA6ZadicOv+jh7/u2RQ0Eb3uXY3gaMeKHISGxcVmnS3Stm5TOmGM+UNu/BC1ulcQ73Ww667BV/KlGA03bmypRYrOkKsn0V7GMjou8hh8unWk5PoxnKaSoPORcDiwKjFlkUcPUzoYtRERxtkMQYGUh4YEnld00Je15aIBlrbMg8dPHhgZnov+rEyURouBLlsr+86sahpW3bVTghvZNAO7G5+Z9ViIS+zMFgrYAWJA7hShtGkIPsQBKpRMaSA0QyrlmpF4QItQOUtJ7GWcLY3jsTLOZqG17Pj8cPrXu4fTL2OoL7u5eoq03+kEth0/uhcfrp2lLYrH+nm4/Bq5+lYDBLw83N2tpytI8Dtc7k/uKWZO0Foard08+jqETry2GMjCxfb1CRdrrqJXGWRPeQIOdc6UwImMqCz1iDl+lSVSg1zgI5JXOcbhGuMa2uYAqgEDFZBmC7YMoaxxGpsmYT2DIt8JbgdFIrDdT/wBwyRQZ/HqOKQ0OceRmS1MsPKNC8130PzdNmlX+X9SpYOhia7Z6gdxmFnZy9//fTyd6e5aEubD3/+0OTKiRItt9c3Lww9bCf9O3EHRu2j02+cPPPmMwc7XzP17ytjPWdqA1gZncfB2ZPzMsYfFiDrk+X26jOr7fLQ4MOJMS92J5XsObpvZvaZNxfuqE2Bbv4VPrt1MBzA+iBGzLfCsheEuxNJqjqawZuFBwfMO1ba89LWHTwoZmGaicGv4w6N3DF3amk6Df+OMsJ6KwyNe0FRdyji515oKrLYHRaAKHBHTsyDd5VMKzyDYJIg25f5OJsnOlZZfeQL5M/If5Gvtf74Vz+hPLb6OBX6e28/zYh459tf/9zJ9uEgYwC59WaLUZgco5J+5SriX5v7xT/R2OEXwJo1QTeEoYsNIvHaJrUN1JMbMb5MDJ0Yi0RgMQQCC1zl9cUIhjPePbRlwiyLLWIWs5aIxaz2v33wN3/9rW++8uWN9QtPnjtbq4yUko7jJHviKpnUMCZU+hchgas3VgvDpNLAe526aml4AXMw06MRwlub8n8d717IUWGNoPL/OJRBYQIh1CzcKxn6IbzVKYiopIkc4mPtFUrsR8LFyENxnmoDJTtfxFq7KxJFoDTcjB0UiQHoN30UHgpQ+tgP7i0Uw73/z63wa0xFKht9Z3TvKJQmR2Hn+WOdn5GRZD/nkdmEaLkeRlh0RZrRpH+QR+UJLgb0qPao0HVxWrO660wpW8mU1JhaCLjyAF6cP8VTth6Vj2KZdvGUNNN0FpGZsSKWNspglmVM7dQpzcywWgJ4SbfttM/pIZo2cHhndUkPV/P/czGcn1LfsfhBZpQO9WdKJXoWm6lS6e+fQl1iSb9vUEa4fZBXLDndF9VRoUiF82NxIfTRSMqLgq6tiPsrRQJXmvr0rnCltUet5DLrRvuSEap3fnTc0OOx/TFKh/oGAawaDFGK/bhuHDeMRFTNZI0agnDIh6KaiiYMWsW57q6imorUit1NBm7S72+yAIr3N+nkfwDyZpyiAHicY2BkYGAA4syJK6bG89t8ZeBmfgEUYbhy/r4IjP7/9X8Wiz5zEJDLwcAEEgUAhR4N6gB4nGNgZGBgDvqfxcDAov//6/+vLPoMQBEUIAIAlVgGI3icY37BwMD84v9/ZhAtCGZ/ZV7AwMCiDxUD4UiIHFMTlL0AiiMhmDEVKGcN0sPAAABwWBCBAAAAAAAAAADyASoBdAHgAg4CZgLeA5AD2AQgBGgExgUKBU4F5gZ2BpgGwAhkAAAAAQAAABQA8gAGAAAAAAACACAAMABzAAAArQtwAAAAAHicdZDLTsJAFIb/QcAIiQtIXM9GIzEpF2NMWBgSAu5csIB1gaEtth0yHQysfAvfwQdy67P4006I8dLmtN/55nTO6QBo4BMCxXXHKFjgjFnBJZziwfEJ/chxmfzkuII6Zo6r9HPHNdzg2XEdTbxxB1E+Y7bGu2OBhmg6LuFcXDo+ob91XCaPHFdwIWaOq/SJ4xqm4tVxHVfiY6g3exMFoZXXw5bsdbr3cr6XmipK/Vj6Wxtqk8mBXOnUqjjW3kInVu2sjiOrJirYxr455keYKpNFOpVdr3N0jypVxrdqeeiQvQQ9a1dyZXQix25vuTF6rRbWC63d9Nvt7z0xhMYGexhECBDCQuKatsV3Dx10cU+as0KysqiKkMJHTONjyy/CfCVjPmCsmKW0ihUx2cOCzyQ3Oz41bZRnE0bAHWLuY/5Y/22mjEOnKO8hOZ3HGX/XPTLSvNbP8+XxHzK8sGeP1nLSw7Qmn05i/GNuyXM5rK1pFvRefjqWto8273/+8wszOYivAAB4nG2JWw6DIBREGV/46Lt2GXx0SRRRiYRrANu4+9r425OczEmGJWynZv9pkSBFhhwFOEpUqNHggCNOOOOCK264o8WD5WE27pnQVCjplLaVjFG7aMgVPdlO+2YfQbN2qV413xTU97wjJYx7Z7NdQmZJTXkYpdfFMouXGcqOPu4X2WD6yEcTIvm18mYYo+iM3/8tuKJBSBsZ+wLakDDzAAAAeJxj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxlYnTYxMDJogRibuZgYOSAsPgYwi81pF9MBoDQnkM3utIvBAcJmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbOZhYuTR2sH4v3UDS+9GJgYXAAx2I/QAAA==')format('woff')}@keyframes a{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}@keyframes b{0%{color:#75e375}49%{color:#75e375}50%{color:#fff}99%{color:#fff}}@keyframes c{0%{color:inherit}80%{color:inherit}81%{color:#75e375}82%{color:#fff}83%{color:#75e375}84%{color:#fff}85%{color:#75e375}86%{color:#fff}87%{color:#75e375}88%{color:#fff}89%{color:#75e375}90%{color:inherit}99%{color:inherit}}@keyframes d{0%{color:inherit}90%{color:inherit}91%{color:#75e375}92%{color:#fff}93%{color:#75e375}94%{color:#fff}95%{color:#75e375}96%{color:#fff}97%{color:#75e375}98%{color:#fff}99%{color:#75e375}}#a{background-color:#434345}#a body{position:absolute;display:block;top:39%;left:50%;width:240px;margin-left:-115px;box-shadow:1px 1px 0 0 #38383a;border:1px solid #4f4f51;border-top-color:#5c5c5e;border-left-color:#555557;border-radius:7px;background-color:#4f4f51}#a fieldset{margin:28px 11px 0 11px;border-top:1px solid #59595c}#a legend{float:left;width:100%;margin-top:-22px;border-bottom:1px solid #444446}#a ol{display:none;float:right;height:12px;max-width:120px;margin:-17px -5px 0 0;overflow:hidden}#a li{float:right;display:block;width:12px;height:12px;font-size:10px;line-height:10px;color:#3f3f41;text-shadow:1px 1px 0 #5c5c5e}#a li:before{font-family:textolite;content:'\0802'}#a li.a:before{color:#fe8787;text-shadow:none}#a p samp{display:none;height:14px;padding-top:14px;font-family:Verdana;font-size:11px;line-height:20px;color:#fe8787;white-space:nowrap}#a p samp:before{float:left;margin-right:5px;font-family:textolite;content:'\0803';font-size:14px;color:#e37b7b}#a p samp+samp{display:block}#a p samp.b{padding-left:20px;color:#75e375;animation:b 100ms infinite linear}#a p samp.b:before{content:''}#a p samp.b~i{clear:both;float:left;display:block;margin-top:-15px;font-style:normal;color:#75e375;animation:a 2s infinite linear}#a p samp.b~i:before{content:'\0800';font-family:textolite;font-size:14px}#a p samp.c{color:#75e375}#a p samp.c:before{content:'\0801';font-size:16px;color:#75e375}#a p samp.d:before{content:'\0802';font-size:16px;margin-top:-1px}#a p+p{padding-top:21px}#a p+p span{float:left;display:block;margin-top:1px}#a p+p span+input{float:right;display:block;margin-right:-1px}#a p+p a{clear:both;float:right;display:block;width:18px;width:18px;margin-top:-24px;margin-right:4px;font-size:16px;color:#5c5c5e;text-shadow:1px 1px 0 #38383a;cursor:pointer}#a p+p a:hover{text-decoration:none;color:#65cdea}#a p+p a:active{color:#60aabe}#a p+p a:before{font-family:textolite;content:'\0806'}#a p+p a.e:before{content:'\0807'}#a p+p+p{padding:45px 0 12px 0}#a p+p+p input{display:block;width:94px;height:22px;margin-left:-1px;padding:0 9px 2px 9px;border-top:1px solid #6ed76e;border-bottom:1px solid #5fb85f;border-left:1px solid #68cb68;border-right:1px solid #68cb68;border-radius:5px;font-size:11px;line-height:20px;font-family:Verdana;color:#fff;text-shadow:1px 1px 0 #509b50;background:#68cb68;background:#68cb68 linear-gradient(to bottom,#6ed76e,#5fb85f);cursor:pointer}#a p+p+p input[disabled],#a p+p+p input[disabled]:hover,#a p+p+p input[disabled]:active{border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #3f3f41;color:#737376;background:#4f4f51;cursor:default}#b{background-color:#434345}#b>body>samp{position:absolute;display:block;top:39%;left:50%;width:1200px;margin-left:-600px;text-align:center;font-family:Verdana;font-size:66px;font-weight:bold;line-height:50px;color:#4f4f51;text-shadow:-1px -1px 1px #5c5c5e,1px 1px 1px #38383a}#b>body>samp span{display:block;height:250px;margin-top:-125px;font-size:250px;line-height:250px;letter-spacing:-15px}#c{overflow:hidden;padding-top:46px;background-color:#434345}#c body{position:absolute;width:100%;height:100%;height:calc(100%-46px);overflow-y:scroll}#c body>div:first-child{width:86.7%;max-width:1600px;margin:20px auto;border-bottom:20px solid #434345;border-radius:5px;box-shadow:0 -1px 0 0 #5c5c5e;background-color:#4f4f51}#c body>div:first-child ol{float:left;width:61px;margin:0 -71px 0 0;padding:7px 0;border-right:10px solid #555558;border-radius:5px 0 0 5px;list-style-type:decimal;font-family:"Courier New";font-size:17px;line-height:22px;background-color:#555558;overflow:hidden}#c body>div:first-child li{margin-left:78px}@media screen and (-webkit-min-device-pixel-ratio:0){#c body>div:first-child li{margin-left:85px}}#c pre{outline:none;padding:7px 14px;border-left:71px solid #555558;border-radius:5px 0 5px 5px;box-shadow:-1px 0 0 0 #5c5c5e,1px 1px 0 0 #38383a;font-family:"Courier New";font-size:17px;line-height:22px;white-space:pre-wrap;word-wrap:break-word;overflow:hidden}#c pre div:hover{border-radius:3px;background-color:#555558}#c pre.html span.f,#c pre.html span.f span.g,#c pre.html span.f span.h,#c pre.html span.f span.i{color:#87dc77}#c pre.html span.f span.j,#c pre.html span.f span.j span.f,#c pre.html span.f span.g span.j{color:#7fb4ea}#c pre.html span.g,#c pre.html span.g span.f,#c pre.html span.g span.j,#c pre.html span.g span.h,#c pre.html span.g span.h span.f,#c pre.html span.g span.h span.j,#c pre.html span.g span.i,#c pre.html span.g span.i span.f,#c pre.html span.g span.i span.j{color:#888}#c pre.html span.h,#c pre.html span.h span.f,#c pre.html span.h span.j,#c pre.html span.h span.g{color:#cd9b92}#c pre.html span.i,#c pre.html span.i span.f,#c pre.html span.i span.j,#c pre.html span.i span.g{color:#cd9b92}#c pre.html span.k,#c pre.html span.k span.f,#c pre.html span.k span.j,#c pre.html span.k span.h,#c pre.html span.k span.h span.f,#c pre.html span.k span.h span.j,#c pre.html span.k span.i,#c pre.html span.k span.i span.f,#c pre.html span.k span.i span.j,#c pre.html span.k span.g,#c pre.html span.k span.g span.f,#c pre.html span.k span.g span.j,#c pre.html span.k span.g span.h,#c pre.html span.k span.g span.h span.f,#c pre.html span.k span.g span.h span.j,#c pre.html span.k span.g span.i,#c pre.html span.k span.g span.i span.f,#c pre.html span.k span.g span.i span.j{color:#38383a;text-shadow:none;background-color:#f7e37b}#c pre.css span.f{color:#7fb4ea}#c pre.css span.j{color:#cd9b92}#c pre.css span.j span.g{color:#b7b8bd}#c pre.css span.j span.h{color:#87dc77}#c pre.css span.i,#c pre.css span.i span.f,#c pre.css span.i span.j,#c pre.css span.i span.g,#c pre.css span.i span.h{color:#888}#c pre.js span.f{color:#87dc77}#c pre.js span.j{color:#f5af2e}#c pre.js span.g,#c pre.js span.g span.f,#c pre.js span.g span.j,#c pre.js span.g span.h{color:#888}#c pre.js span.h,#c pre.js span.h span.f,#c pre.js span.h span.j,#c pre.js span.h span.g{color:#7fb4ea}#c pre.php span.f{color:#87dc77}#c pre.php span.j{color:#f5af2e}#c pre.php span.g,#c pre.php span.g span.f,#c pre.php span.g span.j,#c pre.php span.g span.h{color:#888}#c pre.php span.h,#c pre.php span.h span.f,#c pre.php span.h span.j,#c pre.php span.h span.g{color:#7fb4ea}#c pre.php span.i{color:#cd9b92}#c pre span.k{background:#f2ca00}#d{padding-top:46px}#d body{overflow:hidden}#d iframe{position:absolute;width:100%;height:100%;height:calc(100%-46px);font-size:36px;line-height:80px;font-weight:bold;text-align:center;color:#4f4f51;text-shadow:-1px -1px 1px #5c5c5e,1px 1px 1px #38383a}#e{position:fixed;top:0;left:-1%;right:-1%;height:46px;box-shadow:0 5px 20px 0 #303031;background:#6a6a6d;background:#6a6a6d linear-gradient(to bottom,#79797c,#6a6a6d,#626265,#626265,#6b6b6e);z-index:99999}#e>div{min-width:320px;max-width:1612px;width:84.7%;margin:0 auto}#e>div>div:first-child{float:left;margin-top:10px;margin-left:-2px;line-height:12px;cursor:default}#e div:first-child>h1{font-size:11px}#e>div>ol{float:left;margin:12px 25px 0 25px}#e>div>ol>li{float:left;display:block;width:70px;height:16px;padding-top:6px;padding-right:3px;box-shadow:inset 1px 1px 0 0 #474749,1px 1px 0 0 #6d6d70;text-shadow:1px 1px 0 #404042;text-align:center;line-height:9px;color:#b7b8bd;background:#4f4f51;cursor:default}#e>div>ol>li:first-child{width:54px;padding-left:5px;border-radius:11px 0 0 11px}#e>div>ol>li:last-child{width:57px;padding-right:3px;border-radius:0 11px 11px 0}#e>div>ol>li:only-child{width:60px;border-radius:11px;padding-right:5px}#e>div>ol>li.l{box-shadow:inset 0 1px 0 0 #808085,inset 1px 1px 0 0 #76767a,1px 1px 0 0 #5a5a5d;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#747478;background:#747478 linear-gradient(to bottom,#808085,#747478,#6c6c70,#6c6c70,#747478);cursor:pointer}#e>div>ol>li.l:hover{box-shadow:inset 0 1px 0 0 #43b6d7,inset 1px 1px 0 0 #40aac9,1px 1px 0 0 #5a5a5d;text-shadow:1px 1px 0 #3694af;background:#3ba2c0;background:#3ba2c0 linear-gradient(to bottom,#43b6d7,#3ea8c7,#3ba2c0,#3ba2c0,#3eaac9)}#e>div>ol>li.l:active{box-shadow:none;text-shadow:1px 1px 0 #307c92;background:#3798b4}#e>div>ol+ul{float:left;margin-right:22px;padding-left:1px;border-left:1px solid #565658;background:#767679;background:#767679 linear-gradient(to bottom,#88888b,#767679,#6a6a6d,#6a6a6d,#6f6f72)}#e>div>ol+ul>li{float:left;width:108px;height:46px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{position:absolute;display:block;width:106px;height:28px;margin-left:-2px;margin-right:1px;padding-top:18px;padding-left:1px;border-left:1px solid #474749;border-right:1px solid #4f4f51;text-align:center;text-decoration:none;text-shadow:1px 1px 0 #404042;line-height:9px;color:#b7b8bd;background:#4f4f51;z-index:2;cursor:default}#e>div>ol+ul>li>a.m{margin-left:0;padding-left:0;border-left:0;border-right:1px solid #565658;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#6a6a6d;background:#6a6a6d linear-gradient(to bottom,#79797c,#6a6a6d,#626265,#626265,#6b6b6e);cursor:pointer;z-index:0}#e>div>ol+ul>li>a.m:hover{padding-left:0;margin-left:-1px;border-left:1px solid #4dbfe1;border-right:1px solid #5b5b5e;text-shadow:1px 1px 0 #307c92;color:#fff;background:#3ba2c0;background:#3ba2c0 linear-gradient(to bottom,#43b6d7,#3ea8c7,#3ba2c0,#3ba2c0,#3eaac9)}#e>div>ol+ul>li>a.m:active{margin-left:-1px;border-left:1px solid #3798b4;border-right:1px solid #5b5b5e;text-shadow:1px 1px 0 #307c92;color:#fff;background:#3798b4}#e>div>ol+ul>li>div{display:none;position:fixed;max-height:80%;max-height:calc(98%-65px);max-width:600px;margin-top:46px;margin-left:-2px;padding:9px 12px 0 12px;box-shadow:0 5px 20px 0 #303031;border-radius:0 0 5px 5px;background:#4f4f51;overflow:auto;overflow-x:hidden;z-index:1}#e>div>ol+ul>li>div>:last-child{padding-bottom:14px}#e>div>ul+ul{float:right;margin-top:12px;margin-right:15px}#e>div>ul+ul>li{float:left;margin-left:10px}#e>div>p{float:right;margin-top:18px;margin-right:15px}#e>div>p samp{display:none;height:14px;font-family:Verdana;font-size:11px;line-height:9px;color:#fe8787;text-shadow:1px 1px 0 #545456;white-space:nowrap}#e>div>p samp a{line-height:9px;color:#adc8fe;cursor:pointer}#e>div>p samp:before{float:left;margin-right:5px;font-family:textolite;content:'\0803';font-size:14px;color:#e37b7b}#e>div>p samp+samp{display:block}#e>div>p samp.b{padding-left:7px;color:#75e375;animation:b 100ms infinite linear}#e>div>p samp.b:before{content:''}#e>div>p samp.b~i{float:left;display:block;margin-top:-14px;margin-left:-14px;font-style:normal;line-height:9px;color:#75e375;text-shadow:1px 1px 0 #545456;animation:a 2s infinite linear}samp.b~i:before{content:'\0800';font-family:textolite;font-size:14px}#e>div>p samp.c{color:#75e375}#e>div>p samp.c:before{content:'\0801';font-size:16px;color:#75e375}#e>div>p samp.n{color:#ead77a}#e>div>p samp.n:before{margin-top:1px;color:#d5c470}#e>div>p samp.d:before{content:'\0802';font-size:16px}#e>div>p samp.o{color:#ead77a}#e>div>p samp.o:before{content:'\0814';font-size:16px;color:#ead77a}#e>div>p samp.p{color:#ead77a}#e>div>p samp.p:before{content:'\0803';font-size:16px;color:#ead77a}#e>div>p samp.o b{font-style:normal;vertical-align:-1px;line-height:9px;color:#fe8787;cursor:pointer}#e>div>p samp.o b:hover{color:#ffbaba}#e>div>p samp.l b:hover{color:#cb7a7a}#e>div>p samp.o b:before{content:'\0802';font-family:textolite;font-size:14px}#e>div>p samp.q{color:#b7b8bd}#e>div>p samp.q:before{content:''}#e>div>p samp.q a{line-height:9px;color:#b7b8bd;cursor:pointer}#e>div>p samp.q a:hover{color:#adc8fe}#f{width:460px}#f>ol{height:0;margin-top:20px;margin-bottom:4px;border-top:1px solid #444446;border-bottom:1px solid #59595c}#f>ol li{margin-top:-21px;color:#b7b8bd;text-shadow:1px 1px 0 #3f3f41}#f>ol li+li{float:right;padding-right:152px}#f>ol li+li+li{padding-right:49px}#f>ol li+li+li+li{padding-right:1px}#f ul>li ul{display:none}#f ul>li ul>li{margin-top:-5px;padding-top:5px;padding-left:18px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAACCAMAAACwlnamAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDY5Qjk3RDZEOEVCMTFFM0I4M0JCRTY4RDY3RDc2RUMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDY5Qjk3RDVEOEVCMTFFM0I4M0JCRTY4RDY3RDc2RUMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyM0RBM0NBNzFGRDExRTM4NUQ2QTA5MjA1MTVDMTlFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyM0RBM0NCNzFGRDExRTM4NUQ2QTA5MjA1MTVDMTlFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+s8AzgAAAAAZQTFRFPz9Bt7i9CU8frAAAABBJREFUeNpiYEQFDGgAIMAAAYgAEEnYB58AAAAASUVORK5CYII='),url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAOCAMAAAAyqj1tAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkQzNDQ4MkVEOEVCMTFFMzk1NjVEODQyQTAxMENDODUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkQzNDQ4MkREOEVCMTFFMzk1NjVEODQyQTAxMENDODUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE0NkExNjQ3NzFGRDExRTNCMTY0QjQ0RkI4M0ZEN0VDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE0NkExNjQ4NzFGRDExRTNCMTY0QjQ0RkI4M0ZEN0VDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WBTqSQAAAAZQTFRFPz9Bt7i9CU8frAAAABBJREFUeNpiYGRgIA4BBBgAAVcADwiaAcYAAAAASUVORK5CYII=');background-position:7px 15px,6px 2px;background-repeat:no-repeat,repeat-y}#f ul>li ul>li:last-child{background-position:6px 15px,6px 2px;background-repeat:no-repeat,no-repeat}#f ul ol li{position:relative;max-width:300px;text-shadow:1px 1px 0 #3f3f41;color:#b7b8bd;white-space:nowrap;overflow:hidden}#f ul ol li+li{float:right;margin-top:-20px;padding-right:152px;padding-left:8px;background:#4f4f51}#f ul ol li+li+li{padding-right:49px}#f ul ol li+li+li+li{padding-right:0}#f ul ol li:first-child:before{float:left;font-family:textolite;font-size:16px;color:#ead77a}#f ul ol.r li:first-child:before{margin-right:3px;content:'\0804'}#f ul ol.r li.s:first-child:before{margin-right:1px;content:'\0805'}#f ul ol.t li:first-child:before{margin-left:1px;margin-right:6px;content:'\0808';font-size:14px;color:#d6d6db}#f ul ol li.u{color:#98df88}#f ul ol li.v{color:#7fba71}#f ul ol li.w{color:#fe8787}#f ul ol li a{text-shadow:1px 1px 0 #3f3f41;cursor:pointer}#f ul ol li.b a{animation:b 100ms infinite linear}#f ul ol.r li.x:before{color:#8b8048}#f ul ol.t li.x:before{color:#8e8e92}#f ul ol li.x a,#f ul ol li.x a:hover{text-decoration:none;color:#b7b8bd;cursor:default}#f ul ol.t li.p:before{content:'\0810';font-size:18px;color:#8e8e92}#f ul ol li.p a,#f ul ol li.p a:hover{text-decoration:none;color:#b7b8bd;cursor:default}#f ul ol li i{float:left;display:block;width:16px;height:16px;margin-top:2px;margin-left:2px;line-height:15px;font-style:normal;text-shadow:1px 1px 0 #3f3f41;text-align:center;cursor:pointer}#f ul ol.r li i:before{content:'\0809';font-family:textolite;font-size:16px;color:#75e375}#f ul ol.r li i:hover:before{color:#a1ffa1}#f ul ol.r li i:active:before{color:#77b577}#f ul ol.r li i.x{cursor:default}#f ul ol.r li i.x:before{color:#6a6a6d}#f ul ol.t li i:before{content:'\0802';font-family:textolite;font-size:16px;color:#fe8787}#f ul ol.t li i:hover:before{color:#ffbaba}#f ul ol.t li i:active:before{color:#cb7a7a}#f ul ol.t li i.x{cursor:default}#f ul ol.t li i.x:before{color:#6a6a6d}#f ul ol.t li i+i{display:none}#f ul ol.t li i:first-child+i:before{content:'\0801';font-family:textolite;font-size:15px;color:#65cdea}#f ul ol.t li i:first-child+i:hover:before{color:#9eeaff}#f ul ol.t li i:first-child+i:active:before{color:#60aabe}#f ul ol.t li i+i+i:before{color:#65cdea}#f ul ol.t li i+i+i:hover:before{color:#9eeaff}#f ul ol.t li i+i+i:active:before{color:#60aabe}#f ul ol.t.y li:first-child a{text-decoration:none;color:#fe8787;cursor:default}#f ul ol.t.y li:first-child:before{color:#fe8787}#f ul ol.t.y li i{display:none}#f ul ol.t.y li i+i{display:block}#f ul ol.z.y+ul>li:last-child a{text-decoration:none;color:#fe8787;cursor:default}#f ul ol.z.y+ul>li:last-child li:first-child:before{color:#fe8787}#f ul ol.z.y li i{display:none}#f ul ol.z.y li i+i{display:block}#g{width:460px}#g fieldset{min-width:290px;margin-top:27px;padding-bottom:1px;margin-bottom:-6px;border-radius:5px}#g fieldset:first-child{margin-top:23px}#g legend{float:left;margin-top:-14px;padding-left:12px;line-height:11px;color:#fff;cursor:pointer}#g legend:before{float:left;content:'\0816';font-family:textolite;font-size:12px;margin:1px 0 -10px -10px;color:#ddd}#g legend:hover,#g legend:hover:before{color:#adc8fe}#g legend:active,#g legend:active:before{color:#a6c0e1}#g fieldset.s{margin-bottom:0;border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c}#g fieldset.s legend{margin-top:-15px;padding-left:11px}#g fieldset.s legend:before{content:'\0817';margin-left:-12px}#g fieldset.s+p{margin-top:14px}#g dl{display:none;padding:0 10px 0 11px}#g dt{height:21px;padding-top:10px;padding-right:80px;line-height:19px;overflow:hidden;cursor:default}#g dt:first-child{margin-top:4px}#g fieldset:first-child+fieldset+fieldset+fieldset+fieldset dt:first-child{padding-right:160px}#g .d{color:#fe8787}#g .d+dd input[type="text"]{color:#fe8787}#g dd{position:relative;float:right;height:22px;margin-top:-22px;padding-left:9px;background-color:#4f4f51}#g dd:first-child{clear:both;float:none;margin-top:9px;padding-left:0}#g dd+dd{clear:both;float:none;margin-top:9px;padding-left:0}#g dd>input[type="text"]{float:right;width:66px}#g fieldset:first-child dt:first-child+dd input,#g fieldset:first-child+fieldset+fieldset+fieldset+fieldset dt:first-child+dd input{float:right;width:145px}#g dd input[type="checkbox"],#g dd input[type="radio"]{display:none}#g dd label{float:left;display:block;margin-right:10px;line-height:22px;text-shadow:1px 1px 1px #38383a}#g dd label input[type="checkbox"]+em,#g dd label input[type="radio"]+em{position:relative;float:left;display:block;width:10px;height:10px;margin-top:3px;margin-right:9px;padding:3px;border:1px solid #38383a;border-bottom-color:#5c5c5e;border-right-color:#555557;border-left-color:#3c3c3e;border-radius:5px;font-style:normal;background-color:#434345;cursor:default}#g dd label input[type="checkbox"]:checked+em:before,#g dd label input[type="radio"]:checked+em:before{float:left;margin-left:-4px;font-family:textolite;content:'\0801';font-size:17px;line-height:9px;text-shadow:1px 1px 1px #38383a;color:#6fd86f}#g dd:first-child{margin-top:12px}#g dd:last-child{margin-bottom:14px}#g dd:last-of-type{margin-bottom:14px}#g dd a{position:relative;float:right;display:block;width:18px;width:18px;margin-top:1px;margin-right:-148px;font-size:16px;color:#5c5c5e;text-shadow:1px 1px 0 #38383a;cursor:pointer}#g dd a:hover{color:#65cdea;text-decoration:none}#g dd a:active{color:#60aabe}#g dd a:before{font-family:textolite;content:'\0806'}#g dd a.e:before{content:'\0807'}#g dd ul{float:right;margin-right:2px;margin-left:-9px;max-width:440px}#g dd ul>li{float:left;display:block;width:34px;height:17px;padding-top:5px;border:1px solid #3c3c3e;border-bottom-color:#434345;border-right-color:#434345;box-shadow:inset 1px 1px 0 0 #434345,1px 1px 0 0 #5c5c5e;text-shadow:1px 1px 0 #38383a;text-align:center;line-height:9px;color:#b7b8bd;background:#434345;cursor:default}#g dd ul>li:first-child{border-radius:5px 0 0 5px}#g dd ul>li:last-child{border-radius:0 5px 5px 0}#g dd ul>li:only-child{border-radius:5px}#g dd ul>li.l{border:1px solid #444446;border-right:0;padding-right:1px;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#4f4f51;cursor:pointer}#g dd ul>li.l:last-child{border-right:1px solid #444446;padding-right:0}#g dd ul>li.l:hover{border-top-color:#4f4f51;border-left-color:#4f4f51;border-bottom-color:#4f4f51;box-shadow:inset 1px 1px 0 0 #3faece,1px 1px 0 0 #4f4f51;text-shadow:1px 1px 0 #307c92;background:#3798b4}#g dd ul>li.l:last-child:hover{border-right-color:#4f4f51}#g dd ul>li.l:active{border-color:#4f4f51;border-right-color:#444446;box-shadow:inset 1px 1px 0 0 #3187a0,1px 1px 0 0 #4f4f51;text-shadow:1px 1px 0 #307c92;background:#3187a0}#g dt:last-child{display:none;position:relative;float:right;height:auto;width:100%;margin-top:-47px;padding-right:0;overflow:visible}#g dt ol{clear:both;float:right;min-width:302px;margin-bottom:6px}#g dt ol li{display:none;clear:both;max-height:31px}#g dt ol li span{display:block;float:left;width:50px;margin-top:2px;margin-right:5px;text-align:right}#g dt ol li span:after{content:'.'}#g dt ol li input{float:left;width:66px;margin-bottom:6px;margin-right:6px;color:#b7b8bd;text-shadow:1px 1px 0 #38383a}#g dt ol li input+input{width:198px;margin-right:0}#g dl ol li.p input{color:#606062;animation:none !important}#g dt ol li.p+li span+input{animation:c 5000ms infinite linear}#g dt ol li.p+li span+input+input{animation:d 5000ms infinite linear}#g dt ol li.p i{display:block;float:left;height:16px;width:7px;margin-top:3px;margin-left:-214px;border-top:1px solid #38383a;border-bottom:1px solid #5c5c5e;border-left:1px solid #434345;border-right:1px solid #434345;border-radius:5px 5px 0 0;background-color:#434345}#g dt ol li.p i:before{float:left;margin-left:-2px;font-family:textolite;content:'\0810';font-size:16px;line-height:16px;font-style:normal;color:#505052;text-shadow:1px 1px 0 #3c3c3e}#g dt ol+p{display:none;clear:both;margin-bottom:12px}#g dt ol+p strong{font-weight:normal}#g dt ol+p+p{display:none;position:relative;float:left;margin-bottom:-39px;margin-left:-11px;margin-top:16px}#g dt ol+p+p input{position:relative;float:left;margin-right:10px}#g>p{clear:both;margin:18px 0 0 1px}#g>p input[type="button"][disabled],#g>p input[type="button"][disabled]:hover,#g>p input[type="button"][disabled]:active{border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #3f3f41;color:#737376;background:#4f4f51;cursor:default}#g>p a{display:block;float:right;width:15px;margin-top:-16px;cursor:default}#g>p a,#g>p a:hover,#g p a:active{color:#414143;text-shadow:1px 1px 0 #5c5c5e;text-decoration:none}#g p a:before{content:'\0818';font-family:textolite;font-size:14px}#g>p a.l{color:#eee;text-shadow:1px 1px 0 #38383a;cursor:pointer}#g>p a.l:hover{color:#adc8fe}#g>p a.l:active{color:#a6c0e1}@media(max-width:1400px){#e>div{width:96%}#e>div>ol{margin-left:15px;margin-right:15px}#e>div>ol>li:first-child{width:49px}#e>div>ol>li:last-child{width:52px}#e>div>ol>li:only-child{width:55px}#e>div>ol+ul{margin-right:12px}#e>div>ol+ul>li{width:95px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:93px}#e>div>div+ul{margin-left:-12px}#e>div>div+ul input[type="button"]{width:85px}#c body>div:first-child{width:98%}}@media(max-width:1200px){#b>body>samp{width:450px;margin-left:-225px;font-size:33px;line-height:25px}#b>body>samp span{height:125px;margin-top:-63px;font-size:125px;line-height:125px;letter-spacing:-7px}}@media(max-width:900px){#e>div>ol+ul>li>div{padding-left:11px}#e>div>p samp{position:fixed;top:46px;left:0;width:100%;padding:12px 0 8px 0;box-shadow:0 5px 20px 0 #303031;text-shadow:1px 1px 0 #3f3f41;background:rgba(69,69,71,0.9);z-index:999999}#e>div>p samp:before{text-indent:10px}#e>div>ol+ul>li>div{left:0;margin-left:0;border-radius:0 0 5px 0}}@media(max-width:700px){#e>div>ol{margin-left:8px;margin-right:8px}#e>div>ol>li:first-child{width:40px}#e>div>ol>li:last-child{width:43px}#e>div>ol>li:only-child{width:46px}#e>div>ol+ul{margin-right:6px}#e>div>ol+ul>li{width:83px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:81px}#e>div>div+ul{margin-right:3px}#e>div>div+ul input[type="button"]{width:78px}#c body>div:first-child ol{width:39px;margin-right:-49px;font-size:14px}#c body>div:first-child li{margin-left:56px}#c pre{border-left-width:49px;font-size:14px}}@media(max-width:600px){#e>div>div:first-child{display:none}#e>div>ol+ul>li>div{width:100%;height:93%;max-height:none;max-width:none;padding-left:0;padding-right:0;border-radius:0}@media(max-height:800px){#e>div>ol+ul>li>div{height:91%}}@media(max-height:650px){#e>div>ol+ul>li>div{height:89%}}@media(max-height:530px){#e>div>ol+ul>li>div{height:87%}}@media(max-height:400px){#e>div>ol+ul>li>div{height:83%}}@media(max-height:320px){#e>div>ol+ul>li>div{height:79%}}#e>div>ol+ul>li>div{height:calc(100%-65px)}#e>div>div+ul>li{margin-left:7px}#e>div>div+ul input[type="button"]{width:45px}#f>ol{min-width:278px;margin-left:12px;margin-right:12px}#f>ul{min-width:278px;padding:0 12px}#g fieldset{margin-left:11px;margin-right:11px}#g p{padding-bottom:12px;margin-left:11px}#b>body>samp{width:250px;margin-left:-125px;font-size:16px;line-height:12px}#b>body>samp span{height:62px;margin-top:-31px;font-size:62px;line-height:62px;letter-spacing:-3px}}@media(max-width:400px){#e>div>ol>li:first-child{width:32px}#e>div>ol>li:last-child{width:35px}#e>div>ol>li:only-child{width:38px}#e>div>ol+ul{margin-right:3px}#e>div>ol+ul>li{width:59px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:57px;overflow:hidden}#e>div>ol+ul>li:last-child>a,#e>div>ol+ul>li:last-child>a:hover,#e>div>ol+ul>li:last-child>a:active{text-align:left;text-indent:5px}#e>div>ol+ul>li:last-child>a:before,#e>div>ol+ul>li:last-child>a:hover:before,#e>div>ol+ul>li:last-child>a:active:before{position:relative;float:right;margin-right:-4px;margin-bottom:-10px;content:'\2022';font-size:22px;text-shadow:none;color:#4f4f51}#e>div>ol+ul>li:last-child>a.m:before{color:#626265}#e>div>ol+ul>li:last-child>a.m:hover:before{color:#3ba2c0}#e>div>ol+ul>li:last-child>a.m:active:before{color:#3798b4}#f>ol li:first-child+li{display:none}#f ul ol li:first-child+li{display:none}#c body>div:first-child ol{display:none}#c pre{border-left:0}}@-moz-document url-prefix(){input[type="button"]{line-height:16px}#a p samp.d:before{margin-top:0}#a p+p+p input{line-height:17px}#g dd label{line-height:21px}#a p+p a{margin-top:-25px}#g dd a{margin-top:0}#g dd label input[type="checkbox"]:checked+span:before,#g dd label input[type="radio"]:checked+span:before{line-height:8px}} \ No newline at end of file diff --git a/kula153/textolite/textolite.js b/kula153/textolite/textolite.js deleted file mode 100644 index 544f8189..00000000 --- a/kula153/textolite/textolite.js +++ /dev/null @@ -1 +0,0 @@ -/* Textolite v2.12s */ (function(){var _1=window,_2=document,_3=location,_a='setInterval',_b='setTimeout',_c='clearInterval',_d='clearTimeout',_e='encodeURIComponent',_f='getComputedStyle',_g='addEventListener',_h='removeEventListener',_i='getAttribute',_j='setAttribute',_k='removeAttribute',_l='querySelectorAll',_m='querySelector',_n='removeChild',_o='appendChild',_p='cloneNode',_q='insertNode',_r='insertBefore',_s='createElement',_t='createTextNode',_u='firstElementChild',_v='lastElementChild',_w='nextElementSibling',_x='previousElementSibling',_y='nextSibling',_z='parentNode',_A='contentWindow',_B='activeElement',_C='documentElement',_D='childNodes',_E='indexOf',_F='lastIndexOf',_G='toLowerCase',_H='charCodeAt',_I='toFixed',_J='toString',_K='substring',_L='replace',_M='search',_N='match',_O='slice',_P='split',_Q='join',_R='getSelection',_S='addRange',_T='createRange',_U='removeAllRanges',_V='getRangeAt',_W='setStart',_X='setEnd',_Y='collapse',_Z='tagName',a_='nodeType',b_='className',c_='clientHeight',d_='disabled',e_='checked',f_='length',g_='style',h_='value',i_='innerHTML',j_='outerHTML',k_='textContent',l_='getResponseHeader',m_='setRequestHeader',n_='preventDefault',o_='stopPropagation',p_='dataTransfer',q_='keyCode',r_='display',s_='opacity',t_='overflow',u_='position',v_='height',w_='width',x_='cssFloat',y_='textIndent',z_='paddingTop',A_='paddingLeft',B_='marginTop',C_='marginLeft',D_='marginRight',E_='none',F_='block',G_='hidden',H_='absolute',I_='DOMContentLoaded',J_='click',K_='focus',L_='blur',M_='mousemove',N_='mousedown',O_='mouseup',P_='keydown',Q_='keyup',R_='change',S_='input',T_='resize',$='data-',$a='textolite',$b=$a+'_check',$c=$a+'_update',$d=$a+'_install',$e=$a+'_not_install',$f=$a+'_activate',$g=$a+'_token',$h=$a+'_state',$i=$a+'_settings',$j=$a+'_recovery',$k=$a+'_scripts',$l=$+$a+'-string',$m=$+$a+'-focus',$n=$+$a+'-disabled',$r='system=',$s='&token=',$t='&version=',$u='&final=',$v='&beta=',$x='&settings[',$C='img',$D='src',$E='caret',$F='script',$G='iframe',$H='textarea',$I='1){while(a--)if(b.a[a]==k)delete b.a[a]}else delete b.a;_1[_c](k);if(h)h.call(b)}},10);if(!b.a)b.a=[k];else b.a[b.a[f_]]=k},ae=function(c,d){if(_1[_f](c)[r_]==E_){c[g_][s_]='0';c[g_][r_]=F_;ad(c,0,1,400,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){c[g_][s_]=b[_I](1)},function(){c[g_][s_]='';if(d)d.call(c)})}},af=function(c,d){if(c[g_][t_]!=G_&&_1[_f](c)[r_]!=E_){ad(c,1,0,300,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){c[g_][s_]=b[_I](1)},function(){c[g_][r_]=E_;c[g_][s_]='';if(d)d.call(c)})}},ag=function(i,j){if(_1[_f](i)[r_]==E_){i[g_][s_]='0';i[g_][u_]=H_;i[g_][r_]=F_;var k=i[c_],l=parseInt(_1[_f](i)[z_]);i[g_][v_]='0';i[g_][u_]='';i[g_][t_]=G_;i[g_][C_]='-'+_1[_f](i[_u])[A_];if(l){k=k-l;ad(i,0,l,200,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){i[g_][z_]=b[_I](0)+'px'})}ad(i,0,k,200,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){i[g_][v_]=d[_I](0)+'px'});ad(i,parseInt(i[g_][C_]),0,400,function(e){return((-Math.cos(e*Math.PI)/2)+0.5)},function(f){i[g_][C_]=f[_I](0)+'px'});ad(i,0,1,600,function(g){return((-Math.cos(g*Math.PI)/2)+0.5)},function(h){i[g_][s_]=h[_I](1)},function(){i[g_][v_]='';i[g_][C_]='';i[g_][z_]='';i[g_][s_]='';i[g_][t_]='';if(j)j.call(i)})}},ah=function(i,j){if(i[g_][t_]!=G_&&_1[_f](i)[r_]!=E_){var k=i[c_],l=parseInt(_1[_f](i)[z_]);i[g_][t_]=G_;if(l){k=k-l;ad(i,l,0,400,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){i[g_][z_]=b[_I](0)+'px'})}ad(i,i[c_],0,420,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){i[g_][v_]=d[_I](0)+'px'},function(){i[g_][r_]=E_;i[g_][s_]='';i[g_][C_]='';i[g_][v_]='';i[g_][t_]='';if(j)j.call(i)});ad(i,0,parseInt('-'+_1[_f](i[_u])[A_]),400,function(e){return((-Math.cos(e*Math.PI)/2)+0.5)},function(f){i[g_][C_]=f[_I](0)+'px'});ad(i,1,0,200,function(g){return((-Math.cos(g*Math.PI)/2)+0.5)},function(h){i[g_][s_]=h[_I](1)})}},ai=function(e,f){if(_1[_f](e)[r_]==E_){e[g_][s_]='0';e[g_][u_]=H_;e[g_][r_]=F_;var g=e[c_];e[g_][v_]='0';e[g_][u_]='';e[g_][t_]=G_;ad(e,0,g,150,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){e[g_][v_]=b[_I](0)+'px'});ad(e,0,1,300,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){e[g_][s_]=d[_I](1)},function(){e[g_][v_]='';e[g_][s_]='';e[g_][t_]='';if(f)f.call(e)})}},aj=function(e,f){if(e[g_][t_]!=G_&&_1[_f](e)[r_]!=E_){var g=e[c_];e[g_][t_]=G_;ad(e,e[c_],0,200,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){e[g_][v_]=b[_I](0)+'px'},function(){e[g_][r_]=E_;e[g_][s_]='';e[g_][v_]='';e[g_][t_]='';if(f)f.call(e)});ad(e,1,0,150,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){e[g_][s_]=d[_I](1)})}},ak=function(a){var b,c,d='';c=String.fromCharCode;a=a[_L](new RegExp('\r\n','g'),'\n');for(b=0;b127)&&(e<2048)){d+=c((e>>6)|192);d+=c((e&63)|128)}else{d+=c((e>>12)|224);d+=c(((e>>6)&63)|128);d+=c((e&63)|128)}}return d},al=function(g){var h=function(a,b){return(a<>>(32-b))},i=function(c){var d,e,f='';for(d=7;d>=0;d--){e=(c>>>(d*4))&0x0f;f+=e[_J](16)}return f},j,k,l,m,n,o,p,q,r,s,t,u,v=0x67452301,w=0xEFCDAB89,x=0x98BADCFE,y=0x10325476,z=0xC3D2E1F0;g=ak(g);n=g[f_];j=new Array();u=new Array(80);for(l=0;l>>29);j.push((n<<3)&0x0ffffffff);for(k=0;kj){j=event.loaded;_1[_d](h);e.call(g,j,event.total)}else h=i()};e.call(g,0,0)}g.send(a)},ao=function(){return al(new Date().getTime()+''+Math.floor(Math.random()*2147483648))},ap=function(a){var b=1024,c=1024*b,d=1024*c,e=1024*d;if(a0)m[d_]=false;else m[d_]=true},x=function(){if(!m[d_]){n[K_]();n[d_]=true;m[d_]=true;p[i_]=p[_i]($+'ax');p[b_]='b';ae(p);y(n[h_],n[_i]($+'ay'),200,z)}},y=function(b,c,d,e){var f=0,g=al(al(b)[_K](0,22)+b),h=_1[_a](function(){for(var a=f+d;f3&&j[_E](i[1])===0&&j[_P]('.')[f_]>2)_3.href=_3.protocol+'//'+j[_O](i[1][f_]+1)+p[_i]($+'bA');else _3.reload(true)}else _3.reload(true)},function(){n[d_]=false;n[K_]();n[_g](S_,w);p[b_]='d';if(!this[l_]('X-a')){p[i_]=p[_i]($+'cj');t=t*1+1;q[_j]($+'cg',t);if(t>=s)_3.reload(true);else q[_o](q[_u])[b_]='a'}else{w.call(n);p[i_]=p[_i]($+'al')}},function(){n[d_]=false;n[K_]();n[_g](S_,w);p[i_]=p[_i]($+'ak');p[b_]='d'})};for(var A=0;A=(s-t))B[b_]='a';q[_o](B)}if(_3.href[_E](_1[_e](p[_i]($+'bA'))[_P]('%2F')[_Q]('/'))===-1){p[b_]='d';ae(p)}else if(m[h_][_E]('{')!==-1){p[i_]='Problem with parse_ini_file';p[b_]='d';ae(p)}q[g_][r_]=F_;n[K_]();o.title=o[_i]($+'bp');o[_g](N_,u);m[_g](J_,x);n[_g](S_,w);n[_g](P_,v)}});_2[_g](I_,function(){var da=_2[_m]('#e');if(da){var db=da[_m]('div>div+ol li:first-child'),dc=da[_m]('div>div+ol li+li'),dd=da[_m]('div>ul+ul li:first-child input'),de=da[_m]('div>ul+ul li:last-child input'),df=da[_m]('div>ul+ul+p samp'),dg=da[_l]('div>ol+ul>li>a'),dh=_2[_m]('#j'),di=dh[i_],dj=function(){var ga=function(a){var b=[],c=a[_D];for(var d=0,e=c[f_];d]','gi'))){var f=gz[_A][_R](),h=f[_V](0),e=_2[_s]($E);h[_q](e);a[i_]=a[i_][_P]($K)[_Q]('{!caret!}')[_L](new RegExp('<.*?>','gi'),'')[_P]('{!caret!}')[_Q]($K+' ');e=a[_l]($E);if(e[f_]){var g=e[0][_y],h=gA[_T]();h[_W](g,0);h[_X](g,0);h[_Y](true);f[_U]();g[k_]=g[k_][_O](1);e[0][_z][_n](e[0]);f[_S](h)}}},gc=function(){var a=false;if(di!=dh[i_])a=true;else{var b=gA[_l]('['+$l+']');for(var c=0,d=b[f_];c'+d+'<'),g=f[f_]-1;if(g){if(g==1){di=f[_Q]('>'+e+'<');dh[i_]=di;a[b].B=e}else{var h=gA[_l]('['+$l+']');for(var i=0,j=0,k=false,l=h[f_];i'+d+'<'),q=f[_O](k+1)[_Q]('>'+d+'<');di=p+'>'+e+'<'+q;dh[i_]=di;a[b].B=e}}}}}}}return gx(di)},gh=function(b){var c=false;b=b[_L](new RegExp('&(#?[a-z0-9]{2,8});','gi'),'{%~$1~%}');b=b[_P]('&')[_Q]('&amp;');b=b[_P]('{%~amp~%}')[_Q]('&amp;');b=b[_L](new RegExp('{%~(lt|gt|nbsp)~%}','gi'),'&$1;');b=b[_L](new RegExp('{%~(#?[a-z0-9]{2,8})~%}','gi'),'&$1;');b=b[_P](' ')[_Q]('&nbsp;');b=b[_L](new RegExp('<([^a-z/])','gi'),'&lt;$1');b=b[_L](new RegExp('[<>]','gi'),function(a){if(a=='<'){if(c)return'&lt;';else c=true}else{if(!c)return'&gt;';else c=false}return a});var d=_2[_s]($H),e=_2[_s]('div');e[i_]='­';if(e[i_]=='­')b=b[_P]('­')[_Q]('&shy;');d[i_]=b[_P]($H)[_Q]('_extarea');return d[h_][_P]('_extarea')[_Q]($H)},gi=function(a){var b=gk(a);if(b[f_]){b[0][_j]($m,true);if(a[_i](d_)){b[0][_j]($n,true);df[b_]='n';gy();if(df[g_][r_]==F_){_1[_b](function(){ae(df)},400)}else ae(df)}}},gj=function(){var a=gA[_m]('['+$m+']');if(a){a[_k]($m);if(gA[_B])gA[_B][L_]();if(df[g_][r_]==F_&&(df[_u]||df[i_]==df[_i]($+'bj')))af(df)}},gk=function(a){var b=[];for(var c=a[_z],d;c;c=c[_z]){var e=c[_Z];if(e&&e[_G]()!='body'){var f=_1[_f](c)[r_][_G]();if(f!='inline'&&f!=E_){for(var g=false,h=c[_x];h;h=h[_x]){var e=h[_Z][_G]();if(e!=$F&&e!='style'){g=c;break}}if(g)b[b[f_]]=g;else{for(var i=c[_w];i;i=i[_w]){var e=i[_Z][_G]();if(e!=$F&&e!='style'){b[b[f_]]=c;break}}}if(!d)d=c}}else break}if(!b[f_]&&d)b[b[f_]]=d;return b},gl=function(a){var b=a.B;if(!b)return a[i_];return b},gm=function(a){var b=di[_P](a);if(!gh.fixed){var c=gh(di),d=c[_P](a);if(b[f_]!=d[f_]){di=c;if(dh[i_]!=di)dh[i_]=di;b=d;gh.fixed=true}}return b},gn=function(){var a=this,b=function(){gb(a);gc()},c=function(){b.call(a);gA[_h](M_,c);_1[_b](function(){if(gA[_B]==a)gA[_g](M_,c)},500)},d=function(event){a[_h](Q_,b);gA[_h](M_,c);a[_h](L_,d);a[_g](N_,gn)};a[_g](Q_,b);gA[_g](M_,c);a[_g](L_,d);a[_h](N_,gn);if(!a.B)a.B=a[i_];go.call(a)},go=function(){gj();gi(this)},gp=function(event){var a=event.target,b=gA[_m]('['+$m+']');for(var c=a;c;c=c[_z])if(c==b)return;gj()},gq=function(event){if(event[q_]==13){event[n_]();ZZ();gj()}else if(event[q_]==17)gq.i=true;else if(event[q_]==83&&gq.i){event[n_]();if(!dd[d_]){ZZ();gj();dl(gg())}}},gr=function(event){if(event[q_]==17)gq.i=false},gs=function(event){event[n_]();event[o_]()},gt=function(){var b=ga(gA.body),c=gA[_l]('a'),d=_2[_m]('#i')[i_],e=_2[_s]('style');e[i_]=d;gA.head[_o](e);gA[_g](N_,ds);var f=gh(di);for(var g=0,h=b[f_];g'+j+'<')[f_]-1;for(var m=0,n=0;m')[_Q]('?~~-->');c=c[_L](new RegExp(']*?)*?>','gi'),'');var d=(df[_i]($+'bv')*1),e=(df[_i]($+'bw')*1);if(!d)c=c[_L](new RegExp($I+'[\\s\\S]+?/script>','gi'),'');if(!e){c=c[_L](new RegExp('','gi'),'');c=c[_L](new RegExp(']+?>','gi'),'')}if(c[_N](new RegExp(']*?)*?>)','gi'),'$1'+b);else c=b+c;return c},gw=function(a){gx.o=[],gx.p=[];gx.q=[];gx.r=[];a=a[_P]('')[_Q]('?~~-->');a=a[_L](new RegExp('^[\\s\\S]+?(?:|]>|]>)','gi'),function(str1){if(!gx.o[f_]){gx.o[gx.o[f_]]=str1;return'{!~head'+(gx.o[f_]-1)+'~!}'}else return str1});a=a[_L](new RegExp('|<_cript[\\s\\S]+?/_cript>','gi'),function(str1){if(str1[_E]('')[_Q]('?>')},gy=function(){if((df[_i]($+'bv')*1)){df[i_]=df[_i]($+'bk')+' ('+df[_i]($+'bm')+')';var b=df[_u];if(b){b[_g](J_,function(){var a=ao();aa($g,a);df[i_]=df[_i]($+'bn');df[b_]='b';_1[_c](df.a);df[g_][s_]='';an('scripts=1'+$s+a,function(){aa($k,1);_3.href=_3.href[_L](_3.hash,'')},function(){df[b_]='d';df[i_]=df[_i]($+'ai')},function(){df[b_]='d';df[i_]=df[_i]($+'ak')})})}}else df[i_]=df[_i]($+'bj')},gz=_2[_m]($G),gA=gz[_A].document,gB=di;di=gw(gB);dh[i_]=di;db[_g](J_,function(){if(dd[d_])dm();else dm(gg())});db[b_]='l';_1[_g](T_,gu);gu();var gC=ac($k);if(gC){ab($k);df[i_]=df[_i]($+'bo');df[b_]='c';ae(df)}gA.open();gA.write(gv(gB));gA.close();_1[_g]('load',function(){gt()});dd[_g](J_,function(){if(!dd[d_])dl(gg())});if(_1.opera){var gD=_2[_s]('span');gD[g_][x_]='right';gD[g_][B_]='50px';gD[g_][y_]='-9999px';gD[i_]='.';da[_o](gD)}},dk=function(){var K=_2[_m]('pre'),L=_2[_m]('ol'),M=L[_i]($+'cl'),N='|if|else|function|return|true|false|null|new|for|do|while|switch|case|break|continue|try|catch|throw|instanceof|',O=function(a){return a[_P]('')[_Q]('>')[_P]('<caret>·</caret>')[_Q]($K)[_P]('\n')[_Q]($N)},P=function(b){b=b[_L](new RegExp('.*?(?:
        |$)','gi'),'
        $&
        ');if(_1.opera)b=b[_L](new RegExp('
        (?:(?:'+$L+'[a-z]>)*'+$K+'(?:'+$M+')*)
        ','gi'),'
        '+$K+$N+'
        ');return b},Q=function(c){return c[_L](new RegExp('([^>](?:'+$M+')*|[^>])
        ','gi'),'$1
        ')[_P]($N)[_Q]('\n')[_P]($K)[_Q]('<caret>·</caret>')[_L](new RegExp('<.*?>','gi'),'')[_P]('<')[_Q]('<')[_P]('>')[_Q]('>')[_P]('&')[_Q]('&')[_P]($J)[_Q](''+e[_P]($N)[_Q](''+$M+$N+$L+'j>')+''+$M+'"'})[_L](new RegExp('\'(.+?)\'','gi'),function(str21,f){return'\''+$L+'j>'+f[_P]($N)[_Q](''+$M+$N+$L+'j>')+$M+'\''});return $L+'f>'+str1[_P]($N)[_Q](''+$M+$N+$L+'f>')+$M})[_L](new RegExp('&#?[a-z0-9]{2,7};','gi'),$L+'f>$&'+$M+'')[_L](new RegExp('(?:'+$L+'[a-z]>)*<script.+?</script>','gi'),function(str1){return $L+'h>'+str1[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*<style.+?</style>','gi'),function(str1){return $L+'i>'+str1[_P]($N)[_Q](''+$M+$N+$L+'i>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*<!--.*?-->','gi'),function(str1){return $L+'g>'+str1[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M}))}}else if(K[b_]=='css'){R=function(g){return P(O(g[_P](';')[_Q]('!~!'))[_L](new RegExp('[^{}]+(?={)','gi'),function(str1){return $L+'f>'+str1[_P]($N)[_Q](''+$M+$N+$L+'f>')+$M})[_L](new RegExp('{[^{]*?}','gi'),function(str1){str1=str1[_L](new RegExp('".+?"|\'.+?\'','gi'),function(str11){return str11[_P]('!~!')[_Q]('!#~!')})[_L](new RegExp('((?:!~!|{)(?: |\t|
        |)*)([a-z-]+(?: |\t|
        |)*)(?=:)','gi'),'$1'+$L+'g>$2'+$M+'')[_L](new RegExp(':(.+?)(?=!~!|})','gi'),function(str31,h){return':'+$L+'h>'+h[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M})[_P]('!#~!')[_Q]('!~!');return $L+'j>'+str1[_P]($N)[_Q](''+$M+$N+$L+'j>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*/[*].*?[*]/','gi'),function(str1){return $L+'i>'+str1[_P]($N)[_Q](''+$M+$N+$L+'i>')+$M})[_P]('!~!')[_Q](';'))}}else if(K[b_]=='js'){R=function(i){return P(O(i)[_L](new RegExp('([^a-z0-9_$<]|^)([a-z]{2,10})(?=[^a-z0-9_$>])','gi'),function(str1,j,k){if((N+'var|this|delete|nan|undefined|typeof|in|with|label|void|')[_E]('|'+k+'|')!==-1)return j+$L+'f>'+k+$M;else return str1})[_L](new RegExp('([^a-z0-9_$])(-?[0-9]+(?:\.[0-9]+)*%?)(?=[^a-z0-9_$])','gi'),'$1'+$L+'j>$2'+$M+'')[_L](new RegExp('"(|.*?(?:[^\\\\]|[\\\\][\\\\]))"|\'(|.*?(?:[^\\\\]|[\\\\][\\\\]))\'|(/[*].*?[*]/)|(//.*?(?=
        |$))','gi'),function(str1,j,k,l,m){if(j)return'"'+$L+'h>'+j[_P]($N)[_Q](''+$M+$N+$L+'h>')+''+$M+'"';else if(k)return'\''+$L+'h>'+k[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M+'\'';else if(l)return $L+'g>'+l[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else if(m)return $L+'g>'+m[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else return str1}))}}else if(K[b_]=='php'){R=function(n){return P(O(n)[_L](new RegExp('(<[?](?:php)?)(.*?)([?]>)','gi'),function(str1,o,p,q){p=p[_L](new RegExp('([^a-z0-9_$<]|^)([a-z]{2,10})(?=[^a-z0-9_$>])','gi'),function(str1,o,p){if((N+'foreach|as|require|include|require_once|include_once|elseif|endif|endswitch|class|public|private|protected|final|static|abstract|extends|interface|implements|use|const|global|or|and|xor|clone|namespace|trait|yield|declare|goto|')[_E]('|'+p+'|')!==-1)return o+$L+'f>'+p+$M;else return str1})[_L](new RegExp('([^a-z0-9_$])(-?[0-9]+(?:\.[0-9]+)*%?)(?=[^a-z0-9_$])','gi'),'$1'+$L+'j>$2'+$M+'')[_L](new RegExp('"(|.*?(?:[^\\\\]|[\\\\][\\\\]))"|\'(|.*?(?:[^\\\\]|[\\\\][\\\\]))\'|(/[*].*?[*]/)|((?://|#).*?(?=
        |$))','gi'),function(str1,o,p,q,r){if(o)return'"'+$L+'h>'+o[_P]($N)[_Q](''+$M+$N+$L+'h>')+''+$M+'"';else if(p)return'\''+$L+'h>'+p[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M+'\'';else if(q)return $L+'g>'+q[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else if(r)return $L+'g>'+r[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else return str1});return $L+'i>'+o+$M+p+$L+'i>'+q+$M}))}}var S=function(){var s='',t=0,u=K[_l]('div'),v=u[f_]-1;while(t1){K.g.pop();K[i_]=K.g.pop()[_P]($K)[_Q]($K+' ');var G=K[_l]($E);if(G[f_]){var H=_1[_R](),I=G[0][_y],J=_2[_T]();J[_W](I,0);J[_X](I,0);J[_Y](true);H[_U]();I[k_]=I[k_][_O](1);G[0][_z][_n](G[0]);H[_S](J)}}}else if(event[q_]==83&&Y.i){event[n_]();hb();if(!dd[d_])dl(V())}},Z=function(event){if(!X.k)X(event);_2[_h](M_,Z);Z.k=_1[_b](function(){if(_2[_B]==K)_2[_g](M_,Z)},500)},hb=function(){T();_2[_h](Q_,X);_2[_h](P_,Y);_2[_h](M_,Z);_1[_d](Z.k);_1[_d](X.k);K[_h](L_,hb)},hc=function(){_2[_g](Q_,X);_2[_g](P_,Y);_2[_g](M_,Z);K[_g](L_,hb);if(!K.A){K.A=al(K[i_]);K.h=K.A}K.g=[K[i_]]},hd=function(){S();_2.body[g_][v_]=_2[_C][c_]-da[c_]+'px'};_1[_g](T_,hd);hd();if(!(K[_i]($+'cn')*1)){R=O;S=function(){};U=function(){}}if(dc){dc[_g](J_,function(){if(dd[d_])dm();else dm(V())});dc[b_]='l'}K[i_]=R(Q(R(dh[i_])));S();K[_g](K_,hc);K[K_]();dd[_g](J_,function(){if(!dd[d_]){hb();dl(V())}})},dl=function(d){var e=ao();aa($g,e);df[i_]=df[_i]($+'ac');df[b_]='b';ae(df);dd[d_]=true;ZZ();an('save='+_1[_e](am(d)[_P]('a')[_Q]('_'))+$s+e,function(){var a=_3.href[_L](_3.hash,'')[_L](df[_i]($+'bA')[_O](df[_i]($+'bA')[_O](0,-1)[_F]('/')+1),'');if(!a[_N](new RegExp('\.php$','gi'))){var b=_2[_s]($G);b[_j]($D,a);b[g_][r_]=E_;b.onload=function(){b.onload=function(){b.onload=false;_2.body[_n](b)};b[_A].location.reload(true)};_2.body[_o](b)}var c=da[_m]('#f>ul>li>ul');if(c)c[i_]='';df[i_]=df[_i]($+'ad');df[b_]='c';if(de[h_]==de[_i]($+'ab'))dn()},function(){dd[d_]=false;dd[K_]();df[b_]='d';if(this[l_]('X-a'))df[i_]=df[_i]($+'al');else df[i_]=df[_i]($+'ai')},function(){dd[d_]=false;dd[K_]();if(this.status==403)df[i_]=df[_i]($+'aj');else df[i_]=df[_i]($+'ak');df[b_]='d'})},dm=function(a){var b=_2[_s]('form'),c=_2[_s](S_);c.name='switch';if(_2[_C].id=='c')c[h_]=0;else c[h_]=1;b[_o](c);if(a){var d=_2[_s]($H),e=_2[_s](S_);d.name='source';d[h_]=am(a)[_P]('a')[_Q]('_');e.name='token';e[h_]=ao();aa($g,e[h_]);b[_o](e);b[_o](d)}b.method='post';b[g_][r_]=E_;_2[_C][_o](b);b.submit()},dn=function(){df[i_]=df[_i]($+'af');df[b_]='b';ae(df);an('logout=1',function(){df[i_]=df[_i]($+'ag');df[b_]='c';var a=_3.href[_L](_3.hash,'');if(df[_i]($+'bx')*1)a=a[_L](df[_i]($+'bA')[_O](df[_i]($+'bA')[_O](0,-1)[_F]('/')+1),'');_3.href=a},function(){df[i_]=df[_i]($+'ai');df[b_]='d'},function(){df[i_]=df[_i]($+'ak');df[b_]='d'})},ZZ=function(){var a=_2[_s](S_);a[g_][C_]='-2000px';da[_o](a);a[K_]();da[_n](a)},dp=function(){if(ac($b)){var b=$r+_1[_e](_3.hostname[_L]('www.','')+df[_i]($+'bA')[_O](0,-1))+$t+df[_i]($+'cc')+$u+df[_i]($+'cd')+$v+df[_i]($+'ce');an(b,function(a){ab($b,df[_i]($+'bA'));aa($c,a,3,df[_i]($+'bA'));dq(a)},function(){ab($b,df[_i]($+'bA'))},function(){},function(){},aq())}else{var c=ac($c);if(c){var d=ac($d);if(d){ab($c,df[_i]($+'bA'));ab($d,df[_i]($+'bA'));df[i_]=df[_i]($+'au');df[b_]='c';ae(df);aa($b,1,false,df[_i]($+'bA'));dp()}else dq(c)}}},dq=function(a){var b=parseInt(a);if(b>0){var c=ac($e);if(!c||c!=a){df[i_]=df[_i]($+'an')+' '+a+' ('+df[_i]($+'ap')+') ';df[b_]='o';ae(df);dr();var d=df[_v];if(d){d[_g](J_,function(){af(df);aa($e,a,60*24*90,df[_i]($+'bA'))})}}}else if(b==-1){aa($c,a,false,df[_i]($+'bA'));df[i_]=df[_i]($+'ao')+' ('+df[_i]($+'ap')+')';df[b_]='p';ae(df);dr()}else if(a[f_]>20){ab($c,df[_i]($+'bA'));df[i_]=a;df[b_]='q';ae(df)}},dr=function(){var e=df[_u];if(e){e[_g](J_,function(){df[i_]=df[_i]($+'ar');df[b_]='b';var d=$r+_1[_e](_3.hostname[_L]('www.','')+df[_i]($+'bA')[_O](0,-1))+$t+df[_i]($+'cc')+$u+df[_i]($+'cd')+$v+df[_i]($+'ce');an(d,function(b){df[i_]=df[_i]($+'as');var c=ao();aa($g,c);an('install='+_1[_e](b[_P]('a')[_Q]('_'))+$s+c,function(a){aa($d,1,false,df[_i]($+'bA'));if(a&&a[_K](a[f_]-5)=='.html')_3.href=a;else _3.href=_3.href[_L](_3.hash,'')},function(){df[i_]=df[_i]($+'at');df[b_]='d'},function(){if(this.status==403)df[i_]=df[_i]($+'aj');else df[i_]=df[_i]($+'ak');df[b_]='d'})},function(){df[i_]=df[_i]($+'ai');df[b_]='d'},function(){df[i_]=df[_i]($+'aw');df[b_]='d'},function(){},aq(1))})}},ds=function(event){var a=event.target;for(var b=a;b;b=b[_z])if(b[b_]=='A')return;for(var c=0,d=dg[f_];c'+df[_i]($+'ah')+')';df[b_]='n';ae(df);var a=df[_u];if(a)a[_g](J_,function(){_3.reload(true)})},function(){df[i_]=df[_i]($+'ak');df[b_]='n';ae(df)})},1000*60*dv);de[d_]=false;if(dh[_i]($+'ck'))dd[d_]=false;if(df[_i]($+'bz')==df[_i]($+'by')||(df[_i]($+'bz')[_K](0,3)=='127'&&df[_i]($+'by')[_K](0,3)=='127'))an.m=true;if(_2[_C].id=='c')dk();else if(_2[_C].id=='d')dj();dp()}});_2[_g](I_,function(){var da=_2[_m]('#e'),db=_2[_m]('#f');if(da&&db){var dc=da[_m]('div>ul+ul+p samp'),dd=da[_m]('div>ol+ul>li>a'),de=db[_m]('li>ol'),df=de[_u][_u][_i]($+'cp'),dg=_3.pathname[_O](df[f_]),dh='';if(_3.pathname==dc[_i]($+'bA')&&_3[_M][_E]('?q=')===0){dg=df+_3[_M][_O](3);dh=_3[_M]}else dg=df+dg[_O](dg[_E]('/')+1);var di=function(b){var c=b[_w],d=b[_u][_u],e=d[_i]($+'cp'),f=function(){var a=dg[_O](e[f_])[_E]('/');if(a!=-1){d=d[_z][_z][_w][_m]('[data-cp="'+dg[_O](0,a+e[f_]+1)+'"]');if(d)di(d[_z][_z])}else{d=d[_z][_z][_w][_m]('[href="'+_3.pathname+dh+'"]');if(d)d[_z][b_]='x'}};if(c[_u]){if(_1[_f](c)[r_]==E_){d.l=function(){d.l=function(){};f()};_1[_b](function(){dk.call(d)},0)}else f()}else{d.l=function(){d.l=function(){d.l=function(){};f()};dk.call(d)};dj.call(d)}},dj=function(){var h=this,i=h[_z],j=i[_z],k=h[_i]($+'cp');i[b_]='b';an('open='+_1[_e](k),function(a){var b=j[_w];b[i_]=a;var c=b[_l]('li>ol');for(var d=0,e=c[f_];d9)g[b_]='w'}},function(){i[b_]='';h[_g](J_,dj);dc[i_]=dc[_i]($+'ai');dc[b_]='d';ae(dc)},function(){i[b_]='';h[_g](J_,dj);dc[i_]=dc[_i]($+'ak');dc[b_]='d';ae(dc)});h[_h](J_,dj)},dk=function(){var a=this,b=a[_z],c=b[_z][_w],d=function(){a[_g](J_,dl);b[b_]='s';a.l()};if(c[_u])ag(c,d);else d();a[_h](J_,dk)},dl=function(){var a=this,b=a[_z],c=b[_z][_w],d=function(){a[_g](J_,dk);b[b_]=''};if(c[_u])ah(c,d);else d();a[_h](J_,dl)},dm=function(a){var b=a[_u],c=b[_w],d=c[_w],e=a[_v][_u],f=b[_u],g=f[_i]($+'cp'),h=dc[_i]($+'bA');dn(c);ZZ(d);if(a[b_]=='r'){f.l=function(){f.l=function(){};dk.call(f)};f[_g](J_,dj);if(h&&g[_O](0,h[f_])==h)e[b_]='x';else e[_g](J_,dq)}else{var i=a[_z][_z][_x][_u][_u][_i]($+'cp');if(h&&i&&i[_O](0,h[f_])==h){b[b_]='p';e[b_]='x'}else{if(h&&g[_O](0,h[f_])!==h)f[_j]('target','_blank');f.href=g;e[_g](J_,dt)}}},dn=function(a){var b=a[_i]($+'cq');if(b)a[i_]=ap(b*1);if(b[f_]>9)a[b_]='w'},ZZ=function(a){var b=a[i_]*1000,c=new Date(b),d=new Date().getTime(),e=24*60*60*1000,f=e*7;if((d-b)b)dc[i_]=dc[_i]($+'bf')+' ('+ap(b)+')';else dc[i_]=dc[_i]($+'bf')+' ('+ap(a)+')';dc[b_]='n';ae(dc)}}else{dc[i_]=dc[_i]($+'be')+' ('+c+')';dc[b_]='n';ae(dc)}});h[K_]();h[J_]()}else{dc[i_]=dc[_i]($+'am');dc[b_]='n';ae(dc)}},dr=function(p){var q=new FormData(p),r=ao(),s=p[_z][_z][_u][_u][_i]($+'cp'),t=dc[_i]($+'az');q.append('upload',_1[_e](s));q.append('token',r);aa($g,r);dc[i_]=t+' (0%)';dc[b_]='b';ae(dc);an(q,function(a){var b=p[_z][_z],c=b[_w],d=b[_u],e=d[_w],f=_2[_s]('div');f[i_]=a;if(f[_u]&&f[_u][_Z][_G]()=='li'){if(c[_u]){var g=false;while(g=f[_u]){var h=g[_m]('a'),i=c[_l]('a');if(h&&i[f_]){var j=h[_i]($+'cp');for(var k=0,l=i[f_];k9)e[b_]='w'}dr.v+=p.size;if(this[l_]('X-c'))ds(3);else if(this[l_]('X-d'))ds(2);else ds(0)}else{if(this[l_]('X-c'))ds(3);else ds(2)}},function(){ds(2)},function(){ds(1)},function(n,o){if(dc[i_][_E]('(')!=-1)dc[i_]=t+' ('+((n+dr.v)*100/dr.w)[_I](1)+'%)'})},ds=function(a){if(typeof dr.u=='undefined'||dr.u9)c[b_]='w'}},function(){dc[b_]='d';e[g_][r_]=F_;if(this[l_]('X-c')){dc[i_]=dc[_i]($+'ai');k[b_]=k[b_][_L](' y','')}else dc[i_]=dc[_i]($+'bi')},function(){dc[i_]=dc[_i]($+'ak');dc[b_]='n';e[g_][r_]=F_})};k[b_]+=' y';j[_g](J_,function(){i[_h](J_,l);k[b_]=k[b_][_L](' y','')});i[_g](J_,l)};dm(de);dd[_g](N_,function(){if(this[_w][g_][r_]!=F_)di(de)})}});_2[_g](I_,function(){var da=_2[_m]('#e'),db=_2[_m]('#g');if(da&&db){var dc=da[_m]('div>ol+ul>li+li>a'),dd=db[_m]('dd a'),de=db[_l]('fieldset'),df=db[_l]('legend'),dg=db[_m]('input[type="password"]'),dh=db[_l]('dd input[type="text"]'),di=db[_l]('input[type="radio"]'),dj=db[_l]('input[type="checkbox"]'),dk=db[_m]('fieldset+p input[type="button"]'),dl=db[_m]('p a'),dm=da[_m]('div>ul+ul+p samp'),dn=function(){if(this[b_]){this[_x].type='password';this[b_]='';this.title=dm[_i]($+'bp')}else{this[_x].type='text';this[b_]='e';this.title=dm[_i]($+'bq')}},ZZ=function(){var a=false,b=false,c=false;if(dg[h_][f_]>0&&dg[h_]!=dg.b)b=true;for(var d=0,e=dh[f_];d=')||exit('PHP '.PHP_VERSION.' is not supported');define('a_','document_root');define('b_','query_string');define('c_','request_uri');define('d_','php_self');define('e_','http_accept_language');define('f_','http_user_agent');define('g_','remote_addr');define('h_','server_addr');define('i_','script_filename');define('j_','script_name');define('k_','server_name');define('l_','server_protocol');define('m_','lang');define('n_','password');define('o_','session');define('p_','pass_complexity');define('q_','pass_complexity_js');define('r_','auth_time');define('s_','auth_error_time');define('t_','auth_error_list');define('u_','auth_error_limit');define('v_','auth_lockout_duration');define('w_','auth_session_reset');define('x_','auth_bot_filter');define('y_','code_redraw_delay');define('z_','code_undo_limit');define('A_','code_highlighting');define('_s','visual_ext');define('B_','allowed_ext');define('C_','editable_ext');define('D_','default_file');define('_Q','folder_size');define('E_','document_root');define('F_','url_rewrite');define('G_','logout_to_site');define('K_','site_scripts');define('L_','site_styles');define('M_','update_final');define('N_','update_beta');define('O_','cache');define('_r','filelist');define('P_','system_url');define('Q_','error_limit');define('R_','error_count');define('S_','redraw_delay');define('T_','mode');define('U_','type');define('V_','base');define('W_','code');define('X_','title');define('Y_','version');define('Z_','is_edited');define('_a','post_max_size');define('_b','upload_max_filesize');define('_c','max_file_uploads');define('_d','_checkbox');define('_m','http_ajax');define('_n','source');define('_o','token');define('_p','sha1');define('_q','html');define('_t','404');define('_u','403');define('_v','ip');define('_w','sip');define('_x','url');define('_y','name');define('_z','date');define('_A','size');define('_B','list');define('_C','file');define('_D','error');define('_E','value');define('_F','radio');define('_G','tmp_name');define('_H','language_list');define('_I','');define('_N','');define('__','textolite_');final class a{private $a;private $b;public function __construct(){$this->a['a']=$_GET;$this->a['b']=$_POST;$this->a['c']=$_SERVER;$this->a['d']=$_COOKIE;$this->a['e']=$_FILES;}public function a($a){if(isset($this->b['a'][$a]))return $this->b['a'][$a];else if(isset($this->a['a'][$a]))return $this->b['a'][$a]=$this->f($this->a['a'][$a],$a);}public function b($a=false){if($a){if(isset($this->b['b'][$a]))return $this->b['b'][$a];else if(isset($this->a['b'][$a]))return $this->b['b'][$a]=$this->f($this->a['b'][$a],$a);}else if(count($this->a['b']))return true;}public function c($a){if(isset($this->b['c'][$a]))return $this->b['c'][$a];else{$b=strtoupper($a);if(isset($this->a['c'][$b]))return $this->b['c'][$a]=$this->f($this->a['c'][$b],$a);}}public function d($a){if(isset($this->b['d'][$a]))return $this->b['d'][$a];else if(isset($this->a['d'][$a]))return $this->b['d'][$a]=$this->f($this->a['d'][$a],$a);}public function e($a){if(isset($this->a['e'][$a]))return $this->a['e'][$a];}private function f($a,$b){$c='_'.$b;if(method_exists($this,$c))return $this->$c($a);else return $a;}private function _server_protocol($a){preg_match('~^[a-z]{4,5}/[0-9]\.[0-9]$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _server_name($a){preg_match('~^[a-z0-9-_.]{2,300}$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _script_filename($a){$b=str_replace('\\','/',__FILE__);if(stripos($b,$this->a['c'][strtoupper(a_)])===0)return $b;else return str_replace('\\','/',$a);}private function _document_root($a){$a=str_replace('\\','/',$a);$b=$this->c(i_);$c=$this->c(d_);$d=$this->c(j_);if(stripos($b,$c)>0)$e=str_ireplace($c,'',$b);if(stripos($b,$d)>0)$f=str_ireplace($d,'',$b);if(isset($e)){if(isset($f)){if(strlen($e)>strlen($f))$g=$e;else$g=$f;}else$g=$e;}else if(isset($f))$g=$f;else$g=$a;if(stripos($b,$a)===0){if(strlen($g)>strlen($a))$a=$g;}else$a=$g;if(substr($a,-1)=='/')return substr($a,0,-1);return $a;}private function _php_self($a){return str_replace('\\','/',$a);}private function _script_name($a){return str_replace('\\','/',$a);}private function _query_string($a){return str_replace('\\','/',$a);}private function _remote_addr($a){return $this->_ip($a);}private function _server_addr($a){return $this->_ip($a);}private function _ip($a){preg_match('~^[a-z0-9.:]{1,40}$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _sha1($a){preg_match('~^[a-z0-9]{40}$~i',$a,$b);if(isset($b[0]))return $b[0];}}final class b{private $a;private $b;private $c;private $d;public function __construct($a){$this->a=$a;$this->a('Content-type:text/html;charset=utf-8');}public function a($a){return $this->b[]=$a;}public function b($a,$b){return $this->b[]=$this->a.' '.$a.' '.$b;}public function c($a){return $this->b[]='Location:'.$a;}public function d($a,$b=false,$c=false,$d=false,$e=false,$f=false,$g=false){$h['a']=$a;$h['b']=$b;$h['c']=$g;$h['d']=(int)$c;$h['e']=str_replace('%2F','/',urlencode($d));$h['f']=$e;$h['g']=(int)$f;$this->c[]=$h;}public function e($a,$b=false,$c=false){$this->d($a,'',time()-60*60,$b,$c);}public function f($a){return $this->d=$a;}public function g(){if(isset($this->b))foreach($this->b as $a)header($a);if(isset($this->c))foreach($this->c as $b)setcookie($b['a'],$b['b'],$b['d'],$b['e'],$b['f'],$b['g'],$b['c']);if(isset($this->d))print $this->d;}}final class c{const a="\n";const b='lang.ini';const c='conf.ini';private $a;private $b;private $c;private $d;private $e;private $f;public function __construct($a,$b){$this->c=parse_ini_file($a.self::b,true);$this->d=parse_ini_file($a.self::c,true);$this->e=array('j'=>'
        1. {type}
        2. text
        ','i'=>'
        1. {type}
        ','h'=>'

        Textolite v{version}

        {standard}

        {mode}
        • {files}
          1. {file_name}
          2. {file_size}
          3. {file_changed}
          4. {file_menu}
            {filelist}
        • {settings}
          {auth}
          {new_password}:
          {login_attempts}:
          {lockout_duration}:
          {session_autoreset}:
          {visual_editor}
          {source_editor}
          {redraw_delay}:
          {steps_for_undo}:
          {file_manager}
          {system}
          {main_page_or_file}:
          {language}:
            {language_list}
          {extended}
          {activate}:

          {attachment_domain} . {attachment_notice}

        ','a'=>'{auth} - Textolite
        {auth}

        {document_root_error}

        {password}:

        ','e'=>'{code} - {{code}} - Textolite{code}{{code}}{panel}','c'=>'{title} - Textolite{panel}','d'=>'{title} - Textolite
          {panel}','n'=>'
          1. {name}
          2. {date}
          • ','b'=>'
            1. {name}
            2. {date}
          • ','m'=>'
          • {radio}{lang}
          • ','l'=>'','k'=>'','g'=>'','f'=>'');$this->a['a']=$a;$this->a['b']=$this->g(a_);if(!$this->a['b'])$this->a['b']=$b;$this->a['c']=str_ireplace($this->a['b'],'',$this->a['a']);$this->a['d']=$this->f($a);$this->a['e']=$this->f($this->a['c']);}public function __destruct(){if($this->f)$this->i();}public function a(){return $this->a['b'];}public function b(){return $this->a['a'];}public function c($a=false){return $this->a['c'];}public function d(){return $this->a['d'];}public function e(){return $this->a['e'];}public function f($a){if(substr_count($a,'/')>2)return dirname($a).'/';else return '/';}public function g($a,$b=false){if($b){if(isset($this->d[$b][$a]))return $this->d[$b][$a];}else if(isset($this->d[$a]))return $this->d[$a];}public function h($a,$b,$c=false){if($c){if(isset($this->d[$c])){$this->f=true;return $this->d[$c][$a]=$b;}}else{$this->f=true;return $this->d[$a]=$b;}}private function i(){foreach($this->d as $a=>$b)if(!is_array($b))$c[]=$a.' = '.$b.self::a.self::a;foreach($this->d as $a=>$b){if(is_array($b)){$c[]='['.$a.']'.self::a.self::a;foreach($b as $d=>$e)$c[]="\t".$d.' = '.$e.self::a;$c[]=self::a;}}if($f=fopen($this->a['a'].self::c,'w')){flock($f,LOCK_EX);fwrite($f,implode('',$c));flock($f,LOCK_UN);fclose($f);}}public function j(){return is_writable($this->a['a'].self::c);}public function k($a){if(isset($this->e[$a]))return $this->e[$a];}public function l($a,$b){foreach($b as $c=>$d)$a=str_ireplace('{'.$c.'}',$d,$a);return $a;}public function m($a,$b){preg_match_all('~\{([a-z0-9_]{2,30})\}~i',$a,$c);if($c[1]){$c[1]=array_unique($c[1]);foreach($c[1] as $d)if($e=$this->n($d,$b))$a=str_ireplace('{'.$d.'}',$e,$a);}return $a;}public function n($a,$b){if(isset($this->c[$b][$a]))return $this->c[$b][$a];}}final class d{const a='2.12s';private $a;private $b;private $c;private $d;private $e;public function __construct($a,$b,$c){$this->b=$a;$this->c=$b;$this->a=$c;$this->d=$this->g();$this->e=$this->h();}public function a(){$a=$this->b->d(__.o_,_p);if($a&&$a==$this->a->g(o_))$this->b();else{$b=time();$c=unserialize(urldecode($this->a->g(t_)));$d=$this->a->g(u_);$e=$this->b->c(g_);if($c&&isset($c[$e]))$f=$c[$e];else$f=0;if($this->b->b()&&$this->b->c(_m)){$g=$this->b->b(n_,_p);if($g&&($f<$d||$this->a->g(s_)+($this->a->g(v_)*60)<$b)){$h=$this->a->g(n_);$i=$this->a->g(q_)*1;$j=$this->a->g(p_)*1;$k=$j-$i;for($l=0;$l<$k;$l++)$g=sha1($g);if($h==$g){if($this->a->j()){$this->m();if(isset($c[$e])){unset($c[$e]);$this->a->h(t_,urlencode(serialize($c)));}if($i<5)$this->a->h(q_,15000);else$this->a->h(q_,$i-1);$this->a->h(r_,$b);$this->a->h(O_,'');}else{$this->c->a('X-a:1');$this->c->b(404,$this->a->n(_t,'en'));}}else{$this->a->h(s_,$b);$c[$e]=$f+1;$this->a->h(t_,urlencode(serialize($c)));$this->c->b(404,$this->a->n(_t,'en'));}}else$this->c->b(404,$this->a->n(_t,'en'));}else{if(!$this->a->g(x_)||$this->b->c(e_)&&$this->b->c(f_)&&preg_match('~Chrome|Firefox|Opera|Safari|AppleWebKit|Trident|MSIE~i',$this->b->c(f_))){if($f<$d||$this->a->g(s_)+($this->a->g(v_)*60)<$b){if($this->b->c(c_)===substr($this->a->c(),0,-1))throw new Exception($this->a->c(),307);$m[P_]=$this->a->c();$m[Q_]=$d;$m[R_]=$f;$m[p_]=$this->a->g(q_);$m[Y_]=self::a;$n=$this->a->k('a');$n=$this->a->l($n,$m);$n=$this->a->m($n,$this->d);$this->c->f($n);}else throw new Exception(false,403);}else throw new Exception(false,403);}}}public function b(){$aa=$this->b->a('q');$ab=$this->a->d().$aa;if(!$aa||!preg_match('~\.[a-z]{2,5}$~i',$aa)){if($this->b->c(i_)!=str_replace('\\','/',__FILE__))$this->k();$ac=$this->a->d().$this->a->g(D_);if(!file_exists($ac)&&($ad=$this->j()))throw new Exception($this->a->c().$this->i().$ad,307);else throw new Exception($this->a->c().$this->i().$this->a->g(D_),307);}if(stripos($aa,substr($this->a->c(),strripos(substr($this->a->c(),0,-1),'/')+1))===0)throw new Exception($this->a->c().$this->i().$this->a->g(D_),307);if($this->b->c(_m)){if($this->b->b('reload'))$this->m();else if($this->b->b('logout'))$this->n();else if(($ae=$this->b->b('save'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$ae=str_replace(_L,_K,base64_decode(str_replace('_','a',$ae)));$ae=str_replace(_J,_I,$ae);if($this->q(strtolower(substr($ab,strripos($ab,'.')+1)))){if(is_writable($ab)&&$ag=fopen($ab,'w')){flock($ag,LOCK_EX);fwrite($ag,$ae);flock($ag,LOCK_UN);fclose($ag);$this->a->h(O_,'');}else{$this->c->a('X-a:1');$this->c->b(404,$this->a->n(_t,'en'));}}else$this->c->b(404,$this->a->n(_t,'en'));}else if($ah=$this->b->b('open')){$ah=rawurldecode($ah);$this->c->f($this->w($ah));}else if(($ah=$this->b->b('upload'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$ah=rawurldecode($ah);$ai=$this->a->d().substr($ah,strlen($this->a->e()));$aj=$this->b->e(_C);if($ak=count($aj)&&is_dir($ai)){$al='';$am=$this->a->k('b');$an=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));foreach($aj[_G] as $ao=>$ap){if($this->q(strtolower(substr($aj[_y][$ao],strripos($aj[_y][$ao],'.')+1)))){if(!$aj[_D][$ao]){$ab=$ai.$aj[_y][$ao];move_uploaded_file($ap,$ab);$aq[_y]=$aj[_y][$ao];$aq[_z]=filemtime($ab);$aq[_A]=filesize($ab);preg_match('~\.(?:'.$an.')$~i',$aq[_y],$ar);if(isset($ar[0]))$aq[_x]=$this->a->c().$this->i().substr($ah,strlen($this->a->e())).$aq[_y];else$aq[_x]=$ah.$aq[_y];$al.=$this->a->m($this->a->l($am,$aq),$this->d);}else$as=true;}else$at=true;if(isset($al)){$this->a->h(O_,'');$this->c->a('X-b:'.$this->y($ah));$this->c->f($al);}if(isset($at))$this->c->a('X-c:1');else if(isset($as))$this->c->a('X-d:1');}}else$this->c->b(404,$this->a->n(_t,'en'));}else if(($au=$this->b->b('remove'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$au=rawurldecode($au);if($this->q(strtolower(substr($au,strripos($au,'.')+1)))){$au=str_replace($this->a->c(),$this->a->e(),$au);$ab=$this->a->d().substr($au,strlen($this->a->e()));if(is_file($ab)&&unlink($ab)){$this->a->h(O_,'');$this->c->a('X-b:'.$this->y(dirname($au).'/'));}else$this->c->b(404,$this->a->n(_t,'en'));}else{$this->c->a('X-c:1');$this->c->b(404,$this->a->n(_t,'en'));}}else if(($av=$this->b->b('settings'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);if($av[n_]){$aw=$this->a->g(n_);$ax=$this->a->g(p_)-$this->a->g(q_);for($ay=0;$ay<$ax;$ay++)$av[n_]=sha1($av[n_]);if($av[n_]!=$aw)$this->a->h(n_,$av[n_]);}if($av[m_]&&$av[m_]!=$this->d){if(stripos($az=$this->a->g(m_),',')&&stripos($az,$av[m_])!==false){if($av[m_]!=$this->b->c(e_))$this->c->d(__.m_,$av[m_],time()+60*60*24*365,$this->a->c(),false,false,true);else$this->c->e(__.m_,$this->a->c());}else$this->c->b(404,$this->a->n(_t,'en'));}if($this->a->g(D_)!==null&&preg_match('~^.{1,30}$~i',$av[D_],$ar)&&isset($ar[0]))$this->a->h(D_,$av[D_]);else$this->c->b(404,$this->a->n(_t,'en'));unset($av[n_],$av[m_],$av[D_]);foreach($av as $ao=>$aA){if($this->a->g($ao)!==null&&preg_match('~^[0-9]{1,7}$~i',$aA,$ar)&&isset($ar[0]))$this->a->h($ao,$aA);else$this->c->b(404,$this->a->n(_t,'en'));}}else if(($aB=$this->b->b('scripts'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);if($this->a->g(K_)!==null)$this->a->h(K_,'0');else$this->c->b(404,$this->a->n(_t,'en'));}else if(($aC=$this->b->b('install'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$aD=$this->a->b().'update.php';preg_match('~^[a-z0-9+=/_]+$~i',$aC,$ar);if(isset($ar[0])&&($aC=base64_decode(str_replace('_','a',$aC)))&&($ag=fopen($aD,'w'))){flock($ag,LOCK_EX);$aE=fwrite($ag,$aC);flock($ag,LOCK_UN);fclose($ag);if($aE){$aq=include$aD;if($aq==_D)$this->c->b(404,$this->a->n(_t,'en'));else if(file_exists($this->a->d().$aq))$this->c->f($this->a->c().$this->i().$aq);unlink($aD);}else$this->c->b(404,$this->a->n(_t,'en'));}else$this->c->b(404,$this->a->n(_t,'en'));}else$this->c->b(404,$this->a->n(_t,'en'));}else{$this->m();if(file_exists($ab)){$aF=strtolower(substr($ab,strripos($ab,'.')+1));if($this->q($aF)){$aG=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));preg_match('~^'.$aG.'$~i',$aF,$ar);if(isset($ar[0])){$aH=$this->b->d(__._q);$aI=$this->b->b('switch');if($aH){if($aI==='0'){$this->c->e(__._q,$this->a->c());$this->c($ab);}else$this->d($ab);}else{if($aI==='1'){$this->c->d(__._q,1,time()+60*60*24*90,$this->a->c(),false,false,true);$this->d($ab);}else$this->c($ab);}}else$this->d($ab);}else$this->e(_u);}else$this->e(_t);}}public function c($a){$b[X_]=$this->a->n('visual_editor',$this->d);$b[P_]=$this->a->c();$b[Y_]=self::a;$b[V_]=$this->a->e();$c=$this->b->a('q');if($d=strripos($c,'/'))$b[V_].=substr($c,0,$d+1);$b['panel']=$this->r($a);$b[_n]=$this->o();if(!$b[_n]){$b[_n]=$this->p($a);$b[Z_]='';}else$b[Z_]='1';$b[_n]=str_replace('{','!~!',$b[_n]);$e=$this->a->k('c');$e=$this->a->l($e,$b);$e=$this->a->m($e,$this->d);$e=str_replace('!~!','{',$e);$this->c->f($e);}public function d($a){$b[X_]=$this->a->n('source_editor',$this->d);$b[P_]=$this->a->c();$b[Y_]=self::a;$b[S_]=$this->a->g(y_);$b[A_]=$this->a->g(A_);$b[z_]=$this->a->g(z_);$b['panel']=$this->r($a);$b[_n]=$this->o();if(!$b[_n]){$b[_n]=$this->p($a);$b[Z_]='';}else$b[Z_]='1';$b[_n]=str_replace('{','!~!',$b[_n]);$c=$this->a->k('d');$c=$this->a->l($c,$b);$c=str_replace('!~!','{',$c);$this->c->f($c);}public function e($a){$b[W_]=$a;$b[P_]=$this->a->c();$b[Y_]=self::a;$b['panel']=$this->r($a);$c=$this->a->k('e');$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}public function f($a){$this->c->b($a->getCode(),$this->a->n($a->getCode(),'en'));if($b=$a->getMessage())$this->c->c($b);$c[W_]=$a->getCode();$c[P_]=$this->a->c();$c[Y_]=self::a;$c['panel']='';$d=$this->a->k('e');$d=$this->a->l($d,$c);return $this->c->f($this->a->m($d,$this->d));}private function g(){$a=$this->a->g(m_);if(stripos($a,',')){$b=$this->b->d(__.m_);if($b&&stripos($a,$b)!==false)return $b;else{$c=substr($this->b->c(e_),0,2);if(stripos($a,$c)!==false)return $c;}}return substr($a,0,2);}private function h(){$a=$this->a->g(F_);if($a==='1')return 1;else if($a==='0')return 0;else{if((stripos($this->b->c(b_),'q=')===0)&&(stripos($this->b->c(c_),$this->b->c(b_))===false))return 1;else return 0;}}private function i(){if(!$this->e)return '?q=';else return '';}private function j(){$a=$this->a->d();if($b=opendir($a)){$c=array();$d=array();$e=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));$f=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));while(($g=readdir($b))!==false){if($g!='.'&&$g!='..'){if(is_file($a.$g)){if(preg_match('~^index\.(?:'.$e.')$~i',$g)){closedir($b);return $g;}else if(preg_match('~\.(?:'.$e.')$~i',$g))$c[]=$g;else if(preg_match('~\.(?:'.$f.')$~i',$g))$d[]=$g;}}}closedir($b);if(isset($c[0]))return $c[0];else if(isset($d[0]))return $d[0];}}private function k(){$a=$this->a->b().'.htaccess';if(file_exists($a)){$b=file_get_contents($a);preg_match('~RewriteBase (.+?)\n~i',$b,$c);if(isset($c[0])&&isset($c[1])){if($c[1]!=$this->a->c()){$b=str_replace($c[0],'RewriteBase '.$this->a->c()."\n",$b);$this->l($b);}}else{$b=preg_replace('~(RewriteEngine .+?\n)~i','$1'."\n".'RewriteBase '.$this->a->c()."\n",$b);$this->l($b);}}}private function l($a){if($b=fopen($this->a->b().'.htaccess','w')){flock($b,LOCK_EX);fwrite($b,$a);flock($b,LOCK_UN);fclose($b);}}private function m(){$a=sha1(time().mt_rand());$this->a->h(o_,$a);$this->c->d(__.o_,$a,time()+60*$this->a->g(w_),$this->a->c(),false,false,true);}private function n(){$this->a->h(o_,'');$this->c->e(__.o_,$this->a->c());}private function o(){$a=$this->b->b('switch');if(is_numeric($a)){$b=$this->b->b(_n);if($b&&($c=$this->b->b(_o))&&$c==$this->b->d(__._o)){$b=base64_decode(str_replace('_','a',$b));$this->c->a('X-e:0');$this->c->e(__._o);return $b;}}}private function p($a){$b=file_get_contents($a);preg_match('~]+utf-8~i',$b,$c);preg_match('~]+windows-1251~i',$b,$d);if(!isset($c[0])&&isset($d[0])){$b=preg_replace('~(]+)windows-1251~i','$1utf-8',$b);$b=iconv('Windows-1251','UTF-8',$b);}$b=str_replace(_K,_L,$b);return str_replace(_I,_J,$b);}private function q($a){$b=$this->a->g(B_);if(!$b||preg_match('~(?:^|,\s*)'.$a.'(?:\s*,|$)~i',$b))return true;}private function r($a){$b[T_]=$this->s($a);$b[_r]=$this->v();$b[P_]=$this->a->c();$b[Y_]=self::a;$b[_b]=$this->u(ini_get(_b));$b[_c]=ini_get(_c);$b[p_]=$this->a->g(q_);$b[u_]=$this->a->g(u_);$b[v_]=$this->a->g(v_);$b[w_]=$this->a->g(w_);$b[G_]=$this->a->g(G_);if($b[G_])$b[G_._d]=$this->a->k('f');else$b[G_._d]=$this->a->k('g');$b[K_]=$this->a->g(K_);if($b[K_])$b[K_._d]=$this->a->k('f');else$b[K_._d]=$this->a->k('g');$b[L_]=$this->a->g(L_);if($b[L_])$b[L_._d]=$this->a->k('f');else$b[L_._d]=$this->a->k('g');$b[y_]=$this->a->g(y_);$b[z_]=$this->a->g(z_);if($this->a->g(A_))$b[A_._d]=$this->a->k('f');else$b[A_._d]=$this->a->k('g');if($this->a->g(_Q))$b[_Q._d]=$this->a->k('f');else$b[_Q._d]=$this->a->k('g');$b[D_]=$this->a->g(D_);$b[M_]=$this->a->g(M_);if($b[M_])$b[M_._d]=$this->a->k('f');else$b[M_._d]=$this->a->k('g');$b[N_]=$this->a->g(N_);if($b[N_])$b[N_._d]=$this->a->k('f');else$b[N_._d]=$this->a->k('g');$b[_v]=$this->b->c(g_);$b[_w]=$this->b->c(h_);$b[_a]=$this->u(ini_get(_a));$b[_H]=$this->t();$c=$this->a->k('h');$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}private function s($a){if(is_numeric($a)){$b[U_]=$a;$c=$this->a->k('i');}else{$d=strtolower(substr($a,strripos($a,'.')+1));$e=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));preg_match('~^'.$e.'$~i',$d,$f);if(isset($f[0]))$c=$this->a->k('j');else$c=$this->a->k('i');if($d=='htm')$b[U_]=_q;else$b[U_]=$d;}$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}private function t(){$a='';$b=explode(',',$this->a->g(m_));$c[_y]=m_;foreach($b as $d){$c[_E]=trim($d);if($this->d==$c[_E])$e=$this->a->k('k');else$e=$this->a->k('l');$f[_F]=$this->a->l($e,$c);$f[m_]=$c[_E];$g=$this->a->k('m');$g=$this->a->l($g,$f);$a.=$this->a->m($g,$this->d);}return $a;}private function u($a){$a=strtolower(trim($a));$b=(int)$a;switch($a[strlen($a)-1]){case'm':return $b*1048576;case'k':return $b*1024;case'g':return $b*1073741824;default:return $b;}}private function v(){$a=$this->a->e();$b=$this->a->d();if($a=='/')$c[_y]=$this->b->c(k_);else$c[_y]=substr($a,strrpos(substr($a,0,-1),'/')+1,-1);$c[_z]=filemtime($b);$c[_x]=$a;$c[_A]='';$d=$this->a->k('n');$d=$this->a->l($d,$c);return $this->a->m($d,$this->d);}private function w($a){$b=$this->a->d().substr($a,strlen($this->a->e()));$c=array();$d=array();$e=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));if($f=opendir($b)){while(($g=readdir($f))!==false){if($g!='.'&&$g!='..'){$h=array();$h[_y]=$g;$h[_z]=filemtime($b.$g);if(is_file($b.$g)){preg_match('~\.(?:'.$e.')$~i',$g,$i);if(isset($i[0]))$h[_x]=$this->a->c().$this->i().substr($a,strlen($this->a->e())).$g;else$h[_x]=$a.$g;$h[_A]=filesize($b.$g);$d[]=$h;}else if(is_dir($b.$g)&&!is_link($b.$g)){$h[_x]=$a.$g.'/';$h[_A]=$this->y($h[_x]);$c[]=$h;}}}closedir($f);}$j='';if(count($c)){$c=$this->x($c);$k=$this->a->k('n');foreach($c as $l){$m=$k;$j.=$this->a->m($this->a->l($m,$l),$this->d);}}if(count($d)){$d=$this->x($d);$n=$this->a->k('b');foreach($d as $o)$j.=$this->a->m($this->a->l($n,$o),$this->d);}if($b==$this->a->d())$this->c->a('X-b:'.$this->y($a));return $j;}private function x($a){$b=array();$c=array();foreach($a as $d)$b[]=$d[_y];asort($b);foreach($b as $e)foreach($a as $d)if($e==$d[_y])$c[]=$d;return $c;}private function y($a){if($this->a->g(_Q)){$b=$this->a->g(O_);if(!$b){$b=$this->z($this->a->e());$this->a->h(O_,urlencode(serialize($b)));}else$b=unserialize(urldecode($b));return $b[$a];}else return '';}private function z($a){$b=$this->a->d().substr($a,strlen($this->a->e()));$c=array();$c[$a]=0;if($d=opendir($b)){while(($e=readdir($d))!==false){if($e!='.'&&$e!='..'){if(is_file($b.$e))$c[$a]+=filesize($b.$e);else if(is_dir($b.$e.'/')&&!is_link($b.$e)){$f=$this->z($a.$e.'/');$c[$a]+=$f[$a.$e.'/'];$c=array_merge($c,$f);}}}closedir($d);}return $c;}}$a=new a();$b=new b($a->c(l_));$c=new c(dirname($a->c(i_)).'/',$a->c(a_));$d=new d($a,$b,$c);try{$d->a();}catch(Exception$e){$d->f($e);}$b->g();?> \ No newline at end of file diff --git a/logs.php b/logs.php index 787e5d39..03f5a367 100644 --- a/logs.php +++ b/logs.php @@ -17,26 +17,26 @@ if (isset($btl['id'])) { $allprice = 0 + $allprice[0]; function typeBattle($x) { - $r = [0, 0, ' ', ' ']; + $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; if ($x < 50000) { - // + //Обычный бой } elseif ($x >= 50000 && $x < 100000) { - $r = [25, 50, ' ', ' ']; + $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; } elseif ($x < 500000) { - $r = [50, 75, ' ', ' ']; + $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; } elseif ($x < 1000000) { - $r = [75, 100, ' ', ' ']; + $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; } elseif ($x < 2500000) { - $r = [100, 125, ' ', ' ']; + $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; } elseif ($x >= 5000000) { - $r = [150, 150, ' ', ' ']; + $r = [150, 150, 'Судный День', 'Судный День']; } return $r; } $allprice = typeBattle($allprice); if ($btl['smert'] == 1) { - $allprice = [150, 150, ' ', ' ']; + $allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; } if ($btl['type'] == 99) { $allprice = '' . str_replace(' ', ' ', $allprice[3]) . ''; @@ -45,21 +45,21 @@ if (isset($btl['id'])) { } } -$fil = ' :
            '; +$fil = 'Поиск :
            '; $r = ''; $p = ''; $b = '
            +
            - /' target='_blank'> - + /' target='_blank'>Орден + Света = 3.01 && $inf['align'] <= 3.99) { ?> /'>
            - /' target='_blank'> + /' target='_blank'>Армада = 2 && $inf['align'] < 3) { ?> /'>
            - /' target='_blank'> - + /' target='_blank'>Цитадель + Хаоса

            + target='_blank'>Новости
            @@ -86,18 +86,18 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $tbtl .= ''; } if ($btl['type'] == 0) { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; } elseif ($btl['type'] == 1) { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; } else { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; } if ($btl['izlom'] > 0) { - $tbtl .= ': ' . $btl['izlomRoundSee'] . '     '; + $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; } - $tbtl .= ' : ' . $tmStart . ' .
            '; + $tbtl .= 'Продолжительность боя: ' . $tmStart . ' мин.
            '; $users = [ @@ -121,7 +121,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { return $r; } - // + //Поулчаем инфо $tpas = [ 1 => 'X', 2 => '', @@ -162,13 +162,13 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $uids[$pl['uid']] = $i; // $users[$i]['value'] = [ - 'y' => 0, //++ - 'b' => 0, // - 'p' => 0, // , - 'zb' => [ // + 'y' => 0, //уворотов+парирований+блоков щитом + 'b' => 0, //успешных блоков + 'p' => 0, //не успешных блоков, по персонажу попали + 'zb' => [ //Список зон блока ], - 'sa' => [ // + 'sa' => [ //Статистика ударов 0 => '', 1 => '', 2 => '', @@ -176,7 +176,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { 4 => '', 5 => '', ], - 'sb' => [ // + 'sb' => [ //Статистика блоков 0 => '', 1 => '', 2 => '', @@ -189,10 +189,10 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { 'SELECT * FROM `battle_stat` WHERE `battle` = "' . $btl['id'] . '" AND `uid1` = "' . $pl['uid'] . '" ORDER BY `id` ASC' ); while ($pl2 = mysql_fetch_array($sp2)) { - // + //Обновляем данные $users[$i]['yrn'] += $pl2['yrn']; $users[$i]['yrn_krit'] += $pl2['yrn_krit']; - // + //Статистика далее $users[$i]['gaa']++; if ($users[$i]['yrn'] > 0) { $users[$i]['ga']++; @@ -200,7 +200,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { if ($users[$i]['yrn_krit'] > 0) { $users[$i]['gak']++; } - // + //Получаем куда бил игрок $j = 0; while ($j < $pl2['ma']) { $users[$i]['zona'][$pl2['a'][$j]]++; @@ -248,10 +248,10 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { ); $k = 0; while ($pl2 = mysql_fetch_array($sp2)) { - // + //Обновляем данные $users[$i]['_yrn'] -= $pl2['yrn']; $users[$i]['_yrn_krit'] -= $pl2['yrn_krit']; - // + //Получаем куда били игрока $j = 0; $zag = []; while ($j < $pl2['ma']) { @@ -270,7 +270,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $k++; // } - // + //Статистика блоков $k = 0; $h = 0; $bjj = []; @@ -324,18 +324,18 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { while ($i < count($tm_v)) { $usr .= rtrim($tm[$tm_v[$i]], ', '); if ($i < count($tm_v) - 1) { - $usr .= '     '; + $usr .= '   против   '; } $i++; } // - $usr = '

            ' . $usr . '

            '; + $usr = '

            Участники поединка

            ' . $usr . '

            '; // $r = ''; // - $r .= '

            '; + $r .= '

            Последовательность ударов

            '; $r .= '
            - '; //nowrap="" + '; //nowrap="" if ($btl['team_win'] != -1) { if (!isset($_GET['analiz'])) { - $b .= ' '; + $b .= ' '; $b .= $fil; } else { - $b .= ' '; + $b .= ' '; } } $b .= '
            -'; +'; $i = 0; while ($i <= count($tm_v)) { $j = 0; @@ -351,7 +351,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $rh .= '
            ' . $us['value']['sa'][5] . ''; $r .= ''; + ) . ''; } unset($us); $j++; @@ -360,12 +360,12 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $i++; } $r .= '
            ЛогинУдар вПоследовательность ударов
            ' . con_login( $us - ) . '




            ' . $rh . '
            голову
            грудь
            живот
            пояс
            ноги
            ' . $rh . '
            '; - $r .= '(X -  , ¤ - , X -  , Ξ -  + , X - .  ,
             -   ,  - ,  - ,  -  )'; + $r .= '(X - удачный удар, ¤ - критический удар пробив блок , X - критический удар, Ξ - крит + инвалидность, X - доп. магический удар,
             - противник блокировал удар,  - увернулся,  - парировал,  - отбил удар щитом)'; // - $r .= '

            '; + $r .= '

            Последовательность блоков

            '; $r .= ' -'; +'; $i = 0; while ($i <= count($tm_v)) { $j = 0; @@ -381,7 +381,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $rh .= '
            ' . $us['value']['sb'][5] . ''; $r .= ''; + ) . ''; } unset($us); $j++; @@ -390,14 +390,14 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $i++; } $r .= '
            ЛогинБлокПоследовательность блоков
            ' . con_login( $us - ) . '




            ' . $rh . '
            голова
            грудь
            живот
            пояс
            ноги
            ' . $rh . '
            '; - $r .= '(X -  , X -  ,  -  , - - , - - , - -  )'; + $r .= '(X - удачный блок, X - пробили блок критом,  - пропустил удар, + - увернулся, + - парировал, + - отбил щитом)'; // - $r .= '

            '; + $r .= '

            Суммарно

            '; $r .= ' -'; +'; // $i = 0; while ($i <= count($tm_v)) { @@ -442,9 +442,9 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $winw = ''; if ($us['hp'] < 1) { $us['hp'] = '0'; - $winw = ''; + $winw = ''; } else { - $winw = ''; + $winw = ''; } $r .= ''; + $r .= ''; } $i++; @@ -468,19 +468,19 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $r .= '
             
             ЛогинУдарыБлокиПопаданияЗащитаУронПотериВылечено
                    
            ' . $winw . '' . con_login( $us @@ -458,9 +458,9 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { if ($team_data['hp'] < 1) { $team_data['hp'] = '0'; } else { - $winw = ''; + $winw = ''; } - $r .= '
            ' . $winw . ' [' . $team_data['hp'] . '/' . $team_data['hpAll'] . ']  ' . (0 + $team_data['ga']) . '(' . (0 + $team_data['gak']) . ')/' . ($team_data['gaa']) . '' . $team_data['val_b'] . '/' . $team_data['val_y'] . '/' . $team_data['val_p'] . '' . $team_data['yrn'] . '/' . $team_data['yrn_krit'] . '' . (-$team_data['_yrn']) . '' . $team_data['heal'] . '
            ' . $winw . 'Всего [' . $team_data['hp'] . '/' . $team_data['hpAll'] . ']  ' . (0 + $team_data['ga']) . '(' . (0 + $team_data['gak']) . ')/' . ($team_data['gaa']) . '' . $team_data['val_b'] . '/' . $team_data['val_y'] . '/' . $team_data['val_p'] . '' . $team_data['yrn'] . '/' . $team_data['yrn_krit'] . '' . (-$team_data['_yrn']) . '' . $team_data['heal'] . '
            '; // $r .= ' - - : [/]
            - - : ////
            - - : ////
            - - ( ) /
            - - / /
            - - HP /
            - -
            - - HP
            '; +Логин - имя персонажа и уровень жизни: [сейчас/всего]
            +Удары - статистика ударов по областям: голова/грудь/живот/пояс/ноги
            +Блоки - статистика блоков по областям: голова/грудь/живот/пояс/ноги
            +Попадания - удачных попаданий (из них критов) / всего ударов
            +Защита - ударов заблокировано / уворотов / пропущено ударов
            +Урон - выбито HP из противников / из них критами
            +Потери - получено повреждений
            +Вылечено - восстановлено HP
            '; - $r = '
            ' . $b . '
            ' . $tbtl . $p . ' : ' . $allprice . '


            ' . $usr . $r . '
            ' . $p . '
            '; + $r = '
            ' . $b . '
            ' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


            ' . $usr . $r . '
            ' . $p . '
            '; //header('location: main.php'); } elseif (!isset($btl['id'])) { - $r = '

            ...
            '; + $r = '

            Скорее всего Архивариус снова потерял пергамент с хрониками боев ...
            '; } else { include('jx/battle/log_text.php'); function testlog($pl) @@ -497,9 +497,9 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { } $i++; } - // + //обычный удар $rt = $pl['text']; - // + //заменяем данные $rt = str_replace( '{u1}', '' . $d['login1'] . '', @@ -576,7 +576,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $j = 1; while ($j <= 21) { - // R - 1 + //замена R - игрок 1 $r = $log_text[$d['s1']][$j]; $k = 0; if (is_array($r)) { @@ -587,7 +587,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $k++; } } - // R - 2 + //замена R - игрок 2 $r = $log_text[$d['s2']][$j]; $k = 0; if (is_array($r)) { @@ -601,7 +601,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $j++; } - // + //заменяем данные повторно $rt = str_replace( '{u1}', '' . $d['login1'] . '', @@ -619,13 +619,13 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $rt = str_replace('{tm3}', '' . date('d.m.y H:i', $d['time1']) . '', $rt); $rt = str_replace('{tm4}', '' . date('d.m.y H:i', $d['time2']) . '', $rt); - // + //закончили заменять $pl['text'] = $rt; } return $pl['text']; } - // + //Получаем логи $min = round(12 * ((int)$_GET['p'] - 1)); if ($min < 1) { $min = 0; @@ -642,7 +642,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $based = 'battle_logs'; } - // + //генерируем страницы $pmax = mysql_fetch_array( mysql_query( 'SELECT `id_hod`,`id` FROM `' . $based . '` WHERE `battle` = "' . $btl['id'] . '" ORDER BY `id_hod` DESC LIMIT 1' @@ -690,8 +690,8 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $r .= '
            ' . $pl['text'] . '
            '; $cclr = ''; } - // - $p = ': ' . $p; + //собираем страницу + $p = 'Страницы: ' . $p; $usr = ''; if ($btl['team_win'] == -1) { $sp = mysql_query( @@ -725,7 +725,7 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { while ($i < count($usrs[-1])) { $usr .= rtrim($usrs[$usrs[-1][$i]], ','); if (count($usrs[-1]) > $i + 1) { - $usr .= '     '; + $usr .= '   против   '; } $i++; } @@ -740,32 +740,32 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $tbtl .= ''; } if ($btl['type'] == 0) { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; } elseif ($btl['type'] == 1) { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; } elseif ($btl['type'] == 250) { $tbtl = ''; - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (Война Кланов)     '; } elseif ($btl['smert'] == 1) { $tbtl = ''; - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (Жесточайшее Сражение)     '; } else { - $tbtl = ' : ' . $tbtl . ' ( )     '; + $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; } if ($btl['izlom'] > 0) { - $tbtl .= ': ' . $btl['izlomRoundSee'] . '     '; + $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; } - $r = '
            ' . $b . '
            ' . $tbtl . $p . ' : ' . $allprice . '


            ' . $r . '
            ' . $usr . '
            ' . $p . '
            '; + $r = '
            ' . $b . '
            ' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


            ' . $r . '
            ' . $usr . '
            ' . $p . '
            '; } ?> - - : + + Архив: Поединки @@ -778,9 +778,9 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { function maginfo(z, p, m, obj) { var r = ''; r += '' + $(obj).attr('magelogin') + '

            '; - r += ': ' + m + ', '; - r += ': ' + z + ', '; - r += ': ' + p + ''; + r += 'Мощь: ' + m + ', '; + r += 'Защита: ' + z + ', '; + r += 'Подавление: ' + p + ''; return r; } @@ -888,9 +888,9 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { -

            - Бойцовский + Клуб   www.new-combats.com

            diff --git a/lotowork.php b/lotowork.php index 12f1bdda..50a87c5f 100644 --- a/lotowork.php +++ b/lotowork.php @@ -18,7 +18,7 @@ if (!isset($user) || $user['id'] != $u->info['id']) { } elseif ($titm) { echo "Wait asign!"; } else { - // > t1 42% > t2 25% > t3 15% > t4 10% > t5 5% > t6 3% + // не редкий > t1 42% чуть чуть редкий > t2 25% немного редкий > t3 15% редкий > t4 10% очень редкий > t5 5% невероятно редкий > t6 3% /*$droplist = array( 0=>4514, t1 1=>4515, t1 @@ -139,7 +139,7 @@ if (!isset($user) || $user['id'] != $u->info['id']) { ) . '","loto")' ); mysql_query( - 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES (" ' . $user['login'] . ' ' . $inf['name'] . '!","capitalcity","","6","1","' . time( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок ' . $user['login'] . ' выиграл в бесплатной рулетке ' . $inf['name'] . '!","capitalcity","","6","1","' . time( ) . '")' ); echo $droplist['id']; // diff --git a/lotoworkekr.php b/lotoworkekr.php index b9523445..29b3c914 100644 --- a/lotoworkekr.php +++ b/lotoworkekr.php @@ -103,15 +103,15 @@ if (!isset($user) || $user['id'] != $u->info['id']) { mysql_query('UPDATE `users` SET `money2`= `money2` - 5 WHERE `id` = "' . $u->info['id'] . '"'); if ($droplist['type'] == "t6" || $droplist['type'] == "t5") { mysql_query( - 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES (" ' . $user['login'] . ' ' . $inf['name'] . '!","capitalcity","","6","1","' . time( + 'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Игрок ' . $user['login'] . ' выиграл в платной рулетке ' . $inf['name'] . '!","capitalcity","","6","1","' . time( ) . '")' ); } - echo $droplist['id']; // - /*// + echo $droplist['id']; // это закоментить + /*//этот блок разкоментить $array = array( - '1' => $droplist['id']', // 1 id - '2' => $u->info['money2'] // + '1' => $droplist['id']', // 1 элемент id вещи + '2' => $u->info['money2'] // бабло пользователя ); $json = json_encode($array); echo $json;*/ diff --git a/mail.php b/mail.php index 1b79cf0f..1f4c8ac3 100644 --- a/mail.php +++ b/mail.php @@ -65,7 +65,7 @@ if (isset($_GET['list']) && $_GET['list'] == 2015) { } -$keymd5 = '$$$'; +$keymd5 = '$отпи$атьс$'; if (isset($_GET['count'])) { if (md5($keymd5 . '+' . $_GET['count']) == $_GET['sd4']) { @@ -108,9 +108,9 @@ if (isset($_GET['count'])) { IP ) . '" WHERE `id` = "' . $mail['id'] . '" LIMIT 1' ); - echo '. ' . htmlspecialchars($_GET['uncancel']) . ' !'; + echo 'Эл.почта ' . htmlspecialchars($_GET['uncancel']) . ' успешно подписан на наши рассыли!'; } else { - echo '. ' . htmlspecialchars($_GET['uncancel']) . ' .'; + echo 'Эл.почта ' . htmlspecialchars($_GET['uncancel']) . ' не найден в базе.'; } die(); } elseif (isset($_GET['cancel'])) { @@ -124,30 +124,30 @@ if (isset($_GET['count'])) { ); if (isset($mail['id'])) { if ($mail['cancel'] > 0) { - echo ' : ' . date( + echo 'Вы отписались от рассылок: ' . date( 'd.m.Y H:i:s', $mail['cancel'] - ) . ', ? '; + ) . ', хотите подписаться снова? Подписаться на рассылку снова'; } else { mysql_query( 'UPDATE `aaa_send_count` SET `cancel` = "' . time() . '",`time` = "' . time( ) . '",`ip` = "' . mysql_real_escape_string(IP) . '" WHERE `id` = "' . $mail['id'] . '" LIMIT 1' ); - echo '. ' . htmlspecialchars($_GET['cancel']) . ' !'; + echo 'Эл.почта ' . htmlspecialchars($_GET['cancel']) . ' успешно отписана от наших рассылок!'; } } else { - echo '. ' . htmlspecialchars($_GET['cancel']) . ' .'; + echo 'Эл.почта ' . htmlspecialchars($_GET['cancel']) . ' не подписана на наши рассылки.'; } } else { - echo ' .. SD4 . ' . htmlspecialchars( + echo 'Вы не отписались т.к. SD4 ключ не подходит к эл.почте ' . htmlspecialchars( $_GET['cancel'] - ) . '.. , support@new-combats.com'; + ) . '.. Перейдите по ссылке указанной в письме, либо напишите нам в службу поддержки support@new-combats.com'; } die(); } if (isset($_GET['send6102'])) { // specify your email below and that's all ;) - $message = ' !'; + $message = 'Текст сообщения!'; // *************************************** function sendmail($mail, $login) @@ -160,13 +160,13 @@ if (isset($_GET['send6102'])) { $message = str_replace('{md5mail}', $md5mail, $message); // $headers = "MIME-Version: 1.0\r\n"; - $headers .= "Content-type: text/html; charset=windows-1251\r\n"; + $headers .= "Content-type: text/html; charset=utf8\r\n"; $headers .= "From: support@new-combats.com\r\n"; // $to = $mail; // - $subject = ' '; - $message = ' e-mail ' . $mail['name'] . '.

            ,
            '; + $subject = 'Бойцовский Клуб'; + $message = 'Подтвердите ваш e-mail для ' . $mail['name'] . '.

            С уважением,
            Администрация'; // if (mail($to, $subject, $message, $headers) == true) { //return true; @@ -191,12 +191,12 @@ if (isset($_GET['send6102'])) { sendmail($mail['email'], $mail['login']); mysql_query('UPDATE `users_rbk` SET `send` = 3 WHERE `email` = "' . $mail['email'] . '"'); - echo '[' . $mail['email'] . ']
            e-mail ' . $mail['name'] . '.

            ,

            '; + echo '[' . $mail['email'] . ']
            Подтвердите ваш e-mail для ' . $mail['name'] . '.

            С уважением,
            Администрация
            '; echo '[+]'; } else { echo '[-]'; echo '[' . $mail['email'] . ']'; } - die('
            : ' . $x); + die('
            Отправлено: ' . $x); } diff --git a/mailconf.php b/mailconf.php index e0d2eda3..a6f2eecb 100644 --- a/mailconf.php +++ b/mailconf.php @@ -10,33 +10,33 @@ define('IP', UserIp::get()); if (isset($_GET['mail'])) { $key = md5('mailconf*15+' . $_GET['mail']); if ($_GET['key'] != $key) { - echo ' , E-mail: admin@new-combats.com'; + echo 'Ключ не совпадает, напишите Администрации по E-mail: admin@new-combats.com'; } elseif (isset($_GET['cancel'])) { - // - echo ' .: ' . $_GET['mail'] . '.'; + //Отказ от рассылки + echo 'Вы отказались от рассылки на эл.почту: ' . $_GET['mail'] . '.'; } else { // $mcf = Db::getRow('select * from mini_actions where var = ?', [$_GET['mail']]); $user = Db::getRow('select * from users where id = ?', [$mcf['uid']]); - // + //Подписание на рассылку if (!isset($user['id'])) { - echo ' . ' . $_GET['mail'] . ' .'; + echo 'Зарегистрируйтесь чтобы привязать эл.почту ' . $_GET['mail'] . ' к персонажу.'; } else { $bank = Db::getRow('select * from bank where uid = (select uid from mini_actions where var = ?) order by id desc limit 1', [$_GET['mail']]); if ($mcf['ok'] > 0) { - echo ' E-mail ! ' . date('d.m.Y H:i:s', $mcf['ok']) . ''; + echo 'Вы уже подтверждали этот E-mail ранее! ' . date('d.m.Y H:i:s', $mcf['ok']) . ''; } elseif (!isset($bank['id'])) { - echo ' , 1 .'; + echo 'Сначала создайте счет в игровом банке, чтобы мы смогли перевести туда 1 екр.'; } else { Db::sql('update mini_actions set ok = unix_timestamp() where id = ?', [$mcf['id']]); Db::sql('update bank set money2 = money2 + 1 where id = ?', [$bank['id']]); - echo ' . ' . $_GET['mail'] . ', ' . $user['login'] . ' 1 .'; + echo 'Вы успешно подписались на рассылку новостей для эл.почты ' . $_GET['mail'] . ', на счет персонажа ' . $user['login'] . ' зачислен 1 екр.'; } } } } else { - echo 'E-mail .'; + echo 'E-mail не найден.'; } -echo '

            - - - - - - -

            ,
            © new-combats.com'; +echo '

            - - - - - - -

            С уважением,
            Администрация © new-combats.com'; diff --git a/main.php b/main.php index 587342eb..538b1247 100644 --- a/main.php +++ b/main.php @@ -53,7 +53,7 @@ $u = User::start(); $filter = new Filter(); $q = new Quests; -/** , . */ +/** Восстанавливаем всем ботам, которые не в бою здоровье до максимума. */ Db::exec( 'update stats set hpNow = hpAll, mpNow = mpAll where id in (select id from users where bot = 2 and battle = 0)' @@ -70,7 +70,7 @@ if ($u->info['bithday'] == '01.01.1800' && $u->info['inTurnirnew'] == 0) { unset($_GET, $_POST); } -#-------- , +#--------для общаги, и позже для почты $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "' . $u->info['id'] . '" LIMIT 1', 1); if ($u->room['file'] != "room_hostel" && $u->room['file'] != "an/room_hostel" && $sleep['id'] > 0) { mysql_query('UPDATE `actions` SET `vars` = "unsleep" WHERE `id` = "' . $sleep['id'] . '" LIMIT 1'); @@ -81,10 +81,9 @@ if ($u->room['file'] == "room_hostel" || $u->room['file'] == "post") { $trololo = 1; } -#-------- , +#--------для общаги, и позже для почты if ($u->info['online'] < time() - 60 || $u->info['afk'] != '') { $filter->setOnline($u->info['8'], $u->info['id']); - $u->onlineBonus(); mysql_query( "UPDATE `users` SET `online`='" . time() . "',`timeMain`='" . time( ) . "',`afk`='' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" @@ -100,7 +99,7 @@ if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SE die(Config::get('exit')); } -// +//Показываем системку и заносим данные if ($u->info['battle_text'] != '' && $u->info['last_b'] > 0) { mysql_query( 'INSERT INTO `battle_last` (`battle_id`,`uid`,`time`,`act`,`level`,`align`,`clan`,`exp`) VALUES ("' . $u->info['last_b'] . '","' . $u->info['id'] . '","' . time( @@ -124,7 +123,7 @@ if ($u->stats['act'] == 1) { } $u->rgd = $u->regen($u->info['id'], 0, 0); -// +//Проверка уровня $ul = $u->testLevel(); if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] != $u->info['id']) { @@ -174,20 +173,20 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! ) ); if ($ua['no_ip'] == 'trupojor' && $ua['level'] == 9 && $u->info['level'] > 9) { - $u->error = ' !'; + $u->error = 'Нельзя нападать на монстра этого уровня!'; } elseif ($ua['no_ip'] == 'trupojor' && $ua['level'] == 10 && $u->info['level'] < 10) { - $u->error = ' !'; + $u->error = 'Нельзя нападать на монстра этого уровня!'; } elseif ($ua['no_ip'] != 'trupojor' && $ua['level'] != $u->info['level']) { - $u->error = ' !'; + $u->error = 'Нападать можно на персонажей только своего уровня!'; } elseif (isset($test['id'])) { - $u->error = ' , .'; + $u->error = 'Нельзя вмешаться, вы уже были в этом поединке.'; } elseif ($ua['no_ip'] == 'trupojor' && isset($check['id'])) { - $u->error = ' 3 !'; + $u->error = 'Нельзя нападать на монстра чаще одного раза в 3 часа!'; } elseif (isset($check2['id'])) { - $u->error = ' !'; + $u->error = 'Персонаж имеет защиту от нападения!'; } elseif (isset($ua['id']) && $ua['online'] > time() - 520) { - $usta = $u->getStats($ua['id'], 0); // - $minHp = floor($usta['hpAll'] / 100 * 33); // + $usta = $u->getStats($ua['id'], 0); // статы цели + $minHp = floor($usta['hpAll'] / 100 * 33); // минимальный запас здоровья цели при котором можно напасть if ($ua['battle'] > 0) { $uabt = mysql_fetch_array( @@ -201,15 +200,15 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! } if ($ua['battle'] == 0 && $minHp > $usta['hpNow']) { - $u->error = ' , '; + $u->error = 'Нельзя напасть, у противника не восстановилось здоровье'; } elseif (isset($uabt['id']) && $uabt['type'] == 500 && $ua['team'] == 1) { - $u->error = ' !'; + $u->error = 'Нельзя сражаться на стороне монстров!'; } elseif (isset($uabt['id']) && $uabt['invis'] > 0) { - $u->error = ' !'; + $u->error = 'Нельзя вмешиваться в невидимый бой!'; } elseif ($magic->testTravma($ua['id'], 3)) { - $u->error = ' , !'; + $u->error = 'Противник тяжело травмирован, нельзя напасть!'; } elseif ($magic->testTravma($u->info['id'], 2)) { - $u->error = ' , !'; + $u->error = 'Вы травмированы, нельзя напасть!'; } elseif ($ua['room'] == $u->info['room'] && ($minHp <= $usta['hpNow'] || $ua['battle'] > 0)) { if ($ua['type_pers'] == 0) { if ($cruw == 2) { @@ -231,9 +230,9 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! ); if ($cruw == 2) { - $rtxt = '[img[items/pal_button9.gif]] "' . $u->info['login'] . '" ' . $sx . ' "' . $ua['login'] . '".'; + $rtxt = '[img[items/pal_button9.gif]] "' . $u->info['login'] . '" совершил' . $sx . ' кровавое нападение по метке на персонажа "' . $ua['login'] . '".'; } else { - $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" ' . $sx . ' "' . $ua['login'] . '".'; + $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" совершил' . $sx . ' нападение по метке на персонажа "' . $ua['login'] . '".'; } if ($goodt > 0) { @@ -247,18 +246,18 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! die(); } else { if ($ua['room'] != $u->info['room']) { - // - $u->error = ' '; + //Персонаж в другой комнате + $u->error = 'Персонаж находится в другой комнате'; } else { - $u->error = ' .'; + $u->error = 'Персонаж имеет слишком малый уровень жизней.'; } } } else { - // - $u->error = ' , '; + //На персонажа нельзя напасть + $u->error = 'Персонаж не в игре, либо на нем нет метки'; } } else { - $u->error = ' ...'; + $u->error = 'Вам запрещается атаковать без разрешения...'; } } @@ -281,25 +280,25 @@ if ($u->info['repass'] > 0) { ); mysql_query('UPDATE `stats` SET `bot` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } else { - die('! ip %' . $u->info['ip'] . '.
            IP, . !
            '); + die('Внимание! Смена пароля привязана к ip %' . $u->info['ip'] . '.
            Для восстановления контроля войдите с данного IP, либо обратитесь к Администрации проекта через нового персонажа. Приносим извинения за неудобства!
            '); } } else { if (isset($_POST['renpass'])) { if ($u->info['pass'] == md5($_POST['renpass'])) { - echo '! .'; + echo 'Внимание!Ваш новый пароль должен различаться со старым.'; } elseif ($_POST['renpass'] != $_POST['renpass2']) { - echo '! .'; + echo 'Внимание!Пароли не совпадают.'; } } die( - '


            !
            , 2 .



            + '


            Смените пожалуйста пароль от персонажа!
            Данная смена проходит, если пароль не менялся более 2 месяцев.



            - + Сменить пароль - - - + + +
            :
            ( ):
            Новый пароль:
            Новый пароль (еще раз):
            ' @@ -320,7 +319,7 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { $u->info['battle_lsto'] = true; } elseif ($u->info['battle'] == 0) { - /// + //Проверка/Снятие предметов if (!isset($sleep['id'])) { $act2 = $u->testItems($u->info['id'], $u->stats, 0); } @@ -333,7 +332,7 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { } if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) { - /// + //Одеть/снять предмет if (isset($_GET['rstv']) && isset($_GET['inv'])) { $act = $u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']); } elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) { @@ -358,7 +357,7 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { if ($u->info['allLock'] < time()) { $u->deleteItem(intval($_GET['delete']), $u->info['id']); } else { - echo ''; } @@ -369,13 +368,13 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { } elseif (isset($_GET['end_qst_now'])) { $q->endq((int)$_GET['end_qst_now'], 'end'); } - // + //Использовать эффект if (isset($_GET['use_pid'])) { $magic->useItems((int)$_GET['use_pid']); } } else { if ($u->room['block_all'] > 0) { - $u->error = ' -...'; + $u->error = 'В данной локации запрещено пользоваться чем-либо...'; } } } @@ -383,7 +382,7 @@ if (isset($btl_last['id']) && $u->info['battle'] == 0) { if ($magic->youuse > 0) { $act = 1; } -// +//Получение статов if ($act != -2) { $u->stats = $u->getStats($u->info['id'], 0, 1); $u->aves = $u->ves(null); @@ -422,20 +421,20 @@ if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { require_once('modules_data/_clan.php'); } elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50 || $u->info['align2'] == 50) && !isset($u->tfer['id'])) { require_once('modules_data/_alhp.php'); - // + //Панель букмекера } elseif (isset($_GET['bukmeker']) && !isset($u->tfer['id'])) { require_once('modules_data/_bukmeker.php'); - // + //Панель светлого } elseif ($u->info['align'] >= 1 && $u->info['align'] < 2 && isset($_GET['1_panel']) && !isset($u->tfer['id'])) { require_once('modules_data/1_panel.php'); - // + //Панель темного } elseif ($u->info['align'] >= 3 && $u->info['align'] < 4 && isset($_GET['3_panel']) && !isset($u->tfer['id'])) { require_once('modules_data/3_panel.php'); - // + //Панель темного } elseif ($u->info['align'] >= 7 && $u->info['align'] < 8 && isset($_GET['7_panel']) && !isset($u->tfer['id'])) { require_once('modules_data/7_panel.php'); } elseif ($u->info['battle'] != 0) { - // + //поединок if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) { require_once('modules_data/btl_.php'); echo ''; @@ -467,7 +466,7 @@ if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { } elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= Config::get('level_ransfer') && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) { if ($u->info['allLock'] > time()) { require_once('modules_data/_locations.php'); - echo ''; } else { @@ -486,7 +485,7 @@ if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { } } -// +//Проверяем квесты на готовность if (in_array( $u->room['file'], ['dungeon_enter', 'dungeon_enter_all', 'enterbezdna', 'entercat', 'enterdrago', 'entergrib', 'enternizin', 'enterptp', 'house_belaun', 'dungeon'] @@ -505,22 +504,22 @@ foreach ($sp as $pl) { // if ($pl['room'] != -1 && $pl['room'] != $u->info['room']) { if (isset($_GET['take_loc_item']) && $_GET['take_loc_item'] == $pl['id']) { - $iloce = ' ...'; + $iloce = 'Вы находитесь в другой комнате...'; } $tk = 0; } elseif ($pl['tr_login'] != '0' && $pl['tr_login'] != $u->info['login']) { if (isset($_GET['take_loc_item']) && $_GET['take_loc_item'] == $pl['id']) { - $iloce = ' ...'; + $iloce = 'Данный предмет для другого персонажа...'; } $tk = 0; } elseif ($pl['tr_sex'] != -1 && $pl['tr_sex'] != $u->info['sex']) { if (isset($_GET['take_loc_item']) && $_GET['take_loc_item'] == $pl['id']) { - $iloce = ' ...'; + $iloce = 'Данный предмет для противоположного пола...'; } $tk = 0; } if ($pl['time'] + 86400 < time()) { - // + //Не успели поднять $glid = 1; mysql_query( 'UPDATE `items_local` SET `delete` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' @@ -528,14 +527,14 @@ foreach ($sp as $pl) { } elseif (isset($_GET['take_loc_item']) && $_GET['take_loc_item'] == $pl['id']) { // if ($u->info['battle'] > 0 && $tk == 1) { - $iloce = ' , ...'; + $iloce = 'Вы не можете поднять предмет, завершите поединок...'; } elseif ($tk == 1) { - $iloce = ' "' . $itmo['name'] . '" "' . $u->room['name'] . '".'; + $iloce = 'Вы успешно подняли предмет "' . $itmo['name'] . '" в локации "' . $u->room['name'] . '".'; mysql_query( 'UPDATE `items_local` SET `delete` = "' . time( ) . '" , `user_take` = "' . $u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1' ); - // + //выдаем предмет $glid = 1; if ($pl['data'] == '0') { $u->addItem( @@ -553,15 +552,15 @@ foreach ($sp as $pl) { if ($tk == 1 && $pl['tr_login'] == '0') { $tk = 2; } - $iloc .= '
            ' . '
            ' . '' . '
            '; } @@ -575,7 +574,7 @@ if ($iloc != '') { if ($iloce != '') { $iloc = '
            ' . $iloce . '
            ' . $iloc; } - $iloc = '' . '

            ' . $iloc; + $iloc = '' . '

            В комнате разбросаны предметы

            ' . $iloc; $tjs .= 'top.frames[\'main\'].locitems=1;parent.$(\'#canal1\').html( \'' . $iloc . '\' );'; } else { $tjs .= 'top.frames[\'main\'].locitems=1;parent.$(\'#canal1\').html( \'\' );'; diff --git a/main_bot.php b/main_bot.php index 13be228c..e893a9cb 100644 --- a/main_bot.php +++ b/main_bot.php @@ -1,6 +1,6 @@ ' . mysql_real_escape_string($t) . '","capitalcity","TABU","6","1","-1")' + ) . ' (Критическая ошибка): ' . mysql_real_escape_string($t) . '","capitalcity","TABU","6","1","-1")' ); } @@ -64,7 +64,7 @@ $filter = new Filter(); $q = new Quests; $tjs = ''; -#-------- , +#--------для общаги, и позже для почты $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "' . $u->info['id'] . '" LIMIT 1', 1); if ($u->room['file'] != "objaga" && $sleep['id'] > 0) { mysql_query('UPDATE `actions` SET `vars` = "unsleep" WHERE `id` = ' . $sleep['id']); @@ -72,7 +72,7 @@ if ($u->room['file'] != "objaga" && $sleep['id'] > 0) { $trololo = $u->room['file'] == "objaga" || $u->room['file'] == "post" ? 0 : 1; -#-------- , +#--------для общаги, и позже для почты if ($u->info['online'] < time() - 60) { $filter->setOnline($u->info['online'], $u->info['id']); Db::sql('update users set online = unix_timestamp(), timeMain = unix_timestamp() where id = ?', [$u->info['id']]); @@ -104,13 +104,13 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! ); if (isset($ua['id']) && $ua['online'] > time() - 520) { - $usta = $u->getStats($ua['id'], 0); // - $minHp = $usta['hpAll'] / 100 * 33; // + $usta = $u->getStats($ua['id'], 0); // статы цели + $minHp = $usta['hpAll'] / 100 * 33; // минимальный запас здоровья цели при котором можно напасть if ($ua['room'] == $u->info['room'] && ($minHp < $usta['hpNow'] || $ua['battle'] > 0)) { $magic->atackUser($u->info['id'], $ua['id'], $ua['team'], $ua['battle'], $ua['bbexp'], 50); - $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" ' . $sx . ' "' . $ua['login'] . '".'; + $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" совершил' . $sx . ' нападение по метке на персонажа "' . $ua['login'] . '".'; Db::sql( 'insert into chat (new, type, typeTime, time, city, room, text) values (1,6,1,unix_timestamp(),?,?,?)', [ @@ -124,19 +124,19 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] ! die(); } else { $u->error = $ua['room'] != $u->info['room'] ? - ' ' : - ' .'; + 'Персонаж находится в другой комнате' : + 'Персонаж имеет слишком малый уровень жизней.'; } } else { - // - $u->error = ' , '; + //На персонажа нельзя напасть + $u->error = 'Персонаж не в игре, либо на нем нет метки'; } } - $u->error = ' ...'; + $u->error = 'Вам запрещается атаковать без разрешения...'; } if ($u->info['battle_text'] != '') { - // + //Показываем системку и заносим данные if ($u->info['last_b'] > 0) { Db::sql( 'insert into battle_last (battle_id, uid, time, act, align, clan, exp) values (?,?,unix_timestamp(),?,?,?,?)', @@ -165,7 +165,7 @@ if ($u->stats['act'] == 1) { $act = 1; } $u->rgd = $u->regen($u->info['id'], 0, 0); -// +//Проверка уровня $ul = $u->testLevel(); if ($ul == 1) { $act = 1; @@ -179,7 +179,7 @@ if ($u->info['repass'] > 0 && $u->info['id'] != 5433446) { } if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) { - /// + //Одеть/снять предмет if (isset($_GET['rstv']) && isset($_GET['inv'])) { $act = $u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']); } elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) { @@ -209,7 +209,7 @@ if ($u->info['repass'] > 0 && $u->info['id'] != 5433446) { } elseif (isset($_GET['end_qst_now'])) { $q->endq((int)$_GET['end_qst_now'], 'end'); } - // + //Использовать эффект if (isset($_GET['use_pid'])) { $magic->useItems((int)$_GET['use_pid']); } @@ -222,7 +222,7 @@ if ($u->info['repass'] > 0 && $u->info['id'] != 5433446) { if ($magic->youuse > 0) { $act = 1; } - // + //Получение статов if ($act != -2) { $u->stats = $u->getStats($u->info['id'], 0, 1); $u->aves = $u->ves(null); diff --git a/map.php b/map.php index 5896d77c..b139fdf0 100644 --- a/map.php +++ b/map.php @@ -14,7 +14,7 @@ if ($u->info['banned'] || !isset($u->info['id'])) { - + @@ -25,16 +25,16 @@ if ($u->info['banned'] || !isset($u->info['id'])) {

            -

            +

            Тестовая локация

            - + - + @@ -42,12 +42,12 @@ if ($u->info['banned'] || !isset($u->info['id'])) { - +
            -

            Adobe Flash Player.

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

              Adobe Flash Player + alt="Получить проигрыватель Adobe Flash Player" width="112" height="33"/>

            diff --git a/map/main.as b/map/main.as index fde690b9..1b2c4d6a 100644 --- a/map/main.as +++ b/map/main.as @@ -1,4 +1,4 @@ -package { +package { import flash.display.MovieClip; diff --git a/modules_data/1_panel.php b/modules_data/1_panel.php index ea69ae52..88c7fa41 100644 --- a/modules_data/1_panel.php +++ b/modules_data/1_panel.php @@ -15,12 +15,12 @@ if ($u->error) { echo '' . $u->error . '
            '; } -// $item_light +//Абилки $item_light $item_light = [ [5048, 1, 0, 0, 0, 'usefromfile=1|nohaos=1|musor=2|noremont=1|tr_align=1|srok=86400|nosale=1|sudba=1', 1], ]; $vi = []; -$vnr = [0 => ' ', 1 => ' ']; +$vnr = [0 => 'на сегодня', 1 => ' всего']; $seet = ''; foreach ($item_light as $item) { if (!$item[1]) { @@ -42,12 +42,12 @@ foreach ($item_light as $item) { if ($item[1] - $vix > 0 && $_GET['take_item_light_panel'] == $itm['id']) { $nitm = $u->addItem($itm['id'], $u->info['id'], $item[5]); $u->addAction(time(), 'dark_itm' . $itm['id'], ''); - echo ' "' . $itm['name'] . '" !

            '; + echo 'Предмет "' . $itm['name'] . '" перемещен к Вам в инвентарь!

            '; } - // + //Вывод предметов $seet0 = ' '; +(Осталось ' . $vnr[$item[4]] . ': ' . ($item[1] - $vix) . ' шт.)" src="https://' . $c['img'] . '/i/items/' . $itm['img'] . '"> '; if ($item[1] - $vix > 0) { $seet0 = '' . $seet0 . ''; } else { @@ -64,12 +64,12 @@ foreach ($item_light as $item) { let elem = document.getElementById('se-pre-con'); elem.parentNode.removeChild(elem); -

            , microLogin($u->info['id'], 1) ?>

            +

            Светлая Сила с нами, собрат microLogin($u->info['id'], 1) ?>

            - - + +
            -
            :
            ( )
            +
            Абилки:
            (Чтобы забрать предмет просто нажмите на его изображение)
            diff --git a/modules_data/3_panel.php b/modules_data/3_panel.php index f5af4b0a..7d00fc16 100644 --- a/modules_data/3_panel.php +++ b/modules_data/3_panel.php @@ -15,7 +15,7 @@ if($u->error!='') echo ''.$u->error.'
            '; } $vu = array(0,0,0,0,0,0,0); -// $item_dark +//Абилки $item_dark $item_dark = array( "" => array( //array(4398,1,0,0,0,'useOnLogin=1|onlyOne=1|oneType=37|noremont=1|musor=1|tr_align=3|sudba='.$u->info['login'].'|srok=86400|nosale=1|sudba=1',1), @@ -33,15 +33,15 @@ $vi = array( ?> -

            , microLogin($u->info['id'],1)?>

            - +

            Темная Сила с нами, собрат microLogin($u->info['id'],1)?>

            +
            -

            :
            ( )

            +

            Абилки:
            (Чтобы забрать предмет просто нажмите на его изображение)

            ' ',1 => ' '); + $vnr = array(0 => 'на сегодня',1 => ' всего'); while($i < count($item_dark[$dark_panel])) { if($item_dark[$dark_panel][$i][1]>0) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item_dark[$dark_panel][$i][0].'" LIMIT 1')); @@ -60,13 +60,13 @@ $vi = array( if($item_dark[$dark_panel][6]>0) { } $u->addAction(time(),'dark_itm'.$itm['id'],''); - echo ' "'.$itm['name'].'" !

            '; + echo 'Предмет "'.$itm['name'].'" перемещен к Вам в инвентарь!

            '; } } $seet0 = ''; - // + //Вывод предметов $seet0 .= ' '; +(Осталось '.$vnr[$item_dark[$i][4]].': '.($item_dark[$dark_panel][$i][1]-$vix).' шт.)" src="https://'.$c['img'].'/i/items/'.$itm['img'].'"> '; if($item_dark[$dark_panel][$i][1]-$vix > 0) { $seet0 = ''.$seet0.''; }else{ diff --git a/modules_data/7_panel.php b/modules_data/7_panel.php index bb9eec6c..11675d01 100644 --- a/modules_data/7_panel.php +++ b/modules_data/7_panel.php @@ -15,7 +15,7 @@ if($u->error!='') echo ''.$u->error.'
            '; } $vu = array(0,0,0,0,0,0,0); -// $item_neytral +//Абилки $item_neytral $item_neytral = array( "" => array( //array(5050,1,0,0,0,'tr_s1=10|tr_s2=10|tr_s3=10|tr_s4=25|onlyOne=1|oneType=74|tr_align=7|noremont=1|musor=1|srok=86400|nosale=1|sudba=1',1), @@ -33,15 +33,15 @@ $vi = array( ?> -

            , microLogin($u->info['id'],1)?>

            - +

            Нейтральная Сила с нами, собрат microLogin($u->info['id'],1)?>

            +
            -

            :
            ( )

            +

            Абилки:
            (Чтобы забрать предмет просто нажмите на его изображение)

            ' ',1 => ' '); + $vnr = array(0 => 'на сегодня',1 => ' всего'); while($i < count($item_neytral[$neytral_panel])) { if($item_neytral[$neytral_panel][$i][1]>0) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$item_neytral[$neytral_panel][$i][0].'" LIMIT 1')); @@ -60,13 +60,13 @@ $vi = array( if($item_neytral[$neytral_panel][6]>0) { } $u->addAction(time(),'dark_itm'.$itm['id'],''); - echo ' "'.$itm['name'].'" !

            '; + echo 'Предмет "'.$itm['name'].'" перемещен к Вам в инвентарь!

            '; } } $seet0 = ''; - // + //Вывод предметов $seet0 .= ' '; +(Осталось '.$vnr[$item_neytral[$i][4]].': '.($item_neytral[$neytral_panel][$i][1]-$vix).' шт.)" src="https://'.$c['img'].'/i/items/'.$itm['img'].'"> '; if($item_neytral[$neytral_panel][$i][1]-$vix > 0) { $seet0 = ''.$seet0.''; }else{ diff --git a/modules_data/_NewLocations.php b/modules_data/_NewLocations.php index 6b10c8d0..9195cc28 100644 --- a/modules_data/_NewLocations.php +++ b/modules_data/_NewLocations.php @@ -14,10 +14,10 @@ if(isset($u->error2)){ if( isset($_GET['nightatack'])) { if( date('H') >= 22 || date('H') < 6 ) { if( - $u->room['name'] == ' ' || - $u->room['name'] == ' ' || - $u->room['name'] == ' ' || - $u->room['name'] == ' ' + $u->room['name'] == 'Центральная площадь' || + $u->room['name'] == 'Страшилкина улица' || + $u->room['name'] == 'Большая парковая улица' || + $u->room['name'] == 'Большая паркоторговая улица' ) { if($u->room['noatack'] == 0) { @@ -25,8 +25,8 @@ if( isset($_GET['nightatack'])) { $ua = mysql_fetch_array(mysql_query('SELECT `s`.*,`u`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE `u`.`login` = "'.mysql_real_escape_string($_GET['login']).'" LIMIT 1')); if(isset($ua['id']) && $ua['online'] > time()-520){ - $usta = $u->getStats($ua['id'],0); // - $minHp = $usta['hpAll']/100*33; // + $usta = $u->getStats($ua['id'],0); // статы цели + $minHp = $usta['hpAll']/100*33; // минимальный запас здоровья цели при котором можно напасть if( $ua['battle'] > 0 ){ $uabt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "'.$ua['battle'].'" AND `team_win` = "-1" LIMIT 1')); @@ -36,7 +36,7 @@ if( isset($_GET['nightatack'])) { } if( $ua['level'] < 4 ) { - $re = ' ...'; + $re = 'Новички находятся под защитой Мироздателя...'; }elseif($ua['room']==$u->info['room'] && ($minHp <= $usta['hpNow'] || $ua['battle'] > 0)){ if( $ua['type_pers'] == 0 ) { if( $cruw == 2 ) { @@ -51,9 +51,9 @@ if( isset($_GET['nightatack'])) { $magic->atackUser($u->info['id'],$ua['id'],$ua['team'],$ua['battle'],$ua['bbexp'],$ua['type_pers']); if( $cruw == 2 ) { - $rtxt = '[img[items/pal_button9.gif]] "'.$u->info['login'].'" '.$sx.' "'.$ua['login'].'".'; + $rtxt = '[img[items/pal_button9.gif]] "'.$u->info['login'].'" совершил'.$sx.' кровавое нападение на персонажа "'.$ua['login'].'".'; }else{ - $rtxt = '[img[items/pal_button8.gif]] "'.$u->info['login'].'" '.$sx.' "'.$ua['login'].'".'; + $rtxt = '[img[items/pal_button8.gif]] "'.$u->info['login'].'" совершил'.$sx.' нападение на персонажа "'.$ua['login'].'".'; } mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); @@ -61,25 +61,25 @@ if( isset($_GET['nightatack'])) { die(); }else{ if($ua['room']!=$u->info['room']){ - // - $u->error = ' '; + //Персонаж в другой комнате + $u->error = 'Персонаж находится в другой комнате'; }else{ - $u->error = ' .'; + $u->error = 'Персонаж имеет слишком малый уровень жизней.'; } } }else{ - // - $u->error = ' , '; + //На персонажа нельзя напасть + $u->error = 'Персонаж не в игре, либо на нем нет метки'; } } - $u->error = ' ...'; + $u->error = 'Вам запрещается атаковать без разрешения...'; $re = $u->error; }else{ - $re = ' ...'; + $re = 'Нападать возможно только на улице...'; } }else{ - $re = ' ...'; + $re = 'Нападения возможны только ночью...'; } } @@ -87,16 +87,16 @@ function thisInfRm($id,$tp = NULL) { global $u; $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `code` = "'.mysql_real_escape_string($id).'" AND `city` = "'.$u->info['city'].'" LIMIT 1')); - $inf = ' '; + $inf = 'Здание было разрушено'; if(isset($rm['id'])) { $rown = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `online` > '.(time()-120).' AND `city` = "'.$u->info['city'].'" AND `room` = "'.$rm['id'].'"')); if($tp==NULL) { - $inf = ''.$rm['name'].'
            '.(0+$rown[0]).' .'; + $inf = ''.$rm['name'].'
            Сейчас в комнате '.(0+$rown[0]).' чел.'; }else{ $inf = ''.$rm['name'].' - '.(0+$rown[0]).' .'; +Сейчас в комнате '.(0+$rown[0]).' чел.'; } } if($tp==NULL) @@ -114,11 +114,11 @@ if(isset($_GET['loc'])) //print_r($u->info); } if($u->info['align'] == 2 && $go['nochaos'] == 1){ - $re = ' !'; + $re = 'Проход для хаосников закрыт!'; }elseif($u->info['inTurnir'] > 0){ - $re = ' , ...'; - }elseif($u->aves['now']>=$u->aves['max'] && $u->room['name']!='' && $u->room['name']!='. 1' && $u->room['name']!='. 2' && $u->room['name']!='. 3'){ - $re = ' , ...'; + $re = 'Вы не можете перемещаться, Вы приняли заявку на турнир ...'; + }elseif($u->aves['now']>=$u->aves['max'] && $u->room['name']!='Общежитие' && $u->room['name']!='Общ. Этаж 1' && $u->room['name']!='Общ. Этаж 2' && $u->room['name']!='Общ. Этаж 3'){ + $re = 'Вы не можете перемещаться, рюкзак переполнен ...'; }elseif(isset($go['id'])){ $rmgo = array(); $rg = explode(',',$u->room['roomGo']); @@ -132,31 +132,31 @@ if(isset($_GET['loc'])) } $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "'.$u->info['id'].'" LIMIT 1',1); if(isset($sleep['id']) && $sleep['vars']=='sleep'){ - $re = ' .'; + $re = 'Вы моежете перемещаться только когда бодрствуете.'; }elseif($u->info['timeGo']>=time()){ - $re = ' '.($u->info['timeGo']-time()).' .'; + $re = 'Вы не можете перемещаться еще '.($u->info['timeGo']-time()).' сек.'; }elseif($rmgo[$go['id']]==1 || $u->info['admin']>0){ $alg = explode('-',$go['align']); if(($alg[0] > $u->info['align'] || $alg[1] < $u->info['align']) && $go['align']!=0 && $u->info['admin'] == 0){ - $re = ' '; + $re = 'Вы не можете попасть в эту комнату'; }elseif($u->info['zv']>0){ - $re = ' ?.. !'; + $re = 'Подали заявку и убегаем?.. Не хорошо!'; }elseif((($go['clan'] > 0 && $u->info['clan'] != $go['clan']) || ($go['clan'] == -1 && $u->info['clan'] == 0)) && $u->info['admin'] == 0){ - $re = ' '; + $re = 'Вы не можете попасть в эту комнату'; }elseif($go['sex']>0 && $go['sex']-1!=$u->info['sex'] && $u->info['invis'] != 1 && $u->info['invis'] < time() && $u->info['admin'] == 0){ - $re = ' '; + $re = 'Вы не можете попасть в эту комнату'; }elseif($mlvl[0]>$u->info['level'] && $u->info['admin']==0){ - $re = ' , ;)'; + $re = 'Вы не можете попасть в эту комнату, уровень маловат ;)'; }elseif($mlvl[1]<$u->info['level'] && $u->info['admin']==0){ - $re = ' , ;)'; + $re = 'Вы не можете попасть в эту комнату, уровень высоковат ;)'; }elseif($go['close']==0 || $u->info['admin']>0){ $travms = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" and (`v1`="2" or `v1`="3") and `delete`=0 ORDER by v1 DESC')); - // - $plus_timeGo=0; // - $tr_nogo=false; // + //замедление перемешения при травмах + $plus_timeGo=0; // добавочное время при травме + $tr_nogo=false; // нету запрещения перемещения по травме if($travms['v1']==3){ - // + // тяжелая травма $kostyls = mysql_query('SELECT * FROM `items_users` WHERE `uid`="'.$u->info['id'].'" and `inOdet`!="0" and (`item_id`="630" or `item_id`="631")'); if(mysql_num_rows($kostyls)==2){ $plus_timeGo=30; @@ -165,7 +165,7 @@ if(isset($_GET['loc'])) } }elseif($travms['v1']==2){ - // + //средняя $plus_timeGo=20; } //end freez time go @@ -179,7 +179,7 @@ if(isset($_GET['loc'])) $upd2 = mysql_query('UPDATE `users` SET `room` = "'.$go['id'].'",`online` = "'.time().'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd2){ if( $u->room['file'] == 'bsenter' && $go['file'] != 'bsenter' ) { - // + //Удаляем все ставки в БС $sp_bs = mysql_query('SELECT `id`,`bsid`,`money` FROM `bs_zv` WHERE `uid` = "'.$u->info['id'].'" AND `inBot` = "0" AND `finish` = "0"'); while( $pl_bs = mysql_fetch_array($sp_bs) ) { mysql_query('UPDATE `bs_turnirs` SET `users` = `users` - 1 WHERE `id` = "'.$pl_bs['bsid'].'" LIMIT 1'); @@ -198,23 +198,23 @@ if(isset($_GET['loc'])) $u->room = $go; echo ''; }else{ - $re = ' , '; + $re = 'Вы не смогли перейти в локацию, возможно она была разрушена'; } }elseif($tr_nogo==true){ - $re = ' . .'; + $re = 'Вы травмированны. Не возможно с такими увечиями передвигатся без костылей.'; }else{ - $re = ' '; + $re = 'Вы не смогли перейти в локацию'; } }elseif($go['destroy']==1){ - $re = ' , '; + $re = 'Здание было разрушено, в данный момент оно реставрируется'; }else{ - $re = ' '; + $re = 'Временно закрыто'; } }else{ - $re = ' '; + $re = 'Проход не существует'; } }else{ - $re = ' '; + $re = 'Проход не существует'; } } @@ -291,7 +291,7 @@ function locGoLine() if(rgo_nm != '') { if( $('#moveto').html() == '' ) { $('#moveto').css({'display':'','height':'auto'}); - $('#moveto').html('

            : ' + rgo_nm + ' ()
            '); + $('#moveto').html('
            Вы перейдете в: ' + rgo_nm + ' (отмена)
            '); } }else{ $('#moveto').css({'display':'none','height':'1px'}); @@ -306,7 +306,7 @@ function goLocal(id,nm) { if($('#moveto') != null && $('#moveto') != undefined && nm != undefined) { if(rgo_nm != '') { $('#moveto').css({'display':'','height':'auto'}); - $('#moveto').html('
            : ' + nm + ' ()
            '); + $('#moveto').html('
            Вы перейдете в: ' + nm + ' (отмена)
            '); if(sLoc1 == 64) { location = rgo_url; } @@ -378,7 +378,7 @@ function DrawWeather(room) { var div = ''; for (i = 0; i < no; ++ i) { SetVariable(i); - div += "
            \"\"
            "; + div += "
            \"Снежинка\"
            "; } document.getElementById('snow').innerHTML = div; @@ -408,18 +408,18 @@ function WeatherBegin() { // IE main animation function } if(isset($u->room['id'])){ - $tmGo = $u->info['timeGo']-time()+1; // - $tmGol = $u->info['timeGo']-$u->info['timeGoL']+1; // + $tmGo = $u->info['timeGo']-time()+1; //сколько секунд осталось + $tmGol = $u->info['timeGo']-$u->info['timeGoL']+1; //сколько секунд идти всего if($tmGo<0){ $tmGo = 0; } if($tmGol<1){ $tmGol = 1; } - // + //онлайн в этой комнате $goLis = ' - + @@ -440,15 +440,15 @@ if(isset($u->room['id'])){ $rowonmax2 = 0; $rowonmax2 = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `online` > '.(time()-520).' AND `inUser` = "0" AND `city` = "'.$u->info['city'].'" AND `no_ip` != "trupojor" LIMIT 1')); - $rowonmax = ' : '.$rowonmax2[0].' .'; + $rowonmax = 'Сейчас в городе: '.$rowonmax2[0].' чел.'; $rowonmax = ''.$rowonmax.''; $rowonmax2c = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `online` > '.(time()-520).' AND `inUser` = "0" AND `no_ip` != "trupojor" LIMIT 1')); $rowonmax3c = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `online` > '.(time()-520).' AND `inUser` = "0" AND `no_ip` != "trupojor" LIMIT 1')); - $rowonmaxc = ' : '.$rowonmax2c[0].' .'; + $rowonmaxc = 'Всего в Игре: '.$rowonmax2c[0].' чел.'; $rowonmaxc = ''.$rowonmaxc.''; //$rowonmaxc = ''; - //$rowonmax = ''.$rowonmax.''; + //$rowonmax = ''.$rowonmax.''; unset($sil,$pil,$rowonmax2); if($u->room['file']!=''){ include_once('modules_data/location/'.$u->room['file'].'.php'); diff --git a/modules_data/__turnir.php b/modules_data/__turnir.php index 15cb2922..9c54beb0 100644 --- a/modules_data/__turnir.php +++ b/modules_data/__turnir.php @@ -7,9 +7,9 @@ if(!defined('GAME')) class turnir { public $info,$user,$name = array( - 0 => ' ', - 1 => ' ', - 2 => ' ' + 0 => 'Выжить любой ценой', + 1 => 'Каждый сам за себя', + 2 => 'Захват ключа' ); public function start() { @@ -22,14 +22,14 @@ class turnir { global $c,$u; $row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `win` = "0" AND `lose` = "0" AND `nich` = "0"')); if($row[0] > 0 && $this->info['status'] != 3) { - // + //Создание поединка mysql_query('INSERT INTO `battle` (`city`,`time_start`,`timeout`,`type`,`turnir`) VALUES ("'.$u->info['city'].'","'.time().'","60","1","'.$this->info['id'].'")'); $uri = mysql_insert_id(); - // + //Закидываем персонажей в поединок mysql_query('UPDATE `users` SET `battle` = "'.$uri.'" WHERE `inUser` = "0" AND `inTurnir` = "'.$this->info['id'].'"'); - // + //Обозначаем завершение турнира при выходе mysql_query('UPDATE `turnirs` SET `status` = "3" WHERE `id` = "'.$this->info['id'].'" LIMIT 1'); - die(' ""...'); + die('Перейтиде в раздел "поединки"...'); }else{ if($this->info['status'] == 3) { $this->finishTurnir(); @@ -49,7 +49,7 @@ class turnir { $inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); $bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['bot'].'" LIMIT 1')); if(isset($inf['id'],$bot['id'])) { - // . + //выдаем призы и т.д mysql_query('DELETE FROM `users` WHERE `id` = "'.$bot['id'].'" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "'.$bot['id'].'" LIMIT 1'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$bot['id'].'" LIMIT 1000'); @@ -65,11 +65,11 @@ class turnir { if($win != '') { $win = rtrim($win,', '); - $win = ' : '.$win.'. '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; + $win = 'Победители турнира: '.$win.'. Следующий турнир начнется через '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; }else{ - $win = ' . '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; + $win = 'Победители турнира отсутствует. Следующий турнир начнется через '.$u->timeOut($this->info['time2']).' ('.date('d.m.Y H:i',(time()+$this->info['time2'])).').'; } - $r = ' «'.$this->name[$this->info['type']].' ['.$this->info['level'].'] '.$this->info['count'].'» ! '.$win; + $r = 'Турнир «'.$this->name[$this->info['type']].' ['.$this->info['level'].'] №'.$this->info['count'].'» завершился! '.$win; mysql_query('DELETE FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'" LIMIT '.$this->info['users_in']); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','".$r."','".time()."','6','0')"); } @@ -85,7 +85,7 @@ class turnir { $tm2 = ''; if($this->info['step'] != 3 && $this->info['step'] != 0) { - // + //получение комплекта if(isset($_GET['gocomplect']) && $this->user['points'] < 2) { $aso = array(); @@ -102,13 +102,13 @@ class turnir { $i = 0; $com = array(); while($i <= 17) { if($i == 16) { - // + //левая рука }elseif($i == 17) { - // + //правая рука }else{ - // + //обмундирование $com[$i] = $aso[$i][rand(0,count($aso[$i]))]; } if($com[$i]['id'] > 0) { @@ -126,7 +126,7 @@ class turnir { if($this->info['step'] == 3) { $this->finishTurnir(); }elseif($this->info['step'] == 0) { - // + //распределяем команды $po = array(0,0); $sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "'.$this->info['id'].'" ORDER BY `points` DESC LIMIT '.$this->info['users_in']); $tmr = rand(1,2); @@ -166,7 +166,7 @@ class turnir { ${'tm'.$bot['team']} .= ''.$bot['login'].' ['.$bot['level'].'], '; } } - $r .= ''; - $r .= '

            «'.$this->name[$this->info['type']].'»


            '.$u->timeOut($this->info['time'] - time()).'! '; + $r .= '

            «'.$this->name[$this->info['type']].'»


            Начало турнира через '.$u->timeOut($this->info['time'] - time()).'! '; if($this->user['points'] < 3) { - // + //Еще не получили обмундирование if($this->user['points'] < 2) { - $r .= ''; + $r .= ''; }else{ - $r .= ' '; } }else{ - $r .= ' !'; + $r .= 'Вы участвуете в турнире!'; } - $r .= '

            '; - $r .= ' 1: '.rtrim($tm1,', '); - $r .= '
            2: '.rtrim($tm2,', '); + $r .= '

            '; + $r .= 'Команда №1: '.rtrim($tm1,', '); + $r .= '
            Команда №2: '.rtrim($tm2,', '); if( ($this->info['time'] - time() < 0) && $this->info['step'] == 1) { - // + //начинаем турнир $this->startTurnir(); } diff --git a/modules_data/_alh.php b/modules_data/_alh.php index e5530abc..428ba067 100644 --- a/modules_data/_alh.php +++ b/modules_data/_alh.php @@ -14,9 +14,9 @@ function w(login,id,align,klan,level,online,city,battle){ var s=''; if(online != "") { if (city!="") { - s+='  '; + s+='В другом городе'; } else { - s+=''; + s+='Приватно'; } if (city!="") { s+=''; @@ -24,14 +24,14 @@ function w(login,id,align,klan,level,online,city,battle){ s+=' '; if (klan!='') {s+=''} - s+=''+login+'['+level+']  '; + s+=''+login+'['+level+']Информация о персонаже'; if (city!="") { - s+=" - "; + s+=" - нет в этом городе"; } else { s+=' - '+online; } } else { - s+='  '; + s+='Нет в клубе'; if (city!="") { s+=''; } @@ -42,14 +42,14 @@ function w(login,id,align,klan,level,online,city,battle){ if (nlevel==0) { nlevel=1; s="
            "+s; } - s+=''+login+'['+level+']  - '; + s+=''+login+'['+level+']Информация о персонаже - Нет в клубе'; } else { if (nlevel==1) { nlevel=2; s="
            "+s; } mlogin = login; for(var i=0;i=0) mlogin= mlogin.replace(from[i],to[i]); - s+=''+login+'   - '; + s+=''+login+' Информация о персонаже - нет в этом городе'; } s+=''; @@ -63,7 +63,7 @@ function w(login,id,align,klan,level,online,city,battle){
            @@ -290,10 +290,10 @@ if(isset($ba['id'])) {

            "; +echo "

            Необходимые средства в работе алхимика

            "; $p['m1'] = 1; -$srok = array(15=>'15 ',30=>'30 ',60=>' ',180=>' ',360=>' ',720=>' ',1440=>' ',4320=>' '); +$srok = array(15=>'15 минут',30=>'30 минут',60=>'один час',180=>'три часа',360=>'шесть часов',720=>'двенадцать часов',1440=>'одни сутки',4320=>'трое суток'); if(isset($_GET['usemod'])) { @@ -306,30 +306,30 @@ $srok = array(15=>'15 } } if(isset($_POST['tologin'],$_POST['message'])) { - $u->send('',1,$infcity,'',htmlspecialchars($_POST['tologin'],NULL,'cp1251'),' '.$u->info['login'].': '.$_POST['message'].'',-1,6,0,0,0,1); + $u->send('',1,$infcity,'',htmlspecialchars($_POST['tologin'],NULL),'Сообщение телеграфом от '.$u->info['login'].': '.$_POST['message'].'',-1,6,0,0,0,1); } ?>

            - + - + ?>Продают еврокредиты и прочие платные услуги сервиса
            Вы можете отправить им личное сообщение, даже если Вы и Алхимик находитесь в разных городах @@ -124,31 +124,31 @@ if( $i == 0 ) {

            Алхимики

            '; + echo '
            Нет ни одного назначенного Алхимика'; } ?>
            : 1 e. = .
            - : 1 = .
            +
            Курс покупки ЕвроКредитов: 1 eкр. = руб.
            + Курс обмена ЕвроКредитов: 1 екр = кр.
            0) { ?> - : = 1 .
            + Курс обмена Кредитов: кр = 1 екр.

            ,
             
            - +
            - + Курс еврокредита к мировой валюте - + - + - +
            Данные на без учета комиссий
            1 . = 1 екр. =
            Не удалось получить информацию
            @@ -166,8 +166,8 @@ if( $i == 0 ) {
             
            diff --git a/modules_data/_alhp.php b/modules_data/_alhp.php index f3216f24..36e72700 100644 --- a/modules_data/_alhp.php +++ b/modules_data/_alhp.php @@ -33,7 +33,7 @@ function openMod(title,dat) var d = document.getElementById('useMagic'); if(d!=undefined) { - document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; + document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; document.getElementById('moddata').innerHTML = dat; d.style.display = ''; } @@ -52,7 +52,7 @@ function closeMod() -
            +
            -

            :

            - +

            На алхимических счетах:

            + ЕКР
            - : $ = 1 . + Персональный курс: $ = 1 Еврокредит.
            microLogin($uba['uid'],1).'
            '; + echo 'Покупатель: '.$u->microLogin($uba['uid'],1).'
            '; }else{ - echo ' , .
            '; + echo 'Персонаж заблокирован, либо не найден.
            '; unset($_POST['buy_ekr']); } echo '
            '; @@ -145,7 +145,7 @@ if(isset($ba['id'])) { } //} - // , + //Бонус опытовый, первичный и накопительный $out_ekr = $_POST['buy4ekr']; $out_ekr0 = $_POST['buy4ekr']; // @@ -163,14 +163,14 @@ if(isset($ba['id'])) { } if(isset($_POST['buy4ekr']) && $_POST['buy4ekr'] < 0.01) { - echo ' : 0.01 .
            '; + echo 'Минимальная сумма продажи: 0.01 екр.
            '; unset($_POST['buy4ekr']); }elseif($_POST['buy4ekr'] > $ba['ekr']) { - echo '
            '; + echo 'Недостаточно средств на счете
            '; unset($_POST['buy4ekr']); } if(isset($_POST['buygoodluck'])) { - echo ''; + echo ''; $ba['ekr'] -= $_POST['buy4ekr']; $ba['USD'] += round($_POST['buy4ekr']*$ucur,2); mysql_query('UPDATE `bank_alh` SET `ekr` = "'.mysql_real_escape_string($ba['ekr']).'",`USD` = "'.mysql_real_escape_string($ba['USD']).'" WHERE `id` = "'.$ba['id'].'" LIMIT 1'); @@ -193,47 +193,47 @@ if(isset($ba['id'])) { if( $user['host_reg'] > 0 && $_POST['buy4ekr'] >= 1 ) { $refer = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`city`,`sex`,`room`,`host_reg` FROM `users` WHERE `id` = "'.mysql_real_escape_string($user['host_reg']).'" LIMIT 1')); if( isset($refer['id']) ) { - $r = ''.date('d.m.Y H:i').' « » / '.$u->info['login'].' : '; + $r = ''.date('d.m.Y H:i').' Банк «Старого Бойцовского клуба» / Алхимик '.$u->info['login'].' сообщает: '; if($refer['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; }else{ - $r .= ''; + $r .= 'Уважаемый'; } $ubaref = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$refer['id'].'" ORDER BY `id` DESC LIMIT 1')); if( isset($ubaref['id']) ) { mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($ubaref['money2']+round($_POST['buy4ekr']*0.05,2)).'" WHERE `id` = "'.$ubaref['id'].'" LIMIT 1'); } - $r .= ' '.$refer['login'].', "'.$user['login'].'" Ekr. '.(0+$ubaref['id']).' '.round($_POST['buy4ekr']*0.05,2).' Ekr. '; + $r .= ' '.$refer['login'].', Ваш воспитанник "'.$user['login'].'" приобрел Ekr. и на Ваш банковский счет №'.(0+$ubaref['id']).' зачислено '.round($_POST['buy4ekr']*0.05,2).' Ekr. '; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$refer['city']."','".$refer['room']."','','".$refer['login']."','".$r."','-1','5','0')"); } } */ - $r = ''.date('d.m.Y H:i').' '.$u->info['login'].' : '; + $r = ''.date('d.m.Y H:i').' Алхимик '.$u->info['login'].' сообщает: '; if($user['sex'] == 1) { - $r .= ''; + $r .= 'Уважаемая'; }else{ - $r .= ''; + $r .= 'Уважаемый'; } $bnss = ''; if( ($out_ekr-round((int)$_POST['buy4ekr'],2)) > 0 ) { - $bnss = ' (+'.($out_ekr-round((int)$_POST['buy4ekr'],2)).' !)'; + $bnss = ' (+'.($out_ekr-round((int)$_POST['buy4ekr'],2)).' ЕКР бонус!)'; } - $r .= ' '.$user['login'].', '.$_POST['buy4ekr'].' '.$bnsss.'. !'; + $r .= ' '.$user['login'].', на Ваш счет зачислено '.$_POST['buy4ekr'].' ЕКР'.$bnsss.'. Благодарим Вас за покупку!'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','".$user['city']."','".$user['room']."','','".$user['login']."','".$r."','-1','5','0')"); - $text_msg = ' '.$u->info['login'].' '.$_POST['buy4ekr'].' . ( '.$ba['procent'].'% , '.$ba['USD'].'$). : '.$u->microLogin($uba['uid'],1).'..'; + $text_msg = 'Алхимик '.$u->info['login'].' совершил продажу '.$_POST['buy4ekr'].' ЕКР. (скидка '.$ba['procent'].'% , задолжность '.$ba['USD'].'$). Покупатель: '.$u->microLogin($uba['uid'],1).'..'; $balance = mysql_fetch_array(mysql_query('SELECT SUM(`money`) FROM `balance_money` WHERE `cancel` = 0')); $balance = $balance[0]+$money; mysql_query('INSERT INTO `balance_money` (`time`,`ip`,`money`,`comment2`,`balance`,`cancel`) VALUES ("'.time().'","'.$u->info['ip'].'","'.mysql_real_escape_string((int)$money).'","'.mysql_real_escape_string($text_msg).'","'.$balance.'","'.time().'")'); - // + //Рейтинг по вкладам $ub = array(); $ui = array(); $sp = mysql_query('SELECT * FROM `pay_operation` WHERE `good` > 0 ORDER BY `id` DESC'); @@ -271,18 +271,18 @@ if(isset($ba['id'])) { // }else{ - echo ' .:'; + echo 'Сумма екр.:'; if(!isset($_POST['buy4ekr'])) { - echo '              
            '; + echo '              
            '; }else{ - echo ' '.round((int)$_POST['buy4ekr'],2).' + '.($out_ekr-round((int)$_POST['buy4ekr'],2)).' .'; - echo '  

            '; + echo ' '.round((int)$_POST['buy4ekr'],2).' ЕКР + '.($out_ekr-round((int)$_POST['buy4ekr'],2)).' ЕКР бонус.'; + echo '  

            '; } } } } ?> - . : + Перести екр. персонажу:
            - +   -

            -
              +

            Телеграф

            +
            Логин персонажа сообщение  

            :


            '; +echo '

            Список реальщиков:


            '; $sp = mysql_query('SELECT * FROM `pay_operation` WHERE `good` > 0 GROUP BY `uid`'); while( $pl = mysql_fetch_array($sp) ) { $onl = mysql_fetch_array(mysql_query('SELECT `id`,`online` FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); $lg = $u->microLogin($pl['uid'],1); - if( $lg != ' [??]' ) { + if( $lg != 'Невидимка [??]' ) { if($onl['online'] > time()-240) { $lg = ''.$lg.''; }else{ - $lg .= ' ( '.date('d.m.Y H:i',$onl['online']).')'; + $lg .= ' (был тут '.date('d.m.Y H:i',$onl['online']).')'; } if( $u->info['admin'] > 0 ) { $sum = mysql_fetch_array(mysql_query('SELECT SUM(`ekr`) FROM `pay_operation` WHERE `good` > 0 AND `uid` = "'.$pl['uid'].'" LIMIT 1')); $sum = 0+$sum[0]; - echo $lg.' - '.$sum.' .
            '; + echo $lg.' - '.$sum.' ЕКР.
            '; }else{ echo $lg.'
            '; } diff --git a/modules_data/_animal.php b/modules_data/_animal.php index a9b9faa5..b246c626 100644 --- a/modules_data/_animal.php +++ b/modules_data/_animal.php @@ -14,10 +14,10 @@ $err = ''; $an = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `id` = "'.$u->info['animal'].'" LIMIT 1')); if(!isset($an['id'])) { - echo '



            ...
            '; + echo '



            Зверь не найден...
            '; }else{ if(isset($_GET['delete']) && $_GET['delete'] == $an['id']) { - echo ' ...'; + echo 'Зверь был выгнан...'; mysql_query('UPDATE `users` SET `animal` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users_animal` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.$an['id'].'" AND `delete` = "0" LIMIT 1'); }elseif(isset($_GET['anml_login']) && $an['rename'] == 0) { @@ -26,17 +26,17 @@ if(isset($_GET['delete']) && $_GET['delete'] == $an['id']) { { $g = false; $en = preg_match("/^(([a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([-- _-])+)$/i", $txt); + $ru = preg_match("/^(([а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } return $g; } - $nl = htmlspecialchars($_GET['anml_login'],NULL,'cp1251'); + $nl = htmlspecialchars($_GET['anml_login'],NULL); $nl = str_replace(' ','',$nl); $nl = str_replace(' ','',$nl); - $sr = "!@#$%^&*()\+|/'`\"-_"; + $sr = "!@#$%^&*()\+Ёё|/'`\"-_"; if($nl == '' || strlen($nl) > 10 || strlen($nl) < 2 || en_ru($nl) == true || strpos($sr,$nl)) { $n = 0; }else{ @@ -47,9 +47,9 @@ if(isset($_GET['delete']) && $_GET['delete'] == $an['id']) { if($n == 1) { mysql_query('UPDATE `users_animal` SET `name` = "'.mysql_real_escape_string($nl).'",`rename` = "1" WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.$an['id'].'" AND `delete` = "0" LIMIT 1'); $an['rename'] = 1; - echo ' "'.$nl.'"'; + echo 'Вы успешно переименовали питомца в "'.$nl.'"'; }else{ - echo ' '; + echo 'Эта кличка не подходит'; } } @@ -57,7 +57,7 @@ $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE $anl = $anl['bonus']; $anl = $u->lookStats($anl); -$nam = array(1=>'',2=>'',3=>'',4=>'',5=>'',6=>'',7=>''); +$nam = array(1=>'Кот',2=>'Сова',3=>'Светляк',4=>'Чертяка',5=>'Собака',6=>'Свинья',7=>'Дракон'); $sab = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "'.$nam[$an['type']].' ['.$an['level'].']" LIMIT 1')); $sa = $u->lookStats($an['stats']); $sa['hpAll'] += 30+$sa['s4']*6+$sa['hpAll']; @@ -96,33 +96,33 @@ if(!isset($ne['id'])) if(isset($_GET['obj_corm'])) { $corm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `im`.`type` = "49" AND `iu`.`delete` = "0" AND `iu`.`inShop` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inTransfer` = "0" AND `iu`.`id` = "'.mysql_real_escape_string($_GET['obj_corm']).'" LIMIT 1')); if(isset($corm['id'])) { - // + //кормушка зверя $see1 = 1; if($an['type'] == 3 && substr_count($corm['img'],'wisp') == 0) { - // + //светляк $see1 = 0; }elseif($an['type'] == 2 && substr_count($corm['img'],'owl') == 0) { - // + //сова $see1 = 0; }elseif($an['type'] == 1 && substr_count($corm['img'],'cat') == 0) { - // + //кот $see1 = 0; }elseif($an['type'] == 4 && substr_count($corm['img'],'chrt') == 0) { - // + //чертяка $see1 = 0; }elseif($an['type'] == 5 && substr_count($corm['img'],'dog') == 0) { - // + //собака $see1 = 0; }elseif($an['type'] == 6 && substr_count($corm['img'],'pig') == 0) { - // + //свинья $see1 = 0; }elseif($an['type'] == 7 && substr_count($corm['img'],'dragon') == 0) { - // + //дракон $see1 = 0; } if($see1 == 1) { if($an['yad'] > time()) { - $err = '"'.$an['name'].'" ...'; + $err = '"'.$an['name'].'" отвернулся от еды...'; }elseif($an['eda'] < 50) { $po = $u->lookStats($corm['data']); $corm['level'] = $po['tr_lvl']; @@ -147,18 +147,18 @@ if(isset($_GET['obj_corm'])) { } mysql_query('UPDATE `users_animal` SET `eda` = "'.$an['eda'].'" WHERE `id` = "'.$an['id'].'" LIMIT 1'); mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($_GET['obj_corm']).'" LIMIT 1'); - $err = ' ...'; + $err = 'Ваш питомец был успешно накормлен...'; }else{ - $err = ' - ...'; + $err = 'Ваш питомец пока-что не может употреблять подобную пищу ...'; } }else{ - $err = ' ...'; + $err = 'Ваш питомец сыт...'; } }else{ - $err = ' ...'; + $err = 'Ваш питомец не употребляет подобную пищу...'; } }else{ - $err = ' '; + $err = 'Предмет не найден'; } } @@ -166,7 +166,7 @@ $itmAll = $u->genInv(15,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" A if($itmAll[0] != 0) { $itmAll = $itmAll[2]; }else{ - $itmAll = '
            '; + $itmAll = ''; } ?>
            ПУСТО
            @@ -175,27 +175,27 @@ if($itmAll[0] != 0) {
            []

            HP:

            -

            :
            :
            :
            :

            -

            :
            : /
            - :

            +

            Сила:
            Ловкость:
            Интуиция:
            Выносливость:

            +

            Уровень:
            Опыт: /
            + Сытость:

            - :
            - •

            + Освоенные навыки:
            + • Отсутствуют

            - :
            + Боевые бонусы:
            items['add'])) { if(isset($anl['add_'.$u->items['add'][$i]])) { if( $u->items['add'][$i] == 'mib1' ) { - $ba .= '• : +'.$anl['add_'.$u->items['add'][$i]].'
            '; + $ba .= '• Броня головы: +'.$anl['add_'.$u->items['add'][$i]].'
            '; }elseif( $u->items['add'][$i] == 'mib2' ) { - $ba .= '• : +'.$anl['add_'.$u->items['add'][$i]].'
            '; + $ba .= '• Броня корпуса: +'.$anl['add_'.$u->items['add'][$i]].'
            '; }elseif( $u->items['add'][$i] == 'mib3' ) { - $ba .= '• : +'.$anl['add_'.$u->items['add'][$i]].'
            '; + $ba .= '• Броня пояса: +'.$anl['add_'.$u->items['add'][$i]].'
            '; }elseif( $u->items['add'][$i] == 'mib4' ) { - $ba .= '• : +'.$anl['add_'.$u->items['add'][$i]].'
            '; + $ba .= '• Броня ног: +'.$anl['add_'.$u->items['add'][$i]].'
            '; }elseif( $u->items['add'][$i] == 'mab1' || $u->items['add'][$i] == 'mab2' || $u->items['add'][$i] == 'mab3' || $u->items['add'][$i] == 'mab4') { }else{ @@ -206,7 +206,7 @@ if($itmAll[0] != 0) { } if($ba == '') { - $ba = '• '; + $ba = '• Отсутствуют'; } echo $ba; ?> @@ -216,8 +216,8 @@ if($itmAll[0] != 0) {

            -
            -
            +
            +

            drwfl('".$login."', '".$id."','".$level."','".$align."','".$clanname."')"; } else { - $userinfo = '[ ]'; + $userinfo = '[Игрок не найден]'; } return $userinfo; } function bug_upView($id) { - //$q = mysql_query("UPDATE `bags` SET readUser='0' WHERE id='".$id."'") or die (" : ".mysql_error ()); + //$q = mysql_query("UPDATE `bags` SET readUser='0' WHERE id='".$id."'") or die ("Ошибка при выполнении запроса: ".mysql_error ()); } function bug_filter_area($id, $page){ @@ -90,16 +90,16 @@ function bug_filter_area($id, $page){ $filter=""; $filter.="
            "; - $filter.="
            "; - $filter.="
            "; - $filter.="
            "; - $filter.="
            "; - $filter.="

            "; - $filter.="

            "; - $filter.="    :
            "; + $filter.="
            "; + $filter.="
            "; + $filter.="
            "; + $filter.="

            "; + $filter.="

            "; + $filter.="   на странице: "; - $filter.="   : "; for($i=1;$i<=$page;$i++){ if($_POST['page']==$i){ @@ -111,14 +111,14 @@ function bug_filter_area($id, $page){ $filter.=""; - $filter.="
            "; + $filter.="
            "; return $filter; } function bug_filter($opt, $f, $id, $t) { $where=""; $pre=0; - // WHERE + // Фильтр WHERE для поиска if($opt!=NULL){ for($i=0;$ierror!=''){ echo ''.$u->error.'
            '; } $page =""; $post = round($_GET['post']); $data = bug_moder($u->info['align']); -$atp = ' , '; +$atp = 'Приветствую тебя, '; //$opt = array($_POST['opt1'],$_POST['opt2'],$_POST['opt3'],$_POST['opt4'],$_POST['opt5']); if(isset($_POST['opt1'])){ $opt[]=$_POST['opt1'];}if(isset($_POST['opt2'])){ $opt[]=$_POST['opt2'];}if(isset($_POST['opt3'])){ $opt[]=$_POST['opt3'];}if(isset($_POST['opt4'])){ $opt[]=$_POST['opt4'];}if(isset($_POST['opt5'])){ $opt[]=$_POST['opt5'];} @@ -253,39 +253,39 @@ form .newpost input, form .newpost textarea, form .newpost select{ padding:2px 4 .moderPost.new { background:url('//img.new-combats.com/admin/moder_post-new.png') no-repeat bottom left; } '.$formTitle.'
            - '; + '; if(isset($u->info['login'])){$c=strlen($u->info['login']);$formcreate.='';}else{$formcreate.='';} $formcreate.=''; if(!isset($_GET['post'])){ $formcreate.=' - + - + '; } $formcreate.=' - + - +
            : Персонаж:
            :Категория:
            :Тема:
            :Текст:
            '; @@ -294,7 +294,7 @@ $formcreate.=' -//if($data OR $u->info['admin']>0 OR $u->info['login']==''){ // if moder or admin +//if($data OR $u->info['admin']>0 OR $u->info['login']=='Хорс'){ // if moder or admin if($data OR $u->info['admin']>0){ // if moder or admin if(isset($_POST['limit'])){ $num = $_POST['limit']; @@ -306,10 +306,10 @@ if($data OR $u->info['admin']>0){ // if moder or admin $total=intval(($posts - 1) / $num) + 1; $filter=bug_filter_area($u->info['admin'], $total); - // - $page.= '

            '; - while ($r = mysql_fetch_array($bugs)) { // - // , [$text] + // Отображение списка записей + $page.= '

            ЗАЯВКИ

            '; + while ($r = mysql_fetch_array($bugs)) { // Вывод списка + // Сокращение содержимого текста, возвращает[$text] if(strlen($r['text'])>=100 && empty($_GET['post'])){$text=substr($r['text'], 0, 100)."...";} else {$text=$r['text'];} $author = $r['uid']; @@ -320,21 +320,21 @@ if($data OR $u->info['admin']>0){ // if moder or admin $data = bug_moder($user['align']); $checkPost = bug_classPost($user['admin'],$u->info['id'], $data, $r['readUser'], $r['readAdmin'], $r['readModer'], $r['up']); - if(strlen($r['title'])>=1){ $title="".$r['title'].""; } else { $title=""; } + if(strlen($r['title'])>=1){ $title="«".$r['title']."»"; } else { $title="«Отсутствует»"; } $func=""; - $func.=""; // - - if($u->info['admin']>0 OR $data)$func.=""; // - + $func.=""; // Отметить - Я прочитал + if($u->info['admin']>0 OR $data)$func.=""; // Вернуть отметку - Я не прочел //if($u->info['admin']>0 OR $data)$func.=""; $func.=""; $bug_sid = mysql_query("SELECT * FROM `bags` WHERE `sid`=".$r['id']." ORDER BY time ASC"); - if($r['delete']==1){$thisDelete="   |  ";} else {$thisDelete=" ";} + if($r['delete']==1){$thisDelete="Тема закрыта   |  ";} else {$thisDelete=" ";} $reCount=mysql_num_rows($bug_sid); $result= "
            -
            ".$tiType." > ".$title." ".$userinfo." ".$thisDelete.": ".$reCount." (".date("G:i, d.m.Y",$r['time']).")
            ".$func."
            +
            ".$tiType." > ".$title." от ".$userinfo." ".$thisDelete."Сообщений: ".$reCount." (".date("G:i, d.m.Y",$r['time']).")
            ".$func."
            ".$text."
            "; @@ -346,7 +346,7 @@ if($data OR $u->info['admin']>0){ // if moder or admin $data = bug_moder($user['align']); $checkPost = bug_classPost($user['admin'],$u->info['id'], $data, $s['readUser'], $s['readAdmin'], $s['readModer'], $s['up']); - $result.= "
            ".$userinfo." (".date("G:i, d.m.Y",$s['time']).")
            ".$s['text']."
            "; + $result.= "
            Ответ от ".$userinfo." (".date("G:i, d.m.Y",$s['time']).")
            ".$s['text']."
            "; if($s['uid']!=$u->info['id']){ bug_upView($s['id']); @@ -373,11 +373,11 @@ if($data OR $u->info['admin']>0){ // if moder or admin $total = intval(($posts - 1) / $num) + 1; $filter=bug_filter_area($u->info['admin'], $total); - // - $page.= '

            '; + // Отображение списка записей пользователя + $page.= '

            ВАШИ СООБЩЕНИЯ

            '; while ($r = mysql_fetch_array($bugs)) { - // , [$text] - if(strlen($r['title'])>=1){ $title="".$r['title'].""; } else { $title=""; } + // Сокращение содержимого текста, возвращает[$text] + if(strlen($r['title'])>=1){ $title="«".$r['title']."»"; } else { $title="«Отсутствует»"; } if(strlen($r['text'])>=47 && empty($_GET['post'])){$text=substr($r['text'], 0, 47)."...";} else {$text=$r['text'];} $author = $r['uid']; @@ -389,19 +389,19 @@ if($data OR $u->info['admin']>0){ // if moder or admin $checkPost = bug_classPost($user['admin'],$u->info['id'], $data, $r['readUser'], $r['readAdmin'], $r['readModer'], $r['up']); $func=""; - $func.=""; // - - $func.=""; // - - $func.=""; // + $func.=""; // Отметить - Я прочитал + $func.=""; // Вернуть отметку - Я не прочел + $func.=""; // Закрыть мою тему - if($r['delete']==1){$thisDelete="   |  ";} else {$thisDelete="";} + if($r['delete']==1){$thisDelete="Тема закрыта   |  ";} else {$thisDelete="";} $bug_sid = mysql_query("SELECT * FROM `bags` WHERE `sid`=".$r['id']." ORDER BY time ASC"); $reCount=mysql_num_rows($bug_sid); - $result= "
            ".$tiType." > ".$title." ".$thisDelete." : ".$reCount." (".date("G:i, d.m.Y",$r['time']).")
            ".$func."
            ".$text."
            "; + $result= "
            ".$tiType." > ".$title." ".$thisDelete." Ответов в теме: ".$reCount." (".date("G:i, d.m.Y",$r['time']).")
            ".$func."
            ".$text."
            "; if(isset($_GET['post'])){ if($r['delete']==1){ if ($_GET['action']=='delete' OR empty($_GET['action'])){ - $formcreate='

            '; + $formcreate='

            Тема закрыта

            '; }elseif($_GET['action']=='edit') { $formcreate=''; } @@ -414,11 +414,11 @@ if($data OR $u->info['admin']>0){ // if moder or admin $data = bug_moder($user['align']); $checkPost = bug_classPost($user['admin'],$u->info['id'], $data, $s['readUser'], $s['readAdmin'], $s['readModer'], $s['up']); - $result.= "
            ".$userinfo." (".date("G:i, d.m.Y",$s['time']).")
            ".$text."
            "; + $result.= "
            Ответ от ".$userinfo." (".date("G:i, d.m.Y",$s['time']).")
            ".$text."
            "; /*if($s['uid']!=$u->info['id']){ - // , + // Если сообщение не мое, отмечаем как прочитанное $query = "UPDATE `bags` SET readUser='0' WHERE id='".$s['id']."'"; - $q = mysql_query($query) or die (" : ".mysql_error ()); + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); }*/ } } @@ -427,29 +427,29 @@ if($data OR $u->info['admin']>0){ // if moder or admin if(isset($_GET['post'])) break; } - // + // Вывод сообщений пользователя } if($_GET['action']=='create'){ if(isset($u->info['id'])){$id=$u->info['id'];} else { $usLogin = mysql_fetch_array(mysql_query("SELECT `login`,`id` FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['name'])."' LIMIT 1;"));$id=$usLogin['id'];} - $title=htmlspecialchars(mysql_real_escape_string($_POST['title']),NULL,'cp1251'); + $title=htmlspecialchars(mysql_real_escape_string($_POST['title']),NULL); $type=$_POST['type']; $ip=$_SERVER['REMOTE_ADDR']; - $descr=htmlspecialchars(mysql_real_escape_string($_POST['description']),NULL,'cp1251'); + $descr=htmlspecialchars(mysql_real_escape_string($_POST['description']),NULL); if ($u->info['admin']>0) { $readAdmin="0"; $readUser="1"; } else{ $readAdmin="1"; $readUser="0";} if ($data) { $readModer="0"; $readUser="1"; } else { $readModer="1"; $readUser="0"; } -// +// Отмечает предыдущие сообщения как прочитанные $query = "UPDATE `bags` SET readAdmin='0', readModer='0', readUser='0' WHERE sid='".$post."'"; - $q = mysql_query($query) or die (" : ".mysql_error ()); + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); -// - $query = "INSERT INTO `bags` (`uid`, `title`, `sid`, `text`, `type`, `time`, `ip`, `fast`, `readAdmin`, `readModer`, `readUser`) VALUES ('".$id."', '".$title."', '".$_GET['post']."', '".htmlspecialchars($descr,NULL,'cp1251')."', '".$type."', '".time()."', '".$ip."', '0', '".$readAdmin."', '".$readModer."', '".$readUser."');"; - $q = mysql_query($query) or die (" : ".mysql_error ()); +// Добавление новое сообщение + $query = "INSERT INTO `bags` (`uid`, `title`, `sid`, `text`, `type`, `time`, `ip`, `fast`, `readAdmin`, `readModer`, `readUser`) VALUES ('".$id."', '".$title."', '".$_GET['post']."', '".htmlspecialchars($descr,NULL)."', '".$type."', '".time()."', '".$ip."', '0', '".$readAdmin."', '".$readModer."', '".$readUser."');"; + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); -// +// Обновление статуса темы $thead = mysql_fetch_array(mysql_query("SELECT `delete`,`readUser`,`readModer`,`readAdmin`, `uid` FROM `bags` WHERE `id` = '".mysql_real_escape_string($_GET['post'])."' LIMIT 1;")); if($u->info['admin']>0){ $query = "UPDATE `bags` SET `delete`='0', `readUser`=1, `readModer`=0, `readAdmin`=0, `time`='".time()."' WHERE `id`='".$post."';"; @@ -459,46 +459,46 @@ if($_GET['action']=='create'){ $query = "UPDATE `bags` SET `delete`='0', `readUser`=0, `readModer`=1, `readAdmin`=1, `time`='".time()."' WHERE `id`='".$post."';"; } //$query = "UPDATE `bags` SET readUser='1', readAdmin='1', time='".time()."' WHERE id='".$post."'"; - $q = mysql_query($query) or die (" : ".mysql_error ()); + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); - $answer.="
            .
            "; + $answer.="
            Тема успешно создана.
            "; $answer.=''; //redirect to post $answer.=$formcreate; } elseif($_GET['action']=='edit'){ /**/ - $formTitle=' '; - $formButton=' '; + $formTitle='РЕДАКТИРОВАНИЕ ТЕМЫ'; + $formButton='Сохранить изменения'; $postLink='post='.$_GET['post'].'&'; $formcreate='

            '.$formTitle.'

            - '; + '; if(isset($u->info['login'])){$c=strlen($u->info['login']); $formcreate.='';}else{$formcreate.='';} $formcreate.=''; $formcreate.=' - + - + '; $formcreate.=' - + @@ -527,7 +527,7 @@ if($_GET['action']=='create'){ $query = "UPDATE `bags` SET `delete`='".$dlt."', `readUser`=0, `readModer`=0, `readAdmin`=0 WHERE `id`='".$post."';"; } } - $q = mysql_query($query) or die (" : ".mysql_error()); + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error()); $answer.=$formcreate; } elseif($_GET['action']=='update'){ if($u->info['admin']>0){ @@ -537,8 +537,8 @@ if($_GET['action']=='create'){ } else { $query = "UPDATE `bags` SET readUser='1', time='".time()."' WHERE id='".$post."'"; } - $q = mysql_query($query) or die (" : ".mysql_error ()); - $answer.="
            .
            "; + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); + $answer.="
            Прочесть позже.
            "; $answer.=''; } elseif($_GET['action']=='read'){ if($u->info['admin']>0){ @@ -548,7 +548,7 @@ if($_GET['action']=='create'){ } else { $query = "UPDATE `bags` SET readUser='0', time='".time()."' WHERE id='".$post."'"; } - $q = mysql_query($query) or die (" : ".mysql_error ()); + $q = mysql_query($query) or die ("Ошибка при выполнении запроса: ".mysql_error ()); $answer.=$formcreate; } else { $answer.=$formcreate; @@ -559,12 +559,12 @@ if($_GET['action']=='create'){
            info['clan'])."' LIMIT 1;"));?>!
            - - + +
            : Персонаж:
            :Категория:
            :Тема:
            :Текст:
            @@ -576,7 +576,7 @@ if($_GET['action']=='create'){
            -

            +

            Фильтр


            diff --git a/modules_data/_bukmeker.php b/modules_data/_bukmeker.php index c8080bd9..8d797083 100644 --- a/modules_data/_bukmeker.php +++ b/modules_data/_bukmeker.php @@ -27,12 +27,12 @@ $ba = mysql_fetch_array(mysql_query("SELECT * FROM `bank_alh` WHERE `uid` = " . padding: 10px; } -

            +

            Панель Букмекера

            - , info['login'] ?>. - - + Привет, info['login'] ?>. + +
            @@ -41,8 +41,8 @@ if (isset($ba['id'])): ?> @@ -121,17 +121,17 @@ if (!$u->info['bukmeker'] && !$u->info['admin']) { return; } if (!empty($_POST['systemM'])) { - $r = ": {$_POST['sysMes']} [ ]"; + $r = "Внимание: {$_POST['sysMes']} [Букмекерская Контора]"; mysql_query("INSERT INTO `chat` (`new`,`text`,`time`,`type`) VALUES ('1','" . $r . "', unix_timestamp(),'6')"); - echo "
            ."; + echo "
            Системное сообщение отправлено."; } ?>
            -
            diff --git a/modules_data/_changepass.php b/modules_data/_changepass.php index 0964c903..aaf920ee 100644 --- a/modules_data/_changepass.php +++ b/modules_data/_changepass.php @@ -17,18 +17,18 @@ $status = null; if ($_POST['oldpsw2']) { // remove psw2 if (password_verify((int)$_POST['oldpsw2'], $u->info['pass2'])) { $u->info['pass2'] = $password->changeSecond(null)['pass2']; - $status = " .
            "; + $status = "Второй пароль выключен.
            "; } else { - $status = " !
            "; + $status = "Введен не верный второй пароль!
            "; } } if ($_POST['num_count']) { //add psw2 $arr = $password->changeSecond((int)$_POST['num_count']); - $status = " : {$arr['pass2']}.
            - , .. email - . - , !
            - email.
            + $status = "Второй пароль: {$arr['pass2']}.
            + Запомните или запишите, т.к. он не высылается на email и его нельзя как-либо узнать. + Потеряв второй пароль, вы потеряете персонажа!
            + Этот пароль выслан на ваш email.

            "; $u->info['pass2'] = $arr['hash']; } @@ -40,27 +40,27 @@ if ( ) && $u->info['securetime'] > time() ) { - $status = " , email.
            "; + $status = "Должно пройти не менее трех суток между сменой подтверждения, пароля или email.
            "; } else { - if ($_POST['oldpass'] && $_POST['npass'] && $_POST['npass2']) { /*------- --------*/ + if ($_POST['oldpass'] && $_POST['npass'] && $_POST['npass2']) { /*-------Смена пароля--------*/ if (!password_verify($_POST['oldpass'], $u->info['pass'])) { - $status = " .
            "; + $status = "Неверный старый пароль.
            "; } elseif ($_POST['npass'] !== $_POST['npass2']) { - $status = " .
            "; + $status = "Не совпадают новые пароли.
            "; } else { $u->info['pass'] = $password->changeFirst($_POST['oldpass'], $_POST['npass']); - $status = " .
            "; + $status = "Пароль удачно сменен.
            "; } } - if ($_POST['oldpsw'] && $_POST['oldemail'] && $_POST['newemail']) { /*----- e-mail------*/ + if ($_POST['oldpsw'] && $_POST['oldemail'] && $_POST['newemail']) { /*-----Смена e-mail------*/ if (password_verify($_POST['oldpsw'], $u->info['pass'])) { - $status = " .
            "; + $status = "Неверный пароль.
            "; } elseif ($u->info['mail'] !== $_POST['oldemail']) { - $status = " E-Mail.
            "; + $status = "Неверный старый E-Mail.
            "; } else { $u->info['mail'] = $email->change($_POST['oldemail'], $_POST['newemail']); - $status = "Email .
            "; + $status = "Email удачно сменен.
            "; } } } @@ -69,40 +69,40 @@ if (
            -

            +

            Настройки безопасности

            - +
            - , . - , . -
            : + Чем выше уровень вашего персонажа, тем больше к нему внимания со стороны злоумышленников. + Чтобы ваш персонаж небыл подвержен взлому, необходимо соблюдать элементарные меры предосторожности. +
            А именно:
            1. - , , . - , . + Никогда, ни под каким предлогом, никому не говорите свой пароль. + Ни паладинам, ни администрации не нужно знать ваш пароль.
            2. - + Вводите логин и пароль только на титульной странице - , , - , ! - 95% . + Ни на каких других сайтах, которые будут как две капли похожие на наш, + и куда вас зазывают обещая на халяву предметы или еврокредиты, не вводите свой пароль! + Иначе Ваш персонаж с вероятностью 95% будет взломан.
            - - ?. + Настоятельно рекомендуем прочесть заметку + Как обезопасить своего персонажа?.

            - , , - (. ) + Если вы играете из интернет кафе или компьютерного клуба, где шанс быть взломанным очень высокий, + рекомендуем включить второй уровень защиты (см. ниже)

            - + Смена пароля
            -

            - . +

            Доступно

            + кр.
            ) ); if (isset($uba['login'])) { - echo ' : ' . $u->microLogin($uba['id'], 1) . '
            '; + echo 'Переводим кр персонажу: ' . $u->microLogin($uba['id'], 1) . '
            '; } else { - echo ' , .
            '; + echo 'Банковский счет заблокирован, либо не найден.
            '; unset($_POST['buy_cr']); } echo '
            '; if (isset($uba['login'])) { $_POST['buk_cr'] = round($_POST['buk_cr'], 2); if (isset($_POST['buk_cr']) && $_POST['buk_cr'] < 1) { - echo ' : 1 .
            '; + echo 'Минимальная сумма перевода: 1 кр.
            '; unset($_POST['buk_cr']); } elseif ($_POST['buk_cr'] > $ba['cr']) { - echo '
            '; + echo 'Недостаточно средств на счете
            '; unset($_POST['buk_cr']); } if (isset($_POST['buygoodluck'])) { - echo ''; + echo ''; $ba['cr'] -= $_POST['buk_cr']; $ba['USD'] += round($_POST['buk_cr'] * $ucur, 2); mysql_query( @@ -91,14 +91,14 @@ if (isset($ba['id'])): ?> $money = round($money / 100 * (100 - $ba['procent']), 2); } else { - echo ' .:'; + echo 'Сумма кр.:'; if (!isset($_POST['buk_cr'])) { - echo '              
            '; + echo '              
            '; } else { echo ' ' . round( (int)$_POST['buk_cr'], 2 - ) . ' .'; - echo '   '; + ) . ' кр.'; + echo '   '; } } } @@ -106,9 +106,9 @@ if (isset($ba['id'])): ?> if (isset($_POST['buy_cr'])) { ?> : Перевести кр персонажу:
            @@ -140,11 +140,11 @@ if (
            - email + Смена email
            - : + Старый пароль:
            - : + Новый пароль:
            - ( ): + Новый пароль (еще раз):
            - +
            - : + Ваш игровой пароль:
            - email: + Прежний email:
            - email: + Новый email:
            - +
            - - .
            - , , - , - .
            - , " ", , - . , , - - ( ) - , (" " ).
            - ! email , !
            + Второй уровень защиты + Настоятельно рекомендуем включить второй уровень защиты.
            + На компьютере может быть установлен клавиатурный шпион, который записывает все нажатия клавиш, таким + образом, + могут узнать ваш пароль.
            + Возможно, в сети компьютеров установлен "сетевой снифер", перехватывающий все интернет пакеты, который легко + покажет все пароли. Чтобы обезопасить себя, вы можете установить своему персонажу второй пароль, который + можно + вводить при помощи мышки (клавиатурным шпионом не перехватить) и который передается на игровой сервер в + зашифрованном виде, не поддающимся расшифровке ("сетевой снифер" не сможет перехватить его).
            + Будьте внимательны! Второй пароль отправляется на email один раз,при установке второго уровня защиты!
            info['pass2'])) { - echo "
            .

            - - "; + echo "
            Второй пароль установлен.

            + Введите второй пароль + "; } else { ?> - :
            + Длина пароля:
            - +
            info['align']) == floor($inf['align']) || $u->info['admin'] > 0)) { mysql_query('UPDATE `users` SET `mod_zvanie` = "'.mysql_real_escape_string($_POST['loginos2']).'" WHERE `id` = "'.$inf['id'].'" LIMIT 1'); }else{ - echo ' ...'; + echo 'Нельзя изменить звание данному персонажу...'; } } } @@ -60,7 +60,7 @@ if(d!=undefined) { -document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; +document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; document.getElementById('moddata').innerHTML = dat; @@ -101,22 +101,22 @@ d.style.display = 'none';

            info['align'])==1) { - echo ' '; + echo 'Орден Света'; }else{ - echo ''; + echo 'Армада'; } ?>

            -
            +
            diff --git a/modules_data/_clan.php b/modules_data/_clan.php index 77e6d8fe..310a9d74 100644 --- a/modules_data/_clan.php +++ b/modules_data/_clan.php @@ -9,30 +9,30 @@ $res = mysql_fetch_array( $cpr = explode('|', $u->info['clan_prava']); if (!isset($res['id'])) { - die(' .'); + die('Клан был расформирован.'); } if (!isset($_GET['events']) && !isset($_GET['diplom']) && !isset($_GET['control']) && !isset($_GET['deposit']) && !isset($_GET['titul']) && !isset($_GET['rules']) && !isset($_GET['info']) && !isset($_GET['members'])) { $_GET['events'] = 1; } -// +//Возможности текущего титула $tt = [ - 0 => ['000000000', ' '], - 1 => [0, ' '], - 2 => [0, ' '], - 3 => [0, ' '], - 4 => [0, ' '], - 5 => [0, ' '], - 6 => [0, ' , '], - 7 => [0, ' '], - 8 => [0, ' '], - 9 => [0, ' '], - 10 => [0, ' '], - 11 => [0, ' '], - 12 => [0, ' '], - 13 => [0, ' '], - 14 => [0, ' '], + 0 => ['000000000', 'Доступные каналы'], + 1 => [0, 'Просмотр событий клана'], + 2 => [0, 'Создание событий клана'], + 3 => [0, 'Просмотр хранилища'], + 4 => [0, 'Использование вещей из хранилища'], + 5 => [0, 'Изъятие предметов из хранилища'], + 6 => [0, 'Просмотр казны и списка игроков, пополнявших казну'], + 7 => [0, 'Пополнение казны и доступ к абилкам'], + 8 => [0, 'Использование казны'], + 9 => [0, 'Прием в клан'], + 10 => [0, 'Изгнание из клана'], + 11 => [0, 'Редактирование информации о клане'], + 12 => [0, 'Клановые союзы и альянсы'], + 13 => [0, 'Управление клановыми союзами и альянсами'], + 14 => [0, 'Обьявление войны'], 15 => [0, 0], 15 => [0, 0], 16 => [0, 0], @@ -65,7 +65,7 @@ if (isset($utitl['id'])) { $u->info['tt'] = $tt; -// +//Уровень клана $lvl_exp = [ 0 => 0, 1 => 500000, @@ -89,7 +89,7 @@ if ($res['exp'] >= $lvl_exp[$res['level'] + 1]) { 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( "' . $res['id'] . '","' . time() . '","' . date( 'd.m.Y' - ) . '","0","127.0.0.1",""," "," ' . $res['level'] . '!" + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","Ваш клан достиг уровня ' . $res['level'] . '!" )' ); } @@ -99,8 +99,8 @@ $r1 = mysql_fetch_array( 'dmY' ) . '" LIMIT 1' ) -); // -// +); // читаем позицию клана +//Права клана $lvl_prava = [ 0 => [8, 0, 0, 0, 0, 50, 20, 200], 1 => [12, 1, 0, 0, 0, 50, 20, 200], @@ -389,7 +389,7 @@ $lvl_prava = [ function openMod(title, dat) { var d = document.getElementById('useMagic'); if (d != undefined) { - document.getElementById('modtitle').innerHTML = '
            info['align'] == '1.99' || $u->info['admin']>0) { ?>
            - :
            -:  
            -: +Редактирование звания:
            +Логин:  
            +Звание:
            - +
            @@ -131,7 +131,7 @@ if(floor($u->info['align'])==1) { $ckln = 'tarmans'; } ?> -

            +

            Приватно Соклановцы

            @@ -167,7 +167,7 @@ while($data = mysql_fetch_array($res1)) {
            @@ -140,9 +140,9 @@ $res1 = mysql_query("SELECT `login`,`id`,`align`,`level`,`mod_zvanie`,`online`,` while($data = mysql_fetch_array($res1)) { if ($data['online']>time()-120) { echo ' - '.$data['login'].' ['.$data['level'].']'; + '.$data['login'].' ['.$data['level'].']'; if ($data['clan_prava'] == 'glava') { - echo ' - '; + echo ' - Глава клана'; } else { echo ' - ',$data['mod_zvanie'],''; } @@ -150,15 +150,15 @@ while($data = mysql_fetch_array($res1)) { } elseif ($data['online'] - '.$data['login'].' ['.$data['level'].']'; + '.$data['login'].' ['.$data['level'].']'; if ($data['clan_prava'] == 'glava') { - echo ' - '; + echo ' - Глава клана'; } else { echo ' - ',$data['mod_zvanie'],''; } echo '
            '; } -//echo ''.$data['login'].' ['.$data['level'].'] - '.$data['mod_zvanie'].'
            '; +//echo ''.$data['login'].' ['.$data['level'].'] - '.$data['mod_zvanie'].'
            '; } ?>
            -( ) +(список обновляется в полночь каждый раз)

            ' + title + '
            '; + document.getElementById('modtitle').innerHTML = '
            ' + title + '
            '; document.getElementById('moddata').innerHTML = dat; d.style.display = ''; } @@ -406,13 +406,13 @@ $lvl_prava = [ } function addNewEvent() { - openMod(' ', - '
            :

            '); + openMod('Добавить событие', + '
            Заголовок:

            '); } function addNewTitul() { - openMod(' ', - '
            :
            ( 30- )
            '); + openMod('Добавить титул', + '
            Название титула:
            (не более 30-ти символов)
            '); } @@ -422,19 +422,19 @@ $lvl_prava = [
            - - + info['clan_prava'] != 'glava') { if (isset($_GET['clan_exit']) && $u->newAct($_GET['sd4']) == true) { if ($u->info['money'] >= 50) { - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] . (50 .)'; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] покинул клан. (50 кр.)'; mysql_query( 'INSERT INTO `clan_news` (`clan`, `time`, `ddmmyyyy`, `uid`, `ip`, `login`, `title`, `text`) VALUES ("' . $res['id'] . '", "' . time( ) . '", "' . date( 'd.m.Y' - ) . '", "0", "127.0.0.1", "", " ", "' . mysql_real_escape_string( + ) . '", "0", "127.0.0.1", "Администрация", "Клановое сообщение", "' . mysql_real_escape_string( $txt ) . '")' ); @@ -450,11 +450,11 @@ if ($u->info['clan_prava'] != 'glava') { } $ar = $u->rem_itm_cl($u->info, $res['id'], 7); } else { - echo ''; + echo ''; } } ?> -
            @@ -464,23 +464,23 @@ if ($u->info['clan_prava'] != 'glava') { src="https://img.new-combats.com/i/align/align.gif" style="position:absolute;top:23px;left:40px;"/>
            -
            @@ -490,13 +490,13 @@ if ($u->info['clan_prava'] != 'glava') {
            - + События info['clan_prava'] != 'glava') { ) ); if (isset($lmsg['id'])) { - $c_r .= ' 10
            '; + $c_r .= 'Нельзя добавлять сообщения чаще одного раза в 10 секунд
            '; } else { - $tadd = htmlspecialchars($_POST['textadd'], null, 'cp1251'); - $ttadd = htmlspecialchars($_POST['titleadd'], null, 'cp1251'); + $tadd = htmlspecialchars($_POST['textadd'], null); + $ttadd = htmlspecialchars($_POST['titleadd'], null); if (str_replace(' ', '', str_replace(' ', '', $tadd)) == '') { - $c_r .= '
            '; + $c_r .= 'Нельзя отправлять пустое событие
            '; } elseif (str_replace(' ', '', str_replace(' ', '', $ttadd)) == '') { - $c_r .= '
            '; + $c_r .= 'Нельзя отправлять пустой заголовок
            '; } else { $tadd = str_replace("\n", '
            ', $tadd); mysql_query( @@ -576,7 +576,7 @@ if ($u->info['clan_prava'] != 'glava') { ) . '","' . mysql_real_escape_string($tadd) . '" )' ); - $c_r .= '
            '; + $c_r .= 'Событие было успешно добавлено
            '; } } } elseif (isset($_GET['delete']) && $tt[2][0] == 1) { @@ -586,9 +586,9 @@ if ($u->info['clan_prava'] != 'glava') { ) . '" LIMIT 1' ); if ($upd) { - $c_r .= '
            '; + $c_r .= 'Событие было успешно удалено
            '; } else { - $c_r .= '
            '; + $c_r .= 'Событие не найдено
            '; } } @@ -618,8 +618,8 @@ if ($u->info['clan_prava'] != 'glava') { $yyr++; $mmr = 1; } - $dds = ['', '', '', '', '', '', '', '']; - $mms = ['', '', '', '', '', '', '', '', '', '', '', '', '']; + $dds = ['', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; + $mms = ['', 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']; $num = 0; $lday = 0; for ($i = 0; $i < 7; $i++) { @@ -662,7 +662,7 @@ if ($u->info['clan_prava'] != 'glava') { $i = 1; $c_c .= '
            '; if ($tt[2][0] > 0) { - $c_c .= '

            '; + $c_c .= '

            '; } $c_c .= '
            <>
            ' . $yy . ' ' . $mms[ceil( $mm @@ -750,7 +750,7 @@ if ($u->info['clan_prava'] != 'glava') { } if ($c_p != '') { - $c_p = ': ' . $c_p; + $c_p = 'Страицы: ' . $c_p; } $sp = mysql_query( @@ -762,7 +762,7 @@ if ($u->info['clan_prava'] != 'glava') { if ($pl['uid'] > 0) { $login = $u->microLogin($pl['uid'], 1); if ($tt[2][0] == 1) { - $pl['text'] = '' . $pl['text']; } @@ -784,7 +784,7 @@ if ($u->info['clan_prava'] != 'glava') { } } if ($c_r == '') { - $c_r .= '







            '; + $c_r .= '







            Событий пока нет или глава клана не предоставил вам к ним доступ
            '; } ?> @@ -808,7 +808,7 @@ if ($u->info['clan_prava'] != 'glava') { $('#sn_zvanie').val($('#slg' + selid).attr('vzvanie')); $('#sn_canals').val($('#slg' + selid).attr('vcanals')); - if ($('#slg' + selid).attr('vtitul') == ' ') { + if ($('#slg' + selid).attr('vtitul') == 'глава клана') { $('#rp_titul').attr({'disabled': 'disabled'}); $('#sn_zvanie').attr({'disabled': 'disabled'}); $('#sn_canals').attr({'disabled': 'disabled'}); @@ -823,18 +823,18 @@ if ($u->info['clan_prava'] != 'glava') {
            - : + Тип управления кланом: ДиктатураДемократия

            '; + echo 'Каналы чата сохранены
            '; $res['canals'] = $_POST['svb_canals']; $rce = explode(); $i = 1; @@ -851,11 +851,11 @@ if ($u->info['clan_prava'] != 'glava') { $mn = round((int)$_POST['svb_give_money'], 2); if ($mn >= 0.01) { if ($res['money1'] < $mn) { - echo '
            '; + echo 'В клане недостаточно средств
            '; } else { $res['money1'] -= $mn; $u->info['money'] += $mn; - echo ' ' . $mn . ' .
            '; + echo 'Вы успешно сняли с казны клана ' . $mn . ' кр.
            '; mysql_query( 'UPDATE `clan` SET `money1` = "' . mysql_real_escape_string( $res['money1'] @@ -878,11 +878,11 @@ if ($u->info['clan_prava'] != 'glava') { $mn = round((int)$_POST['svb_take_money'], 2); if ($mn >= 0.01) { if ($u->info['money'] < $mn) { - echo '
            '; + echo 'У вас недостаточно средств
            '; } else { $res['money1'] += $mn; $u->info['money'] -= $mn; - echo ' ' . $mn . ' .
            '; + echo 'Вы успешно положили в казну клана ' . $mn . ' кр.
            '; mysql_query( 'UPDATE `clan` SET `money1` = "' . mysql_real_escape_string( $res['money1'] @@ -901,8 +901,8 @@ if ($u->info['clan_prava'] != 'glava') { ); } } - } elseif (isset($_POST['invite']) && ($_POST['invite'] == '' || $_POST['invite'] == '' || $_POST['invite'] == '') && $tt[11][0] == 1) { - if ($_POST['invite'] == "" && $tt[10][0] == 1) { + } elseif (isset($_POST['invite']) && ($_POST['invite'] == 'Принять' || $_POST['invite'] == 'Выгнать' || $_POST['invite'] == 'Назначить') && $tt[11][0] == 1) { + if ($_POST['invite'] == "Выгнать" && $tt[10][0] == 1) { $usr = mysql_fetch_array( mysql_query( 'SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string( @@ -912,13 +912,13 @@ if ($u->info['clan_prava'] != 'glava') { ); //$ttus = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "'.$usr['clan_prava'].'" LIMIT 1')); if (!isset($usr['id'])) { - echo '
            '; + echo 'Игрок не найден в клане
            '; } elseif ($tt['prioritet'] >= $utitl['prioritet']) { - echo ' ,
            '; + echo 'Игрок старше вас по званию, либо звания совпадают
            '; } elseif ($u->info['money'] < $c_pr[1]) { - echo ' . (: ' . $c_pr[1] . ' .)
            '; + echo 'У вас не достаточно кр. для исключения игрока из клана (Требуется: ' . $c_pr[1] . ' кр.)
            '; } elseif ($usr['clan_prava'] == 'galva' && $u->info['clan_prava'] != 'glava') { - echo ' ,
            '; + echo 'Игрок старше вас по званию, либо звания совпадают
            '; } else { $ar = $u->rem_itm_cl($usr, $res['id'], 8); mysql_query( @@ -928,19 +928,19 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); - $c_r .= ' "' . $usr['login'] . '" ' . $c_pr[1] . ' .
            '; - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] ' . $usr['login'] . '[' . $usr['level'] . ']'; + $c_r .= 'Игрок "' . $usr['login'] . '" был исключен из клана за ' . $c_pr[1] . ' кр.
            '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] исключил из клана игрока ' . $usr['login'] . '[' . $usr['level'] . ']'; mysql_query( 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( "' . $res['id'] . '","' . time() . '","' . date( 'd.m.Y' - ) . '","0","127.0.0.1",""," ","' . mysql_real_escape_string( + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( $txt ) . '" )' ); } - } elseif ($_POST['invite'] == "" && $u->info['clan_prava'] == 'glava') { + } elseif ($_POST['invite'] == "Назначить" && $u->info['clan_prava'] == 'glava') { $usr = mysql_fetch_array( mysql_query( 'SELECT * FROM `users` WHERE `login` = "' . mysql_real_escape_string( @@ -949,32 +949,32 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (!isset($usr['id'])) { - echo '
            '; + echo 'Игрок не найден в клане
            '; } elseif ($u->info['money'] < $c_pr[2]) { - echo ' . (: ' . $c_pr[2] . ' .)
            '; + echo 'У вас не достаточно кр. для назначения игрока на пост главы клана (Требуется: ' . $c_pr[2] . ' кр.)
            '; } elseif ($usr['clan_prava'] == 'galva') { - echo '
            '; + echo 'Игрок уже является главой клана
            '; } else { mysql_query( - 'UPDATE `users` SET `clan_prava` = "glava", `clan` = "' . $res['id'] . '", `mod_zvanie` = " ", `align` = "' . $res['align'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' + 'UPDATE `users` SET `clan_prava` = "glava", `clan` = "' . $res['id'] . '", `mod_zvanie` = "глава клана", `align` = "' . $res['align'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' ); $u->info['money'] -= $c_pr[2]; mysql_query( - 'UPDATE `users` SET `clan_prava` = "2", `mod_zvanie` = "", `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + 'UPDATE `users` SET `clan_prava` = "2", `mod_zvanie` = "новичок", `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); - $c_r .= ' "' . $usr['login'] . '" ' . $c_pr[0] . ' .
            '; - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] ' . $usr['login'] . '[' . $usr['level'] . '] '; + $c_r .= 'Игрок "' . $usr['login'] . '" был назначен главой клан за ' . $c_pr[0] . ' кр.
            '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] назначил игрока ' . $usr['login'] . '[' . $usr['level'] . '] на должность Главы клана'; mysql_query( 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( "' . $res['id'] . '","' . time() . '","' . date( 'd.m.Y' - ) . '","0","127.0.0.1",""," ","' . mysql_real_escape_string( + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( $txt ) . '" )' ); } - } elseif ($_POST['invite'] == "" && $tt[9][0] == 1) { + } elseif ($_POST['invite'] == "Принять" && $tt[9][0] == 1) { $is_cl = mysql_fetch_row( mysql_query("SELECT COUNT(*) FROM `users` WHERE `clan` = '" . $res['id'] . "'") ); @@ -986,17 +986,17 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (!isset($usr['id'])) { - echo ' ,
            '; + echo 'Подходящий игрок не найден, либо не прошел проверку на чистоту
            '; } elseif ($usr['clan_prava'] == 'galva') { - echo '
            '; + echo 'Игрок уже является главой клана
            '; } elseif ($usr['palpro'] < time()) { - echo '
            '; + echo 'Игрок должен пройти проверку у паладинов
            '; } elseif ($u->info['money'] < $c_pr[0]) { - echo ' . (: ' . $c_pr[0] . ' .)
            '; + echo 'У вас не достаточно кр. для приема игрока в клан (Требуется: ' . $c_pr[0] . ' кр.)
            '; } elseif ($usr['clan'] != '0' || $usr['align'] != '0') { - echo ' ,
            '; + echo 'Персонаж уже находится в клане, либо имеет склонность
            '; } elseif ($is_cl[0] >= $lvl_prava[$res['level']][0]) { - echo ' . .
            '; + echo 'Достигнут лимит приглашений. Повысте уровень клана.
            '; } else { mysql_query( 'UPDATE `users` SET `palpro` = "0",`clan_prava` = "2",`clan` = "' . $res['id'] . '",`mod_zvanie` = "",`align` = "' . $res['align'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' @@ -1005,13 +1005,13 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); - echo ' "' . $usr['login'] . '" ' . $c_pr[0] . ' .
            '; - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] ' . $usr['login'] . '[' . $usr['level'] . ']'; + echo 'Игрок "' . $usr['login'] . '" был принят в клан за ' . $c_pr[0] . ' кр.
            '; + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] принял в клан игрока ' . $usr['login'] . '[' . $usr['level'] . ']'; mysql_query( 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( "' . $res['id'] . '","' . time() . '","' . date( 'd.m.Y' - ) . '","0","127.0.0.1",""," ","' . mysql_real_escape_string( + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( $txt ) . '" )' @@ -1022,31 +1022,31 @@ if ($u->info['clan_prava'] != 'glava') { ?> 0) { ?>
            - - ( .)
            - ( , )
            + (это вам обойдется в кр.)
            + (перед приемом в клан, персонаж должен пройти проверку у паладинов)
            0) { ?>
            - - ( .)
            + + (это вам обойдется в кр.)
            info['clan_prava'] == 'glava') { ?>
            - ( , - )
            + (глава клана вправе сложить с себя полномочия, назначив главой клана другого + персонажа)
            0) { ?>
            - + Редактирование статуса персонажа 0 [rp_titul] => 0 [rp_zvanie] => [rp_canals] => @@ -1066,7 +1066,7 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if ($tt['prioritet'] < $utitl['prioritet']) { - // + //новый титул if ((int)$_POST['rp_titul'] > 0) { $tt_new = mysql_fetch_array( mysql_query( @@ -1080,27 +1080,27 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `users` SET `clan_prava` = "' . $tt_new['id'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' ); - $c_r .= ' "' . $usr['login'] . '" "' . $tt_new['name'] . '"
            '; + $c_r .= 'Игроку "' . $usr['login'] . '" был присвоен титул "' . $tt_new['name'] . '"
            '; if ($tt_new['prioritet'] < $tt['prioritet']) { - // - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] ' . $usr['login'] . '[' . $usr['level'] . '] "' . $tt_new['name'] . '"'; + //понижен + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] понизил титул игроку ' . $usr['login'] . '[' . $usr['level'] . '] до "' . $tt_new['name'] . '"'; } else { - // - $txt = ' ' . $u->info['login'] . '[' . $u->info['level'] . '] "' . $tt_new['name'] . '" ' . $usr['login'] . '[' . $usr['level'] . ']'; + //присвоен + $txt = 'Игрок ' . $u->info['login'] . '[' . $u->info['level'] . '] присвоил титул "' . $tt_new['name'] . '" игроку ' . $usr['login'] . '[' . $usr['level'] . ']'; } mysql_query( 'INSERT INTO `clan_news` (`clan`,`time`,`ddmmyyyy`,`uid`,`ip`,`login`,`title`,`text`) VALUES ( "' . $res['id'] . '","' . time() . '","' . date( 'd.m.Y' - ) . '","0","127.0.0.1",""," ","' . mysql_real_escape_string( + ) . '","0","127.0.0.1","Администрация","Клановое сообщение","' . mysql_real_escape_string( $txt ) . '" )' ); } else { - $c_r .= '
            '; + $c_r .= 'Вы не можете назначать титул старше вашего титула
            '; } } } @@ -1111,25 +1111,25 @@ if ($u->info['clan_prava'] != 'glava') { $_POST['rp_canals'] ) . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' ); - $c_r .= '
            '; + $c_r .= 'Информация успешно сохранена
            '; } else { - $c_r .= ' ,
            '; + $c_r .= 'Игрок старше вас по званию, либо звания совпадают
            '; } } else { - $c_r .= ' ,
            '; + $c_r .= 'Игрок старше вас по званию, либо звания совпадают
            '; } } else { - $c_r .= ' ' . $res['name'] . '
            '; + $c_r .= 'Игрок не состоит в клане ' . $res['name'] . '
            '; } } echo $c_r; ?>
            -
            :
            +
            Логин:
            -
            :
            +
            Титул:
            -
            :
            +
            Присвоить титул:
            -
            +
            Реликты
            -
            :
            +
            Звание в клане:
            -
            :
            +
            Каналы чата:

            - ( . : 1,3,7. - : 1-9) + (Перепешите через запятую номера доступных каналов. Например: 1,3,7. Доступные + каналы: 1-9)
            -
            :
            +
            Каналы чата:

            - ( . : 2,4,8. : + type="text"/>
            + (Перепешите через запятую номера открытых каналов. Например: 2,4,8. Доступные каналы: 1-9)
            @@ -1195,13 +1195,13 @@ if ($u->info['clan_prava'] != 'glava') { 0 && $res['money2'] > 0) { ?>
            - + Заказать изображение
            ! , "".
            '; + echo 'Изображение было успешно загружено на сервер! Воспользоваться им возможно в инвентаре, в разделе "Галерея".
            '; } elseif (isset($_POST['img_load1type'])) { $data = [ 'obraz' => $_FILES['load_image1'], @@ -1215,45 +1215,45 @@ if ($u->info['clan_prava'] != 'glava') { $ers = ''; if ($data['sex'] != 0 && $data['sex'] != 1) { - $ers = '! !'; + $ers = 'Ошибка! Вы не выбрали пол кому будет доступно изображение!'; } elseif ($data['animation'] != 0 && $data['animation'] != 1) { - $ers = '! : , !'; + $ers = 'Ошибка! Вы не выбрали тип изображения: Анимированное, не анимированное!'; } elseif ($data['type'] < 1 || $data['type'] > 18) { - $ers = '! !'; + $ers = 'Ошибка! Вы не выбрали тип слота замещения изображения!'; } $types = [ - 1 => ['', 120, 220, 100], - 2 => [' ()', 120, 40, 15], - 3 => [' ()', 120, 20, 5], - 4 => ['', 60, 60, 25], - 5 => ['', 60, 40, 25], - 6 => [' ', 60, 60, 25], - 7 => [' ', 60, 60, 25], - 8 => ['', 60, 80, 25], - 9 => ['', 60, 40, 25], - 10 => ['', 60, 40, 25], - 11 => ['', 60, 80, 25], - 12 => ['', 60, 40, 25], - 13 => [' 1', 20, 20, 10], - 14 => ['', 60, 20, 25], - 15 => ['', 60, 20, 25], - 16 => [' ', 244, 287, 5], - 17 => [' 2', 20, 20, 10], - 18 => [' 3', 20, 20, 10], + 1 => ['Образ', 120, 220, 100], + 2 => ['Заглушка (снизу)', 120, 40, 15], + 3 => ['Заглушка (сверху)', 120, 20, 5], + 4 => ['Шлем', 60, 60, 25], + 5 => ['Наручи', 60, 40, 25], + 6 => ['Левая рука', 60, 60, 25], + 7 => ['Правая рука', 60, 60, 25], + 8 => ['Броня', 60, 80, 25], + 9 => ['Пояс', 60, 40, 25], + 10 => ['Ботинки', 60, 40, 25], + 11 => ['Поножи', 60, 80, 25], + 12 => ['Перчатки', 60, 40, 25], + 13 => ['Кольца №1', 20, 20, 10], + 14 => ['Кулон', 60, 20, 25], + 15 => ['Серьги', 60, 20, 25], + 16 => ['Заглушка под информацию о персонаже', 244, 287, 5], + 17 => ['Кольцо №2', 20, 20, 10], + 18 => ['Кольцо №3', 20, 20, 10], ]; $data['price'] = $types[$data['type']][3]; if ($data['price'] > $res['money2']) { - $ers = '! - .'; + $ers = 'Ошибка! В казне клана недостаточно Евро-кредитов для приобретения данного изображения.'; } if ($ers != '') { echo '' . $ers . '
            '; } else { - /* */ + /* Сохраняем изображение */ $imgname = md5( rand(0, 1000000000000) . '&' . rand(0, 10000000) . '&' . microtime() ); @@ -1264,7 +1264,7 @@ if ($u->info['clan_prava'] != 'glava') { if ($file = $upload->saveimg()) { $size = getimagesize( "https://new-combats.com/clan_prw/" . htmlspecialchars( - $file[1], null, 'cp1251' + $file[1], null ) ); @@ -1278,7 +1278,7 @@ if ($u->info['clan_prava'] != 'glava') { 'INSERT INTO `reimage` (`login`,`uid`,`time`,`src`,`clan`,`type`,`sex`,`animation`,`w`,`h`,`bag`) VALUES ( "' . $u->info['login'] . '", "' . $u->info['id'] . '","' . time() . '", - "' . mysql_real_escape_string(htmlspecialchars($file[1], null, 'cp1251')) . '", + "' . mysql_real_escape_string(htmlspecialchars($file[1], null)) . '", "' . $u->info['clan'] . '", "' . mysql_real_escape_string($data['type']) . '", "' . mysql_real_escape_string($data['sex']) . '", @@ -1303,56 +1303,56 @@ if ($u->info['clan_prava'] != 'glava') { ?>


            - 350 ! + Размер изображения не должен привышать 350 кб!
            - +
            - ! - , , - - . + Внимание! + Изображения нарушающие правила игры, правила публикации изображения, + либо содержащие элементы оскорбляющие достоинство других людей будут блокироваться без + компенсации денежных средств и без возможности замены изображения на новое.
            0 && $u->info['clan'] == 17 || $u->info['clan'] == 1) { ?>
            - + Заклятия '15 ', 30 => '30 ', 60 => ' ', 180 => ' ', 360 => ' ', 720 => ' ', 1440 => ' ', 4320 => ' ']; + $srok = [15 => '15 минут', 30 => '30 минут', 60 => 'один час', 180 => 'три часа', 360 => 'шесть часов', 720 => 'двенадцать часов', 1440 => 'одни сутки', 4320 => 'трое суток']; if (isset($_GET['usemod'])) { if (isset($_POST['usem1'])) { @@ -1364,32 +1364,32 @@ if ($u->info['clan_prava'] != 'glava') { ?> + title="Заклятие молчания"/>   -
            + title="Телепортация"/>
            - + Казна клана
            - : . 0) { ?>
            -                                 . -
            + Деньги в казне клана: кр. 0) { ?>
            +                                 екр. +
            0) { ?> - : + Забрать из казны:
            0) { ?>
            - : - ( : info['money'] ?>.) + (при себе: info['money'] ?>кр.)
            @@ -1398,12 +1398,12 @@ if ($u->info['clan_prava'] != 'glava') { 0 && $tt[3][0] == 1) { ?>
            - : ( 1.) (услуга стоит 1кр.) - +
            @@ -1423,14 +1423,14 @@ if ($u->info['clan_prava'] != 'glava') { if ($cln['id'] == $res['id']) { $rn = [ - ', :-)
            ', - ' , !
            ', - ' , !
            ']; + 'Остроумно, но здесь так делать нельзя :-)
            ', + 'Это будет очень сложно сделать, Ваши сокланы против!
            ', + 'Не уподобляйтесь большинству, защищайте интересы своего клана!
            ']; echo $rn[rand(0, 2)]; } elseif ($cln['join1'] == $res['join1'] && $res['join1'] > 0) { - echo '
            '; + echo 'Вы состоите в союзе с этим кланом
            '; } elseif ($cln['join2'] == $res['join2'] && $res['join2'] > 0) { - echo '
            '; + echo 'Вы состоите в альянсе с этим кланом
            '; } else { $lwar = mysql_fetch_array( mysql_query( @@ -1446,29 +1446,29 @@ if ($u->info['clan_prava'] != 'glava') { $tpcw = 2; } if (true == true) { - echo '
            '; + echo 'Нельзя обьявить войну прямо сейчас
            '; } elseif ($mkr > $res['money1']) { - echo '
            '; + echo 'В казне клана не достаточно средств
            '; } else { mysql_query( 'UPDATE `clan` SET `money1` = `money1` - ' . $mkr . ' WHERE `id` = "' . $res['id'] . '" LIMIT 1' ); mysql_query( 'INSERT INTO `clan_wars` (`clan1`,`clan2`,`time_start`,`time_finish`,`type`,`text`) VALUES ("' . $res['id'] . '","' . $cln['id'] . '","' . time( - ) . '","' . (time() + 60 * 60 * 24 * 3) . '","' . $tpcw . '","!")' + ) . '","' . (time() + 60 * 60 * 24 * 3) . '","' . $tpcw . '","Война!")' ); mysql_query( 'INSERT INTO `clan_operations` (`clan`,`time`,`type`,`text`,`val`,`uid`) VALUES ("' . $res['id'] . '","' . time( ) . '","4","' . $u->info['login'] . '","clanwar_' . $mkr . '_' . $cln['id'] . '","' . $u->info['id'] . '")' ); - echo ' "' . $cln['name'] . '" ' . $mkr . ' .
            '; + echo 'Вы успешно обьявили войну клану "' . $cln['name'] . '" за ' . $mkr . ' кр.
            '; } } else { - echo '
            '; + echo 'Вы уже ведете войну с данным кланом
            '; } } } else { - echo '
            '; + echo 'Клан с таким названием не найден
            '; } } } @@ -1476,10 +1476,10 @@ if ($u->info['clan_prava'] != 'glava') { ?>

            - + Клановые войны - +
            @@ -1496,17 +1496,17 @@ if ($u->info['clan_prava'] != 'glava') { $cln2 = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $pl['clan2'] . '" LIMIT 1') ); - $ms .= '
            ' . $cln1['name'] . ' ' . $cln2['name'] . '.
            '; + $ms .= '
            Война между кланами ' . $cln1['name'] . ' и ' . $cln2['name'] . '.
            '; if ($pl['text'] != '') { - $ms .= ' : ' . $pl['text'] . '
            '; + $ms .= 'Причина войны: ' . $pl['text'] . '
            '; } - $ms .= ' : ' . date('d.m.Y H:i', $pl['time_start']) . ' - ' . date( + $ms .= 'Время войны: ' . date('d.m.Y H:i', $pl['time_start']) . ' - ' . date( 'd.m.Y H:i', $pl['time_finish'] ) . '
            '; } if ($ms == '') { ?> - . + В данный момент Ваш клан не ведет войн. info['clan_prava'] != 'glava') {
            - + Союзы и альянсы info['clan_prava'] != 'glava') { ) ); if (isset($cnmz['id'])) { - echo '
            '; + echo 'Ваш клан уже подал заявку в данный союз
            '; } elseif ($res['join1'] > 0) { - echo '
            '; + echo 'Ваш клан уже находится в союзе
            '; } else { mysql_query( 'UPDATE `clan` SET `join1` = "' . $cnm['id'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' ); - echo ' "' . $cnm['name'] . '"
            '; + echo 'Вы успешно подали заявку в союз "' . $cnm['name'] . '"
            '; mysql_query( 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("' . $res['id'] . '","' . $cnm['id'] . '","' . time( ) . '","1")' ); } } else { - echo '
            '; + echo 'Альянс или союз с такиим названием не существует
            '; } } else { - // - $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + //вступление в альянс + $nm = htmlspecialchars($_POST['logingo'], null); $cnm = mysql_fetch_array( mysql_query( 'SELECT * FROM `clan_joint` WHERE `name` = "' . mysql_real_escape_string( @@ -1568,34 +1568,34 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (isset($cnmz['id'])) { - echo '
            '; + echo 'Ваш клан уже подал заявку в данный альянс
            '; } elseif ($res['join1'] == 0) { - echo '
            '; + echo 'Для вступления в альянс требуется вступить в союз
            '; } elseif ($res['join2'] > 0) { - echo '
            '; + echo 'Ваш клан уже находится в альянсе
            '; } else { mysql_query( 'UPDATE `clan` SET `join1` = "' . $cnm['id'] . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' ); - echo ' "' . $cnm['name'] . '"
            '; + echo 'Вы успешно подали заявку в альянс "' . $cnm['name'] . '"
            '; mysql_query( 'INSERT INTO `clan_join` (`clan`,`alians`,`time`,`type`) VALUES ("' . $res['id'] . '","' . $cnm['id'] . '","' . time( ) . '","2")' ); } } else { - echo '
            '; + echo 'Альянс или союз с такиим названием не существует
            '; } } } elseif (isset($_GET['newjoint']) && $tt[13][0] == 1) { if ($_GET['newjoint'] == 1) { - // + //союзы if ($res['join1'] > 0) { - echo '
            '; + echo 'Ваш клан уже состоит в союзе
            '; } else { - $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + $nm = htmlspecialchars($_POST['logingo'], null); if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { - echo '
            '; + echo 'Введите название союза
            '; } else { $cnm = mysql_fetch_array( mysql_query( @@ -1620,22 +1620,22 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `clan` SET `join1` = "' . $id . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' ); - echo ' "' . $nm . '"
            '; + echo 'Вы успешно создали союз "' . $nm . '"
            '; } else { - echo '
            '; + echo 'Альянс или союз с такиим названием уже существует
            '; } } } } else { - // + //альянсы if ($res['join1'] == 0) { - echo '
            '; + echo 'Ваш клан должен состоять в союзе
            '; } elseif ($res['join2'] > 0) { - echo '
            '; + echo 'Ваш клан уже состоит в альянсе
            '; } else { - $nm = htmlspecialchars($_POST['logingo'], null, 'cp1251'); + $nm = htmlspecialchars($_POST['logingo'], null); if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { - echo '
            '; + echo 'Введите название альянса
            '; } else { $cnm = mysql_fetch_array( mysql_query( @@ -1660,9 +1660,9 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `clan` SET `join2` = "' . $id . '" WHERE `id` = "' . $res['id'] . '" LIMIT 1' ); - echo ' "' . $nm . '"
            '; + echo 'Вы успешно создали альянс "' . $nm . '"
            '; } else { - echo '
            '; + echo 'Альянс или союз с такиим названием уже существует
            '; } } } @@ -1676,37 +1676,37 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (!isset($zvn['id'])) { - echo '
            '; + echo 'Заявка на вступление не найдена
            '; } else { $rzv = ''; if ($zvn['clan'] == $res['id']) { - // + //отмена присоединения $szu = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') ); if ($szu['type'] == 1) { - $rzv = ' ' . $res['name'] . ' ' . $szu['name'] . '.'; + $rzv = 'Клан ' . $res['name'] . ' отказался от присоединения к союзу ' . $szu['name'] . '.'; } else { - $rzv = ' ' . $res['name'] . ' ' . $szu['name'] . '.'; + $rzv = 'Клан ' . $res['name'] . ' отказался от присоединения к альянсу ' . $szu['name'] . '.'; } } elseif ($zvn['alians'] == $res['join1']) { - // + //отказ в присоединении к союзу $szu = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') ); $zvy = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') ); - $rzv = ' ' . $szu['name'] . ' ' . $zvy['name'] . ' .'; + $rzv = 'Союз ' . $szu['name'] . ' отказал клану ' . $zvy['name'] . ' в присоединении.'; } elseif ($zvn['alians'] == $res['join2']) { - // + //отказ в присоединении к альянсу $szu = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') ); $zvy = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') ); - $rzv = ' ' . $szu['name'] . ' ' . $zvy['name'] . ' .'; + $rzv = 'Альянс ' . $szu['name'] . ' отказал клану ' . $zvy['name'] . ' в присоединении.'; } if ($rzv != '') { echo '' . $rzv . '
            '; @@ -1724,18 +1724,18 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (!isset($zvn['id'])) { - echo '
            '; + echo 'Заявка на вступление не найдена
            '; } else { $rzv = ''; if ($zvn['alians'] == $res['join1']) { - // + //присоединение к союзу $szu = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') ); $zvy = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') ); - $rzv = ' ' . $szu['name'] . ' ' . $zvy['name'] . '.'; + $rzv = 'Союз ' . $szu['name'] . ' принял клан ' . $zvy['name'] . '.'; mysql_query( 'UPDATE `clan_join` SET `time_end` = "' . time( ) . '" WHERE `id` != "' . $zvn['id'] . '" AND `clan` = "' . $szu['clan'] . '" AND `type` = "1"' @@ -1745,14 +1745,14 @@ if ($u->info['clan_prava'] != 'glava') { 'UPDATE `clan` SET `join1` = "' . $zvn['alians'] . '" WHERE `id` = "' . $szu['id'] . '"' ); } elseif ($zvn['alians'] == $res['join2']) { - // + //присоединение к альянсу $szu = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $zvn['alians'] . '" LIMIT 1') ); $zvy = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $zvn['clan'] . '" LIMIT 1') ); - $rzv = ' ' . $szu['name'] . ' ' . $zvy['name'] . '.'; + $rzv = 'Альянс ' . $szu['name'] . ' принял клан ' . $zvy['name'] . '.'; mysql_query( 'UPDATE `clan_join` SET `time_end` = "' . time( ) . '" WHERE `id` != "' . $zvn['id'] . '" AND `clan` = "' . $szu['clan'] . '" AND `type` = "2" AND `time_end` = "0"' @@ -1773,34 +1773,34 @@ if ($u->info['clan_prava'] != 'glava') { } ?> 0) { ?> - - + + 0) { ?> - - + +

            0) { $j1 = mysql_fetch_array( mysql_query('SELECT * FROM `clan_joint` WHERE `id` = "' . $res['join1'] . '" LIMIT 1') ); if (isset($j1['id'])) { $ms .= '
            '; - $ms .= ' ' . $j1['name'] . '.'; + $ms .= 'Вы состоите в клановом союзе ' . $j1['name'] . '.'; if ($j1['clan_glava'] != $res['id']) { - $ms .= ' '; + $ms .= ' '; } - $ms .= '
            : '; + $ms .= '
            Состав союза: '; //$ms .= ''.$res['name'].''; $i = 0; if (isset($_GET['delclanme'])) { @@ -1818,14 +1818,14 @@ if ($u->info['clan_prava'] != 'glava') { 'UPDATE `clan_join` SET `time_end` = "' . time( ) . '" WHERE `id` = "' . $dels['id'] . '" LIMIT 1' ); - echo '
            "' . $j1['name'] . '"
            '; + echo '
            Вы успешно покинули союз "' . $j1['name'] . '"
            '; header('location: main.php?clan&diplom'); } else { - echo '
            '; + echo '
            Ваш клан не состоит в данном союзе
            '; } } else { - echo '
            '; + echo '
            Вы не можете покинуть данный союз
            '; } } elseif ($j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0)) { if (isset($_GET['delclan'])) { @@ -1851,13 +1851,13 @@ if ($u->info['clan_prava'] != 'glava') { 'UPDATE `clan_join` SET `time_end` = "' . time( ) . '" WHERE `id` = "' . $dels['id'] . '" LIMIT 1' ); - echo '
            "' . $delc['name'] . '"
            '; + echo '
            Клан "' . $delc['name'] . '" был исключен из данного союза
            '; header('location: main.php?clan&diplom'); } else { - echo '
            '; + echo '
            Клан ответственный за союз не может покинуть данный союз
            '; } } else { - echo '
            '; + echo '
            Клан не состоит в данном союзе
            '; } } } @@ -1872,24 +1872,24 @@ if ($u->info['clan_prava'] != 'glava') { if ($j1['clan_glava'] == $res['id']) { if ($res['id'] != $pl1['clan']) { if ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0) { - $ms .= ' '; + $ms .= ' '; } } } $i++; } if ($j1['clan_glava'] == $res['id'] && ($u->info['clan_prava'] == 'glava' || $u->info['admin'] > 0)) { - $ms .= '
            , :
            '; - $cnls = ''; - //$ms .= '
            '.$res['name'].'   '.$cnls.'  
            '; + $ms .= '
            Вы основатель союза, можете ограничить каналы союза чата:
            '; + $cnls = 'выключено'; + //$ms .= '
            '.$res['name'].'   '.$cnls.'  
            '; $sp1 = mysql_query( 'SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "' . $j1['id'] . '" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0' ); while ($pl1 = mysql_fetch_array($sp1)) { - $ms .= '
            ' . $pl1['name'] . '   ' . $cnls . '  
            '; + $ms .= '
            ' . $pl1['name'] . '   ' . $cnls . '  
            '; } } - // + //Перечисляем открытые каналы клана $ms .= '
            '; } @@ -1900,7 +1900,7 @@ if ($u->info['clan_prava'] != 'glava') { ); if (isset($j1['id'])) { $ms .= '
            '; - $ms .= ' ' . $j1['name'] . '. : '; + $ms .= 'Вы состоите в клановом альянсе ' . $j1['name'] . '. Состав альянса: '; //$ms .= ''.$res['name'].''; $sp1 = mysql_query( 'SELECT `u`.*,`s`.* FROM `clan_join` AS `u` LEFT JOIN `clan` AS `s` ON `s`.`id` = `u`.`clan` WHERE `u`.`alians` = "' . $j1['id'] . '" AND `u`.`time_end` = "0" AND `u`.`time_start` > 0' @@ -1913,30 +1913,30 @@ if ($u->info['clan_prava'] != 'glava') { $ms .= '' . $pl1['name'] . ''; $i++; } - $ms .= '
            .
            '; + $ms .= '
            Вы основатель альянса.
            '; $ms .= '
            '; } } - // + //Союзы и альянсы в которых состоит клан if ($ms == '') { ?> -
            .
            +
            В данный момент у вашего клана нет дипломатических отношений.

            -
            +
            Заявки на союзы

            - + Ваши заявки на установление союза

            info['clan_prava'] != 'glava') { 'SELECT * FROM `clan_joint` WHERE `id` = "' . $pl['alians'] . '" LIMIT 1' ) ); - $ms .= '
            ' . $suz['name'] . '.
            : ' . date( + $ms .= '
            Вы подали заявку на вступление в союз ' . $suz['name'] . '.
            Время подачи заявки: ' . date( 'd.m.Y H:i', $pl['time'] - ) . '

            '; + ) . '
            Отменить
            '; } if ($ms == '') { ?> - + С Вами никто не подавал заявки @@ -1966,7 +1966,7 @@ if ($u->info['clan_prava'] != 'glava') {
            - + Заявки на установление союза с вами

            info['clan_prava'] != 'glava') { $clz = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1') ); - $ms .= '
            ' . $clz['name'] . ' ' . $suz['name'] . '.
            : ' . date( + $ms .= '
            Клан ' . $clz['name'] . ' подал заявку на вступление в Ваш союз ' . $suz['name'] . '.
            Время подачи заявки: ' . date( 'd.m.Y H:i', $pl['time'] - ) . '
             

            '; + ) . '

            '; } if ($ms == '') { ?> - + С Вами никто не подавал заявки @@ -2000,13 +2000,13 @@ if ($u->info['clan_prava'] != 'glava') {

            -
            +
            Заявки на альянсы

            @@ -2187,28 +2187,28 @@ if ($u->info['clan_prava'] != 'glava') {
            = 20) { - echo ' 25- ,
            '; + echo 'Нельзя добавлять более 25-ти титулов, для добавления нового сотрите старые
            '; } else { - $nm = htmlspecialchars($_POST['tituladd'], null, 'cp1251'); + $nm = htmlspecialchars($_POST['tituladd'], null); if (str_replace(' ', '', str_replace(' ', '', $nm)) == '') { - echo '
            '; + echo 'Название титула не должно быть пустым
            '; } else { mysql_query( 'INSERT INTO `clan_tituls` (`clan`,`user_add`,`time_add`,`name`) VALUES ("' . $res['id'] . '","' . $u->info['id'] . '","' . time( ) . '","' . mysql_real_escape_string($nm) . '")' ); - echo '
            '; + echo 'Титул был успешно добавлен
            '; } } } elseif (isset($_GET['save'])) { - // + //сохраняем титул $tc = mysql_fetch_array( mysql_query( 'SELECT * FROM `clan_tituls` WHERE `clan` = "' . $res['id'] . '" AND `id` = "' . mysql_real_escape_string( @@ -2217,7 +2217,7 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if (isset($tc['id'])) { - $tc['info'] = htmlspecialchars($_POST['t_info'], null, 'cp1251'); + $tc['info'] = htmlspecialchars($_POST['t_info'], null); $i = 1; $tc['canals'] = ''; while ($i <= 9) { @@ -2238,7 +2238,7 @@ if ($u->info['clan_prava'] != 'glava') { } $i++; } - $_POST['colorsp'] = preg_replace('/[^a-z-0-9]/i', '', $_POST['colorsp']); + $_POST['colorsp'] = preg_replace('/[^a-zа-яё0-9]/i', '', $_POST['colorsp']); mysql_query( 'UPDATE `clan_tituls` SET `info` = "' . mysql_real_escape_string( $tc['info'] @@ -2246,9 +2246,9 @@ if ($u->info['clan_prava'] != 'glava') { $_POST['colorsp'] ) . '", `canals` = "' . $tc['canals'] . '", `prava` = "' . $tc['prava'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' ); - echo '
            '; + echo 'Титул был успешно сохранен
            '; } else { - echo '
            '; + echo 'Титул не найден
            '; } } elseif (isset($_GET['delete'])) { $tc = mysql_fetch_array( @@ -2262,15 +2262,15 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query( 'UPDATE `clan_tituls` SET `delete` = "' . $u->info['id'] . '" WHERE `id` = "' . $tc['id'] . '" LIMIT 1' ); - echo '
            '; + echo 'Титул был удален
            '; } else { - echo '
            '; + echo 'Титул не найден
            '; } } ?>
            - + Ваши заявки на установление альянса

            info['clan_prava'] != 'glava') { 'SELECT * FROM `clan_joint` WHERE `id` = "' . $pl['alians'] . '" LIMIT 1' ) ); - $ms .= '
            ' . $suz['name'] . '.
            : ' . date( + $ms .= '
            Вы подали заявку на вступление в альянс ' . $suz['name'] . '.
            Время подачи заявки: ' . date( 'd.m.Y H:i', $pl['time'] - ) . '

            '; + ) . '
            Отменить
            '; } if ($ms == '') { ?> - + С Вами никто не подавал заявки @@ -2036,7 +2036,7 @@ if ($u->info['clan_prava'] != 'glava') {
            - + Заявки на установление альянса с вами

            info['clan_prava'] != 'glava') { $clz = mysql_fetch_array( mysql_query('SELECT * FROM `clan` WHERE `id` = "' . $pl['clan'] . '" LIMIT 1') ); - $ms .= '
            ' . $clz['name'] . ' ' . $suz['name'] . '.
            : ' . date( + $ms .= '
            Клан ' . $clz['name'] . ' подал заявку на вступление в Ваш альянс ' . $suz['name'] . '.
            Время подачи заявки: ' . date( 'd.m.Y H:i', $pl['time'] - ) . '
             

            '; + ) . '

            '; } if ($ms == '') { ?> - + С Вами никто не подавал заявки @@ -2100,7 +2100,7 @@ if ($u->info['clan_prava'] != 'glava') { mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $itm['uid'] . '" LIMIT 1') ); if ($u->testBattle($btlud['battle']) == true) { - echo '
            '; + echo 'Нельзя изымать предметы с персонажа в бою
            '; } else { echo $u->ungive_itm_cl($_GET['ungive_itm'], $u->info, $res['id']); } @@ -2123,7 +2123,7 @@ if ($u->info['clan_prava'] != 'glava') { ) ); if ($itmc >= $lvl_prava[$res['level']][5]) { - echo '
            '; + echo 'Хранилище переполнено
            '; } elseif (isset($itm['id'])) { echo $u->set_cl_item($_GET['give_itm'], $u->info, $res['id']); } @@ -2134,7 +2134,7 @@ if ($u->info['clan_prava'] != 'glava') { '(`iu`.`uid` = "-21' . $u->info['clan'] . '" OR `iu`.`data` LIKE "%toclan=' . $u->info['clan'] . '#%") AND `iu`.`delete` = 0 AND `iu`.`inShop` = 0 ORDER BY `lastUPD` DESC' ); } else { - $itm_clan[2] = '

            '; + $itm_clan[2] = '

            У вас нет доступа к использованию хранилища
            '; } $itm_user = $u->genInv( 65, @@ -2148,26 +2148,26 @@ if ($u->info['clan_prava'] != 'glava') {
            ( : /) + class="legtitle">Хранилище (предметов : /)



            '; + echo '

            Хранилище клана пусто

            '; } ?>
            - + Рюкзак



            '; + echo '

            Рюкзак пуст

            '; } ?>
            @@ -2875,7 +2875,7 @@ if ($u->info['clan_prava'] != 'glava') { onclick="editTitul()" href="javascript:void(0)"> -
            info['clan_prava'] != 'glava') {
            x -
            Редактирование титула

            - :

            - : + Каналы чата: info['clan_prava'] != 'glava') { } ?>
            - : *
            - :       + Картинка: *
            + Цвет:      
             
            #
            - ( - - /)
            + (вы можете воспользовать таблицей + цветов - показать/скрыть)


            - +
            @@ -2939,32 +2939,32 @@ if ($u->info['clan_prava'] != 'glava') { } if ($i == 0) { - echo ' '; + echo 'В клане нет ни одного титула'; } ?> - +
            - "info['login'] ?>" + Права персонажа "info['login'] ?>"
            - : info['clan_prava'] != 'glava') { echo $u->info['moder_zvanie']; } else { - echo ' '; + echo 'глава клана'; } ?>
            - :   -     -  
            - : + Каналы чата: info['clan_prava'] != 'glava') { while ($j < count($tt)) { if ($tt[$j][1] != '0') { if ($utitl['prava'][$j] == 1) { - $utitl['check'] = ''; + $utitl['check'] = 'Да'; } else { - $utitl['check'] = ''; + $utitl['check'] = 'Нет'; } ?>
            @@ -2999,7 +2999,7 @@ if ($u->info['clan_prava'] != 'glava') {
            info['clan_prava'] != 'glava') { ?>
            - : ()
            - : + Уровень клана:
            - : / /
            @@ -3050,18 +3050,18 @@ if ($u->info['clan_prava'] != 'glava') {
            - - + + - + - +
            :• :Статистика кланового опыта:• За сегодня:
             • :• За неделю:
             • :• За месяц:
            @@ -3071,34 +3071,34 @@ if ($u->info['clan_prava'] != 'glava') { - + Уровень - + Игроки - + Союз - + Создать союз - + Альянс - + Создать альянс - + Хранилище - + Передач на игрока - + Передач всего = $i) { @@ -3160,16 +3160,16 @@ if ($u->info['clan_prava'] != 'glava') {
            - + width="20" height="15"> Соклановцы - -
            @@ -3182,7 +3182,7 @@ if ($u->info['clan_prava'] != 'glava') { $i = 0; if ($res['join1'] > 0 || $res['join2'] > 0) { $r .= '
            - '; + Основной состав'; } while ($pl = mysql_fetch_array($sp)) { if (!isset($_GET['online']) || $pl['online'] > time() - 120) { @@ -3205,10 +3205,10 @@ if ($u->info['clan_prava'] != 'glava') { $zvn = str_replace('=]', '">', $zvn); $zvn = str_replace('[/c]', '', $zvn); if ($pl['clan_prava'] == 'glava') { - if ($zvn == '' || $zvn == '') { - $zvn = ' '; + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; } - $zvn = '' . $zvn; + $zvn = '' . $zvn; } $ttl = mysql_fetch_array( mysql_query( @@ -3228,12 +3228,12 @@ if ($u->info['clan_prava'] != 'glava') { $zvn .= ' - ' . $rm['name'] . ''; } } else { - $zvn .= ' - '; + $zvn .= ' - персонаж сейчас не в клубе'; } if ($pl['battle'] > 0) { - $zvn .= ' '; + $zvn .= ' '; } - $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; + $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; } $i++; } @@ -3261,7 +3261,7 @@ if ($u->info['clan_prava'] != 'glava') { 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' ); $r .= '
            - "' . $clna['name'] . '"'; + Состав "' . $clna['name'] . '"'; $j = 0; $i = 0; while ($pl = mysql_fetch_array($sp)) { @@ -3285,10 +3285,10 @@ if ($u->info['clan_prava'] != 'glava') { $zvn = str_replace('=]', '">', $zvn); $zvn = str_replace('[/c]', '', $zvn); if ($pl['clan_prava'] == 'glava') { - if ($zvn == '' || $zvn == '') { - $zvn = ' '; + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; } - $zvn = '' . $zvn; + $zvn = '' . $zvn; } $ttl = mysql_fetch_array( mysql_query( @@ -3308,12 +3308,12 @@ if ($u->info['clan_prava'] != 'glava') { $zvn .= ' - ' . $rm['name'] . ''; } } else { - $zvn .= ' - '; + $zvn .= ' - персонаж сейчас не в клубе'; } if ($pl['battle'] > 0) { - $zvn .= ' '; + $zvn .= ' '; } - $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; + $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; } $i++; } @@ -3342,7 +3342,7 @@ if ($u->info['clan_prava'] != 'glava') { 'SELECT `id`,`battle`,`login`,`clan`,`level`,`room`,`cityreg`,`align`,`clan_prava`,`mod_zvanie`,`sex`,`city`,`online`,`banned` FROM `users` WHERE `clan` = "' . $cn_pl['clan'] . '"' ); $r .= '
            - "' . $clna['name'] . '"'; + Состав "' . $clna['name'] . '"'; $j = 0; $i = 0; while ($pl = mysql_fetch_array($sp)) { @@ -3366,10 +3366,10 @@ if ($u->info['clan_prava'] != 'glava') { $zvn = str_replace('=]', '">', $zvn); $zvn = str_replace('[/c]', '', $zvn); if ($pl['clan_prava'] == 'glava') { - if ($zvn == '' || $zvn == '') { - $zvn = ' '; + if ($zvn == 'Стажер' || $zvn == '') { + $zvn = 'глава клана'; } - $zvn = '' . $zvn; + $zvn = '' . $zvn; } $ttl = mysql_fetch_array( mysql_query( @@ -3389,12 +3389,12 @@ if ($u->info['clan_prava'] != 'glava') { $zvn .= ' - ' . $rm['name'] . ''; } } else { - $zvn .= ' - '; + $zvn .= ' - персонаж сейчас не в клубе'; } if ($pl['battle'] > 0) { - $zvn .= ' '; + $zvn .= ' '; } - $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; + $r .= '
            ' . $ico . '      ' . $pl['login'] . '[' . $pl['level'] . ']' . $zvn . '
            '; } $i++; } @@ -3403,7 +3403,7 @@ if ($u->info['clan_prava'] != 'glava') { } } - $r .= '
            Online: ' . $j . '
            : ' . $i . '
            ( )'; + $r .= '
            Online: ' . $j . '
            Всего: ' . $i . '
            (список обновляется в полночь)'; echo $r; ?>
            diff --git a/modules_data/_cryshop.php b/modules_data/_cryshop.php index 5352203c..4df3a3ae 100644 --- a/modules_data/_cryshop.php +++ b/modules_data/_cryshop.php @@ -23,7 +23,7 @@ if(isset($_GET['cryshop'])) { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -31,9 +31,9 @@ if(isset($_GET['cryshop'])) '; unset($_POST['friendadd'],$_POST['group'],$_POST['comment'],$_POST['sd4']); } @@ -54,22 +54,22 @@ if($st['os5']>0) { $addf = 20+($st['os5']*5); } if($addfr[0]<$addf){ - $canadd = 'onclick=\'findlogin2(" ", "main.php?friends", "friendadd", new Array("",""," ",""), new Array())\''; + $canadd = 'onclick=\'findlogin2("Добавить в список", "main.php?friends", "friendadd", new Array("Друзья","Враги","Не в группе","Игнорирование"), new Array())\''; }else{$canadd = 'disabled';} if($_POST['sd4'] && $_POST['friendadd']){ - $_POST['friendadd']=htmlspecialchars($_POST['friendadd'],NULL,'cp1251'); + $_POST['friendadd']=htmlspecialchars($_POST['friendadd'],NULL); if(/*preg_match("/__/",$_POST['friendadd']) ||*/ preg_match("/--/",$_POST['friendadd'])){ - echo" ."; + echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT `id`,`login` FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['friendadd'])."' LIMIT 1;")); } - $_POST['comment']=htmlspecialchars($_POST['comment'],NULL,'cp1251'); + $_POST['comment']=htmlspecialchars($_POST['comment'],NULL); $frd2 = mysql_fetch_array(mysql_query("SELECT enemy,friend,notinlist,ignor FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."' or `ignor`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); - if(!$frd['id']){echo" .";} - elseif($frd['id']==$u->info['id']){echo" .";} - elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo" .";} + if(!$frd['id']){echo"Персонаж не найден.";} + elseif($frd['id']==$u->info['id']){echo"Себя добавить нельзя.";} + elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo"Введен неверный текст.";} elseif($frd2['enemy'] or $frd2['friend'] or $frd2['notinlist'] or $frd2['ignor']){ - echo" ."; + echo"Персонаж уже есть в вашем списке."; } else{ $lign = ''; @@ -79,7 +79,7 @@ if($_POST['sd4'] && $_POST['friendadd']){ elseif($_POST['group']==3){$notinlist=0; $friend=0; $enemy=0; $ignor = $frd['id']; $lign = $frd['login']; $uign = $u->info['login']; } else{$notinlist=$frd['id']; $friend=0; $enemy=0; $ignor = 0;} mysql_query("INSERT INTO `friends` (`user`, `friend`, `enemy`, `notinlist`, `comment`,`ignor`,`login_ignor`,`user_ignor`) VALUES(".mysql_real_escape_string($u->info['id']).", ".mysql_real_escape_string($friend).", ".mysql_real_escape_string($enemy).", ".mysql_real_escape_string($notinlist).", '".mysql_real_escape_string($_POST['comment'])."', '".mysql_real_escape_string($ignor)."','".$lign."','".$uign."');"); - echo" ".$_POST['friendadd']." ."; + echo"Персонаж ".$_POST['friendadd']." добавлен."; if( $ignor > 0 ) { echo ''; } @@ -87,22 +87,22 @@ if($_POST['sd4'] && $_POST['friendadd']){ } if($_GET['friendremove']){ - $_GET['friendremove']=htmlspecialchars($_GET['friendremove'],NULL,'cp1251'); + $_GET['friendremove']=htmlspecialchars($_GET['friendremove'],NULL); if(preg_match("/__/",$_GET['friendremove']) || preg_match("/--/",$_GET['friendremove'])){ - echo" ."; + echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT id FROM `users` WHERE `login` = '".mysql_real_escape_string($_GET['friendremove'])."' LIMIT 1;")); } - if(!$frd['id']){echo" .";} + if(!$frd['id']){echo"Персонаж не найден.";} else{ $frd2 = mysql_fetch_array(mysql_query("SELECT ignor,enemy,friend,notinlist FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."' or `ignor`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); - if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['ignor'] && !$frd2['notinlist']){echo" ."; + if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['ignor'] && !$frd2['notinlist']){echo"Персонаж не найден в вашем списке."; }else{ if($frd2['friend']>0){$per="`friend`='".$frd2['friend']."'";} if($frd2['enemy']>0){$per="`enemy`='".$frd2['enemy']."'";} if($frd2['notinlist']>0){$per="`notinlist`='".$frd2['notinlist']."'";} if($frd2['ignor']>0){$per="`ignor`='".$frd2['ignor']."'";} - if(mysql_query("DELETE FROM `friends` WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and ".$per.";")){echo" ".$_GET['friendremove']." .";echo '';} + if(mysql_query("DELETE FROM `friends` WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and ".$per.";")){echo"Данные контакта ".$_GET['friendremove']." успешно удалены.";echo '';} } } } @@ -110,23 +110,23 @@ if($_GET['friendremove']){ if($_POST['friendedit']){ - $_POST['friendedit']=htmlspecialchars($_POST['friendedit'],NULL,'cp1251'); + $_POST['friendedit']=htmlspecialchars($_POST['friendedit'],NULL); if(preg_match("/__/",$_POST['friendedit']) || preg_match("/--/",$_POST['friendedit'])){ - echo" ."; + echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT id FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['friendedit'])."' LIMIT 1;")); } - $_POST['comment']=htmlspecialchars($_POST['comment'],NULL,'cp1251'); - if(!$frd['id']){echo" .";} - elseif($frd['id']==$u->info['id']){echo" .";} - elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo" .";} + $_POST['comment']=htmlspecialchars($_POST['comment'],NULL); + if(!$frd['id']){echo"Персонаж не найден.";} + elseif($frd['id']==$u->info['id']){echo"Себя отредактировать нельзя.";} + elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo"Введен неверный текст.";} else{ if($_POST['group']==0){$notinlist=0; $friend=$frd['id']; $enemy=0; $ignor = 0;} elseif($_POST['group']==1){$notinlist=0; $friend=0; $enemy=$frd['id']; $ignor = 0;} elseif($_POST['group']==3){$notinlist=0; $friend=0; $enemy=0; $ignor = $frd['id'];} else{$notinlist=$frd['id']; $friend=0; $enemy=0; $ignor = 0;} $frd2 = mysql_fetch_array(mysql_query("SELECT ignor,enemy,friend,notinlist FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."' or `ignor`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); - if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['ignor'] && !$frd2['notinlist']){echo" .";} + if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['ignor'] && !$frd2['notinlist']){echo"Персонаж не найден в вашем списке.";} else{ if($frd2['friend']>0){$per="`friend`='".mysql_real_escape_string($frd2['friend'])."'";} if($frd2['enemy']>0){$per="`enemy`='".mysql_real_escape_string($frd2['enemy'])."'";} @@ -134,7 +134,7 @@ if($_POST['friendedit']){ if($frd2['ignor']>0){$per="`ignor`='".$frd2['ignor']."'";} $comment = $_POST['comment']; mysql_query("UPDATE `friends` SET `friend` = '".mysql_real_escape_string($friend)."',`enemy` = '".mysql_real_escape_string($enemy)."',`notinlist` = '".mysql_real_escape_string($notinlist)."',`comment` = '".mysql_real_escape_string($comment)."',`ignor` = '".mysql_real_escape_string($ignor)."' WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and $per"); - echo" ".$_POST['friendedit']." ."; + echo"Данные контакта ".$_POST['friendedit']." успешно изменены."; if( $ignor > 0 ) { echo ''; }else{ @@ -156,17 +156,17 @@ function editcontact(title, script, name, login, flogin, group, groups, subgroup s +='
            diff --git a/modules_data/_friends_.php b/modules_data/_friends_.php index b12412b5..9ef4745c 100644 --- a/modules_data/_friends_.php +++ b/modules_data/_friends_.php @@ -8,41 +8,41 @@ $friend = mysql_fetch_array(mysql_query("SELECT * FROM `friends` WHERE `user` = if($_POST['sd4'] && $_POST['friendadd']){ -$_POST['friendadd']=htmlspecialchars($_POST['friendadd'],NULL,'cp1251'); +$_POST['friendadd']=htmlspecialchars($_POST['friendadd'],NULL); if(preg_match("/__/",$_POST['friendadd']) || preg_match("/--/",$_POST['friendadd'])){ -echo" ."; +echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT `id` FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['friendadd'])."' LIMIT 1;")); } -$_POST['comment']=htmlspecialchars($_POST['comment'],NULL,'cp1251'); +$_POST['comment']=htmlspecialchars($_POST['comment'],NULL); $frd2 = mysql_fetch_array(mysql_query("SELECT enemy,friend,notinlist FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); -if(!$frd['id']){echo" .";} -elseif($frd['id']==$u->info['id']){echo" .";} -elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo" .";} -elseif($frd2['enemy'] or $frd2['friend'] or $frd2['notinlist']){echo" .";} +if(!$frd['id']){echo"Персонаж не найден.";} +elseif($frd['id']==$u->info['id']){echo"Себя добавить нельзя.";} +elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo"Введен неверный текст.";} +elseif($frd2['enemy'] or $frd2['friend'] or $frd2['notinlist']){echo"Персонаж уже есть в вашем списке.";} else{ if($_POST['group']==0){$notinlist=0; $friend=$frd['id']; $enemy=0;} elseif($_POST['group']==1){$notinlist=0; $friend=0; $enemy=$frd['id'];} else{$notinlist=$frd['id']; $friend=0; $enemy=0;} mysql_query("INSERT INTO `friends` (`user`, `friend`, `enemy`, `notinlist`, `comment`) VALUES(".mysql_real_escape_string($u->info['id']).", ".mysql_real_escape_string($friend).", ".mysql_real_escape_string($enemy).", ".mysql_real_escape_string($notinlist).", '".mysql_real_escape_string($_POST['comment'])."');"); -echo" ".$_POST['friendadd']." ."; +echo"Персонаж ".$_POST['friendadd']." добавлен."; } } if($_POST['friendremove']){ -$_POST['friendremove']=htmlspecialchars($_POST['friendremove'],NULL,'cp1251'); +$_POST['friendremove']=htmlspecialchars($_POST['friendremove'],NULL); if(preg_match("/__/",$_POST['friendremove']) || preg_match("/--/",$_POST['friendremove'])){ -echo" ."; +echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT id FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['friendremove'])."' LIMIT 1;")); } -if(!$frd['id']){echo" .";} +if(!$frd['id']){echo"Персонаж не найден.";} else{$frd2 = mysql_fetch_array(mysql_query("SELECT enemy,friend,notinlist FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); -if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['notinlist']){echo" .";}else{ +if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['notinlist']){echo"Персонаж не найден в вашем списке.";}else{ if($frd2['friend']>0){$per="`friend`='".$frd2['friend']."'";} if($frd2['enemy']>0){$per="`enemy`='".$frd2['enemy']."'";} if($frd2['notinlist']>0){$per="`notinlist`='".$frd2['notinlist']."'";} -if(mysql_query("DELETE FROM `friends` WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and ".$per.";")){echo" ".$_POST['friendremove']." .";} +if(mysql_query("DELETE FROM `friends` WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and ".$per.";")){echo"Данные контакта ".$_POST['friendremove']." успешно удалены.";} } @@ -56,29 +56,29 @@ if($_POST['friendedit']){ -$_POST['friendedit']=htmlspecialchars($_POST['friendedit'],NULL,'cp1251'); +$_POST['friendedit']=htmlspecialchars($_POST['friendedit'],NULL); if(preg_match("/__/",$_POST['friendedit']) || preg_match("/--/",$_POST['friendedit'])){ -echo" ."; +echo"Персонаж не найден."; }else{ $frd = mysql_fetch_array(mysql_query("SELECT id FROM `users` WHERE `login` = '".mysql_real_escape_string($_POST['friendedit'])."' LIMIT 1;")); } -$_POST['comment']=htmlspecialchars($_POST['comment'],NULL,'cp1251'); -if(!$frd['id']){echo" .";} -elseif($frd['id']==$u->info['id']){echo" .";} -elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo" .";} +$_POST['comment']=htmlspecialchars($_POST['comment'],NULL); +if(!$frd['id']){echo"Персонаж не найден.";} +elseif($frd['id']==$u->info['id']){echo"Себя отредактировать нельзя.";} +elseif(preg_match("/__/",$_POST['comment']) || preg_match("/--/",$_POST['comment'])){echo"Введен неверный текст.";} else{ if($_POST['group']==0){$notinlist=0; $friend=$frd['id']; $enemy=0;} elseif($_POST['group']==1){$notinlist=0; $friend=0; $enemy=$frd['id'];} else{$notinlist=$frd['id']; $friend=0; $enemy=0;} $frd2 = mysql_fetch_array(mysql_query("SELECT enemy,friend,notinlist FROM `friends` WHERE `user` = '".mysql_real_escape_string($u->info['id'])."' and (`friend`='".mysql_real_escape_string($frd['id'])."' or `enemy`='".mysql_real_escape_string($frd['id'])."' or `notinlist`='".mysql_real_escape_string($frd['id'])."') LIMIT 1;")); -if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['notinlist']){echo" .";}else{ +if(!$frd2['enemy'] && !$frd2['friend'] && !$frd2['notinlist']){echo"Персонаж не найден в вашем списке.";}else{ if($frd2['friend']>0){$per="`friend`='".mysql_real_escape_string($frd2['friend'])."'";} if($frd2['enemy']>0){$per="`enemy`='".mysql_real_escape_string($frd2['enemy'])."'";} if($frd2['notinlist']>0){$per="`notinlist`='".mysql_real_escape_string($frd2['notinlist'])."'";} $comment = $_POST['comment']; mysql_query("UPDATE `friends` SET `friend` = '".mysql_real_escape_string($friend)."',`enemy` = '".mysql_real_escape_string($enemy)."',`notinlist` = '".mysql_real_escape_string($notinlist)."',`comment` = '".mysql_real_escape_string($comment)."' WHERE `user`='".mysql_real_escape_string($u->info['id'])."' and $per"); -echo" ".$_POST['friendedit']." ."; +echo"Данные контакта ".$_POST['friendedit']." успешно изменены."; } @@ -90,7 +90,6 @@ echo" ?> - @@ -107,17 +106,17 @@ function editcontact(title, script, name, login, flogin, group, groups, subgroup s +='
            '; s +=' - +
            '; flogin = flogin.replace( /^ @@ -283,7 +283,7 @@ return s;
            - +info['id'])."' and `notinlist`>0;"); @@ -303,7 +303,7 @@ if($u->info['city']==$us['city']){$us['city']='';} + - + @@ -333,7 +333,7 @@ $rrm = ''; ?> +info['city']==$us['city']){$us['city']='';} if($i==1){ ?> - + @@ -363,7 +363,7 @@ $rrm = ''; ?> +info['city']==$us['city']){$us['city']='';} if($i==1){ ?> - + @@ -393,29 +393,29 @@ $rrm = ''; ?> + - +



            microLogin($u->info['id'],1)?>

            Контакты

            microLogin($u->info['id'],1)?>

            -", "", "2", new Array( "",""," ","" ), "", new Array( ), "");'>", "", "2", new Array( "Друзья","Враги","Не в группе","Игнорирование" ), "", new Array( ), "");'>

            Враги

            -", "", "1", new Array( "",""," ","" ), "", new Array( ), "");'>", "", "1", new Array( "Друзья","Враги","Не в группе","Игнорирование" ), "", new Array( ), "");'>

            Друзья

            -", "", "0", new Array( "",""," ","" ), "", new Array( ), "");'>", "", "0", new Array( "Друзья","Враги","Не в группе","Игнорирование" ), "", new Array( ), "");'>

            Игнорирование

            -", "", "0", new Array( "",""," ","" ), "", new Array( ), "");'>", "", "0", new Array( "Друзья","Враги","Не в группе","Игнорирование" ), "", new Array( ), "");'>
            > +>     -
              - + - + @@ -423,7 +423,7 @@ if( $imen != '' ) { ?> - + - + @@ -479,10 +479,10 @@ echo"m('".$row['login']."','".$row['id']."','".$row['align']."','".$row['align2' '".(time()-120)."' AND (( `align` = 50 OR `align2` = 50 ) AND `admin` = 0) AND `city` = '".mysql_real_escape_string($u->info['city'])."' order by align asc;")); -//if(!$chk['id']) {echo' .';}?> +//if(!$chk['id']) {echo'К сожалению в данный момент никого из модераторов нет в городе.';}?>

            Именинник

            on-line

            Модераторы on-line

            @@ -440,11 +440,11 @@ echo"m('".$row['login']."','".$row['id']."','".$row['align']."','".$row['align2' '".(time()-120)."' AND ((align>1 and align<2 and align!=1.2) or (align>3 and align<4)) AND `city` = '".mysql_real_escape_string($u->info['city'])."' order by align asc;")); -if(!$chk['id']) {echo' .';}?> +if(!$chk['id']) {echo'К сожалению в данный момент никого из модераторов нет в городе.';}?>

            Дилеры

            @@ -461,7 +461,7 @@ echo"m('".$row['login']."','".$row['id']."','".$row['align']."','".$row['align2' '".(time()-120)."' AND ((align>1 and align<2 and align!=1.2) or (align>3 and align<4)) AND `city` = '".mysql_real_escape_string($u->info['city'])."' order by align asc;")); -if(!$chk['id']) {echo' .';}?> +if(!$chk['id']) {echo'К сожалению в данный момент никого из Алхимиков нет в городе.';}?>

            Букмекеры

            @@ -497,7 +497,7 @@ echo"m('".$row['login']."','".$row['id']."','".$row['align']."','".$row['align2' info['city'])."' order by bukmeker asc;")); -if(!$chk['id']) {echo' .';}?> +if(!$chk['id']) {echo'К сожалению в данный момент никого из букмекеров нет в городе.';}?>
            '; s +='
            '; flogin = flogin.replace( /^ @@ -224,7 +223,7 @@ return s;
            - +info['id'])."' and `notinlist`>0;"); @@ -247,7 +246,7 @@ $rrm = ''; ?> + - + @@ -278,7 +277,7 @@ $rrm = ''; ?> + - + @@ -308,25 +307,25 @@ $rrm = ''; ?> + - +

            Контакты

            -", "", "2", new Array( "",""," " ), "", new Array( ), "");'>", "", "2", new Array( "Друзья","Враги","Не в группе" ), "", new Array( ), "");'>

            Враги

            -", "", "1", new Array( "",""," " ), "", new Array( ), "");'>", "", "1", new Array( "Друзья","Враги","Не в группе" ), "", new Array( ), "");'>

            Друзья

            -", "", "7", new Array( "",""," " ), "", new Array( ), "");'>", "", "7", new Array( "Друзья","Враги","Не в группе" ), "", new Array( ), "");'>
            +     -
              - + - + -

            on-line

            Модераторы on-line

            @@ -343,17 +342,17 @@ echo"m('".$row['login']."','".$row['id']."','".$row['align']."','".$row['klan']. '".(time()-120)."' AND ((align>1 and align<2 and align!=1.2) or (align>3 and align<4)) AND `city` = '".mysql_real_escape_string($u->info['city'])."' order by align asc;")); -if(!$chk['id']) {echo' .';}?> +if(!$chk['id']) {echo'К сожалению в данный момент никого из модераторов нет в городе.';}?>
            !
            , on-line. -
            !
            P.S. - +
            Уважаемые Игроки!
            Для более быстрого и эффективного решения Вашей проблемы просьба обращаться к тем паладинам или тарманам, ники которых находятся вверху списка «Модераторы on-line». +
            Цените свое и чужое время!
            P.S. не пишите всем модераторам сразу и воздержитесь от вопросов стажерам - они находятся в процессе получения знаний
            - + diff --git a/modules_data/_galery.php b/modules_data/_galery.php index 70724999..a459ec6c 100644 --- a/modules_data/_galery.php +++ b/modules_data/_galery.php @@ -10,24 +10,24 @@ if(!defined('GAME')) "; $tp = array( - 1 => array('',120,220,100), - 2 => array(' ()',120,40,15), - 3 => array(' ()',120,20,5), - 4 => array('',60,60,25), - 5 => array('',60,40,25), - 6 => array(' ',60,60,25), - 7 => array(' ',60,60,25), - 8 => array('',60,80,25), - 9 => array('',60,40,25), - 10 => array('',60,40,25), - 11 => array('',60,80,25), - 12 => array('',60,40,25), - 13 => array(' 1',20,20,10), - 14 => array('',60,20,25), - 15 => array('',60,20,25), - 16 => array(' ',244,287,5), - 17 => array(' 2',20,20,10), - 18 => array(' 3',20,20,10) + 1 => array('Образ',120,220,100), + 2 => array('Заглушка (снизу)',120,40,15), + 3 => array('Заглушка (сверху)',120,20,5), + 4 => array('Шлем',60,60,25), + 5 => array('Наручи',60,40,25), + 6 => array('Левая рука',60,60,25), + 7 => array('Правая рука',60,60,25), + 8 => array('Броня',60,80,25), + 9 => array('Пояс',60,40,25), + 10 => array('Ботинки',60,40,25), + 11 => array('Поножи',60,80,25), + 12 => array('Перчатки',60,40,25), + 13 => array('Кольца №1',20,20,10), + 14 => array('Кулон',60,20,25), + 15 => array('Серьги',60,20,25), + 16 => array('Заглушка под информацию о персонаже',244,287,5), + 17 => array('Кольцо №2',20,20,10), + 18 => array('Кольцо №3',20,20,10) ); @@ -38,28 +38,28 @@ if(!defined('GAME')) $rtm = mysql_fetch_array(mysql_query('SELECT * FROM `items_img` WHERE `uid` = "'.$u->info['id'].'" AND `type` = "'.$img['type'].'" LIMIT 1')); if(!isset($rtm['id'])) { - $error = ' '; + $error = 'Изображение было успешно установленно'; echo ''; mysql_query('INSERT INTO `items_img` (`uid`,`img_id`,`type`) VALUES ("'.$u->info['id'].'","'.$img['id'].'","'.$img['type'].'")'); }elseif($rtm['img_id']!=$img['id']){ - $error = ' '; + $error = 'Изображение было успешно установленно'; echo ''; mysql_query('UPDATE `items_img` SET `img_id` = "'.$img['id'].'" WHERE `id` = "'.$rtm['id'].'" LIMIT 1'); }elseif($rtm['img_id']==$img['id']){ - $error = ' '; + $error = 'Изображение было успешно снято'; echo ''; mysql_query('UPDATE `items_img` SET `img_id` = "0" WHERE `id` = "'.$rtm['id'].'" LIMIT 1'); } }else{ - $error = ' '; + $error = 'Вы не можете установить данное изображение'; } } if(isset($_GET['error'])) { if($_GET['error'] == 1) { - $error = ' '; + $error = 'Изображение было успешно установленно'; }else{ - $error = ' '; + $error = 'Изображение было успешно снято'; } } @@ -87,7 +87,7 @@ if(!defined('GAME'))
            getInfoPers($u->info['id'],0,0,1); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } ?>
            -

            +

            Доступные изображения

            .'; + echo '
            У вас нет доступных изображений.
            '; } ?>
            - +
            \ No newline at end of file diff --git a/modules_data/_inv-new.php b/modules_data/_inv-new.php index 3464e8e1..a68a44ba 100644 --- a/modules_data/_inv-new.php +++ b/modules_data/_inv-new.php @@ -5,7 +5,7 @@ if(!defined('GAME')) { } if( !isset( $_GET['otdel'] ) || ( $_GET['otdel']<1 && $_GET['otdel']>6 ) ) { - $_GET['otdel'] = 1; // . + $_GET['otdel'] = 1; // Если раздел не указан. $_GET['paged'] = $_SESSION['paged'] = 0; } @@ -13,15 +13,15 @@ if( isset($_GET['otdel']) ) { if( !isset($_GET['paged']) && (isset($_GET['use_pid']) || isset($_GET['sid']) || isset($_GET['oid']) || isset($_GET['usecopr']) || isset($_GET['delcop'])) ) { $_GET['paged'] = $_SESSION['paged']; // use item and load old paging } elseif(isset($_GET['paged']) && $_GET['paged']!='') { - $_SESSION['paged'] = $_GET['paged']; // . + $_SESSION['paged'] = $_GET['paged']; // Задаем новую страницу. } elseif(isset($_SESSION['paged']) && $_SESSION['paged']!='' && $_SESSION['otdel']==$_GET['otdel']) { - $_GET['paged'] = $_SESSION['paged']; // , . + $_GET['paged'] = $_SESSION['paged']; // Если страница уже имеется в сессии, возвращаем её в текущую. } else { $_GET['paged'] = $_SESSION['paged'] = 0; } } -$_SESSION['otdel'] = $_GET['otdel']; // . +$_SESSION['otdel'] = $_GET['otdel']; // для отладки. if( isset($_GET['delcop']) ) { mysql_query('DELETE FROM `complects_priem` WHERE `id` = "'.mysql_real_escape_string($_GET['delcop']).'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); @@ -33,14 +33,14 @@ if( isset($_GET['delcop']) ) { } } -// +//сохраняем комплект if( isset($_POST['compname']) ) { - $_POST['compname'] = htmlspecialchars($_POST['compname'],NULL,'cp1251'); + $_POST['compname'] = htmlspecialchars($_POST['compname'],NULL); $_POST['compname'] = str_replace("'",'',$_POST['compname']); $_POST['compname'] = str_replace('"','',$_POST['compname']); $ptst = str_replace(' ','',$_POST['compname']); if( $ptst!='' ) { - // + //Добавляем комплект $ptst = ''; $sp = mysql_query('SELECT `inOdet`,`id` FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` > 0 AND `inShop` = "0" ORDER BY `inOdet` ASC LIMIT 250'); while ( $pl = mysql_fetch_array($sp) ) { @@ -48,21 +48,21 @@ if( isset($_POST['compname']) ) { } $tcm = mysql_fetch_array(mysql_query('SELECT * FROM `save_com` WHERE `uid` = "'.$u->info['id'].'" AND `name` = "'.mysql_real_escape_string($_POST['compname']).'" AND `delete` = "0" LIMIT 1')); if( !isset($tcm['id']) ) { - // + //добавляем новый комплект $ins = mysql_query('INSERT INTO `save_com` (`uid`,`time`,`name`,`val`,`type`) VALUES ("'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($_POST['compname']).'","'.$ptst.'","0")'); if($ins) { - $u->error = ' "'.$_POST['compname'].'" '; + $u->error = 'Комплект "'.$_POST['compname'].'" был успешно сохранен'; } else { - $u->error = ' '; + $u->error = 'Не удалось сохранить комплект по техническим причинам'; } }else{ - // + //изменяем существующий $ins = mysql_query('UPDATE `save_com` SET `val` = "'.$ptst.'" WHERE `id` = "'.$tcm['id'].'" LIMIT 1'); if($ins) { - $u->error = ' "'.$_POST['compname'].'" '; + $u->error = 'Комплект "'.$_POST['compname'].'" был успешно изменен'; }else{ - $u->error = ' '; + $u->error = 'Не удалось изменить комплект по техническим причинам'; } } unset($ptst,$tcm,$inc); @@ -71,7 +71,7 @@ if( isset($_POST['compname']) ) { $cmpl = mysql_query('UPDATE `save_com` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `id` = "'.mysql_real_escape_string($_GET['delc1']).'" LIMIT 1'); if($cmpl) { - $u->error = ' '; + $u->error = 'Комплект был успешно удален'; } } $filt='`iu`.`lastUPD` DESC'; @@ -97,17 +97,17 @@ $pgs = mysql_fetch_array(mysql_query('SELECT COUNT(`iu`.`id`) FROM `items_users` $pgs = $pgs[0]; $page_look = ''; $inventorySortBox = '
            - :
            - - - + Сортировка:
            + + +
            '; if(isset($_SESSION['paged']))$page_look = ''; else $page_look = ''; if($pgs > $pc) { $nlim = ' LIMIT '.$pxc.' , '.$pc.''; $page_look .= '
            '; - $page_look .= ': '; + $page_look .= 'Страницы: '; $i = 1; echo ''; while($i <= ceil($pgs/$pc)) { @@ -151,7 +145,7 @@ if(isset($_GET['boxsort']) && $_GET['otdel']==5) { $itmAll = $u->genInv(1,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="'.mysql_real_escape_string($_GET['otdel']).'" ORDER BY '.$filt.''.$nlim); } -$itmAllSee = ''; +$itmAllSee = 'ПУСТО'; if($itmAll[0] > 0) $itmAllSee = $itmAll[2]; @@ -159,29 +153,29 @@ $showItems = ' - @@ -193,7 +187,7 @@ if(isset($_GET['mAjax'])){ '; } } else { - $re = ' , '; + $re = 'Вы не смогли перейти в локацию, возможно она была разрушена'; } } else { - $re = ' '; + $re = 'Вы не смогли перейти в локацию'; } } elseif ($go['destroy'] == 1) { - $re = ' , '; + $re = 'Здание было разрушено, в данный момент оно реставрируется'; } else { - $re = ' '; + $re = 'Временно закрыто'; } } else { - $re = ' '; + $re = 'Проход не существует'; } } else { - $re = ' '; + $re = 'Проход не существует'; } } @@ -362,8 +362,8 @@ if ($re != '') { } if (isset($_GET['mAjax'])) { - $tmGo = $u->info['timeGo'] - time() + 1; // - $tmGol = $u->info['timeGo'] - $u->info['timeGoL'] + 1; // + $tmGo = $u->info['timeGo'] - time() + 1; //сколько секунд осталось + $tmGol = $u->info['timeGo'] - $u->info['timeGoL'] + 1; //сколько секунд идти всего if ($tmGo < 0) { $tmGo = 0; } @@ -378,7 +378,7 @@ if (isset($_GET['mAjax'])) { ) - 520) . ' AND `inUser` = "0" AND `city` = "' . $u->info['city'] . '" AND `no_ip` != "trupojor" AND `pass` != "saintlucia" AND `login` NOT LIKE "%(%" AND `banned` = 0 AND `bot_id` = 0 LIMIT 1' ) ); - $rowonmax = ' : ' . $rowonmax2[0] . ' .'; + $rowonmax = 'Сейчас в клубе: ' . $rowonmax2[0] . ' чел.'; $rowonmax = '' . $rowonmax . ''; $rowonmax2c = mysql_fetch_array( mysql_query( @@ -392,7 +392,7 @@ if (isset($_GET['mAjax'])) { ) - 520) . ' AND `inUser` = "0" AND `no_ip` != "trupojor" AND `pass` != "saintlucia" AND `login` NOT LIKE "%(%" AND `banned` = 0 AND `bot_id` = 0 LIMIT 1' ) ); - $rowonmaxc = ' : ' . $rowonmax2c[0] . ' .'; + $rowonmaxc = 'Всего в Игре: ' . $rowonmax2c[0] . ' чел.'; unset($sil, $pil, $rowonmax2); if ($u->room['file'] != '') { @@ -401,7 +401,7 @@ if (isset($_GET['mAjax'])) { exit(json_encode($Response)); } -if (isset($_GET['ajaxHostel'])) { // , . +if (isset($_GET['ajaxHostel'])) { // Для общежития, проверка на лимит положенных предметов в сундук. include_once('modules_data/location/room_hostel.php'); } @@ -468,7 +468,7 @@ if (isset($_GET['ajaxHostel'])) { // if (rgo_nm != '') { if ($('#moveto').html() == '') { $('#moveto').css({'display': '', 'height': 'auto'}); - $('#moveto').html('
            : ' + rgo_nm + ' ()
            '); + $('#moveto').html('
            Вы перейдете в: ' + rgo_nm + ' (отмена)
            '); } } else { $('#moveto').css({'display': 'none', 'height': '1px'}); @@ -485,7 +485,7 @@ if (isset($_GET['ajaxHostel'])) { // if ($('#moveto') != null && $('#moveto') != undefined && nm != undefined) { if (rgo_nm != '') { $('#moveto').css({'display': '', 'height': 'auto'}); - $('#moveto').html('
            : ' + nm + ' ()
            '); + $('#moveto').html('
            Вы перейдете в: ' + nm + ' (отмена)
            '); if (sLoc1 == 64) { location = rgo_url; } @@ -563,7 +563,7 @@ if (date('m') == 11 || date('m') == 12 || date('m') == 1 || date('m') == 2) { var div = ''; for (i = 0; i < no; ++i) { SetVariable(i); - div += "
            \"\"
            "; + div += "
            \"Снежинка\"
            "; } document.getElementById('snow').innerHTML = div; @@ -593,18 +593,18 @@ if (date('m') == 11 || date('m') == 12 || date('m') == 1 || date('m') == 2) { } if (isset($u->room['id'])) { - $tmGo = $u->info['timeGo'] - time() + 1; // - $tmGol = $u->info['timeGo'] - $u->info['timeGoL'] + 1; // + $tmGo = $u->info['timeGo'] - time() + 1; //сколько секунд осталось + $tmGol = $u->info['timeGo'] - $u->info['timeGoL'] + 1; //сколько секунд идти всего if ($tmGo < 0) { $tmGo = 0; } if ($tmGol < 1) { $tmGol = 1; } - // + //онлайн в этой комнате $goLis = '
            - - - - - + + + + +
            ОбмундированиеЗаклятияЭликсирыРуныПрочее
            -
            (:' . (0+$u->aves['now']) . ' / ' . $u->aves['max'] . ', : ' . $u->aves['items'] . ') + Рюкзак (масса:' . (0+$u->aves['now']) . ' / ' . $u->aves['max'] . ', предметов: ' . $u->aves['items'] . ')
            ' . $page_look . '
            ' . (( $u->info['invBlock'] == 0 ) ? $itmAllSee : '
            .
            :
            ' ) . '
            +
            ' . (( $u->info['invBlock'] == 0 ) ? $itmAllSee : '
            Рюкзак закрыт.
            Введите пароль:
            ' ) . '
            - +
               - - -   Выровнять по + + +
            - + @@ -630,7 +630,7 @@ if (isset($u->room['id'])) { ) - 777) . ' AND `inUser` = "0" AND `city` = "' . $u->info['city'] . '" AND `no_ip` != "trupojor" AND `pass` != "saintlucia" AND `login` NOT LIKE "%(%" AND `banned` = 0 AND `bot_id` = 0 LIMIT 1' ) ); - $rowonmax = '
            ' . ($rowonmax2[0]) . ' .'; + $rowonmax = '
            Сейчас в клубе ' . ($rowonmax2[0]) . ' реальных чел.'; $rowonmax2c = mysql_fetch_array( mysql_query( 'SELECT COUNT(`id`) FROM `users` WHERE `online` > ' . (time( @@ -644,7 +644,7 @@ if (isset($u->room['id'])) { ) ); if ($rowonmax2c[0] - $rowonmax2[0] > 0) { - $rowonmaxc = '( : ' . ($rowonmax2c[0] + 5) . ' .)'; + $rowonmaxc = '(Общий онлайн с учетом ботов: ' . ($rowonmax2c[0] + 5) . ' чел.)'; } $rowonmax = $rowonmax . '
            ' . $rowonmaxc; unset($sil, $pil, $rowonmax2); diff --git a/modules_data/_mod.php b/modules_data/_mod.php index 588c485a..067005fd 100644 --- a/modules_data/_mod.php +++ b/modules_data/_mod.php @@ -9,23 +9,23 @@ session_start(); $rang = ''; if(floor($u->info['align'])==1) { - $rang = ''; + $rang = 'Паладин'; }elseif(floor($u->info['align'])==3) { - $rang = ''; + $rang = 'Тарман'; }elseif($u->info['admin']>0){ - $rang = ''; + $rang = 'Ангел'; }else{ - $rang = ' '; + $rang = 'Неизвестное существо'; } /* if($u->info['admin'] == 0) { if( - ($u->info['city'] == 'capitalcity' && $rang == '') || - ($u->info['city'] == 'newcapitalcity' && $rang == '') + ($u->info['city'] == 'capitalcity' && $rang == 'Тарман') || + ($u->info['city'] == 'newcapitalcity' && $rang == 'Паладин') ) { - die('

            .
            '); + die('

            Запрещено пользоваться модераторскими функциями на вражеской территории.
            '); } } */ @@ -63,10 +63,10 @@ if($u->info['admin']>0) $mod_login = $u->info['login']; if($u->info['invise'] > 0) { - $mod_login = ""; + $mod_login = "Невидимка"; } -// () +//возможности (перечисляем) $vz_id = array( 0=>'m1', 1=>'mm1', @@ -124,64 +124,64 @@ $vz_id = array( 53=>'nick', 54=>'testchat', 55=>'newuidinv'); -// +//названия возможностей $vz = array( -'m1'=>' ', -'mm1'=>' (3 .)', -'m2'=>' ', -'mm2'=>' (3 .)', -'sm1'=>' ', -'sm2'=>' ', -'citym1'=>' ()', -'citym2'=>' ()', -'citysm1'=>' ()', -'citysm2'=>' ()', -'addld'=>' ', -'cityaddld'=>' ()', -'seeld'=>' ', -'telegraf'=>'', -'f1'=>'. ', -'f2'=>'. ', -'f3'=>'. ', -'f4'=>'. ', -'f5'=>'. ', -'f6'=>'. / ', -'f7'=>'. ', -'f8'=>'. ', -'boi'=>' ', -'elka'=>' ', -'haos'=>'', -'haosInf'=>' ()', -'deletInfo'=>' / ', -'zatoch'=>' ', -'banned'=>' ', -'unbanned'=>' ', -'readPerevod'=>' ', -'provItm'=>' ', -'provMsg'=>' ', -'trPass'=>' ', -'shaos'=>' ', -'szatoch'=>' ', -'editAlign'=>' ', -'priemIskl'=>' / ', -'proverka'=>' ', -'marry'=>' / ', -'ban0'=>' [0] ', -'useunnoper'=>' ', -'usenoper'=>' ', -'useunalign'=>' \', -'usealign1'=>' ', -'usealign3'=>' ', -'usealign7'=>' ', -'useuntravm'=>' ( 1000 . )', -'heal'=>' ( 1000 . )', -'invis'=>' ', -'attack'=>' ( 1000 . )', -'sex'=>' ', -'unbtl'=>' ', -'nick'=>' ', -'testchat'=>' ', -'newuidinv'=>' '); +'m1'=>'Заклятие молчания', +'mm1'=>'Заклятие молчания (3 дн.)', +'m2'=>'Заклятие форумного молчания', +'mm2'=>'Заклятие форумного молчания (3 дн.)', +'sm1'=>'Снять молчанку', +'sm2'=>'Снять форумную молчанку', +'citym1'=>'Заклятие молчания (междугородняя)', +'citym2'=>'Заклятие форумного молчания (междугородняя)', +'citysm1'=>'Снять молчанку (междугородняя)', +'citysm2'=>'Снять форумную молчанку (междугородняя)', +'addld'=>'Добавить запись в личное дело', +'cityaddld'=>'Добавить запись в личное дело (междугородняя)', +'seeld'=>'Просмотр личного дела', +'telegraf'=>'Телеграф', +'f1'=>'Форум. Ответ в ответе', +'f2'=>'Форум. Удаление ответа', +'f3'=>'Форум. Восстановление темы', +'f4'=>'Форум. Удаление темы', +'f5'=>'Форум. Перемещение темы', +'f6'=>'Форум. Прикрепление / Открепление темы', +'f7'=>'Форум. Возобновление обсуждения', +'f8'=>'Форум. Закрытие обсуждения', +'boi'=>'Модерация боев', +'elka'=>'Модерация ёлки', +'haos'=>'Хаос', +'haosInf'=>'Хаос (бессрочно)', +'deletInfo'=>'Снять / Наложить Обезличивание', +'zatoch'=>'Заточение персонажа', +'banned'=>'Блокировка персонажа', +'unbanned'=>'Разблокировка персонажа', +'readPerevod'=>'Просмотр переводов', +'provItm'=>'Проверка инвентаря', +'provMsg'=>'Проверка сообщений', +'trPass'=>'Требует пароль', +'shaos'=>'Снять хаос', +'szatoch'=>'Выпустить из заточения', +'editAlign'=>'Функции управленца', +'priemIskl'=>'Прием / Исключение', +'proverka'=>'Проверка на чистоту', +'marry'=>'Обвенчать / Развести', +'ban0'=>'Блокировка [0] уровней', +'useunnoper'=>'Снять запрет на передачи', +'usenoper'=>'Запрет на передачи', +'useunalign'=>'Снять склонность\клан', +'usealign1'=>'Выдать светлую склонность', +'usealign3'=>'Выдать темную склонность', +'usealign7'=>'Выдать нейтральную склонность', +'useuntravm'=>'Вылечить травму ( 1000 шт. в месяц на всех )', +'heal'=>'Свитки восстановления ( 1000 шт. в месяц на всех )', +'invis'=>'Свиток невидимки', +'attack'=>'Свиток нападения ( 1000 шт. в месяц на всех )', +'sex'=>'Смена пола', +'unbtl'=>'Вытащить персонажа из боя', +'nick'=>'Смена логина', +'testchat'=>'Проверить сообщение', +'newuidinv'=>'Проверка инвентаря'); echo ''; @@ -206,7 +206,7 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) { $_SESSION['palpsw'] = $_POST['psw']; }else{ - $merror = '
            .

            '; + $merror = '
            Неверный пароль.

            '; } } @@ -220,7 +220,7 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) if($_SESSION['palpsw']==$p['trPass'] || $p['trPass'] == '') { - // + //показываем панель модератора $go = 0; if(isset($_GET['go'])) { @@ -240,14 +240,14 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) ?>
            - + @@ -258,7 +258,7 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) } ?> info['align']==1 || $u->info['align']==3) ?> #id:
            - :
            + Название квеста:

            - :
            - :
            - : + Пол:
            + Картинка бота:
            + Имя бота:

            - :

            - :
            - :
            - : (|||)
            - :
            + Информация:

            + Действие:
            + Следующий квест:
            + Награда: (опыт|кр|екр|предметы)
            + Дата:

            - ():
            - , ():
            - + Комната (требует):
            + Модуль, действие (требует):
            + .'; + echo '
            Квест не найден.
            '; } }else{ - echo '
            '; + echo 'Добавить новый квест
            '; if(isset($_GET['del'])) { mysql_query('DELETE FROM `an_quest` WHERE `id` = "'.mysql_real_escape_string($_GET['del']).'" LIMIT 1'); }elseif(isset($_GET['add'])) { @@ -322,7 +322,7 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) } $sp = mysql_query('SELECT * FROM `an_quest`'); while( $pl = mysql_fetch_array($sp) ) { - echo '
            #'.$pl['id'].''.$pl['name'].' ('.$sx[$pl['sex']].')  

            '; + echo '
            #'.$pl['id'].''.$pl['name'].' ('.$sx[$pl['sex']].')   Изменить Удалить

            '; } } ?> @@ -336,7 +336,7 @@ if(isset($p['id']) || $u->info['align']==1 || $u->info['align']==3) { $qd = array(); /* Array ([q_act_atr_1] => 0 [q_act_val_1] => [q_tr_atr_1] => 0 [q_tr_val_1] => [q_ng_atr_1] => 0 [q_ng_val_1] => [q_nk_atr_NaN] => 0 - [q_nk_val_NaN] => [q_info] => test [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_fast_city] => capitalcity [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */ + [q_nk_val_NaN] => [q_info] => test описание [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_fast_city] => capitalcity [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */ $qd['name'] = $_POST['q_name']; $qd['lvl'] = explode('-',$_POST['q_lvl']); $qd['info'] = $_POST['q_info']; @@ -436,84 +436,84 @@ function addqact() { var dd = document.getElementById('qact'); adds[0]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqtr() { var dd = document.getElementById('qtr'); adds[1]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqng() { var dd = document.getElementById('qng'); adds[2]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqnk() { var dd = document.getElementById('qnk'); adds[3]++; - dd.innerHTML = ': '+ ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ +', значение:
            '+dd.innerHTML; } - +Текстовое поле

            Редактирование обучающих квестов

            - + info['admin']>0){ ?> - + - +
            - - + @@ -523,68 +523,68 @@ function addqnk() - @@ -605,8 +605,8 @@ function addqnk() - - + + @@ -619,7 +619,7 @@ function addqnk() { if(isset($_GET['save'],$_POST['alignSave'])) { - // + //сохраняем данные $sv = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `id` = "'.mysql_real_escape_string($_POST['alignSave']).'" LIMIT 1')); if(isset($sv['id']) && ($sv['align'] < $u->info['align'] || $u->info['admin']>0)) { @@ -635,7 +635,7 @@ function addqnk() { if($i==33) { - // + //пароль на модераторскую панель if($_POST['trPassText']!='') { $ud .= '`'.$vz_id[$i].'`="'.mysql_real_escape_string(md5($_POST['trPassText'])).'",'; @@ -646,7 +646,7 @@ function addqnk() }else{ if($i==33) { - // + //пароль на модераторскую панель $ud .= '`'.$vz_id[$i].'`="",'; }else{ $ud .= '`'.$vz_id[$i].'`="0",'; @@ -660,21 +660,21 @@ function addqnk() $upd = mysql_query('UPDATE `moder` SET '.$ud.' WHERE `id` = "'.$sv['id'].'" LIMIT 1'); if($upd) { - $merror = ' '; + $merror = 'Изменения были сохранены'; }else{ - $merror = ' '; + $merror = 'Ошибка сохранения'; } }else{ - $merror = '. '; + $merror = 'Ошибка. У Вас нет доступа'; } } ?>

            +

            Редактор заданий

            - +
            : Описание:
            - - + + - - + - + - + + @@ -824,13 +824,13 @@ function closeMod()

            - info['admin']>0){ ?> -

            Функции управления

            + info['admin']>0){ ?> +
            @@ -692,8 +692,8 @@ function addqnk() ?>
            '.$u->mod_nm[$a][$pl['align']].'' ?>
            info['align']>$pl['align'] || $u->info['admin']>0){ ?>..'; } ?>
            :
            info['align']>$pl['align'] || $u->info['admin']>0){ ?>ред.ред.'; } ?>
            Возможности: '.$voz.''; @@ -715,7 +715,7 @@ function addqnk()
            :

            Изменение возможностей:
            Сохранить изменения
            Скрыть панель
            @@ -777,7 +777,7 @@ function openMod(title,dat) var d = document.getElementById('useMagic'); if(d!=undefined) { - document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; + document.getElementById('modtitle').innerHTML = '
            '+title+'
            '; document.getElementById('moddata').innerHTML = dat; d.style.display = ''; top.chat.inObj = top.frames['main'].document.getElementById('logingo'); @@ -802,13 +802,13 @@ function closeMod()
            info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)){ ?> -

            -

            info['align']==1){ echo ''; }elseif($u->info['align']==3){ echo ''; } ?>

            +

            Панель

            +

            Панель info['align']==1){ echo 'Света'; }elseif($u->info['align']==3){ echo 'Тьмы'; } ?>

            + info['admin']>0){ ?> - -
            '5 ',15=>'15 ',30=>'30 ',60=>' ',180=>' ',360=>' ',720=>' ',1440=>' ',4320=>' '); - $srokt = array(1=>'1 ',3=>'3 ',7=>'',14=>'2 ',30=>'',60=>'2 ',365=>'',24=>'',6=>''); + $srok = array(5=>'5 минут',15=>'15 минут',30=>'30 минут',60=>'один час',180=>'три часа',360=>'шесть часов',720=>'двенадцать часов',1440=>'одни сутки',4320=>'трое суток'); + $srokt = array(1=>'1 день',3=>'3 дня',7=>'неделю',14=>'2 недели',30=>'месяц',60=>'2 месяца',365=>'год',24=>'бессрочно',6=>'часик'); - // + //используем молчанку if(isset($_POST['usevampir'])) { require_once('moder/usevampir.php'); @@ -923,28 +923,28 @@ function closeMod() if(isset($_POST['use_itm_']) && $u->info['admin'] > 0 && $u->info['id'] != 2332207) { $usr = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['log_itm_']).'" LIMIT 1')); $giv_itm = mysql_fetch_array(mysql_query("SELECT * FROM `items_main` WHERE `id` = '$_POST[itm_id]'")); - if($giv_itm['id'] <= 0) { $uer = " "; } - if(!$usr['id']) { $uer = " $_POST[log_itm] ."; } + if($giv_itm['id'] <= 0) { $uer = "Нету такой вещи"; } + if(!$usr['id']) { $uer = "Персонаж $_POST[log_itm] не найден."; } if($giv_itm['id'] > 0 && $usr['id'] > 0) { $u->addItem($giv_itm['id'], $usr['id']); - $uer = " $_POST[log_itm] $giv_itm[name]."; - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "'.$user_teleport['login'].'" "'.$giv_itm['name'].'".'; + $uer = "Персонажу $_POST[log_itm] выдана вещь $giv_itm[name]."; + $rtxt = $rang.' "'.$u->info['login'].'" Выдал'.$sx.' персонажу "'.$user_teleport['login'].'" вещь "'.$giv_itm['name'].'".'; } } if($u->info['admin'] > 0 || $u->info['align'] == 1.99 ) { - echo '
            -: '. - ' '. + echo '
            Супер-привилегии: '. + ' '. '
            '; if(isset($_GET['block_ip'])) { $_GET['block_ip'] = htmlspecialchars($_GET['block_ip']); $blockip = mysql_fetch_array(mysql_query('SELECT * FROM `block_ip` WHERE `ip` = "'.mysql_real_escape_string($_GET['block_ip']).'" LIMIT 1')); if(isset($blockip['id'])) { - // - echo 'IP% '.$_GET['block_ip'].' ! ()
            '; + //Уже есть + echo 'IP% '.$_GET['block_ip'].' успешно заблокирован! (ранее)
            '; }else{ - // - echo 'IP% '.$_GET['block_ip'].' !
            '; + //Добавляем + echo 'IP% '.$_GET['block_ip'].' успешно заблокирован!
            '; mysql_query('INSERT INTO `block_ip` (`uid`,`time`,`ip`) VALUES ( "'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($_GET['block_ip']).'" )'); @@ -953,12 +953,12 @@ function closeMod() $_GET['unblock_ip'] = htmlspecialchars($_GET['unblock_ip']); $blockip = mysql_fetch_array(mysql_query('SELECT * FROM `block_ip` WHERE `ip` = "'.mysql_real_escape_string($_GET['unblock_ip']).'" LIMIT 1')); if(isset($blockip['id'])) { - // - echo 'IP% '.$_GET['unblock_ip'].' !
            '; + //Удаляем + echo 'IP% '.$_GET['unblock_ip'].' успешно разблокирован!
            '; mysql_query('DELETE FROM `block_ip` WHERE `ip` = "'.mysql_real_escape_string($blockip['ip']).'"'); }else{ - // - echo 'IP% '.$_GET['unblock_ip'].' ! ()
            '; + //Уже удалили + echo 'IP% '.$_GET['unblock_ip'].' успешно разблокирован! (ранее)
            '; } } if(isset($_GET['blockip_list'])) { @@ -968,39 +968,39 @@ function closeMod() $plbipl .= ''.date('d.m.Y H:i',$plbip['time']) . ' - ' . $plbip['ip'] . ' ('.$u->microLogin($plbip['uid'],1).')
            '; } if($plbipl!='') { - echo ' IP:
            '.$plbipl; + echo 'Список заблокированных IP:
            '.$plbipl; }else{ - echo ' IP: '; + echo 'Список заблокированных IP: Список пуст'; } echo '
            '; } } echo ''.$uer.''; - // , !) + //Темная склонка, кусается сука!) ?>
            -

            +

            Возможности

            info['align']>=3 && $u->info['align']<4) { ?> - + info['admin'] > 0) { ?> - - + + info['admin'] > 0) { ?> info['invis'] != 1 && $u->info['invis'] < time()) { ?> - + - + - + - +
            -

            /

            +

            Наложить/Снять заклятия

            - info['admin']>0){ echo ' '; } ?> - '; } ?> + info['admin']>0){ echo ' '; } ?> + '; } ?>     - - + + - +     - - + +     - - + +     - - + +     - - + + - - + +     - - + +     - + - + - + - + info['admin'] > 0 ) { if($p['usealign3']==1){ ?> -     +     - + - + -     +         - + - + - + info['admin'] > 0){ ?> - +     - - + +     - - + + -    info['admin']>0){ ?> - +    info['admin']>0){ ?> +     - +
            @@ -1097,8 +1097,8 @@ function closeMod() if($p['seeld']==1) { ?>
            -

            ip-

            - ip- +

            Персонажи на одном ip-адресе

            + Введите ip-адрес
            '; $r .= ''.$i.'. '.$ursz[$pl['uid']].''; - $r .= '   ( : '.date('d.m.Y H:i',$de[0]).' - '.date('d.m.Y H:i',$de[1]).')'; + $r .= '   (Череда авторизаций: '.date('d.m.Y H:i',$de[0]).' - '.date('d.m.Y H:i',$de[1]).')'; $r .= '
            '; $i++; @@ -1124,23 +1124,23 @@ function closeMod() } if( $u->info['admin'] == 0 && $u->info['align'] != 1.99 ) { - echo '   ip-:'.$_POST['loginLD51'].'
            '; + echo '   Список персонажей с ip-адреса:'.$_POST['loginLD51'].'
            '; }else{ $block = mysql_fetch_array(mysql_query('SELECT * FROM `block_ip` WHERE `ip` = "'.mysql_real_escape_string($_POST['loginLD51']).'" LIMIT 1')); if(!isset($block['id'])) { - echo '   ip-:'.$_POST['loginLD51'].''; - echo ' '; + echo '   Список персонажей с ip-адреса:'.$_POST['loginLD51'].''; + echo ' '; echo '
            '; }else{ - echo '   ip-:'.$_POST['loginLD51'].''; - echo ' '; + echo '   Список персонажей с ip-адреса:'.$_POST['loginLD51'].''; + echo ' '; echo '
            '; } } if($r == '') { - echo '
            ip-
            '; + echo '
            Персонажи с данным ip-адресом не найдены
            '; }else{ echo $r; } @@ -1151,31 +1151,31 @@ function closeMod() if($u->info['admin'] > 0) { $types = array( - 1 => array('',120,220,100), - 2 => array(' ()',120,40,15), - 3 => array(' ()',120,20,5), - 4 => array('',60,60,25), - 5 => array('',60,40,25), - 6 => array(' ',60,60,25), - 7 => array(' ',60,60,25), - 8 => array('',60,80,25), - 9 => array('',60,40,25), - 10 => array('',60,40,25), - 11 => array('',60,80,25), - 12 => array('',60,40,25), - 13 => array(' 1',20,20,10), - 14 => array('',60,20,25), - 15 => array('',60,20,25), - 16 => array(' ',244,287,5), - 17 => array(' 2',20,20,10), - 18 => array(' 3',20,20,10) + 1 => array('Образ',120,220,100), + 2 => array('Заглушка (снизу)',120,40,15), + 3 => array('Заглушка (сверху)',120,20,5), + 4 => array('Шлем',60,60,25), + 5 => array('Наручи',60,40,25), + 6 => array('Левая рука',60,60,25), + 7 => array('Правая рука',60,60,25), + 8 => array('Броня',60,80,25), + 9 => array('Пояс',60,40,25), + 10 => array('Ботинки',60,40,25), + 11 => array('Поножи',60,80,25), + 12 => array('Перчатки',60,40,25), + 13 => array('Кольца №1',20,20,10), + 14 => array('Кулон',60,20,25), + 15 => array('Серьги',60,20,25), + 16 => array('Заглушка под информацию о персонаже',244,287,5), + 17 => array('Кольцо №2',20,20,10), + 18 => array('Кольцо №3',20,20,10) ); if(isset($_GET['grood_img'])) { $imgid = round((int)$_GET['grood_img']); if(mysql_query('UPDATE `reimage` SET `good` = "'.$u->info['id'].'" WHERE `id` = "'.mysql_real_escape_string($imgid).'" AND `good` = "0" AND `bad` = "0" LIMIT 1')) { - // + //Переносим изображение $vr = mysql_fetch_array(mysql_query('SELECT * FROM `reimage` WHERE `id` = "'.mysql_real_escape_string($imgid).'" LIMIT 1')); $vr['format'] = explode('.',$vr['src']); $vr['format'] = $vr['format'][2]; @@ -1183,13 +1183,13 @@ function closeMod() mysql_query('UPDATE `reimage` SET `format` = "'.$vr['format'].'" WHERE `id` = "'.mysql_real_escape_string($imgid).'" LIMIT 1'); if($vr['clan'] == 0) { - // + //Отправляем системку mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','capitalcity','0','','".$vr['login']."','! ".date("d.m.y H:i")." : \' -".$types[$vr['type']][0]."-, , ""\'.','-1','5','0')"); + '1','capitalcity','0','','".$vr['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'Вам одобрили изображение -".$types[$vr['type']][0]."-, установить изображение возможно в инвентаре, в разделе "Галерея"\'.','-1','5','0')"); }else{ - // + //Отправляем системку mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','capitalcity','0','','".$vr['login']."','! ".date("d.m.y H:i")." : \' -".$types[$vr['type']][0]."-, , ""\'.','-1','5','0')"); + '1','capitalcity','0','','".$vr['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'Вам одобрили клановое изображение -".$types[$vr['type']][0]."-, установить изображение возможно в инвентаре, в разделе "Галерея"\'.','-1','5','0')"); } } @@ -1197,26 +1197,26 @@ function closeMod() $imgid = round((int)$_GET['bad_img']); if(mysql_query('UPDATE `reimage` SET `bad` = "'.$u->info['id'].'" WHERE `id` = "'.mysql_real_escape_string($imgid).'" AND `good` = "0" AND `bad` = "0" LIMIT 1')) { - // 90% . + //Возвращаем 90% екр. за образ $vr = mysql_fetch_array(mysql_query('SELECT * FROM `reimage` WHERE `id` = "'.mysql_real_escape_string($imgid).'" LIMIT 1')); $vr['money2'] = round($vr['money2']/100*9); if($vr['clan'] > 0) { - // + //возврат для клана mysql_query('UPDATE `clan` SET `money2` = `money2` + '.$vr['money2'].' WHERE `id` = "'.$vr['clan'].'" LIMIT 1'); - // + //Отправляем системку mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','capitalcity','0','','".$vr['login']."','! ".date("d.m.y H:i")." : \' -".$types[$vr['type']][0]."- , ".$vr['money2']." . \'.','-1','5','0')"); + '1','capitalcity','0','','".$vr['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'Вам было отказано в регистрации кланового изображения -".$types[$vr['type']][0]."- , ".$vr['money2']." екр. были переведены в казну клана\'.','-1','5','0')"); }else{ - // + //возврат для игрока в банк $bnk = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$vr['uid'].'" AND `block` = "0" ORDER BY `id` DESC LIMIT 1')); if(isset($bnk['id'])) { mysql_query('UPDATE `bank` SET `money2` = `money2` + '.$vr['money2'].' WHERE `id` = "'.$bnk['id'].'" LIMIT 1'); } - // + //Отправляем системку mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','capitalcity','0','','".$vr['login']."','! ".date("d.m.y H:i")." : \' -".$types[$vr['type']][0]."- , ".$vr['money2']." . ".(0+$bnk['id'])."\'.','-1','5','0')"); + '1','capitalcity','0','','".$vr['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'Вам было отказано в регистрации изображения -".$types[$vr['type']][0]."- , ".$vr['money2']." екр. были переведены на ваш банковский счет №".(0+$bnk['id'])."\'.','-1','5','0')"); } } @@ -1228,7 +1228,7 @@ function closeMod() ?>
            -
            :   Заявки на регистрацию изображений для предметов:  
            @@ -1254,7 +1254,7 @@ function closeMod() $sp = mysql_query('SELECT * FROM `reimage` WHERE `good` = "0" AND `bad` = "0" ORDER BY `id` ASC LIMIT 10'); $i = 1; - $va = array('',''); + $va = array('Нет','Да'); $rt = ''; while($pl = mysql_fetch_array($sp)) { @@ -1267,9 +1267,9 @@ function closeMod() $plcln = 1; } - $rt .= '
            '.$i.'. '.date('d.m.y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' , "'.$types[$pl['type']][0].'" , : '.$va[$pl['animation']].' , : '.$va[$plcln].' , '; + $rt .= '
            '.$i.'. '.date('d.m.y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' , "'.$types[$pl['type']][0].'" , Анимация: '.$va[$pl['animation']].' , Изображение для клана: '.$va[$plcln].' , '; - $rt .= '
            '; + $rt .= '
            '; $rt .= '
            '; @@ -1289,25 +1289,25 @@ function closeMod() if($zvr[0] > 0) { ?>
            -
            :   Заявки на регистрацию кланов:   , id '.$cl['uid'].'
            '; + echo 'Персонаж выступающий в роли Главы клана не найден, id '.$cl['uid'].'
            '; }elseif($pu['clan'] > 0 || $pu['align'] > 0 || $pu['banned'] > 0) { - echo ' , ,
            '; + echo 'Персонаж выступающий в роли Главы клана уже находится в клане, либо имеет склонность, либо заблокирован
            '; }elseif($u->testAlign( $cl['align'] , $pu['id'] ) == 0 ) { - echo ' !
            '; + echo 'Персонаж выступающий в роли Главы клана не может создавать клан с данной склонностью!
            '; }elseif(isset($tc['id'])) { - echo ' , '.$tc['id'].' ('.$tc['name'].').
            '; + echo 'Схожий клан был зарегистрирован ранее, клана №'.$tc['id'].' ('.$tc['name'].').
            '; }else{ mysql_query('UPDATE `_clan` SET `admin_time` = "'.time().'",`admin_ok` = "'.$u->info['id'].'" WHERE `id` = "'.$cl['id'].'" LIMIT 1'); - // img.new-combats.com/i/clan/{name}.gif / {name}_big.gif / {id}.gif / {id}.gif - // + //Переносим изображения в img.new-combats.com/i/clan/{name}.gif / {name}_big.gif / {id}.gif / {id}.gif + //Маленький значок if(copy('clan_prw/'.$cl['img1'],'img.new-combats.com/i/clan/'.$cl['name2'].'.gif')) { $ins = mysql_query('INSERT INTO `clan` (`name`,`name_rus`,`name_mini`,`site`,`align`,`time_reg`) VALUES ( "'.$cl['name2'].'", @@ -1331,41 +1331,41 @@ function closeMod() copy('clan_prw/'.$cl['img2'],'../img.new-combats.com/i/clan/'.$cl['name2'].'_big.gif'); mysql_query('UPDATE `users` SET `clan` = "'.$cl['_id'].'",`clan_prava` = "glava",`align` = "'.$cl['align'].'" WHERE `id` = "'.$pu['id'].'" LIMIT 1'); - echo ' "'.$cl['name'].'"
            '; + echo 'Вы одобрили регистрацию клана "'.$cl['name'].'"
            '; }else{ - echo '
            '; + echo 'Не удалось перенести значок
            '; } }else{ - echo '
            '; + echo 'Не удалось перенести значок
            '; } - // + //Отправляем системку главе клана mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! ".date("d.m.y H:i")." : \' "".mysql_real_escape_string($cl['name'])."", ! .\' .','-1','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'Поздравляем Вас с регистрацией клана "".mysql_real_escape_string($cl['name'])."", будьте успешны! Соблюдайте законы нашего Мира и всячески помогайте его улучшать.\' .','-1','5','0')"); } } }elseif(isset($_GET['badClan'])) { - // + //Отказ $cl = mysql_fetch_array(mysql_query('SELECT * FROM `_clan` WHERE `admin_time` = "0" AND `id` = "'.mysql_real_escape_string($_GET['badClan']).'" LIMIT 1')); if(isset($cl['id'])) { $pu = mysql_fetch_array(mysql_query('SELECT `id`,`city`,`room`,`clan`,`login`,`align`,`level`,`sex`,`money`,`banned` FROM `users` WHERE `id` = "'.mysql_real_escape_string($cl['uid']).'" LIMIT 1')); - echo ' "'.$cl['name'].'"
            '; + echo 'Вы отказали в регистрации клану "'.$cl['name'].'"
            '; mysql_query('UPDATE `_clan` SET `admin_time` = "'.time().'",`admin_ca` = "'.$u->info['id'].'" WHERE `id` = "'.$cl['id'].'" LIMIT 1'); - // + //Отправляем системку персонажу mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! ".date("d.m.y H:i")." : \' "".mysql_real_escape_string($cl['name'])."", . 50 .\' .','-1','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от Администрации: \'К сожалению Вам отказано в регистрации клана "".mysql_real_escape_string($cl['name'])."", были не соблюдены правила регистрации. Вам зачисленно 50 екр.\' .','-1','5','0')"); - // + //Отправляем сумму //mysql_query("INSERT INTO `items_users`(`item_id`,`1price`,`uid`,`delete`,`lastUPD`)VALUES('1220','".mysql_real_escape_string(round($cl['money']*1,2))."','-51".$pu['id']."','0','".time()."');"); mysql_query ('UPDATE `users` SET `money2` = `money2` + 50 WHERE `id` = "'.$pu['id'].'" LIMIT 1;'); - //$txt = ' : '.round($cl['money']*1,2).' . : '.date('d.m.Y H:i',time()).''; - $txt = ' : 50 . : '.date('d.m.Y H:i',time()).''; + //$txt = 'Деньги от Администрации: '.round($cl['money']*1,2).' кр. Прибытие: '.date('d.m.Y H:i',time()).''; + $txt = 'Возварт за регистрацию клана от Администрации: 50 екр. Зачисленны: '.date('d.m.Y H:i',time()).''; mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES("'.$pu['id'].'","0","'.time().'", 0,"'.mysql_real_escape_string($txt).'")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! ','-1','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от Администрации','-1','5','0')"); } } @@ -1391,7 +1391,7 @@ function closeMod() while($pl = mysql_fetch_array($sp)) { echo '
            #'.$pl['id'].' | - '.date('d.m.y H:i',$pl['time']).' / '.$pl['money'].'.00 . + '.date('d.m.y H:i',$pl['time']).' / '.$pl['money'].'.00 кр. | '. ''. @@ -1411,17 +1411,17 @@ function closeMod() | | - + Сайт и Описание | -    |  +    | 
            '; } @@ -1436,23 +1436,23 @@ function closeMod() $uad = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['add_item_to_login']).'" LIMIT 1')); if( isset($uad['id'])) { $u->addItem(round((int)$_POST['add_item_to_user']),$uad['id']); - mysql_query('INSERT INTO `users_delo` (`onlyAdmin`,`hb`,`uid`,`time`,`city`,`text`,`login`,`ip`) VALUES ("1","0","'.$uad['id'].'","'.time().'","'.$uad['city'].'","'.$rang.' "'.$u->info['login'].'" : '.round((int)$_POST['add_item_to_user']).' '.$uad['login'].'.","'.$u->info['login'].'","'.$u->info['ip'].'")'); - echo ' '; + mysql_query('INSERT INTO `users_delo` (`onlyAdmin`,`hb`,`uid`,`time`,`city`,`text`,`login`,`ip`) VALUES ("1","0","'.$uad['id'].'","'.time().'","'.$uad['city'].'","'.$rang.' "'.$u->info['login'].'" выдал предмет: №'.round((int)$_POST['add_item_to_user']).' персонажу '.$uad['login'].'.","'.$u->info['login'].'","'.$u->info['ip'].'")'); + echo 'Предмет был доставлен к персонажу'; }else{ - echo ' '; + echo 'Персонаж не найден'; } } ?>
            - - + Выдать предмет персонажу +
            - "" , .
            + Добавить в "дело" игрока заметку о нарушении правил, накрутке и пр.
            info['align']>1 && $u->info['align']<2 && $usr['align']>3 && $usr['align']<4) || ($usr['align']>1 && $usr['align']<2 && $u->info['align']>3 && $u->info['align']<4) || $usr['admin']>$u->info['admin']) { - $er = ' "'.$_POST['loginLD'].'" .'; + $er = 'Персонаж "'.$_POST['loginLD'].'" носит вражескую склонность.'; }else{ - // + //Заносим данные в ЛД $lastD = mysql_fetch_array(mysql_query('SELECT `id` FROM `users_delo` WHERE `login` = "'.$u->info['login'].'" AND `time`>'.(time()-3).' LIMIT 1')); if(!isset($lastD['id'])) { @@ -1477,19 +1477,19 @@ function closeMod() if(isset($_POST['hbldt'])) { $hbld2 = 1; } - $ins = mysql_query('INSERT INTO `users_delo` (`onlyAdmin`,`hb`,`uid`,`time`,`city`,`text`,`login`,`ip`) VALUES ("'.$hbld2.'","'.$hbld.'","'.$usr['id'].'","'.time().'","'.$usr['city'].'","'.$rang.' "'.$mod_login.'" : '.mysql_real_escape_string(htmlspecialchars($_POST['textLD'],NULL,'cp1251')).'","'.$u->info['login'].'","'.$u->info['ip'].'")'); + $ins = mysql_query('INSERT INTO `users_delo` (`onlyAdmin`,`hb`,`uid`,`time`,`city`,`text`,`login`,`ip`) VALUES ("'.$hbld2.'","'.$hbld.'","'.$usr['id'].'","'.time().'","'.$usr['city'].'","'.$rang.' "'.$mod_login.'" сообщает: '.mysql_real_escape_string(htmlspecialchars($_POST['textLD'],NULL)).'","'.$u->info['login'].'","'.$u->info['ip'].'")'); if(!$ins) { - $er = ' '; + $er = 'Ошибка записи в личное дело'; }else{ - $er = ' '; + $er = 'Запись в личное дело прошла успешно'; } }else{ - $er = ' 3 .'; + $er = 'Писать пометки в личном деле можно не чаще одного раза в 3 секунды.'; } } }else{ - $er = ' "'.$_POST['loginLD'].'" .'; + $er = 'Персонаж с логином "'.$_POST['loginLD'].'" не найден.'; } if($er!='') { @@ -1497,19 +1497,19 @@ function closeMod() } } ?> - + Введите логин - - + Сообщение +
            info['admin'] > 0) { ?>
            genInv(1,'`iu`.`id` = "'.mysql_real_escape_string($_POST['itemID1']).'" LIMIT 1'); if($its[0] == 0) { - $its = ' .'; + $its = 'Предмет не найден.'; }else{ $its = $its[2]; } - echo '

            id'.$_POST['itemID1'].':
            '.$its; + echo '

            Предмет id'.$_POST['itemID1'].':
            '.$its; } ?>
            - ( ) + Проверить наличие предмета у персонажа (не обязательно) - , id + , id предмета - +
            -

            /

            - +

            Показать переводы кредитов/вещей

            + Просмотр действий персонажа

            /> - + переводы , /> - + банк , /> - / + покупка / ремонт , /> - + работа с инвентарем , /> - , - /> , +поединки , + /> добавление предметов, - />
            + /> почта
            - + За дату - +
            - : , : + Дата логов: , логин:
            '.date('d.m.Y H:i',$pl1['time']).' / :'.$pl1['text'].' '.$dseetext; + $dsee['dv'] .= ''.date('d.m.Y H:i',$pl1['time']).' / Почтовая посылка:'.$pl1['text'].' '.$dseetext; $dsee['dv'] .= '
            '; $dseetext=""; } @@ -1636,41 +1636,41 @@ function closeMod() echo '
            '; while($pl1 = mysql_fetch_array($sp1)) { - $pl1['text'] = ' '; + $pl1['text'] = ' Персонаж '; if( $pl1['type'] == 1 ) { - $pl1['text'] .= ' : '.$pl1['val'].' .'; + $pl1['text'] .= 'снял кредиты с казны клана: '.$pl1['val'].' кр.'; }elseif( $pl1['type'] == 2 ) { - $pl1['text'] .= ' : '.$pl1['val'].' .'; + $pl1['text'] .= 'положил кредиты в казну клана: '.$pl1['val'].' кр.'; }elseif( $pl1['type'] == 5 ) { - $pl1['text'] .= ' "'.$pl1['val'].'" .'; + $pl1['text'] .= 'взял предмет "'.$pl1['val'].'" из хранилища клана.'; }elseif( $pl1['type'] == 4 ) { - $pl1['text'] .= ' "'.$pl1['val'].'" .'; + $pl1['text'] .= 'пожертвовал предмет "'.$pl1['val'].'" в хранилище клана.'; }elseif( $pl1['type'] == 7 ) { - $pl1['text'] .= ' "'.$pl1['val'].'" . ( )'; + $pl1['text'] .= 'получил предмет "'.$pl1['val'].'" из хранилища клана. (Самостоятельный выход)'; }elseif( $pl1['type'] == 8 ) { - $pl1['text'] .= ' "'.$pl1['val'].'" . ( )'; + $pl1['text'] .= 'получил предмет "'.$pl1['val'].'" из хранилища клана. (Был изгнан из клана)'; }elseif( $pl1['type'] == 3 ) { - $pl1['text'] .= ' "'.$pl1['val'].'" .'; + $pl1['text'] .= 'изменил баланс клана "'.$pl1['val'].'" в хранилища клана.'; } elseif( $pl1['type'] == 6 ) { - $pl1['text'] .= ' "'.$pl1['val'].'".'; + $pl1['text'] .= 'изъял предмет "'.$pl1['val'].'".'; } elseif( $pl1['type'] == 9 ) { - $pl1['text'] .= ' "'.$pl1['val'].'". [ ( )]'; + $pl1['text'] .= 'вернул предмет "'.$pl1['val'].'". [Выход из клана (Возврат вещей не пренадлежащих персонажу)]'; }else{ - $pl1['text'] .= ' . : '.$pl1['val'].' / '.$pl1['type'].''; + $pl1['text'] .= 'Незивестная ошибка. Код: '.$pl1['val'].' / '.$pl1['type'].''; } - $dsee['dv'] .= ''.date('d.m.Y H:i',$pl1['time']).' / :'.$pl1['text'].' '.$dseetext; + $dsee['dv'] .= ''.date('d.m.Y H:i',$pl1['time']).' / Клановая казна:'.$pl1['text'].' '.$dseetext; $dsee['dv'] .= '
            '; $dseetext=""; } if($dsee['dv']=='') { - echo ' '.$dsee['date'].' .'; + echo 'Действий и переводов за '.$dsee['date'].' не найдено.'; }else{ echo $dsee['dv']; } }else{ - echo ' , ...'; + echo 'Персонаж не найден, либо его дело нельзя просматривать...'; } ?> @@ -1681,43 +1681,43 @@ function closeMod() if(isset($_POST['pometka52015'])) { $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['loginLD52015']).'" ORDER BY `id` ASC LIMIT 1')); if(!isset($uu['id'])) { - echo '
            !
            '; + echo '
            Персонаж не найден!
            '; }elseif($u->info['admin'] == 0 && $uu['align'] > 1 && $uu['align'] < 2 && $a != 1) { - echo '
            '; + echo '
            Вы не можете поменять звание этому паладину
            '; }elseif($u->info['admin'] == 0 && $uu['align'] > 3 && $uu['align'] < 4 && $a != 3) { - echo '
            '; + echo '
            Вы не можете поменять звание этому тарману
            '; }elseif( $a == 1 && ($uu['align'] <= 1 || $uu['align'] >=2 || ($uu['admin'] > 0 && $u->info['admin'] == 0) || ($uu['align'] > $u->info['align'] && $u->info['admin'] == 0)) ) { - echo '
            !
            '; + echo '
            Вы не можете поменять звание этому персонажу!
            '; }elseif( $a == 3 && ($uu['align'] <= 3 || $uu['align'] >=4 || ($uu['admin'] > 0 && $u->info['admin'] == 0) || ($uu['align'] > $u->info['align'] && $u->info['admin'] == 0)) ) { - echo '
            '; + echo '
            Вы не можете поменять звание этому персонажу
            '; }else{ $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } if( $a == 1 ) { - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' ('.$uu['align'].') "'.htmlspecialchars($_POST['textLD52015']).'".'; + $rtxt = $rang.' "'.$u->info['login'].'" поменял'.$sx.' звание паладина ('.$uu['align'].') на "'.htmlspecialchars($_POST['textLD52015']).'".'; }elseif( $a == 3 ) { - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' ('.$uu['align'].') "'.htmlspecialchars($_POST['textLD52015']).'".'; + $rtxt = $rang.' "'.$u->info['login'].'" поменял'.$sx.' звание тармана ('.$uu['align'].') на "'.htmlspecialchars($_POST['textLD52015']).'".'; } mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".mysql_real_escape_string($rtxt)."','".$u->info['login']."',0)"); - echo '
            !
            '; + echo '
            Вы успешно поменяли звание персонажу!
            '; mysql_query('UPDATE `users` SET `mod_zvanie` = "'.mysql_real_escape_string($_POST['textLD52015']).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); } } ?>
            -

            - +

            Изменить звание

            + Введите логин Новое звание
            -

            - +

            Проверка инвентаря персонажа

            + Введите логин
            :
            '.$ret.'
            '; + echo '
            Сообщение найдено:
            '.$ret.'
            '; }else{ - echo '
            . .
            '; + echo '
            Сообщение не найдено. Возможно оно было удалено.
            '; } } ?>
            -

            - HH:ii (:, ) +

            Проверка сообщения

            + Введите время HH:ii (Час:Минуты, сейчас ) Текст сообщения
            info['align'] > 1 && $u->info['align'] < 2) { - $zvnt = ' '.$mod_login.' '; - $zvno = ' '; + $zvnt = 'Паладин '.$mod_login.' сообщает'; + $zvno = 'Орден Света'; }elseif($u->info['align'] > 3 && $u->info['align'] < 4) { - $zvnt = ' '.$mod_login.' '; - $zvno = ''; + $zvnt = 'Модератор '.$mod_login.' сообщает'; + $zvno = 'Модератор'; }elseif($u->info['admin'] > 0) { - $zvnt = ' '; - $zvno = ''; + $zvnt = 'Администрация сообщает'; + $zvno = 'Администрация'; }else{ - $zvnt = ' .'; - $zvno = ''; + $zvnt = 'Администрация сообщает.'; + $zvno = 'Администрация'; } - mysql_query('INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`) VALUES ("'.$tous['id'].'","'.$zvno.'","'.$zvnt.'","'.mysql_real_escape_string(htmlspecialchars($_POST['textLD5'],NULL,'cp1251')).'","'.time().'")'); - echo ' '; + mysql_query('INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`) VALUES ("'.$tous['id'].'","'.$zvno.'","'.$zvnt.'","'.mysql_real_escape_string(htmlspecialchars($_POST['textLD5'],NULL)).'","'.time().'")'); + echo 'Сообщение успешно отправлено'; }else{ - echo ' ...'; + echo 'Персонаж не найден...'; } } ?>
            -

            - +

            Отправить телеграф

            + Введите логин Сообщение
            info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4) || $u->info['admin'] > 0) { ?>
            -

            +

            Просмотр списка невидимок

            "'.time().'"'); @@ -1792,38 +1792,38 @@ function closeMod() $html .= $u->microLogin($pl['id'],1) . ' -> '.$pl['login'].' (id '.$pl['id'].')
            '; } if($html == '') { - $html = ' -'; + $html = 'Нет персонажей-невидимок'; } echo $html.'
            '; } ?> - +
            info['align'] > 1 && $u->info['align'] < 2 && $u->info['admin'] == 0) { - $zvnt = ' '.$mod_login.' :'; - $zvno = ' '; + $zvnt = 'Паладин '.$mod_login.' сообщает:'; + $zvno = 'Орден Света'; }elseif($u->info['align'] > 3 && $u->info['align'] < 4 && $u->info['admin'] == 0) { - $zvnt = ' '.$mod_login.' :'; - $zvno = ''; + $zvnt = 'Модератор '.$mod_login.' сообщает:'; + $zvno = 'Модератор'; }elseif($u->info['admin'] > 0) { - $zvnt = ' '.$mod_login.' :'; - $zvno = ''; + $zvnt = 'Администратор '.$mod_login.' сообщает:'; + $zvno = 'Администрация'; }else{ - $zvnt = ' :'; - $zvno = ''; + $zvnt = 'Администрация сообщает:'; + $zvno = 'Администрация'; } if(isset($_POST['pometka577'])) { //$tous = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['loginLD5']).'" LIMIT 1')); //if(isset($tous['id'])) { - //mysql_query('INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`) VALUES ("'.$tous['id'].'","'.$zvno.'","'.$zvnt.'","'.mysql_real_escape_string(htmlspecialchars($_POST['textLD5'],NULL,'cp1251')).'","'.time().'")'); + //mysql_query('INSERT INTO `telegram` (`uid`,`from`,`tema`,`text`,`time`) VALUES ("'.$tous['id'].'","'.$zvno.'","'.$zvnt.'","'.mysql_real_escape_string(htmlspecialchars($_POST['textLD5'],NULL)).'","'.time().'")'); if(isset($_POST['hbld577'])) { $_POST['textLD577'] = ''.$zvnt.' '.$_POST['textLD577']; }else{ - $_POST['textLD577'] = ''.$zvno.' : '.$_POST['textLD577']; + $_POST['textLD577'] = ''.$zvno.' сообщает: '.$_POST['textLD577']; } mysql_query('INSERT INTO `chat` (`invis`,`da`,`delete`,`molch`,`new`,`login`,`to`,`city`,`room`,`time`,`type`,`spam`,`text`,`toChat`,`color`,`typeTime`,`sound`,`global`) VALUES ( "'.$u->info['invis'].'", @@ -1844,17 +1844,17 @@ function closeMod() "0", "0", "0")'); - echo ' '; + echo 'Сообщение успешно отправлено'; //}else{ - // echo ' ...'; + // echo 'Персонаж не найден...'; //} } ?>
            -

            - +

            Мегафон

            + Сообщение
            - "" + Отправить сообщение от своего логина ""
            -

            - +

            Регистрации персонажей

            + Дата регистрации - + = '.$pld520TS.' AND `users`.`timereg` < '.($pld520TS+86400).' ORDER BY `users`.`id` ASC'); $i = 1; - echo '
            '.$pld520.''; + echo '
            Персонажи зарегистрированные '.$pld520.''; while( $pl = mysql_fetch_array($sp) ) { $urt5202 = '
            '.$i.'. '.$u->microLogin($pl['id'],1).''; @@ -1888,13 +1888,13 @@ function closeMod() $urt5202 = ''.$urt5202.''; } if( $pl['molch1'] > time() ) { - $urt5202 .= ' '; + $urt5202 .= ' '; } if( $pl['battle'] > 0 ) { - $urt5202 .= ' '; + $urt5202 .= ' '; } if( $pl['host_reg'] > 0 ) { - $urt5202 .= '   ( '.$u->microLogin($pl['host_reg'],1).')'; + $urt5202 .= '   (Реферал персонажа '.$u->microLogin($pl['host_reg'],1).')'; } $urt520 .= $urt5202; $i++; @@ -1905,9 +1905,9 @@ function closeMod() ?>
            -

            ip- ( 100)

            - ip- - +

            Авторизации с ip-адреса (последние 100)

            + Введите ip-адрес +
            '; $r .= ''.$i.'. '.$ursz[$pl['uid']].''; if($pl['type']==3) { - $r .= ''; + $r .= 'неудачно'; }else{ - $r .= ''; + $r .= 'успешно'; } $r .= '   '.date('d.m.Y H:i',$pl['time']).''; @@ -1939,12 +1939,12 @@ function closeMod() } } - echo '   100 ip-:'.$_POST['loginLD51'].'
            '; + echo '   Список последних 100 авторизаций с ip-адресом:'.$_POST['loginLD51'].'
            '; if($r == '') { if(isset($_POST['pometka53'])) { - echo '
            ip- ()
            '; + echo '
            Авторизации с данным ip-адресом не найдены (неудачные)
            '; }else{ - echo '
            ip-
            '; + echo '
            Авторизации с данным ip-адресом не найдены
            '; } }else{ echo $r; @@ -1965,11 +1965,11 @@ function closeMod() $dsee['date'] = date('d.m.Y',$dsee['t1']); ?>
            -

            +

            Показать лог действий модераторов

            - - - + Показать действия за + Логин модератора +
            '; $rdl .= '
            '.date('d.m.Y H:i:s',$pl['time']).'
            '; - $rdl .= $pl['text'].' '.$u->microLogin($pl['uid'],1); + $rdl .= $pl['text'].' персонажу '.$u->microLogin($pl['uid'],1); $rdl .= '
            '; } if($rdl == '') { - $rdl = ' '; + $rdl = 'Модератор не совершал действий за данное число'; } echo $rdl; } @@ -1991,9 +1991,9 @@ function closeMod()




            :

            .
            '; + echo $merror.'



            Для входа в панель требуется пароль
            Введите пароль:
            Если Вы не угадаете пароль больше трех раз
            доступ в панель будет заблокирован на сутки.
            '; } } diff --git a/modules_data/_mod2.php b/modules_data/_mod2.php index af190f60..a8beef99 100644 --- a/modules_data/_mod2.php +++ b/modules_data/_mod2.php @@ -8,12 +8,12 @@ if(isset($_GET['light'])) { $url = 'light'; } if(isset($_GET['dark'])) { $url = 'dark'; } $pr = array( - 0 => 1, // - 1 => 0, // - 2 => 0, // - 3 => 0, // - 4 => 0, // - 5 => 0 //1 + 0 => 1, //молчанки + 1 => 0, //принять + 2 => 0, //выгнать + 3 => 0, //изменить звание + 4 => 0, //редактирование новостной ленты + 5 => 0 //1 если является главой ордена ); $align = $u->info['align']; @@ -25,10 +25,10 @@ if( $u->info['admin'] > 0 ) { } } -// +//Покинуть ОМ if( isset($_GET['exitsm']) ) { if( $pr[5] > 0 ) { - $u->error = ' .'; + $u->error = 'Вы являетесь Главой Ордена и не можете его покинуть.'; }else{ $align = 0; if( $u->info['clan'] > 0 ) { @@ -38,34 +38,34 @@ if( isset($_GET['exitsm']) ) { $u->info['align'] = $align; unset($align); mysql_query('UPDATE `users` SET `align` = "'.$u->info['align'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' !'; + $u->error = 'Вы успешно покинули Орден Модераторов!'; $fastend = true; } } -// +//Сотрудники ОМ $sx = 0; $sh = ''; $sp = mysql_query('SELECT `id`,`align`,`login` FROM `users` WHERE (`align` > 1 AND `align` < 2) OR (`align` > 3 AND `align` < 4) ORDER BY `align` DESC'); while( $pl = mysql_fetch_array($sp) ) { - $pr = ''; + $pr = ''; if( $pl['align'] == 1.99 ) { - $sh .= '
            '.$pr.' '.$u->microLogin($pl['id'],1).' -
            '; + $sh .= '
            '.$pr.' '.$u->microLogin($pl['id'],1).' - Глава Ордена
            '; }else{ $sh .= '
            '.$pr.' '.$u->microLogin($pl['id'],1).'
            '; } $sx++; } if( $sh == '' ) { - $sh= '
            '; + $sh= '
            Сотрудников нет
            '; } ?> - +

            Орден Модераторов

            - - + +
            @@ -99,47 +99,47 @@ if( $u->error != '' ) {
            - + Возможности
            - + Кнопки 0 ) { ?> - + 0 ) { ?> - + 0 ) { ?> - + info['admin'] > 0 ) { ?> - +
            - - + Абилки + Нет абилок
            - + Сотрудники
            diff --git a/modules_data/_mods.php b/modules_data/_mods.php index 567f5549..2dabb8e9 100644 --- a/modules_data/_mods.php +++ b/modules_data/_mods.php @@ -18,25 +18,25 @@ function w(login,id,align,klan,level,online, city, battle){ var s=''; if (online!="") { if (city!="") { -s+='  '; +s+='В другом городе'; } else { -s+=''; +s+='Приватно'; } if (city!="") { s+=''; } s+=' '; if (klan!='') {s+=''} -s+=''+login+'['+level+']  '; +s+=''+login+'['+level+']Информация о персонаже'; s+=''; if (city!="") { -s+=" "; +s+="нет в этом городе"; } else { s+=online; } } else { -s+='  '; +s+='Нет в клубе'; if (city!="") { s+=''; } @@ -47,14 +47,14 @@ if (level) { if (nlevel==0) { nlevel=1; //s="
            "+s; } -s+=''+login+'['+level+']  '; +s+=''+login+'['+level+']Информация о персонажеНет в клубе'; } else { if (nlevel==1) { nlevel=2; //s="
            "+s; } mlogin = login; for(var i=0;i=0) mlogin= mlogin.replace(from[i],to[i]); -s+=''+login+'   '; +s+=''+login+' Информация о персонаженет в этом городе'; } s+=''; } @@ -66,13 +66,13 @@ document.write(s+'
            ');
            - +
            -

            +

            Орден Света

            info['id'].'","2","0" )') ) { $slot = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal_slot` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); }else{ - $u->error = ' ...'; + $u->error = 'Ошибка в работе базы данных...'; } } @@ -51,7 +51,7 @@ $an_eda = array( function en_ru($txt) { $g = false; $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9-- _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } @@ -59,7 +59,7 @@ function en_ru($txt) { } // function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM޸'; + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; $r = false; $i = 0; while( $i != -1 ) { @@ -90,11 +90,11 @@ function testBad($txt) { function is_login_an($login) { $r = true; // - $login = htmlspecialchars($login,NULL,'cp1251'); + $login = htmlspecialchars($login,NULL); // $bad = array( - '' => 1, - '' => 1 + 'Мусорщик' => 1, + 'Мироздатель' => 1 ); // //$login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); @@ -105,8 +105,8 @@ function is_login_an($login) { $true = true; // /* - 2 16 , , , '_', '-' . - '_', '-' . + Логин может содержать от 2 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. */ // $login = str_replace(' ',' ',$login); @@ -127,7 +127,7 @@ function is_login_an($login) { $true = false; }elseif( testBad($login) == true ) { $true = false; - }elseif( en_ru(str_replace('','',str_replace('','',$login))) == true ) { + }elseif( en_ru(str_replace('ё','е',str_replace('Ё','Е',$login))) == true ) { $true = false; } // @@ -142,33 +142,33 @@ function is_login_an($login) { if(isset($_GET['buy_slot'])) { if($u->info['money2'] < $slot['price_nex']) { - $u->error = ' '; + $u->error = 'Недостаточно денег'; }elseif($u->info['money2'] < 5 ) { - $u->error = ' !'; + $u->error = 'Недостаточно екр!'; }elseif( isset($slot['id']) && $slot['slots'] < 7 ) { $slot['slots']++; $u->info['money2'] -= 5; mysql_query('UPDATE `users_animal_slot` SET `slots` = "'.$slot['slots'].'" WHERE `id` = "'.$slot['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' .'; + $u->error = 'Куплен слот для зверя.'; }else{ - $u->error = ' '; + $u->error = 'Нельзя купить больше слотов'; } }elseif(isset($_GET['pet'])) { $_GET['pet'] = round((int)$_GET['pet']); - $_GET['petname'] = htmlspecialchars($_GET['petname'],NULL,'cp1251'); + $_GET['petname'] = htmlspecialchars($_GET['petname'],NULL); $ax = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users_animal` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1')); $ax = $ax[0]; if( $_GET['pet'] < 1 || $_GET['pet'] > 7 ) { - $u->error = ' '; + $u->error = 'Нельзя привзвать такого зверя'; }elseif( $ax >= $slot['slots'] ) { - $u->error = ' '; + $u->error = 'Нет свободных слотов для зверя'; }elseif( $u->info['money'] < 50 ) { - $u->error = ' '; + $u->error = 'Недостаточно денег'; }elseif(is_login_an($_GET['petname']) == false) { - $u->error = ' , '; + $u->error = 'Неверная кличка зверя, выберите другую'; }else{ - $u->error = ' !'; + $u->error = 'Зверь пришел к Вам!'; $u->info['money'] -= 50; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); // @@ -176,43 +176,43 @@ if(isset($_GET['buy_slot'])) { // if($anm['type']==1) { - $anm['name'] = ''; + $anm['name'] = 'Кот'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'20864.gif',2=>'21301.gif',3=>'21139.gif',4=>'20427.gif'); $anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==2) { - $anm['name'] = ''; + $anm['name'] = 'Сова'; $anm['sex'] = 1; $anm['obraz'] = array(1=>'21415.gif',2=>'21722.gif',3=>'21550.gif'); $anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==3) { - $anm['name'] = ''; + $anm['name'] = 'Светляк'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22277.gif',2=>'22265.gif',3=>'22333.gif',4=>'22298.gif'); $anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10'; }elseif($anm['type']==4) { - $anm['name'] = ''; + $anm['name'] = 'Чертяка'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22177.gif',2=>'21976.gif',3=>'21877.gif'); $anm['stats'] = 's1=25|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10'; }elseif($anm['type']==5) { - $anm['name'] = ''; + $anm['name'] = 'Пес'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22352.gif',2=>'23024.gif',3=>'22900.gif',4=>'22501.gif',5=>'22700.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==6) { - $anm['name'] = ''; + $anm['name'] = 'Свин'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'24000.gif',2=>'25000.gif',3=>'27000.gif',4=>'28000.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==7) { - $anm['name'] = ''; + $anm['name'] = 'Дракон'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'21338_pgtpdbx.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; @@ -227,9 +227,9 @@ if(isset($_GET['buy_slot'])) { $ins = mysql_query('INSERT INTO `users_animal` (`type`,`name`,`uid`,`obraz`,`stats`,`sex`,`eda`) VALUES ("'.$anm['type'].'","'.$anm['name'].'","'.$u->info['id'].'","'.$anm['obraz'].'","'.$anm['stats'].'","'.$anm['sex'].'","0")'); if($ins) { - $u->addDelo(1,$u->info['id'],'"System.inventory": "'.$_GET['petname'].'" ('.$_GET['pet'].') - 50 .',time(),$u->info['city'],'System.inventory',0,0); + $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж призвал зверя "'.$_GET['petname'].'" ('.$_GET['pet'].') - 50 кр.',time(),$u->info['city'],'System.inventory',0,0); }else{ - $u->error = ' , - ...'; + $u->error = 'Не удалось призвать зверя, что-то здесь не так ...'; } // } @@ -241,13 +241,13 @@ if(isset($_GET['buy_slot'])) { if($x < 1) { $x = 1; } if($x > 100) { $x = 100; } if(!isset($anm['id'])) { - $u->error = ' .'; + $u->error = 'Зверь не найден.'; }elseif( $anm['eda'] >= 100 ) { - $u->error = ' .'; + $u->error = 'Зверь сыт и не нуждается в еде.'; }elseif($an_eda[$anm['level']]*$_GET['vvv'] > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег.'; }else{ - $u->error = ' "'.$anm['name'].'" '.$x.' . '.($x*$an_eda[$anm['level']]).' .'; + $u->error = 'Покормили зверя "'.$anm['name'].'" на '.$x.' ед. за '.($x*$an_eda[$anm['level']]).' кр.'; $u->info['money'] -= ($x*$an_eda[$anm['level']]); $anm['eda'] += $x; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -255,30 +255,30 @@ if(isset($_GET['buy_slot'])) { } }elseif(isset($_GET['pet_del'])) { if(mysql_query('UPDATE `users_animal` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($_GET['pet_del']).'" AND `delete` = 0 AND `uid` = "'.$u->info['id'].'" LIMIT 1')) { - $u->error = ' .'; + $u->error = 'Зверь был выгнан.'; }else{ - $u->error = ' .'; + $u->error = 'Зверь не найден.'; } }elseif(isset($_GET['rename'])) { $anm = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `id` = "'.mysql_real_escape_string($_GET['rename']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1')); - $_GET['vvv'] = htmlspecialchars($_GET['vvv'],NULL,'cp1251'); + $_GET['vvv'] = htmlspecialchars($_GET['vvv'],NULL); if(!isset($anm['id'])) { - $u->error = ' .'; + $u->error = 'Зверь не найден.'; }elseif(30 > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег.'; }else{ $u->info['money'] -= 30; $anm['name'] = $_GET['vvv']; - $u->error = ' "'.$anm['name'].'" 30 .'; + $u->error = 'Кличка зверя изменена на "'.$anm['name'].'" за 30 кр.'; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users_animal` SET `name` = "'.$anm['name'].'" WHERE `id` = "'.$anm['id'].'" LIMIT 1'); } }elseif(isset($_GET['shadow']) && $petox > 0) { if(isset($_GET['rechange'])) { - $u->error = ' .'; + $u->error = 'Образ питомца снят.'; mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "'.$u->info['id'].'"'); }elseif(isset($_GET['change'])) { - $u->error = ' .'; + $u->error = 'Образ питомца установлен.'; mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "'.$u->info['id'].'"'); mysql_query('UPDATE `obraz_pet` SET `use` = 1 WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['change']).'" LIMIT 1'); } @@ -327,21 +327,21 @@ if(isset($_GET['buy_slot'])) { widows:120px; } -
            : info['money']?> .
            +
            Ваши деньги: info['money']?> кр.
            0 ) { - echo ' '; + echo ' '; }else{ - echo ' '; + echo ' '; } ?> -   - +   + -   - +   +
            error != '' ) { // echo '
            '; if( $pl['use'] == 0 ) { - echo ''; + echo ''; }else{ - echo ''; + echo ''; } echo '
            '; // @@ -385,18 +385,18 @@ if( $u->error != '' ) { mysql_query('UPDATE `users` SET `animal` = "'.$u->info['animal'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); } // - //$kp = 0.05; // + //$kp = 0.05; //цена корма $kp = $an_eda[$pl['level']]; //$kp = $an_eda[1]; // echo ''; + echo ''; }else{ if( $j == 0 ) { - echo ''; + echo ''; $j++; }else{ - echo ''; + echo ''; } } $i++; diff --git a/modules_data/_newanimal.php b/modules_data/_newanimal.php index eeb92853..abdea4f5 100644 --- a/modules_data/_newanimal.php +++ b/modules_data/_newanimal.php @@ -14,7 +14,7 @@ if(!isset($slot['id'])) { if( mysql_query('INSERT INTO `users_animal_slot` ( `uid`,`slots`,`ekr` ) VALUES ( "'.$u->info['id'].'","2","0" )') ) { $slot = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal_slot` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); }else{ - $u->error = ' ...'; + $u->error = 'Ошибка в работе базы данных...'; } } @@ -51,7 +51,7 @@ $an_eda = array( function en_ru($txt) { $g = false; $en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([0-9-- _-])+)$/i", $txt); + $ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; } @@ -59,7 +59,7 @@ function en_ru($txt) { } // function testBad($txt) { - $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM޸'; + $white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю'; $r = false; $i = 0; while( $i != -1 ) { @@ -90,11 +90,11 @@ function testBad($txt) { function is_login_an($login) { $r = true; // - $login = htmlspecialchars($login,NULL,'cp1251'); + $login = htmlspecialchars($login,NULL); // $bad = array( - '' => 1, - '' => 1 + 'Мусорщик' => 1, + 'Мироздатель' => 1 ); // //$login_db = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.mysql_real_escape_string($login).'" LIMIT 1')); @@ -105,8 +105,8 @@ function is_login_an($login) { $true = true; // /* - 2 16 , , , '_', '-' . - '_', '-' . + Логин может содержать от 2 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела. + Логин не может начинаться или заканчиваться символами '_', '-' или пробелом. */ // $login = str_replace(' ',' ',$login); @@ -127,7 +127,7 @@ function is_login_an($login) { $true = false; }elseif( testBad($login) == true ) { $true = false; - }elseif( en_ru(str_replace('','',str_replace('','',$login))) == true ) { + }elseif( en_ru(str_replace('ё','е',str_replace('Ё','Е',$login))) == true ) { $true = false; } // @@ -142,33 +142,33 @@ function is_login_an($login) { if(isset($_GET['buy_slot'])) { if($u->info['money2'] < $slot['price_nex']) { - $u->error = ' '; + $u->error = 'Недостаточно денег'; }elseif($u->info['money2'] < 5 ) { - $u->error = ' !'; + $u->error = 'Недостаточно екр!'; }elseif( isset($slot['id']) && $slot['slots'] < 7 ) { $slot['slots']++; $u->info['money2'] -= 5; mysql_query('UPDATE `users_animal_slot` SET `slots` = "'.$slot['slots'].'" WHERE `id` = "'.$slot['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money2` = "'.$u->info['money2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' .'; + $u->error = 'Куплен слот для зверя.'; }else{ - $u->error = ' '; + $u->error = 'Нельзя купить больше слотов'; } }elseif(isset($_GET['pet'])) { $_GET['pet'] = round((int)$_GET['pet']); - $_GET['petname'] = htmlspecialchars($_GET['petname'],NULL,'cp1251'); + $_GET['petname'] = htmlspecialchars($_GET['petname'],NULL); $ax = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users_animal` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1')); $ax = $ax[0]; if( $_GET['pet'] < 1 || $_GET['pet'] > 7 ) { - $u->error = ' '; + $u->error = 'Нельзя привзвать такого зверя'; }elseif( $ax >= $slot['slots'] ) { - $u->error = ' '; + $u->error = 'Нет свободных слотов для зверя'; }elseif( $u->info['money'] < 50 ) { - $u->error = ' '; + $u->error = 'Недостаточно денег'; }elseif(is_login_an($_GET['petname']) == false) { - $u->error = ' , '; + $u->error = 'Неверная кличка зверя, выберите другую'; }else{ - $u->error = ' !'; + $u->error = 'Зверь пришел к Вам!'; $u->info['money'] -= 50; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); // @@ -176,49 +176,49 @@ if(isset($_GET['buy_slot'])) { // if($anm['type']==1) { - $anm['name'] = ''; + $anm['name'] = 'Кот'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'20864.gif',2=>'21301.gif',3=>'21139.gif',4=>'20427.gif'); $anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==2) { - $anm['name'] = ''; + $anm['name'] = 'Сова'; $anm['sex'] = 1; $anm['obraz'] = array(1=>'21415.gif',2=>'21722.gif',3=>'21550.gif'); $anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==3) { - $anm['name'] = ''; + $anm['name'] = 'Светляк'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22277.gif',2=>'22265.gif',3=>'22333.gif',4=>'22298.gif'); $anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10'; }elseif($anm['type']==4) { - $anm['name'] = ''; + $anm['name'] = 'Чертяка'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22177.gif',2=>'21976.gif',3=>'21877.gif'); $anm['stats'] = 's1=25|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10'; }elseif($anm['type']==5) { - $anm['name'] = ''; + $anm['name'] = 'Пес'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'22352.gif',2=>'23024.gif',3=>'22900.gif',4=>'22501.gif',5=>'22700.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==6) { - $anm['name'] = ''; + $anm['name'] = 'Свин'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'24000.gif',2=>'25000.gif',3=>'27000.gif',4=>'28000.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; }elseif($anm['type']==7) { - $anm['name'] = ''; + $anm['name'] = 'Дракон'; $anm['sex'] = 0; $anm['obraz'] = array(1=>'21338_pgtpdbx.gif'); $anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10'; } // - $anm['name'] = htmlspecialchars($_GET['petname'],NULL,'cp1251'); + $anm['name'] = htmlspecialchars($_GET['petname'],NULL); $anm['name'] = preg_replace("/&#?[a-z0-9]+;/i","", $anm['name']); // $anm['obraz'] = $anm['obraz'][rand(1,count($anm['obraz']))]; @@ -228,9 +228,9 @@ if(isset($_GET['buy_slot'])) { $ins = mysql_query('INSERT INTO `users_animal` (`type`,`name`,`uid`,`obraz`,`stats`,`sex`,`eda`) VALUES ("'.$anm['type'].'","'.$anm['name'].'","'.$u->info['id'].'","'.$anm['obraz'].'","'.$anm['stats'].'","'.$anm['sex'].'","0")'); if($ins) { - $u->addDelo(1,$u->info['id'],'"System.inventory": "'.$_GET['petname'].'" ('.$_GET['pet'].') - 50 .',time(),$u->info['city'],'System.inventory',0,0); + $u->addDelo(1,$u->info['id'],'"System.inventory": Персонаж призвал зверя "'.$_GET['petname'].'" ('.$_GET['pet'].') - 50 кр.',time(),$u->info['city'],'System.inventory',0,0); }else{ - $u->error = ' , - ...'; + $u->error = 'Не удалось призвать зверя, что-то здесь не так ...'; } // } @@ -242,13 +242,13 @@ if(isset($_GET['buy_slot'])) { if($x < 1) { $x = 1; } if($x > 100) { $x = 100; } if(!isset($anm['id'])) { - $u->error = ' .'; + $u->error = 'Зверь не найден.'; }elseif( $anm['eda'] >= 100 ) { - $u->error = ' .'; + $u->error = 'Зверь сыт и не нуждается в еде.'; }elseif($an_eda[$anm['level']]*$_GET['vvv'] > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег.'; }else{ - $u->error = ' "'.$anm['name'].'" '.$x.' . '.($x*$an_eda[$anm['level']]).' .'; + $u->error = 'Покормили зверя "'.$anm['name'].'" на '.$x.' ед. за '.($x*$an_eda[$anm['level']]).' кр.'; $u->info['money'] -= ($x*$an_eda[$anm['level']]); $anm['eda'] += $x; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -256,30 +256,30 @@ if(isset($_GET['buy_slot'])) { } }elseif(isset($_GET['pet_del'])) { if(mysql_query('UPDATE `users_animal` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($_GET['pet_del']).'" AND `delete` = 0 AND `uid` = "'.$u->info['id'].'" LIMIT 1')) { - $u->error = ' .'; + $u->error = 'Зверь был выгнан.'; }else{ - $u->error = ' .'; + $u->error = 'Зверь не найден.'; } }elseif(isset($_GET['rename'])) { $anm = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `id` = "'.mysql_real_escape_string($_GET['rename']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1')); - $_GET['vvv'] = htmlspecialchars($_GET['vvv'],NULL,'cp1251'); + $_GET['vvv'] = htmlspecialchars($_GET['vvv'],NULL); if(!isset($anm['id'])) { - $u->error = ' .'; + $u->error = 'Зверь не найден.'; }elseif(30 > $u->info['money']) { - $u->error = ' .'; + $u->error = 'Недостаточно денег.'; }else{ $u->info['money'] -= 30; $anm['name'] = preg_replace('/\W/', '', $_GET['vvv']); //$_GET['vvv']; - $u->error = ' "'.$anm['name'].'" 30 .'; + $u->error = 'Кличка зверя изменена на "'.$anm['name'].'" за 30 кр.'; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users_animal` SET `name` = "'.mysql_real_escape_string($anm['name']).'" WHERE `id` = "'.mysql_real_escape_string($anm['id']).'" LIMIT 1'); } }elseif(isset($_GET['shadow']) && $petox > 0) { if(isset($_GET['rechange'])) { - $u->error = ' .'; + $u->error = 'Образ питомца снят.'; mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "'.$u->info['id'].'"'); }elseif(isset($_GET['change'])) { - $u->error = ' .'; + $u->error = 'Образ питомца установлен.'; mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "'.$u->info['id'].'"'); mysql_query('UPDATE `obraz_pet` SET `use` = 1 WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['change']).'" LIMIT 1'); } @@ -328,21 +328,21 @@ if(isset($_GET['buy_slot'])) { widows:120px; } -
            : info['money']?> .
            +
            Ваши деньги: info['money']?> кр.
            0 ) { - echo ' '; + echo ' '; }else{ - echo ' '; + echo ' '; } ?> -   - +   + -   - +   +
            error != '' ) { // echo '
            '; if( $pl['use'] == 0 ) { - echo ''; + echo ''; }else{ - echo ''; + echo ''; } echo '
            '; // @@ -386,18 +386,18 @@ if( $u->error != '' ) { mysql_query('UPDATE `users` SET `animal` = "'.$u->info['animal'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); } // - //$kp = 0.05; // + //$kp = 0.05; //цена корма $kp = $an_eda[$pl['level']]; //$kp = $an_eda[1]; // echo ''; + echo ''; }else{ if( $j == 0 ) { - echo ''; + echo ''; $j++; }else{ - echo ''; + echo ''; } } $i++; diff --git a/modules_data/_obraz.php b/modules_data/_obraz.php index 8c4c71c9..a442d66f 100644 --- a/modules_data/_obraz.php +++ b/modules_data/_obraz.php @@ -34,8 +34,8 @@ if(!defined('GAME'))   
            microLogin($u->info['id'],1).'
            ';?>
            '; + $xh1 = ''; } ?> -

            ()

            +

            Ваши рефералы ()

            '; // - echo '
            '.$pl['name'].'
            '; + echo '
            '.$pl['name'].'
            '; // echo '
            '; // echo '
            '; - echo ': '.$pl['level'].'
            : '.$pl['exp'].'
            : '.$pl['eda'].'/100
            '; + echo 'Уровень: '.$pl['level'].'
            Опыт: '.$pl['exp'].'
            Сытность: '.$pl['eda'].'/100
            '; // echo '= 100 ) { @@ -404,16 +404,16 @@ if( $u->error != '' ) { }else{ echo ' onclick="top.eda('.$pl['id'].',\''.$pl['name'].'\','.(0+$kp).','.(0+100-$pl['eda']).');" '; } - echo 'type="button" value="" class="btn an_w120'; + echo 'type="button" value="Покормить" class="btn an_w120'; if( $pl['eda'] < 1 ) { echo ' btn-danger'; } echo '">'; // if( $pl['id'] != $u->info['animal'] || ( isset($_GET['selected']) && $pl['id'] != $_GET['selected'] ) ) { - echo ''; + echo ''; }else{ - echo ''; + echo ''; } // echo '
            '; @@ -425,13 +425,13 @@ if( $u->error != '' ) { $j = 0; while( $i <= 6 ) { if( $i <= $slot['slots'] ) { - echo '
             
             
             
             
             
             
            '; // - echo '
            '.$pl['name'].'
            '; + echo '
            '.$pl['name'].'
            '; // echo '
            '; // echo '
            '; - echo ': '.$pl['level'].'
            : '.$pl['exp'].'
            : '.$pl['eda'].'/100
            '; + echo 'Уровень: '.$pl['level'].'
            Опыт: '.$pl['exp'].'
            Сытность: '.$pl['eda'].'/100
            '; // echo '= 100 ) { @@ -405,16 +405,16 @@ if( $u->error != '' ) { }else{ echo ' onclick="top.eda('.$pl['id'].',\''.$pl['name'].'\','.(0+$kp).','.(0+100-$pl['eda']).');" '; } - echo 'type="button" value="" class="btn an_w120'; + echo 'type="button" value="Покормить" class="btn an_w120'; if( $pl['eda'] < 1 ) { echo ' btn-danger'; } echo '">'; // if( $pl['id'] != $u->info['animal'] || ( isset($_GET['selected']) && $pl['id'] != $_GET['selected'] ) ) { - echo ''; + echo ''; }else{ - echo ''; + echo ''; } // echo '
            '; @@ -426,13 +426,13 @@ if( $u->error != '' ) { $j = 0; while( $i <= 6 ) { if( $i <= $slot['slots'] ) { - echo '
             
             
             
             
             
             
              - - + +


            @@ -52,7 +52,7 @@ while($pl = mysql_fetch_array($sp)) { $t = $u->items['tr']; $x = 0; if( $pl['level'] > 0 ) { - $trd .= "\r".'• : '.$pl['level'].''; + $trd .= "\r".'• Уровень персонажа: '.$pl['level'].''; } if( $pl['itm'] > 0 ) { $pl['itm'] = explode(',',$pl['itm']); @@ -76,7 +76,7 @@ while($pl = mysql_fetch_array($sp)) { $j++; } if( $tritm != '' ) { - $trd .= "\r".'• : '.$tritm.''; + $trd .= "\r".'• Предметы: '.$tritm.''; } } while($x < count($t)) { @@ -92,7 +92,7 @@ while($pl = mysql_fetch_array($sp)) { if( ($pl['tr'] == '' && $pl['itm'] == '') || $tr == true ) { if( $trd != '' ) { - $trd = ' :'.$trd; + $trd = 'Требуется минимальное:'.$trd; } echo ' '; } diff --git a/modules_data/_quests.php b/modules_data/_quests.php index a4317d5c..c7054a4b 100644 --- a/modules_data/_quests.php +++ b/modules_data/_quests.php @@ -21,11 +21,11 @@ if($u->error!='') ?> - - + + - + @@ -39,27 +39,27 @@ if($u->error!='') { if($q->testGood($pl)==1) { - $urq = ''; + $urq = 'Подробнее'; if(isset($_GET['minfo']) && $_GET['minfo']==$pl['id']) { - $urq = ''; + $urq = 'Скрыть'; } $qsee .= ' - + '; unset($urq); if(isset($_GET['minfo']) && $_GET['minfo']==$pl['id']) { if($pl['city']!='') { - $gc = ' : '.$u->city_name[$pl['city']].''; + $gc = 'Город квеста: '.$u->city_name[$pl['city']].''; }else{ $gc = ' '; } $di = $q->info($pl); - $di .= '

            '; + $di .= 'Принять задание

            '; $qsee .= ' @@ -74,7 +74,7 @@ if($u->error!='') if($qsee == '') { - $qsee = ''; + $qsee = ''; } ?>

            , info['city']?>

            Доступные задания, info['city']?>

            Активные квесты  
            '.$pl['name'].'
            '.$urq.'
            : '.$pl['info'].'Описание: '.$pl['info'].'
            '.$gc.'  
            ,
            Для вас нет доступных заданий, приходите позже
            diff --git a/modules_data/_ref.php b/modules_data/_ref.php index bdd88675..e5b9ef56 100644 --- a/modules_data/_ref.php +++ b/modules_data/_ref.php @@ -48,51 +48,51 @@ function show(ele) {
            -

            +

            Реферальная Система

            - - + +
            -

            , .

            +

            С помощью реферальной системы Вы можете приводить в игру своих друзей используя ссылку ниже, и получать за это кредиты.

            - :
            - - 10% ;
            + При каждом пополнении баланса ЕКР Вашим рефералом Вы будете получать:
            + - 10% ЕКР от суммы пополнения реферала ;

            -

            : https://new-combats.com/rinfo['id']?>

            +

            Ваша ссылка на регистрацию для новых игроков: https://new-combats.com/rinfo['id']?>

            info['id'].'" LIMIT 1')); if(isset($rtg['id'])) { - echo '

            IP ( ): '.$u->microLogin($rtg['uid2'],1).'
            '. - '( IP !)

            '; + echo '

            Реферал с пересечением IP (разрешены бонусы только за этого реферала): '.$u->microLogin($rtg['uid2'],1).'
            '. + '(Сменить на другого реферала с одного IP больше нельзя!)

            '; } ?>
            - , : + За каждого приведенного в игру реферала,Вы будете получать:
            - - - - + + + +
            - + Уровень - + Награда за реферала
            80
            930
            1075
            11150
            80 КР
            930 ЕКР
            1075 ЕКР
            11150 ЕКР

            - . - . .
            - ! , "" . , .
            - , . + Разрешено создание не более одного реферала с одного айпи. Запрещена повторная регистрация одного и того же игрока по реферальной ссылке если он когда-либо уже играл. Реферальная система предусмотрена ТОЛЬКО ДЛЯ ПРИВЛЕЧЕНИЯ НОВЫХ ИГРОКОВ.
            + Внимание! Запрещены просьбы о перерегистрации имеющихся в игре игроков, с целью получения "бесплатного" реферала. Новые рефералы в любом случае проходят модерацию и при наличии нарушений обнуляются, а ваш аккаунт может получить наказание за нарушение правил реферальной системы.
            + Запрещается любая реклама реферальной ссылки внутри игры, в том числе размещение в анкете.

            У вас нет рефералов
            \ No newline at end of file diff --git a/modules_data/_ref2.php b/modules_data/_ref2.php index 78b567cb..b30f2d89 100644 --- a/modules_data/_ref2.php +++ b/modules_data/_ref2.php @@ -4,7 +4,7 @@ if(!defined('GAME') || !isset($_GET['referals'])) die(); } -die(' ...'); +die('Раздел в разработке...'); $tal = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = "4005" AND `delete` < 1234567890')); @@ -43,54 +43,54 @@ while($pl = mysql_fetch_array($sp)) } if($rfs['see']=='') { - $rfs['see'] = '
            , . !
            '; + $rfs['see'] = '
            К сожалению, у Вас нет воспитанников. Пригласите друзей сейчас!
            '; } if(isset($_GET['nastanew'])) { - $_GET['nastanew'] = htmlspecialchars($_GET['nastanew'],NULL,'cp1251'); + $_GET['nastanew'] = htmlspecialchars($_GET['nastanew'],NULL); $upr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`online`,`admin`,`banned`,`level`,`host_reg` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_GET['nastanew']).'" ORDER BY `id` ASC LIMIT 1')); if(isset($upr['id']) && $upr['inUser'] == 0) { $ch1 = mysql_fetch_array(mysql_query('SELECT * FROM `chat` WHERE `type` = 90 AND `to` = "'.$upr['login'].'" AND `time` > '.(time()-3600).' AND `login` = "'.$u->info['login'].'" LIMIT 1')); if(isset($ch1['id'])) { - $u->error = ' "'.$upr['login'].'". ( )'; + $u->error = 'Вы уже отправляли приглашение персонажу "'.$upr['login'].'". (Не чаще одного раза в час)'; }elseif($upr['login'] == $u->info['login']) { - $u->error = ' :) ?'; + $u->error = 'Хитро :) Наверное долго думали над этим?'; }elseif($upr['level'] > 9 && $u->info['admin'] == 0) { - $u->error = ' 9- '; + $u->error = 'Нельзя стать наставником персонажа старше 9-го уровня'; }elseif($upr['id'] == $u->info['host_reg']) { - $u->error = ' '; + $u->error = 'Нельзя стать воспитанником своего наставника'; }elseif($upr['online'] > time()-520) { if(is_int($upr['host_reg']) || $upr['host_reg'] > 0) { - $u->error = ' "'.$upr['login'].'" .'; + $u->error = 'У персонажа "'.$upr['login'].'" уже есть наставник.'; }else{ - $u->error = ' "'.$upr['login'].'" .'; + $u->error = 'Вы выслали приглашение персонажу "'.$upr['login'].'" стать вашим воспитанником.'; mysql_query('INSERT INTO `chat` (`login`,`to`,`type`,`new`,`time`) VALUES ("'.$u->info['login'].'","'.$upr['login'].'","90","1","'.time().'")'); } }else{ - $u->error = ' "'.$upr['login'].'" .'; + $u->error = 'Персонаж "'.$upr['login'].'" должен быть в онлайне.'; } }else{ - $u->error = ' "'.$_GET['nastanew'].'" .'; + $u->error = 'Персонаж с логином "'.$_GET['nastanew'].'" не найден.'; } }elseif(isset($_GET['nastayes'])) { - $_GET['nastayes'] = htmlspecialchars($_GET['nastayes'],NULL,'cp1251'); + $_GET['nastayes'] = htmlspecialchars($_GET['nastayes'],NULL); $upr = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`online`,`admin`,`banned`,`level`,`host_reg` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_GET['nastayes']).'" LIMIT 1')); if(isset($upr['id'])) { $ch1 = mysql_fetch_array(mysql_query('SELECT * FROM `chat` WHERE `type` = 90 AND `to` = "'.$u->info['login'].'" AND `delete` > 0 AND `login` = "'.$upr['login'].'" LIMIT 1')); if(isset($ch1['id'])) { $myna = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `id` = "'.mysql_real_escape_string($u->info['host_reg']).'" LIMIT 1')); if(isset($myna['id'])) { - $u->error = ' .'; + $u->error = 'У вас уже есть наставник.'; }else{ - $u->error = ' "'.$_GET['nastayes'].'" !'; + $u->error = 'Персонаж "'.$_GET['nastayes'].'" стал вашим наставником!'; mysql_query('UPDATE `users` SET `host_reg` = "'.$upr['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$upr['login']."',' "".$u->info['login']."" . (x1).','-1','6','0')"); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$upr['login']."',' Персонаж "".$u->info['login']."" подтвердил что он ваш воспитанник. Вы получаете Талант Наставника (x1).','-1','6','0')"); $u->addItem(4005,$upr['id']); } }else{ - $u->error = ' "'.$_GET['nastayes'].'" .'; + $u->error = 'Персонаж "'.$_GET['nastayes'].'" не отправлял вам заявок наставника.'; } }else{ - $u->error = ' "'.$_GET['nastayes'].'" .'; + $u->error = 'Персонаж "'.$_GET['nastayes'].'" не отправлял вам заявок наставника.'; } } @@ -105,36 +105,36 @@ if(isset($_GET['nastanew'])) { echo ''.$u->error.'
            '; } ?> - +     -
            :
            +
            Ссылка для друзей:
            - + + Каждый персонаж, зарегистрировавшийся в БК по Вашей реферальной ссылке, по достижению им 1го уровня начнет приносить Вам дополнительный заработок.

            :

            Как заработать игровую валюту и реальные деньги в БК:

            - :
            + Активация подарочных ваучеров:
            - : + Номер: -   : +   Пароль: - +
            - : + Ссылка на ваучер:
            - :
            - - ,
            - -
            - - 24 . ( "")
            - - :

            + Правила размещения ваучера:
            + - Ваучер должен быть размещен в социальных сетях, либо других сайтах с подробной информацией по его использованию
            + - Он должен находиться на указанном адресе не менее суток
            + - Награду за ваучер возможно получить в течении 24 ч. (Защита от "накрутки")
            + - Для создания собственного ваучера перейдите по ссылке: В разработке


            ! .'; + echo '
            Спасибо что проголосовали за наш проект! Свитки добавлены к вам в инвентарь.
            '; mysql_query('INSERT INTO `an_data` (`uid`,`time`,`var`) VALUES ( "'.$u->info['id'].'","'.time().'","rpgtop" )'); $rpgtop['id'] = mysql_insert_id(); - // (+10) 6 + // Звездное сияние (+10) и ЖЖ6 $u->addItem(1463,$u->info['id'],'|nosale=1|notransfer=1|sudba=1|noremont=1'); $u->addItem(3101,$u->info['id'],'|nosale=1|notransfer=1|sudba=1|noremont=1'); // }else{ - echo '
            .
            '; + echo '
            Ваш отзыв не найден в положительных.
            '; } } } if(!isset($rpgtop['id'])) { ?> - + - :
            - - ( )
            - - :
            - - , ( )
            - - ( 4 )
            - - ( 4 )
            - - : ( 5 )
            + Кредиты можно получить:
            + - набирая опыт в боях и поднимаясь по апам и уровням в соответствии с Таблицей Опыта (доступно на любом уровне)
            + - в Пещерах: продав ресурсы в Магазин
            + - с помощью Реферальной системы, которая описана ниже (доступно на любом уровне)
            + - лечением и другими магическими услугами (доступно с 4 уровня)
            + - торговлей (доступно с 4 уровня)
            + - в Башне Смерти: обналичив у Архивариуса найденный в башне чек (доступно с 5 уровня)


            - :
            - - , ( )
            - -
            + Еврокредиты можно получить:
            + - с помощью Реферальной системы, которая описана ниже (доступно на любом уровне)
            + - купив еврокредиты у официальных дилеров БК или через систему автооплаты


            - :
            - - .
            + Реальные деньги можно получить:
            + - с помощью Партнерской программы БК.


            - - . , , .
            + Реферальная система - это возможность Вашего дополнительного заработка в игре. При открытии счета в банке, Вы автоматически получаете личную реферальную ссылку, которую можете раздать своим друзьям и знакомым.

            - , , 1 .

             

              - - + В реферальной системе отображаются персонажи прошедшие регистрацию + Выплаты производятся по банковскому счету указаному в настройках системы
              - + - + diff --git a/modules_data/_ref_OLD.php b/modules_data/_ref_OLD.php index 293fb622..882ac18d 100644 --- a/modules_data/_ref_OLD.php +++ b/modules_data/_ref_OLD.php @@ -29,7 +29,7 @@ while($pl = mysql_fetch_array($sp)) $rfs['c2'] = '  '.$rfs['c'].'.   '.$u->microLogin($pl['id'],1).''; if($pl['active']!='') { - $rfs['c2'] = ''.$rfs['c2'].'   '; + $rfs['c2'] = ''.$rfs['c2'].'   не активирован'; }elseif($pl['level']>5) { $rfs['c2'] = ''.$rfs['c2'].''; @@ -42,81 +42,81 @@ while($pl = mysql_fetch_array($sp)) } if($rfs['see']=='') { - $rfs['see'] = ' '; + $rfs['see'] = 'К сожалению у Вас нет рефералов'; } ?>
            +   -

            info['host_reg'] > 0 ) { - echo ' : '.$u->microLogin($u->info['host_reg'],1).'
            '; + echo 'Ваш наставник: '.$u->microLogin($u->info['host_reg'],1).'
            '; $nas = mysql_fetch_array(mysql_query('SELECT `id`,`banned`,`room`,`login`,`align`,`level`,`city`,`room`,`online` FROM `users` WHERE `id` = "'.mysql_real_escape_string($u->info['host_reg']).'" LIMIT 1')); if(isset($nas['id'])) { $itm0 = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = 4004 AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1')); @@ -226,11 +226,11 @@ if(isset($_GET['nastanew'])) { if(isset($_GET['read_pr'])) { $itm0--; } - echo ' :
            '.$itm0.' .
            '; + echo 'Вы можете изучить приемы наставника:
            Осталось '.$itm0.' Учебников воспитанника.
            '; if($nas['banned'] > 0 || $nas['align'] == 2) { - echo ' .'; + echo 'Ваш наставник в хаосе или заблокирован.'; }elseif($nas['room'] != $u->info['room'] && $nas['online'] > time()-520 ) { - echo ' '; + echo 'Вы должны находиться с наставником в одной комнате'; }else{ $priz = ''; $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$nas['id'].'" AND `vars` LIKE "%read%" AND `vals` > 1042 ORDER BY `vals` ASC'); @@ -240,8 +240,8 @@ if(isset($_GET['nastanew'])) { $prm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$pl['vals'].'" LIMIT 1')); if(isset($prm['id'])) { if(isset($_GET['read_pr']) && $_GET['read_pr'] == $prm['id']) { - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$u->info['login']."',' ".$prm['name']." . ','".time()."','6','0')"); - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$nas['login']."',' "".$u->info['login']."" ".$prm['name']." .
            x3','-1','6','0')"); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$u->info['login']."','Вы успешно изучили прием ".$prm['name']." при помощи Учебника воспитанника. ','".time()."','6','0')"); + mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','0','','".$nas['login']."',' Ваш воспитанник "".$u->info['login']."" изучил прием ".$prm['name']." при помощи Учебника воспитанника.
            Вы получили Талант Наставника x3','-1','6','0')"); $u->addItem(4005,$nas['id']); $u->addItem(4005,$nas['id']); $u->addItem(4005,$nas['id']); @@ -250,15 +250,15 @@ if(isset($_GET['nastanew'])) { "'.$prm['id'].'","" )'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `item_id` = 4004 AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1'); - echo ' "'.$prm['name'].'" !
            '; + echo 'Прием "'.$prm['name'].'" был успешно изучен!
            '; }else{ - $priz .= ' '; + $priz .= ' '; } } } } if($priz == '') { - echo ' '; + echo 'У наставника нет изученных приемов которые Вы могли бы получить'; }else{ echo $priz; } @@ -268,24 +268,24 @@ if(isset($_GET['nastanew'])) { } ?>
            - '; + Выберите счет'; $sp = mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `block` = "0" LIMIT 1'); while($pl = mysql_fetch_array($sp)) { if($rfs['data'][0]==$pl['id']) { - $bsees .= ''; + $bsees .= ''; }else{ - $bsees .= ''; + $bsees .= ''; } } - $r = ' :
            '; + $r = 'За достижения реферала вы получите:
            '; $sp = mysql_query('SELECT * FROM `referal_bous` WHERE `type` = "1"'); while($pl = mysql_fetch_array($sp)) { if($pl['add_bank'] > 0 || $pl['add_money'] > 0) { - $r .= ''.$pl['level'].' - '; + $r .= ''.$pl['level'].' уровень - '; if($pl['add_money'] > 0) { - $r .= ' '.$pl['add_money'].' .'; + $r .= ' '.$pl['add_money'].' кр.'; } if($pl['add_bank'] > 0) { $r .= ' '.$pl['add_bank'].' ekr.'; @@ -297,25 +297,25 @@ if(isset($_GET['nastanew'])) { /* ?>
            - beta-
            - beta-:
            + Получить награду за beta-тест
            + Введите логин и пароль с beta-теста:
            info['id'].'" LIMIT 1')); if(!isset($beta['id'])) { - echo ' beta- '; + echo 'Логин beta-тестера не найден'; }elseif(md5($_POST['betapass']) != $beta['pass']) { - echo ' beta-'; + echo 'Укажите пароль который был во время beta-теста'; }elseif(isset($beta2['id'])) { - echo ' !'; + echo 'Вы уже получали вознаграждение!'; }else{ - echo ' , beta-.'; - // + echo 'Вы успешно получили вознаграждение, значок beta-тестера.'; + //значок в инфо mysql_query('INSERT INTO `users_ico` ( `uid`,`time`,`text`,`img`,`type`,`x` ) VALUES ( - "'.$u->info['id'].'","'.time().'","beta-
            .","icn123.gif","1","1" + "'.$u->info['id'].'","'.time().'","beta-тестер
            Благодарность от Администрации проекта.","icn123.gif","1","1" )'); // mysql_query('UPDATE `beta_testers` SET `active` = "'.$u->info['id'].'" WHERE `id` = "'.$beta['id'].'" LIMIT 1'); @@ -326,14 +326,14 @@ if(isset($_GET['nastanew'])) {


            - +

            online:

            Ваши воспитанники online:

            diff --git a/modules_data/location/an/bk2.php b/modules_data/location/an/bk2.php index ed7fa500..d6a512ae 100644 --- a/modules_data/location/an/bk2.php +++ b/modules_data/location/an/bk2.php @@ -23,7 +23,7 @@ if($u->room['file']=='an/bk2')
            - + - + @@ -125,17 +125,17 @@ if($rfs['see']=='') @@ -959,34 +959,34 @@ if ($u->room['file'] == 'an/bank') { @@ -995,17 +995,17 @@ if ($u->room['file'] == 'an/bank') { @@ -1015,19 +1015,19 @@ if ($u->room['file'] == 'an/bank') { @@ -1035,27 +1035,27 @@ if ($u->room['file'] == 'an/bank') { @@ -1087,7 +1087,7 @@ if ($u->room['file'] == 'an/bank') {

            :

            Как заработать игровую валюту и реальные деньги в БК:

            - :
            +Активация подарочных ваучеров:
            -:   :
            :
            +Номер:   Пароль:
            Ссылка на ваучер:
            - : -
            - , -
            - -
            - 24 . ( "") -
            - : +Правила размещения ваучера: +
            - Ваучер должен быть размещен в социальных сетях, либо других сайтах с подробной информацией по его использованию +
            - Он должен находиться на указанном адресе не менее суток +
            - Награду за ваучер возможно получить в течении 24 ч. (Защита от "накрутки") +
            - Для создания собственного ваучера перейдите по ссылке: В разработке


            - :
            -- ( )
            -- :
            -- , ( )
            -- ( 4 )
            -- ( 4 )
            - - : ( 1 )
            +Кредиты можно получить:
            +- набирая опыт в боях и поднимаясь по апам и уровням в соответствии с Таблицей Опыта (доступно на любом уровне)
            +- в Пещерах: продав ресурсы в Магазин
            +- с помощью Реферальной системы, которая описана ниже (доступно на любом уровне)
            +- лечением и другими магическими услугами (доступно с 4 уровня)
            +- торговлей (доступно с 4 уровня)
            + - в Башне Смерти: обналичив у Архивариуса найденный в башне чек (доступно с 1 уровня)


            - :
            -- , ( )
            --
            +Еврокредиты можно получить:
            +- с помощью Реферальной системы, которая описана ниже (доступно на любом уровне)
            +- купив еврокредиты у официальных дилеров БК


            - :
            -- .
            +Реальные деньги можно получить:
            +- с помощью Партнерской программы БК.


            - - . , , .

            +Реферальная система - это возможность Вашего дополнительного заработка в игре. При открытии счета в банке, Вы автоматически получаете личную реферальную ссылку, которую можете раздать своим друзьям и знакомым.

            - , , 7 .
            +Каждый персонаж, зарегистрировавшийся в БК по Вашей реферальной ссылке, по достижению им 7го уровня начнет приносить Вам дополнительный заработок.

            - :
            - 2 - 0.50 .
            - 4 - 1.00 .
            - 5 - 25.00 .
            - 6 - 35.00 .
            - 7 - 75.00 .
            - 8 , 1 .
            - 9 - 5 .
            -10 - 15 .
            -11 - 35 .
            -12 - 50 .
            +При достижении Вашим рефералом:
            + 2го уровня - 0.50 кр.
            + 4го уровня - 1.00 кр.
            + 5го уровня - 25.00 кр.
            + 6го уровня - 35.00 кр.
            + 7го уровня - 75.00 кр.
            + 8го уровня, Вам автоматически будет переведено на счет 1 екр.
            + 9го уровня - 5 екр.
            +10го уровня - 15 екр.
            +11го уровня - 35 екр.
            +12го уровня - 50 екр.

             

            -

            - +

            Ваша уникальная ссылка + или

             

              - - + В реферальной системе отображаются персонажи прошедшие регистрацию + Выплаты производятся по банковскому счету указаному в настройках системы
            : .Количество рефералов: шт.
              - + - + diff --git a/modules_data/_relikt.php b/modules_data/_relikt.php index 50944893..afd31985 100644 --- a/modules_data/_relikt.php +++ b/modules_data/_relikt.php @@ -76,56 +76,56 @@ $(function() { $("#opener").click(function() { $("#dialog").dialog("open"); }); - $(".ui-button-text").attr('title', ''); + $(".ui-button-text").attr('title', 'Закрыть'); }); -
            +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            -
            +
            Заклятие молчания
            - : 1.00 . - + Цена: 1.00 екр. +
            @@ -135,12 +135,12 @@ $(function() {
            diff --git a/modules_data/location/ab/vokzal.php b/modules_data/location/ab/vokzal.php index e8f0791c..bf765255 100644 --- a/modules_data/location/ab/vokzal.php +++ b/modules_data/location/ab/vokzal.php @@ -10,13 +10,13 @@ if($u->room['file']=='ab/vokzal') $sp = mysql_query('SELECT * FROM `vokzal` WHERE `city` = "'.$u->info['city'].'" OR `tocity` = "'.$c['city'].'"'); while($pl = mysql_fetch_array($sp)) { - $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['city'].'" LIMIT 1')); - $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); + $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['city'].'" LIMIT 1')); + $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); $crm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "'.$pl['name'].'" LIMIT 1')); - //period 0 - (), 1 - , 3 - (), 4 - ( tocity) + //period 0 - прибытие в город (стоянка), 1 - движение, 3 - прибытие в другой город (стоянка), 4 - движение (из tocity) if($pl['time_start_go']==0) { - // + //Это новая карета обновляем данные mysql_query('UPDATE `vokzal` SET `time_start_go` = "'.(time()+$pl['timeStop']*60).'",`time_finish_go` = "'.(time()+$pl['timeStop']*60+$pl['time_go']*60).'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['time_start_go'] = time()+$pl['timeStop']*60; $pl['time_finish_go'] = $pl['time_start_go']+$pl['time_go']*60; @@ -24,12 +24,12 @@ if($u->room['file']=='ab/vokzal') $see = 1; $plc = $pl['tocity']; $col = 'e6e6e6" style="color:#B7B7B7;"'; - $tmgo = '( '.date('H:i',$pl['time_finish_go']).')'; + $tmgo = '(Прибудет в '.date('H:i',$pl['time_finish_go']).')'; $bl = '--'; - $bb = ' '; + $bb = 'билетов нет'; if($pl['time_start_go']-600time()) { - // + //можно знанимать места в карете if(isset($crm['id'])) { $sr = mysql_query('SELECT `uid`,`id` FROM `items_users` WHERE `secret_id` = "'.$pl['time_start_go'].'_b'.$pl['id'].'" AND `delete` = "0" LIMIT 100'); @@ -46,27 +46,27 @@ if($u->room['file']=='ab/vokzal') if((($pl['period']==0 && $u->info['city']==$pl['city']) || ($pl['period']==3 && $u->info['city']==$pl['tocity'])) && $pl['time_start_go']>time() && $pl['citygo']!=$u->info['city']) { $see = 1; - $tmgo = date('d.m.Y H:i',$pl['time_start_go']); + $tmgo = date('d.m.Y в H:i',$pl['time_start_go']); $col = 'c9c9c9'; $bl = $pl['bilets']; - $bb = ''; + $bb = ''; if($pl['bilets']<=0) { - $bb = ' '; + $bb = 'билетов нет'; } }else{ - // + //отправляем карету в другой город if($pl['time_finish_go']room['file']=='ab/vokzal') $pl['period'] = 3; }elseif($pl['period']==3) { - // , , + //Прибыли в город, время стоянки закончилось, и поехали mysql_query('UPDATE `vokzal` SET `period` = "4" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['period'] = 4; }elseif($pl['period']==4) { - // , + //приехалис в другой город, делаем там стоянку if(isset($crm['id'])) { mysql_query('UPDATE `users` SET `city` = "'.$pl['city'].'",`room` = "'.$vz1['id'].'" WHERE `room` = "'.$crm['id'].'" LIMIT '.$pl['bilets_default'].''); @@ -104,9 +104,9 @@ if($u->room['file']=='ab/vokzal') $cs .= ' - - - + + + '; @@ -128,33 +128,33 @@ if($u->room['file']=='ab/vokzal') { if($buy['bilets']<=0) { - $error = ' , '; + $error = 'Билетов больше нет, загляните позже'; }elseif($u->info['money']>=$buy['price1']) { $u->info['money'] -= $buy['price1']; $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - // - $error = ' '.$buy['price1'].' . '.$u->city_name[$buy['tocity']].'
            '.date('d.m.Y H:i',$buy['time_start_go']).' '; - $ib = ' '.$u->city_name[$buy['tocity']].': '.date('d.m.Y H:i',$buy['time_start_go']).'
            : '.$u->info['login'].''; + //передаем Билет персонажу + $error = 'Вы заплатили '.$buy['price1'].' кр. за билет в '.$u->city_name[$buy['tocity']].'
            Отправка в '.date('d.m.Y H:i',$buy['time_start_go']).' по серверу'; + $ib = 'Дата отправления кареты в '.$u->city_name[$buy['tocity']].': '.date('d.m.Y в H:i',$buy['time_start_go']).'
            Билет на имя: '.$u->info['login'].''; $ins = mysql_query('INSERT INTO `items_users` (`1price`,`maidin`,`data`,`uid`,`item_id`,`iznosMAX`,`lastUPD`,`secret_id`,`time_create`) VALUES ("'.$buy['price1'].'","'.$u->info['city'].'","info='.$ib.'|noodet=1","'.$u->info['id'].'","866","1","'.time().'","'.$buy['time_start_go'].'_b'.$buy['id'].'","'.time().'")'); if($ins) { - $error .= '
            "" , "".'; + $error .= '
            Предмет "Билет" был перемещен к Вам в инвентарь, в раздел "прочее".'; mysql_query('UPDATE `vokzal` SET `bilets` = "'.($buy['bilets']-1).'" WHERE `id` = "'.$buy['id'].'" LIMIT 1'); }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ $u->info['money'] += $buy['price1']; - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ - $error = ' '; + $error = 'У Вас недостаточно денег'; } }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } } @@ -166,7 +166,7 @@ if($u->room['file']=='ab/vokzal') { if($u->info['money']>=$tp['price1']) { - $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); + $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); if(isset($rm['id'])) { $u->info['money'] -= $tp['price1']; @@ -178,13 +178,13 @@ if($u->room['file']=='ab/vokzal') $u->addAction((time()+$tp['time']*60),'teleport',$tp['toCity']); die(''); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -200,12 +200,12 @@ if($u->room['file']=='ab/vokzal') $cst .= ' - '; + '; if(isset($zd['id'])) { - $cst .= ''; + $cst .= ''; }else{ - $cst .= ''; + $cst .= ''; } $cst .= ''; } @@ -257,40 +257,40 @@ if($u->room['file']=='ab/vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            +   -

            Настройка реферальной системы

            - + - +
            .:Счет зачисления Екр.: info['id'].'" AND `block` = "0" LIMIT 1'); @@ -143,9 +143,9 @@ if($rfs['see']=='') { if($rfs['data'][0]==$pl['id']) { - $bsees .= ''; + $bsees .= ''; }else{ - $bsees .= ''; + $bsees .= ''; } } if($bsees != '') { @@ -156,12 +156,12 @@ if($rfs['see']=='') ?> .'; + echo 'Для начала откройте счет в банке на страшилкиной улице.'; }?>
             

            - +

            Панель Реликтов

            -

            []

            +

            Персональные реликты [Купить]

            @@ -158,7 +158,7 @@ $(function() {
            -

            []

            +

            Клановые реликты [Купить]

            @@ -178,8 +178,8 @@ $(function() {
              - - + +
            \ No newline at end of file diff --git a/modules_data/_security.php b/modules_data/_security.php index f7584045..da85eaa1 100644 --- a/modules_data/_security.php +++ b/modules_data/_security.php @@ -7,17 +7,16 @@ if(!defined('GAME')) -

            -

            -

            -
            - , ( mm.yy): +

            +

            Отчет системы безопасности

            +Вы можете получить отчет о заходах за указанный месяц
            +Укажите месяц, на который хотите получить отчет (в формате mm.yy): "> - +

            0 && $y>0) { ?> @@ -64,30 +64,30 @@ if($u->error!='') { mysql_query('UPDATE `transfers` SET `r'.$rtdf.'` = "0", `good1`="0",`good2`="0" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); unset($rtdf); } -/* echo '[]
            : '; +/* echo '[Передача]
            Присутствие: '; if($u->tfer['start1']>0) { - echo ' [U1: ]'; + echo ' [U1: Присутствует]'; } if($u->tfer['start2']>0) { - echo ' [U2: ]'; + echo ' [U2: Присутствует]'; } - echo '
            : '; + echo '
            Состояние: '; if($u->tfer['good1']>0) { - echo ' [U1: ]'; + echo ' [U1: Согласен]'; }else{ - echo ' [U1: ]'; + echo ' [U1: Ожидание]'; } if($u->tfer['good2']>0) { - echo ' [U2: ]'; + echo ' [U2: Согласен]'; }else{ - echo ' [U2: ]'; + echo ' [U2: Ожидание]'; } - echo '
            '; + echo '
            Выйти из передачи'; */ $az = array(1=>1,2=>2); if($u->tfer['uid2']==$u->info['id']) @@ -215,8 +215,8 @@ function clickBtn1() @@ -227,8 +227,8 @@ function clickBtn1() @@ -247,17 +247,17 @@ function clickBtn1() - +
            -

            +

            Отчет системы безопасности за

            Capital City

            '.$s['ip'].'';} - echo $dat.($s['type']==3?' , ':' "'.$u->info['login'].'" ').$s['ip'].'
            '; + echo $dat.($s['type']==3?' Неверный пароль, ':' Входит "'.$u->info['login'].'" ').$s['ip'].'
            '; } diff --git a/modules_data/_transfers.php b/modules_data/_transfers.php index 6b5ba8da..4132f196 100644 --- a/modules_data/_transfers.php +++ b/modules_data/_transfers.php @@ -8,8 +8,8 @@ if(!isset($u->tfer['id'])) { - - + +
              / Передача предметов/кредитов другому игроку
            error!='') {
            - + - + - +
            :Укажите логин персонажа:
            -
            ( )
            +
            (можно щелкнуть по логину в чате)
            Пояснение
            -
            : 200
            +
            Максимальное число знаков: 200
            - - + +
              / Передача предметов/кредитов между
            - - + + @@ -237,7 +237,7 @@ function clickBtn1()
              :
             0.00 .
              :
              . info['money']; ?>
              отдаёт:
             0.00 кр.
             Вы отдаёте:
              кр. из info['money']; ?>
             
            - +
               
            - - - - - + + + + +
            ОбмундированиеЗаклятияЭликсирыПрочееРуны
            (: 0/0, : 0)Рюкзак (масса: 0/0, предметов: 0)
            @@ -286,6 +286,6 @@ function clickBtn1() mysql_query('UPDATE `transfers` SET `finish2` = "0" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); } ?> -{ } +{отображаем лог передач}
            \ No newline at end of file diff --git a/modules_data/_umenie.php b/modules_data/_umenie.php index 32677646..53addac5 100644 --- a/modules_data/_umenie.php +++ b/modules_data/_umenie.php @@ -42,7 +42,7 @@ if (isset($_GET['use_priem'])) { $priem->reuns((int)$_GET['unuse_priem']); } -// +//вывод знаний $znn = ''; $toms = 0; $sp = mysql_query( @@ -54,10 +54,10 @@ while ($pl = mysql_fetch_array($sp)) { if ($itm['id'] >= 1044 && $itm['id'] <= 1047) { $toms++; } - $lvar = '
            : ' . date('d.m.Y', $pl['time']) . ''; - $znn .= ' '; + $lvar = '
            Дата изучения: ' . date('d.m.Y', $pl['time']) . ''; + $znn .= ' '; } else { - $znn .= ' '; + $znn .= ' '; } } @@ -195,10 +195,10 @@ $tma = ''; if ($summs > 1) { $summs = 0; - echo '   - ...
            '; + echo '   Что-то здесь не так...
            '; } elseif ($summs < 0) { $summs = 0; - echo '    , ;)
            '; + echo '   При вскрытие сейфа выяснилось, что он был вскрыт до Вас ;)
            '; } elseif (($st['os1'] + $_GET['dec_transfer'] <= 5 && $_GET['dec_transfer'] > 0) || ($st['os2'] + $_GET['dec_travma'] <= 5 && $_GET['dec_travma'] > 0) || ($st['os3'] + $_GET['fast_homeworld'] <= 5 && $_GET['fast_homeworld'] > 0) || @@ -226,7 +226,7 @@ $tma = ''; $u->info['stats'] = $u->impStats($st); } if ($u->info['sskills'] - (int)$summs < 0) { - echo '   
            '; + echo '   У вас нет свободных особенностей
            '; } elseif (mysql_query( "UPDATE `stats` @@ -237,43 +237,43 @@ $tma = ''; `id` = '" . (int)$u->info['id'] . "';" )) { if ($_GET['dec_transfer'] == 1) { - echo "    \" " . ($st['os1'] > 1 ? " - " . $st['os1'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Изворотливый " . ($st['os1'] > 1 ? " - " . $st['os1'] . "" : "") . "\"
            "; } if ($_GET['dec_travma'] == 1) { - echo "    \" " . ($st['os2'] > 1 ? " - " . $st['os2'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Стойкий " . ($st['os2'] > 1 ? " - " . $st['os2'] . "" : "") . "\"
            "; } if ($_GET['fast_homeworld'] == 1) { - echo "    \" " . ($st['os3'] > 1 ? " - " . $st['os3'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Быстрый " . ($st['os3'] > 1 ? " - " . $st['os3'] . "" : "") . "\"
            "; } if ($_GET['inc_expr'] == 1) { - echo "    \" " . ($st['os4'] > 1 ? " - " . $st['os4'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Сообразительный " . ($st['os4'] > 1 ? " - " . $st['os4'] . "" : "") . "\"
            "; } if ($_GET['inc_friends'] == 1) { - echo "    \" " . ($st['os5'] > 1 ? " - " . $st['os5'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Дружелюбный " . ($st['os5'] > 1 ? " - " . $st['os5'] . "" : "") . "\"
            "; } if ($_GET['inc_hobby'] == 1) { - echo "    \" " . ($st['os6'] > 1 ? " - " . $st['os6'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Общительный " . ($st['os6'] > 1 ? " - " . $st['os6'] . "" : "") . "\"
            "; } if ($_GET['max_inventory'] == 1) { - echo "    \" " . ($st['os7'] > 1 ? " - " . $st['os7'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Запасливый " . ($st['os7'] > 1 ? " - " . $st['os7'] . "" : "") . "\"
            "; } if ($_GET['num_transfer'] == 1) { - echo "    \" " . ($st['os8'] > 1 ? " - " . $st['os8'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Коммуникабельный " . ($st['os8'] > 1 ? " - " . $st['os8'] . "" : "") . "\"
            "; } if ($_GET['speed_HP'] == 1) { - echo "    \" " . ($st['os9'] > 1 ? " - " . $st['os9'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Двужильный " . ($st['os9'] > 1 ? " - " . $st['os9'] . "" : "") . "\"
            "; } if ($_GET['speed_MP'] == 1) { - echo "    \" " . ($st['os10'] > 1 ? " - " . $st['os10'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Здравомыслящий " . ($st['os10'] > 1 ? " - " . $st['os10'] . "" : "") . "\"
            "; } if ($_GET['speed_debuff'] == 1) { - echo "    \" " . ($st['os11'] > 1 ? " - " . $st['os11'] . "" : "") . "\"
            "; + echo "   Вы выбрали особенность \"Здоровый сон " . ($st['os11'] > 1 ? " - " . $st['os11'] . "" : "") . "\"
            "; } $u->info['sskills'] -= $summs; } } if (@$_GET['upr']) { - /*----- -----*/ + /*-----Проверяем сумму статов и умений-----*/ if (!isset($_GET['energy']) || $_GET['energy'] < 0) { $_GET['energy'] = 0; } @@ -359,8 +359,8 @@ $tma = ''; $summu = 0; } - /*----- -----*/ - /*----- ----*/ + /*-----Проверяем сумму статов и умений-----*/ + /*-----Пишем статы и умения----*/ if ( (($_GET['energy'] > 0 || $_GET['str'] > 0 || $_GET['dex'] > 0 || @@ -424,13 +424,13 @@ $tma = ''; $u->info['stats'] = $u->impStats($st); /*if((int)$_GET['energy'] + $u->stats['s11'] > $u->info['level']) { - echo '   
            '; + echo '   Энергия не может быть выше уровня персонажа
            '; }else*/ if (/*$_GET['energy'] < 0 || */ $_GET['str'] < 0 || $_GET['dex'] < 0 || $_GET['intel'] < 0 || $_GET['wis'] < 0 || $_GET['spirit'] < 0 || $_GET['will'] < 0 || $_GET['freedom'] < 0 || $_GET['god'] < 0 || $_GET['inst'] < 0 || $_GET['power'] < 0 || $_GET['m_sword'] < 0 || $_GET['m_tohand'] < 0 || $_GET['m_molot'] < 0 || $_GET['m_staff'] < 0 || $_GET['m_magic1'] < 0 || $_GET['m_magic2'] < 0 || $_GET['m_magic3'] < 0 || $_GET['m_magic4'] < 0 || $_GET['m_magic5'] < 0 || $_GET['m_magic6'] < 0 || $_GET['m_magic7'] < 0) { - echo '   1) - ...
            '; + echo '   1) Что-то здесь не так...
            '; } elseif ($u->info['ability'] - (int)$summ < 0 || $u->info['skills'] - (int)$summu < 0) { - echo '   - ... (: ' . ($u->info['ability'] - (int)$summ) . ', : ' . ($u->info['skills'] - (int)$summu) . ')
            '; + echo '   Что-то здесь не так... (Способности: ' . ($u->info['ability'] - (int)$summ) . ', Умения: ' . ($u->info['skills'] - (int)$summu) . ')
            '; } elseif (mysql_query( "UPDATE `stats` @@ -441,74 +441,74 @@ $tma = ''; WHERE `id` = '" . (int)$u->info['id'] . "';" )) { - //if($_GET['energy']>0) {echo '    ""
            ';} + //if($_GET['energy']>0) {echo '   Увеличение способности "Энергия" произведено удачно
            ';} if ($_GET['str'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Сила" произведено удачно
            '; } if ($_GET['dex'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Ловкость" произведено удачно
            '; } if ($_GET['inst'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Интуиция" произведено удачно
            '; } if ($_GET['power'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Выносливость" произведено удачно
            '; } if ($_GET['intel'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Интеллект" произведено удачно
            '; } if ($_GET['wis'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Мудрость" произведено удачно
            '; } if ($_GET['spirit'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Духовность" произведено удачно
            '; } if ($_GET['will'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Воля" произведено удачно
            '; } if ($_GET['freedom'] > 0) { - echo '    " "
            '; + echo '   Увеличение способности "Свобода духа" произведено удачно
            '; } if ($_GET['god'] > 0) { - echo '    ""
            '; + echo '   Увеличение способности "Божественность" произведено удачно
            '; } if ($_GET['m_sword'] > 0) { - echo '    " , "
            '; + echo '   Увеличение умения "Мастерство владения ножами, кастетами" произведено удачно
            '; } if ($_GET['m_axe'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения мечами" произведено удачно
            '; } if ($_GET['m_molot'] > 0) { - echo '    " , "
            '; + echo '   Увеличение умения "Мастерство владения дубинами, булавами" произведено удачно
            '; } if ($_GET['m_tohand'] > 0) { - echo '    " , "
            '; + echo '   Увеличение умения "Мастерство владения топорами, секирами" произведено удачно
            '; } if ($_GET['m_staff'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения магическими посохами" произведено удачно
            '; } if ($_GET['m_magic1'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения стихией Огня" произведено удачно
            '; } if ($_GET['m_magic2'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения стихией Воздуха" произведено удачно
            '; } if ($_GET['m_magic3'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения стихией Воды" произведено удачно
            '; } if ($_GET['m_magic4'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения стихией Земли" произведено удачно
            '; } if ($_GET['m_magic5'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения магией Света" произведено удачно
            '; } if ($_GET['m_magic6'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения магией Тьмы" произведено удачно
            '; } if ($_GET['m_magic7'] > 0) { - echo '    " "
            '; + echo '   Увеличение умения "Мастерство владения серой магией" произведено удачно
            '; } - /*-- --*/ + /*--для обновления--*/ //$u->stats['s11'] += (int)$_GET['energy']; $u->stats['s1'] += (int)$_GET['str']; $u->stats['s2'] += (int)$_GET['dex']; @@ -546,12 +546,12 @@ $tma = ''; } $u->info['ability'] -= $summ; $u->info['skills'] -= $summu; - /*-- --*/ + /*--для обновления--*/ } } } - /*----- -----*/ - ///// + /*-----Пишем статы и умения-----*/ + /////Прочие разные проверки if (!isset($st['s1'])) { $st['s1'] = 0; } @@ -723,7 +723,7 @@ $tma = ''; $u->stats['mg7'] = 0; } /////////////////////////// - ///// + /////Статы $sil = $u->stats['s1'] - $st['s1']; if ($sil > 0) { $str = " (" . $st['s1'] . "+" . $sil . ")"; @@ -742,7 +742,7 @@ $tma = ''; } //$energy = $u->stats['s11'] - $st['s11']; //if($energy>0){$energy = " (".$st['s11']."+".$energy.")";} - ///// + /////Оружие $noj = $u->stats['a1'] - $st['a1']; if ($noj > 0) { $nj = " (" . $st['a1'] . "+" . $noj . ")"; @@ -763,7 +763,7 @@ $tma = ''; if ($posoh > 0) { $pos = " (" . $st['a5'] . "+" . $posoh . ")"; } - ///// + /////Магии $fire = $u->stats['mg1'] - $st['mg1']; if ($fire > 0) { $ogon = " (" . $st['mg1'] . "+" . $fire . ")"; @@ -792,7 +792,7 @@ $tma = ''; if ($dark > 0) { $tma = " (" . $st['mg7'] . "+" . $dark . ")"; } - ///// + /////Особенности $os['os1'] = $st['os1']; //$os['os2'] = $st['os2']; $os['os3'] = $st['os3']; @@ -805,32 +805,32 @@ $tma = ''; $os['os10'] = $st['os10']; //$os['os11'] = $st['os11']; - $os["os1"] = ["name" => "", "opt" => "dec_transfer", "descr" => " ", "nlevel" => 4, "bonus1" => "0,1 .", "bonus2" => "0,2 .", "bonus3" => "0,3 .", "bonus4" => "0,4 .", "bonus5" => "0,5 ."]; - //$os["os2"]=array("name"=>"","opt"=>"dec_travma","descr"=>" ", "nlevel"=>4,"bonus1"=>"5%","bonus2"=>"10%","bonus3"=>"15%","bonus4"=>"20%","bonus5"=>"25%"); - $os["os3"] = ["name" => "", "opt" => "fast_homeworld", "descr" => " \"\" ", "nlevel" => 4, "bonus1" => "5 ", "bonus2" => "10 ", "bonus3" => "15 ", "bonus4" => "20 ", "bonus5" => "25 "]; - $os["os4"] = ["name" => "", "opt" => "inc_expr", "descr" => " ", "nlevel" => 4, "bonus1" => "1 %", "bonus2" => "2 %", "bonus3" => "3 %", "bonus4" => "4 %", "bonus5" => "5 %"]; - $os["os5"] = ["name" => "", "opt" => "inc_friends", "descr" => "C ", "bonus1" => 5, "bonus2" => 10, "bonus3" => 15, "bonus4" => 20, "bonus5" => 25]; - $os["os6"] = ["name" => "", "opt" => "inc_hobby", "descr" => " \" / \" ", "bonus1" => "200 ", "bonus2" => "400 ", "bonus3" => "600 ", "bonus4" => "800 ", "bonus5" => "1000 "]; - $os["os7"] = ["name" => "", "opt" => "max_inventory", "descr" => " ", "nlevel" => 4, "bonus1" => "10 ", "bonus2" => "20 ", "bonus3" => "30 ", "bonus4" => "40 ", "bonus5" => "50 "]; - //$os["os8"]=array("name"=>"","opt"=>"num_transfer","descr"=>" ", "nlevel"=>4,"bonus1"=>"+20","bonus2"=>"+40","bonus3"=>"+60","bonus4"=>"+80","bonus5"=>"+100"); - $os["os9"] = ["name" => "", "opt" => "speed_HP", "descr" => " ", "npower" => 10, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+30%"]; - $os["os10"] = ["name" => "", "opt" => "speed_MP", "descr" => " ", "nwis" => 20, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+25%"]; - //$os["os11"]=array("name"=>" ","opt"=>"speed_debuff","descr"=>" ", "nlevel"=>5,"bonus1"=>"10% ","bonus2"=>"20% ","bonus3"=>"30% ","bonus4"=>"40% ","bonus5"=>"50% "); + $os["os1"] = ["name" => "Изворотливый", "opt" => "dec_transfer", "descr" => "Снижение стоимости передач на ", "nlevel" => 4, "bonus1" => "0,1 кр.", "bonus2" => "0,2 кр.", "bonus3" => "0,3 кр.", "bonus4" => "0,4 кр.", "bonus5" => "0,5 кр."]; + //$os["os2"]=array("name"=>"Стойкий","opt"=>"dec_travma","descr"=>"Время травмы меньше на ", "nlevel"=>4,"bonus1"=>"5%","bonus2"=>"10%","bonus3"=>"15%","bonus4"=>"20%","bonus5"=>"25%"); + $os["os3"] = ["name" => "Быстрый", "opt" => "fast_homeworld", "descr" => "Кнопка \"Возврат\" появляется раньше на ", "nlevel" => 4, "bonus1" => "5 минут", "bonus2" => "10 минут", "bonus3" => "15 минут", "bonus4" => "20 минут", "bonus5" => "25 минут"]; + $os["os4"] = ["name" => "Сообразительный", "opt" => "inc_expr", "descr" => "Получаемый опыт больше на ", "nlevel" => 4, "bonus1" => "1 %", "bonus2" => "2 %", "bonus3" => "3 %", "bonus4" => "4 %", "bonus5" => "5 %"]; + $os["os5"] = ["name" => "Дружелюбный", "opt" => "inc_friends", "descr" => "Cписок друзей больше на ", "bonus1" => 5, "bonus2" => 10, "bonus3" => 15, "bonus4" => 20, "bonus5" => 25]; + $os["os6"] = ["name" => "Общительный", "opt" => "inc_hobby", "descr" => "Увеличение максимального размера раздела \"Увлечения / хобби\" на ", "bonus1" => "200 символов", "bonus2" => "400 символов", "bonus3" => "600 символов", "bonus4" => "800 символов", "bonus5" => "1000 символов"]; + $os["os7"] = ["name" => "Запасливый", "opt" => "max_inventory", "descr" => "Больше места в рюкзаке на ", "nlevel" => 4, "bonus1" => "10 единиц", "bonus2" => "20 единиц", "bonus3" => "30 единиц", "bonus4" => "40 единиц", "bonus5" => "50 единиц"]; + //$os["os8"]=array("name"=>"Коммуникабельный","opt"=>"num_transfer","descr"=>"Лимит передач в день ", "nlevel"=>4,"bonus1"=>"+20","bonus2"=>"+40","bonus3"=>"+60","bonus4"=>"+80","bonus5"=>"+100"); + $os["os9"] = ["name" => "Двужильный", "opt" => "speed_HP", "descr" => "Здоровье восстанавливается быстрее на ", "npower" => 10, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+30%"]; + $os["os10"] = ["name" => "Здравомыслящий", "opt" => "speed_MP", "descr" => "Мана восстанавливается быстрее на ", "nwis" => 20, "bonus1" => "+5%", "bonus2" => "+10%", "bonus3" => "+15%", "bonus4" => "+20%", "bonus5" => "+25%"]; + //$os["os11"]=array("name"=>"Здоровый сон","opt"=>"speed_debuff","descr"=>"Во время сна время действия негативных эффектов течет со скоростью ", "nlevel"=>5,"bonus1"=>"10% от нормальной","bonus2"=>"20% от нормальной","bonus3"=>"30% от нормальной","bonus4"=>"40% от нормальной","bonus5"=>"50% от нормальной"); ?> microLogin($u->info['id'], 1); ?>    
            - &rnd="'> - +
            @@ -223,11 +223,11 @@ if($u->room['file']=='ab/hram') $itmAll = ''; $itmAllSee = ''; $itmAll = $u->genInv(11,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete` = "0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`data` NOT LIKE "%fromshop=2%" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0){ - $itmAllSee = ''; + $itmAllSee = ''; }else{ $itmAllSee = $itmAll[2]; } - // " ". " ". + //Удачно растворен предмет "Укрепленный Костыль". Получена руна "Моно Бауни". ?> '); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -116,30 +116,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -149,14 +149,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -179,7 +179,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $tmx = 5; } - // + //только своего уровня $lmn = $u->info['level']; $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -196,16 +196,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -216,11 +216,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -232,7 +232,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -240,11 +240,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -290,7 +290,7 @@ body @@ -308,7 +308,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -317,7 +317,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = ''.$pr.'
            '.$dzs.''.$pr.''; } @@ -335,14 +335,14 @@ if($u->info['dn']==0) - +
            - + -
            Характеристики персонажа
            - -
              - - -
            - - - - - - - - - - - -
            -
            -
            -
            -

            -
            -
            - - \ No newline at end of file diff --git a/modules_data/location/Scripts/expressInstall.swf b/modules_data/location/Scripts/expressInstall.swf index 86958bf3..4fe84e54 100644 Binary files a/modules_data/location/Scripts/expressInstall.swf and b/modules_data/location/Scripts/expressInstall.swf differ diff --git a/modules_data/location/_locations.php b/modules_data/location/_locations.php index 42c8c440..0cdc72eb 100644 --- a/modules_data/location/_locations.php +++ b/modules_data/location/_locations.php @@ -14,16 +14,16 @@ function thisInfRm($id,$tp = NULL) { global $u; $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `code` = "'.mysql_real_escape_string($id).'" AND `city` = "'.$u->info['city'].'" LIMIT 1')); - $inf = ' '; + $inf = 'Здание было разрушено'; if(isset($rm['id'])) { $rown = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > '.(time()-120).' AND `city` = "'.$u->info['city'].'" AND `room` = "'.$rm['id'].'"')); if($tp==NULL) { - $inf = ''.$rm['name'].'
            '.(0+$rown[0]).' .'; + $inf = ''.$rm['name'].'
            Сейчас в комнате '.(0+$rown[0]).' чел.'; }else{ $inf = ''.$rm['name'].' - '.(0+$rown[0]).' .'; +Сейчас в комнате '.(0+$rown[0]).' чел.'; } } if($tp==NULL) @@ -42,13 +42,13 @@ if(isset($_GET['loc'])) } if($u->info['inTurnir'] > 0) { - $re = ' , ...'; - }elseif($u->aves['now']>=$u->aves['max'] && $u->room['name']!='' && $u->room['name']!='. 1' && $u->room['name']!='. 2' && $u->room['name']!='. 3') + $re = 'Вы не можете перемещаться, Вы приняли заявку на турнир ...'; + }elseif($u->aves['now']>=$u->aves['max'] && $u->room['name']!='Общежитие' && $u->room['name']!='Общ. Этаж 1' && $u->room['name']!='Общ. Этаж 2' && $u->room['name']!='Общ. Этаж 3') { - $re = ' , ...'; - }elseif($u->room['name']==' ' && $u->info['active']!='') + $re = 'Вы не можете перемещаться, рюкзак переполнен ...'; + }elseif($u->room['name']=='Комната для новичков' && $u->info['active']!='') { - echo ''; + echo ''; }elseif(isset($go['id'])) { $rmgo = array(); @@ -67,41 +67,41 @@ if(isset($_GET['loc'])) $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "'.$u->info['id'].'" LIMIT 1',1); if(isset($sleep['id']) && $sleep['vars']=='sleep') { - $re = ' .'; + $re = 'Вы моежете перемещаться только когда бодрствуете.'; }elseif($u->info['timeGo']>=time()) { - $re = ' '.($u->info['timeGo']-time()).' .'; + $re = 'Вы не можете перемещаться еще '.($u->info['timeGo']-time()).' сек.'; }elseif($rmgo[$go['id']]==1 || $u->info['admin']>0) { if($rmgo[$go['id']]!=1) { - echo ''; + echo ''; } $alg = explode('-',$go['align']); if(($alg[0] > $u->info['align'] || $alg[1] < $u->info['align']) && $go['align']!=0) { - $re = ' '; + $re = 'Вы не можете попасть в эту комнату'; }elseif($u->info['zv']>0) { - $re = ' ?.. !'; + $re = 'Подали заявку и убегаем?.. Не хорошо!'; }elseif($go['sex']>0 && $go['sex']-1!=$u->info['sex']) { - $re = ' '; + $re = 'Вы не можете попасть в эту комнату'; }elseif($mlvl[0]>$u->info['level'] && $u->info['admin']==0) { - $re = ' , ;)'; + $re = 'Вы не можете попасть в эту комнату, уровень маловат ;)'; }elseif($mlvl[1]<$u->info['level'] && $u->info['admin']==0) { - $re = ' , ;)'; + $re = 'Вы не можете попасть в эту комнату, уровень высоковат ;)'; }elseif($go['close']==0 || $u->info['admin']>0) { $travms = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" and (`v1`="2" or `v1`="3") and `delete`=0 ORDER by v1 DESC')); - // - $plus_timeGo=0; // - $tr_nogo=false; // + //замедление перемешения при травмах + $plus_timeGo=0; // добавочное время при травме + $tr_nogo=false; // нету запрещения перемещения по травме if($travms['v1']==3){ - // + // тяжелая травма $kostyls = mysql_query('SELECT * FROM `items_users` WHERE `uid`="'.$u->info['id'].'" and `inOdet`!="0" and (`item_id`="630" or `item_id`="631")'); if(mysql_num_rows($kostyls)==2){ $plus_timeGo=30; @@ -110,7 +110,7 @@ if(isset($_GET['loc'])) } }elseif($travms['v1']==2){ - // + //средняя $plus_timeGo=20; } //end freez time go @@ -137,24 +137,24 @@ if(isset($_GET['loc'])) $u->room = $go; echo ''; }else{ - $re = ' , '; + $re = 'Вы не смогли перейти в локацию, возможно она была разрушена'; } }elseif($tr_nogo==true){ - $re = ' . .'; + $re = 'Вы травмированны. Не возможно с такими увечиями передвигатся без костылей.'; }else{ - $re = ' '; + $re = 'Вы не смогли перейти в локацию'; } }elseif($go['destroy']==1) { - $re = ' , '; + $re = 'Здание было разрушено, в данный момент оно реставрируется'; }else{ - $re = ' '; + $re = 'Временно закрыто'; } }else{ - $re = ' '; + $re = 'Проход не существует'; } }else{ - $re = ' '; + $re = 'Проход не существует'; } } @@ -204,7 +204,7 @@ function locGoLine() if(document.getElementById('moveto') != null && document.getElementById('moveto') != undefined) { if(rgo_nm != '') { - document.getElementById('moveto').innerHTML = ' : ' + nm + ' ()'; + document.getElementById('moveto').innerHTML = 'Вы перейдете в: ' + nm + ' (отмена)'; }else{ document.getElementById('moveto').innerHTML = ''; } @@ -273,7 +273,7 @@ function DrawWeather(room) { var div = ''; for (i = 0; i < no; ++ i) { SetVariable(i); - div += "
            \"\"
            "; + div += "
            \"Снежинка\"
            "; } document.getElementById('snow').innerHTML = div; @@ -304,8 +304,8 @@ function WeatherBegin() { // IE main animation function if(isset($u->room['id'])) { - $tmGo = $u->info['timeGo']-time(); // - $tmGol = $u->info['timeGo']-$u->info['timeGoL']; // + $tmGo = $u->info['timeGo']-time(); //сколько секунд осталось + $tmGol = $u->info['timeGo']-$u->info['timeGoL']; //сколько секунд идти всего if($tmGo<0) { $tmGo = 0; @@ -314,10 +314,10 @@ if(isset($u->room['id'])) { $tmGol = 1; } - // + //онлайн в этой комнате $goLis = ' - + @@ -343,12 +343,12 @@ if(isset($u->room['id'])) $rowon = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > '.(time()-520).' AND `city` = "'.$u->city_unid[$sil].'"')); $rowon = $rowon[0]; $rowonmax2 += $rowon; - $rowonmax .= ' '.$u->city_name[$u->city_unid[$sil]].': '.$rowon.' ., '; + $rowonmax .= ' '.$u->city_name[$u->city_unid[$sil]].': '.$rowon.' чел., '; $sil++; } */ $rowonmax2 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > '.(time()-520).' AND `city` = "'.$u->info['city'].'" LIMIT 200')); - $rowonmax = ' : '.$rowonmax2[0].' .'; + $rowonmax = 'Сейчас в городе: '.$rowonmax2[0].' чел.'; $rowonmax = ''.$rowonmax.''; unset($sil,$pil,$rowonmax2); if($u->room['file']!='') diff --git a/modules_data/location/_ref.php b/modules_data/location/_ref.php index df96b70f..8ed80227 100644 --- a/modules_data/location/_ref.php +++ b/modules_data/location/_ref.php @@ -25,23 +25,23 @@ while($pl = mysql_fetch_array($sp)) } if($rfs['see']=='') { - $rfs['see'] = ' '; + $rfs['see'] = 'К сожалению у Вас нет рефералов'; } ?>
            - +
            - + - + - + @@ -50,39 +50,39 @@ if($rfs['see']=='')

            Рефералы

            Ваша уникальная ссылка
             
            : .Количество рефералов: шт.
              - + - + diff --git a/modules_data/location/_shop_referal_.php b/modules_data/location/_shop_referal_.php index 6832c783..75cb3521 100644 --- a/modules_data/location/_shop_referal_.php +++ b/modules_data/location/_shop_referal_.php @@ -14,18 +14,18 @@ if($u->room['file']=='_shop_referal_') if(isset($to['id'])) { if($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; + $re = '
            Хаосникам запрещается делать подарки другим игрокам
            '; }elseif($to['id']==$u->info['id']) { - $re = '
            - ;)
            '; + $re = '
            Очень щедро дарить что-то самому себе ;)
            '; }elseif($u->info['level']<4) { - $re = '
            4-
            '; + $re = '
            Дарить подарки можно начиная с 4-го уровня
            '; }else{ if( $_POST['itemgift'] > 1000000000000 ) { $itm_l = mysql_fetch_array(mysql_query('SELECT * FROM `users_gifts` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string((int)$_POST['itemgift']-1000000000000).'" LIMIT 1')); if( isset($itm_l['id']) && $itm_l['money'] > $u->info['money'] ) { - $re = '
            '; + $re = '
            Недостаточно денег
            '; }elseif( isset($itm_l['id']) ) { $itm = $u->addItem(4533,1,'|gift_id='.$itm_l['id'].''); if( $itm > 0 ) { @@ -39,31 +39,31 @@ if($u->room['file']=='_shop_referal_') $itm['gtxt1'] = str_replace('\x3C','<',$itm['gtxt1']); $itm['gtxt1'] = str_replace('\x3','>',$itm['gtxt1']); - $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL,'cp1251'); + $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL); $itm['gtxt2'] = str_replace('\x3C','<',$itm['gtxt2']); $itm['gtxt2'] = str_replace('\x3','>',$itm['gtxt2']); - $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL,'cp1251'); + $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL); $upd = mysql_query('UPDATE `items_users` SET `data` = "'.$itm['data'].'",`gtxt1` = "'.mysql_real_escape_string($itm['gtxt1']).'",`gtxt2` = "'.mysql_real_escape_string($itm['gtxt2']).'", `uid` = "'.$to['id'].'", `gift` = "'.$u->info['login'].'",`time_create` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); $whos = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "'.$to['id'].'" LIMIT 1')); - $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": [id="'.$u->info['id'].'"/ : "'.$u->info['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); - $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": [id="'.$to['id'].'"/ : "'.$whos['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": Получен подарок от [id="'.$u->info['id'].'"/ Логин : "'.$u->info['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": Сделал подарок персонажу [id="'.$to['id'].'"/ Логин : "'.$whos['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); if($upd) { - $re = '
            "'.$to['login'].'" '.$itm_l['money'].' .
            '; - $text = ' '.$itm_l['name'].'. [login:'.$u->info['login'].'] .'; + $re = '
            Подарок был успешно отправлен к "'.$to['login'].'" за '.$itm_l['money'].' кр.
            '; + $text = ' Получен подарок '.$itm_l['name'].'. От персонажа [login:'.$u->info['login'].'] .'; mysql_query("INSERT INTO `chat` (`new`, `city`, `room`, `login`, `to`, `text`, `time`, `type`, `toChat`) VALUES ('1','".$u->info['city']."', '', '', '".$to['login']."', '".$text."', '".time()."', '6', '0')"); }else{ - $re = '
            '; + $re = '
            Не удалось сделать подарок
            '; } }else{ - $re = '
            , ...
            '; + $re = '
            Не удалось сделать подарок, он испортился...
            '; } }else{ - $re = '
            , ...
            '; + $re = '
            Не удалось сделать подарок, курьер случайно сломал его...
            '; } }else{ - $re = '
            '; + $re = '
            Предмет не найден
            '; } }else{ $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "63" OR `im`.`type` = "64") AND `iu`.`id` = "'.mysql_real_escape_string($_POST['itemgift']).'" AND `iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`gift` = "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" LIMIT 1')); @@ -76,30 +76,30 @@ if($u->room['file']=='_shop_referal_') $itm['gtxt1'] = str_replace('\x3C','<',$itm['gtxt1']); $itm['gtxt1'] = str_replace('\x3','>',$itm['gtxt1']); - $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL,'cp1251'); + $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL); $itm['gtxt2'] = str_replace('\x3C','<',$itm['gtxt2']); $itm['gtxt2'] = str_replace('\x3','>',$itm['gtxt2']); - $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL,'cp1251'); + $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL); $upd = mysql_query('UPDATE `items_users` SET `data` = "'.$itm['data'].'",`gtxt1` = "'.mysql_real_escape_string($itm['gtxt1']).'",`gtxt2` = "'.mysql_real_escape_string($itm['gtxt2']).'", `uid` = "'.$to['id'].'", `gift` = "'.$u->info['login'].'",`time_create` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); $whos = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "'.$to['id'].'" LIMIT 1')); - $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": [id="'.$u->info['id'].'"/ : "'.$u->info['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); - $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": [id="'.$to['id'].'"/ : "'.$whos['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": Получен подарок от [id="'.$u->info['id'].'"/ Логин : "'.$u->info['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": Сделал подарок персонажу [id="'.$to['id'].'"/ Логин : "'.$whos['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); if($upd) { - $re = '
            "'.$to['login'].'"
            '; - $text = ' '.$itm['name'].'. [login:'.$u->info['login'].'] .'; + $re = '
            Подарок был успешно отправлен к "'.$to['login'].'"
            '; + $text = ' Получен подарок '.$itm['name'].'. От персонажа [login:'.$u->info['login'].'] .'; mysql_query("INSERT INTO `chat` (`new`, `city`, `room`, `login`, `to`, `text`, `time`, `type`, `toChat`) VALUES ('1','".$u->info['city']."', '', '', '".$to['login']."', '".$text."', '".time()."', '6', '0')"); }else{ - $re = '
            '; + $re = '
            Не удалось сделать подарок
            '; } }else{ - $re = '
            '; + $re = '
            Предмет не найден
            '; } } } }else{ - $re = '
            '; + $re = '
            Персонаж с таким логином не найден
            '; } } @@ -113,7 +113,7 @@ if($u->room['file']=='_shop_referal_') $shopProcent -= $bns; if($shopProcent>99){ $shopProcent = 99; } if($shopProcent<1){ $shopProcent = 1; } - echo '
            : '.$bns.'%
            50%
            '; + echo '
            У Вас действует бонус при продаже: '.$bns.'%
            Вы сможете продавать предметы за 50% от их стоимости
            '; } } if(!isset($_GET['otdel'])) { @@ -125,7 +125,7 @@ if($u->room['file']=='_shop_referal_') if($u->newAct($_GET['sd4'])==true){ $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['sale']) && isset($_GET['item']) && $u->newAct($_GET['sd4'])){ $id = (int)$_GET['item']; @@ -139,15 +139,15 @@ if($u->room['file']=='_shop_referal_') $po['nosale'] = 1; } if( ($itm['gift'] != '' && $itm['gift'] != '0') && ( $itm['type'] == 37 || $itm['type'] == 38 || $itm['type'] == 39 || $itm['type'] == 63 ) ) { - $error = ' , ! :)'; + $error = 'Нельзя продавать подарки, они должны оставаться на память! :)'; }elseif(isset($po['nosale'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, запрет продажи данного предмета ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0) && $pl['type'] != 28){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, вышел срок годности ...'; }elseif(isset($po['fromlaba'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, предмет из лабиринта продается за воинственность ...'; }elseif(isset($po['frompisher'])){ - $error = ' '; + $error = 'Предметы с подземелья нельзя продать'; }elseif(isset($itm['id'])){ if($itm['1price']>0){ $itm['price1'] = $itm['1price']; @@ -190,18 +190,18 @@ if($u->room['file']=='_shop_referal_') $u->info['money'] += $shpCena; $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - $error = ' "'.$itm['name'].' [x'.$col.']" '.$shpCena.' .'; + $error = 'Вы успешно продали предмет "'.$itm['name'].' [x'.$col.']" за '.$shpCena.' кр.'; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр..',time(),$u->info['city'],'System.shop',0,0); } else { - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр. (кредиты не переведены).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось продать предмет...'; } } else { - $error = ' ...'; + $error = 'Не удалось продать предмет...'; } } else { - $error = ' .'; + $error = 'Предмет не найден в инвентаре.'; } } elseif(isset($_GET['sale']) && isset($_GET['item_rep']) && $u->newAct($_GET['sd4']) ) { $id = (int)$_GET['item_rep']; @@ -211,9 +211,9 @@ if($u->room['file']=='_shop_referal_') $po['nosale'] = 1; } if(isset($po['nosale'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, запрет продажи данного предмета ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0)){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, вышел срок годности ...'; }elseif(isset($itm['id'])){ $shpCena = $itm['pricerep']; @@ -253,19 +253,19 @@ if($u->room['file']=='_shop_referal_') $u->rep['rep3'] += $shpCena; $upd = mysql_query('UPDATE `rep` SET `rep3` = "'.$u->rep['rep3'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd){ - $error = ' "'.$itm['name'].' [x'.$col.']" +'.$shpCena.' .
            - : '.($u->rep['rep3']-$u->rep['rep3_buy']).''; + $error = 'Вы успешно обменяли предмет "'.$itm['name'].' [x'.$col.']" на +'.$shpCena.' воинственности.
            + Ваша воинственность: '.($u->rep['rep3']-$u->rep['rep3_buy']).''; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' воинственность..',time(),$u->info['city'],'System.shop',0,0); }else{ - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' воинственность. (Репутация не переведена).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось обменять предмет...'; } }else{ - $error = ' ...'; + $error = 'Не удалось обменять предмет...'; } }else{ - $error = ' .'; + $error = 'Подходящий предмет не найден в инвентаре.'; } } @@ -273,9 +273,9 @@ if($u->room['file']=='_shop_referal_') '); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -116,30 +116,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -149,14 +149,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -179,7 +179,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $tmx = 5; } - // + //только своего уровня $lmn = $u->info['level']; $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -196,16 +196,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -216,11 +216,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -232,7 +232,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -240,11 +240,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -290,7 +290,7 @@ body @@ -308,7 +308,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -317,7 +317,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = ''.$pr.'
            '.$dzs.''.$pr.''; } @@ -335,14 +335,14 @@ if($u->info['dn']==0) @@ -187,11 +187,11 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) {
            +   -

            Настройка реферальной системы

            - + - + - +
            .:Счет зачисления Екр.:
            :Тип регистрации:
             
            - +
            Вход в подземелье
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -356,14 +356,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -372,7 +372,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } diff --git a/modules_data/location/ab/hram.php b/modules_data/location/ab/hram.php index 381e5e15..69a3ec9e 100644 --- a/modules_data/location/ab/hram.php +++ b/modules_data/location/ab/hram.php @@ -10,12 +10,12 @@ $qst_hram = true; if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { if ($_GET['r'] == 1) { $_GET['itm'] = (int)$_GET['itm']; - // + //Переплавка вещей $resz = $u->plavka($_GET['itm'], 1); $re = '' . $resz . ''; unset($resz); } elseif ($_GET['r'] == 2) { - // + //Переплавка рун $resz = ''; $itm123 = explode('x', $_GET['itm']); @@ -31,14 +31,14 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { if (!isset($itm1['id']) || !isset($itm2['id']) || !isset($itm3['id'])) { - $resz = ' .'; + $resz = 'Недостаточно компонентов для преобразования.'; } elseif ($itm1['iid'] == $itm2['iid'] || $itm2['iid'] == $itm3['iid'] || $itm1['iid'] == $itm3['iid']) { - $resz = ' , .'; + $resz = 'Не удалось расплавить одну руну, она не сгорела.'; } if (empty($resz)) { $check = \Insallah\Runes::checkParts($itm1['item_id'], $itm2['item_id'], $itm3['item_id'], $u->rep['rep1']); if (empty($check)) { - $resz = ' !'; + $resz = 'Ингредиенты должны быть одного уровня или у вас недостаточен уровень прокачки храма знаний!'; } else { mysql_query(sprintf($check['query'], $u->info['id'])); $newRune = \Insallah\Runes::get($check['rune_level']); @@ -48,13 +48,13 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { mysql_query(sprintf('update items_users set `delete` = unix_timestamp() where id in (%d, %d, %d)', $itm1['iid'], $itm2['iid'], $itm3['iid'])); if (date('w') == 0 || date('w') == 6 || date('w') == 2) { - $u->repexp_add($u->info['id'], 10); // +10 + $u->repexp_add($u->info['id'], 10); //Репутация плавка рун +10 } } } } } elseif ($itm1['level'] == 1) { - //$resz = ' '; + //$resz = 'Унируны нельзя преобразовывать'; $itm4 = []; $sp = mysql_query('SELECT * FROM `items_main` WHERE `level` = "' . $itm1['level'] . '" AND `type` = 31 AND `id` != "' . $itm1['item_id'] . '" AND `id` != "' . $itm2['item_id'] . '" AND `id` != "' . $itm3['item_id'] . '" AND `id` < 6000'); @@ -64,7 +64,7 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { $itm4 = $itm4[rand(0, count($itm4) - 1)]; mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm3['iid'] . '" OR `id` = "' . $itm2['iid'] . '" OR `id` = "' . $itm1['iid'] . '"'); $u->addItem($itm4['id'], $u->info['id']); - $resz = ' "' . $itm1['name'] . '","' . $itm2['name'] . '" "' . $itm3['name'] . '" "' . $itm4['name'] . '".'; + $resz = 'Удачно преобразованы руны "' . $itm1['name'] . '","' . $itm2['name'] . '" и "' . $itm3['name'] . '" в "' . $itm4['name'] . '".'; } else { $itm4 = []; $sp = mysql_query('SELECT * FROM `items_main` WHERE `level` = "' . $itm1['level'] . '" AND `type` = 31 @@ -75,7 +75,7 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { $itm4 = $itm4[rand(0, count($itm4) - 1)]; mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm3['iid'] . '" OR `id` = "' . $itm2['iid'] . '" OR `id` = "' . $itm1['iid'] . '"'); $u->addItem($itm4['id'], $u->info['id']); - $resz = ' "' . $itm1['name'] . '","' . $itm2['name'] . '" "' . $itm3['name'] . '" "' . $itm4['name'] . '".'; + $resz = 'Удачно преобразованы руны "' . $itm1['name'] . '","' . $itm2['name'] . '" и "' . $itm3['name'] . '" в "' . $itm4['name'] . '".'; } $re = '' . $resz . ''; @@ -139,10 +139,10 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { + title="">Центральная + площадь
            -
            Храм Знаний
            ' . $re . ''; @@ -170,8 +170,8 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { id="greyText" class="menutop" onclick="location='main.php?loc=3.180.0.267&rnd=';" - title=""> -


            -   ';"/>  

            @@ -199,7 +199,7 @@ if (isset($_GET['itm']) && $qst_hram && $_GET['itm'] > 0) { @@ -228,7 +228,7 @@ if (!isset($_GET['r'])) { style="cursor:pointer; font-weight:bold; color:#D8D8D8; font-size:10px;">   + onclick="window.open('https://new-combats.com/forum', 'forum', 'location=yes,menubar=yes,status=yes,resizable=yes,toolbar=yes,scrollbars=yes,scrollbars=yes')">Форум  
            src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
            -
            -
            onclick="location.href='main.php?r=1'" title=" " src="https://img.new-combats.com/city/ap_altar1.gif" width="147" height="93" class="aFilter" />
            -
            onclick="location.href='main.php?r=2'" title=" " src="https://img.new-combats.com/city/ap_altar2.gif" width="147" height="93" class="aFilter" />
            +
            +
            onclick="location.href='main.php?r=1'" title="Алтарь Предметов" src="https://img.new-combats.com/city/ap_altar1.gif" width="147" height="93" class="aFilter" />
            +
            onclick="location.href='main.php?r=2'" title="Алтарь Рун" src="https://img.new-combats.com/city/ap_altar2.gif" width="147" height="93" class="aFilter" />
            src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
            @@ -204,16 +204,16 @@ if($u->room['file']=='ab/hram')
            - +


            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.

            ( )
            ПУСТО (нет подходящих предметов)
            - +
            Вход в подземелье
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -356,14 +356,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -372,7 +372,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } diff --git a/modules_data/location/ab/quest.php b/modules_data/location/ab/quest.php index f85361c5..314c1599 100644 --- a/modules_data/location/ab/quest.php +++ b/modules_data/location/ab/quest.php @@ -54,7 +54,7 @@ if($u->room['file']=='ab/quest')
            -
            +
            Домик Бабушки
            '.$re.''; } ?>
            @@ -69,7 +69,7 @@ if($u->room['file']=='ab/quest') @@ -81,14 +81,14 @@ if($u->room['file']=='ab/quest')
            - +
            Центральная площадь


            -  

            +  

            @@ -101,7 +101,7 @@ if($u->room['file']=='ab/quest')
            -
               
            +
              Форум  
            src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
            -
            +
            src="https://img.new-combats.com/city/ap_exit.gif" width="57" height="26" class="aFilter" />
            @@ -125,16 +125,16 @@ if($u->room['file']=='ab/quest')
            - +


            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.

            '.$tmgo.' '.$u->city_name[$plc].''.$pl['time_go'].' .'.$pl['price1'].' . '.$pl['time_go'].' мин.'.$pl['price1'].' кр. нет '.$bl.' '.$bb.'
            '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).''.$pl['price1'].' .'.$pl['price1'].' кр. '.$u->timeOut($zd['time']-time()).'Задержка еще '.$u->timeOut($zd['time']-time()).'!Поехали!
            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            -

            +

            Расписание движения карет на сегодня

            - - - - - - - + + + + + + +
            время отправления
            пункт назначения
            время в пути
            цена билета
            требуется виза
            осталось билетов
            приобрести билет
            - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            - -
            - - ,
            + - Для отправления в другой город Вы должны быть онлайн когда будет отправляться карета
            + - Если Вы опоздали на карету, тогда билет можно сдать в магазин за половину его стоимости
            @@ -318,8 +318,8 @@ if($u->room['file']=='ab/vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/altar_cat.php b/modules_data/location/altar_cat.php index 930b6c12..251e382f 100644 --- a/modules_data/location/altar_cat.php +++ b/modules_data/location/altar_cat.php @@ -23,33 +23,33 @@ if(isset($file) && $file[0]=='altar_cat.php') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['add_alt_char'])) { - // + //Ложим предмет $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `data` LIKE "%alt_cat=%" AND `id` = "'.mysql_real_escape_string($_GET['add_alt_char']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" AND `inTransfer` = "0" LIMIT 1')); if(!isset($itm['id'])) { - $re = ' '; + $re = 'Подходящий предмет не найден'; }else{ if($u->itemsX($itm['id'])==1) { $itm_m = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itm['item_id'].'" LIMIT 1')); mysql_query('UPDATE `items_users` SET `inShop` = "'.$sid.'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $re = ' "'.$itm_m['name'].'" '; + $re = 'Предмет "'.$itm_m['name'].'" успешно добавлен'; }else{ - // - $re = ' '; + //группа + $re = 'Разделите группу предметов'; } } }elseif(isset($_GET['clear_alt_char'])){ - // + //Ложим предмет $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `data` LIKE "%alt_cat=%" AND `id` = "'.mysql_real_escape_string($_GET['clear_alt_char']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "'.$sid.'" AND `inOdet` = "0" AND `inTransfer` = "0" LIMIT 1')); if(!isset($itm['id'])) { - $re = ' '; + $re = 'Подходящий предмет не найден'; }else{ $itm_m = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itm['item_id'].'" LIMIT 1')); mysql_query('UPDATE `items_users` SET `inShop` = "0",`lastUPD` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $re = ' "'.$itm_m['name'].'" '; + $re = 'Предмет "'.$itm_m['name'].'" успешно убран'; } }elseif(isset($_GET['createLaba'])) { $vaza = true; @@ -89,10 +89,10 @@ if(isset($file) && $file[0]=='altar_cat.php') if(isset($itm['id'])) { if($vaza==true && isset($itm_data['data'])){ $itm_data = $u->lookStats($itm_data['data']); - $itm_data = array('srok'=>$itm_data['srok']); // ! - $itm_data['srok'] = (int)$itm_data['srok']; // ! + $itm_data = array('srok'=>$itm_data['srok']); // Извлекаем только срок! + $itm_data['srok'] = (int)$itm_data['srok']; // Только Цифры! if(isset($itm_data['srok']) and $itm_data['srok']>0){ - $itm_data['srok'] = $itm_data['srok']*3; // ! + $itm_data['srok'] = $itm_data['srok']*3; // В три раза больше срок хранения! $itm_data = '|'.$u->impStats($itm_data); } } else { @@ -100,15 +100,15 @@ if(isset($file) && $file[0]=='altar_cat.php') } $u->addItem($itm['id'],$u->info['id'],$itm_data,NULL,NULL,true); mysql_query('UPDATE `items_users` SET `delete` = "'.time().'",`inShop` = "0" WHERE '.$rec3.' LIMIT '.$rec3l); - $re = ' "'.$itm['name'].'" !'; + $re = 'Предмет "'.$itm['name'].'" был успешно создан!'; }else{ - $re = ' ...'; + $re = 'Не удалось получить чарку по рецепту...'; } } else { if($u->info['admin']>0) { echo '
            ITM1: '.$rec1.'
            ITM2: '.$rec2.'
            '; } - $re = ' ...'; + $re = 'Подходящий рецепт не найден...'; } } if($re!=''){ echo '
            '.$re.'
            '; } ?> @@ -152,8 +152,8 @@ if(isset($file) && $file[0]=='altar_cat.php') }
              @@ -306,7 +306,7 @@ if($u->room['file']=='ab/vokzal') - +
            Центральная Площадь
            - @@ -706,7 +706,7 @@ if ($u->room['file'] == 'an/bank') { + @@ -716,12 +716,12 @@ if ($u->room['file'] == 'an/bank') { } if (!isset($u->bank['id'])) { ?> - : + Мы предоставляем следующие услуги:
              -
            1. -
            2. / / -
            3. / -
            4. . +
            5. Открытие счета +
            6. Возможность положить/снять кредиты/еврокредиты со счета +
            7. Перевести кредиты/еврокредиты с одного счета на другой +
            8. Обменный пункт. Обмен еврокредитов на кредиты
            - ? : + Хотите открыть свой счет? Услуга платная:

            -
            : microLogin($u->info['id'],1)?>
            +
            Лаборатория

            +
            Персонаж: microLogin($u->info['id'],1)?>
            '.$error.''; ?> @@ -162,17 +162,17 @@ if(isset($file) && $file[0]=='altar_cat.php')
            - + '; $treb = explode(',', $pl['itm_1']); @@ -235,39 +235,39 @@ if(isset($file) && $file[0]=='altar_cat.php') $resAdd = ''; $sp = mysql_query('SELECT `u`.*,`m`.`name`,`m`.`type`,`m`.`img` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `u`.`item_id` = `m`.`id` WHERE `u`.`uid` = "'.$u->info['id'].'" AND `u`.`inShop` = "'.$sid.'" AND `u`.`delete` = "0" AND `u`.`data` LIKE "%alt_cat=1%"'); while($pl = mysql_fetch_array($sp)) { - $res_Add .= '

             
            '; + $res_Add .= '

             
            '; } $sp = mysql_query('SELECT `u`.*,`m`.`name`,`m`.`type`,`m`.`img` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `m` ON `u`.`item_id` = `m`.`id` WHERE `u`.`uid` = "'.$u->info['id'].'" AND `u`.`inShop` = "'.$sid.'" AND `u`.`delete` = "0" AND `u`.`data` LIKE "%alt_cat=2%"'); while($pl = mysql_fetch_array($sp)) { - $itemsAdd .= '

             
            '; + $itemsAdd .= '

             
            '; } ?>
            ' ""',2=>'"'); + $otdels_small_array = array (1=>'Отдел "Лаборатория"',2=>'Рецепты"'); if(isset($otdels_small_array[$_GET['otdel']])) { echo $otdels_small_array[$_GET['otdel']]; @@ -197,10 +197,10 @@ if(isset($file) && $file[0]=='altar_cat.php') '; $itm['srok'] = ($itm['srok']/60/60/24); $is2.=''.$itm['name'].'
            - : '.$itm['massa'].'
            - : '.$itm['price1'].' .
            - : 0/'.$itm['iznosMAXi'].'
            - : '.$itm['level'].''; + Масса: '.$itm['massa'].'
            + Цена: '.$itm['price1'].' кр.
            + Долговечность: 0/'.$itm['iznosMAXi'].'
            + Уровень: '.$itm['level'].''; $is2.='
            - + - - + - @@ -303,17 +303,17 @@ if(isset($file) && $file[0]=='altar_cat.php')

            - : aves['now']?>/aves['max']?>  
            + Масса: aves['now']?>/aves['max']?>  

            -
            +
            -
            :
            +
            Отделы:
            ' ',2=>''); + /*названия разделов (справа)*/ + $otdels_array = array (1=>'Соединить чарки',2=>'Рецепты'); $i=1; while($i!=-1) { diff --git a/modules_data/location/an/bank.php b/modules_data/location/an/bank.php index 35d99121..714cfe7d 100644 --- a/modules_data/location/an/bank.php +++ b/modules_data/location/an/bank.php @@ -9,7 +9,7 @@ require_once '_incl_data/mails.php'; if ($u->room['file'] == 'an/bank') { $noc = 60; //120 kr = 1 ekr. - $con = 20; //1 . = 30 . + $con = 20; //1 екр. = 30 кр. function getNum($v) { $plid = $v; @@ -55,7 +55,7 @@ if ($u->room['file'] == 'an/bank') { ) ); if (!isset($bank['id'])) { - $re2 = ' .'; + $re2 = 'Неверный номер счета.'; } elseif ($bank['pass'] != $_POST['pass']) { $pl = mysql_fetch_array( mysql_query( @@ -66,13 +66,13 @@ if ($u->room['file'] == 'an/bank') { ) ); if ($pl[0] >= 3) { - $re2 = ' 1 '; + $re2 = 'Ваш счет был заблокирован на 1 час'; } else { if ($pl[0] == 0) { - $re2 = ' . , '; + $re2 = 'Неверный номер счета или пароль. Если вы трижды введете неверный номер счета или пароль, счет будет заблокирован на час'; } else { - $pp = [0 => '', 1 => '', 2 => '', 3 => '']; - $re2 = ' . ' . (3 - $pl[0]) . ' ' . $pp[3 - $pl[0]] . ', '; + $pp = [0 => 'ок', 1 => 'ка', 2 => 'ки', 3 => 'ки']; + $re2 = 'Неверный номер счета или пароль. У вас осталось ' . (3 - $pl[0]) . ' попыт' . $pp[3 - $pl[0]] . ', в противном случаи счет будет заблокирован на час'; } mysql_query( 'INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("' . $u->info['id'] . '","' . time( @@ -84,11 +84,11 @@ if ($u->room['file'] == 'an/bank') { } else { if ($u->info['allLock'] > time()) { - echo ''; } else { - //! + //вошли! $bank['useNow'] = time() + 12 * 60 * 60; mysql_query( 'UPDATE `bank` SET `useNow` = "0" WHERE `id` != "' . $bank['id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `useNow`!="0" LIMIT 1' @@ -115,7 +115,7 @@ if ($u->room['file'] == 'an/bank') { ) ); if ($b_pass['repass'] >= time()) { - $re2 = ' '; + $re2 = 'Номера счетов и пароли к ним можно выслать только один раз в сутки'; } else { mysql_query( 'INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("' . $u->info['id'] . '","' . time( @@ -123,31 +123,31 @@ if ($u->room['file'] == 'an/bank') { $_SERVER['HTTP_X_REAL_IP'] ) . '")' ); - $re2 = ' email, '; + $re2 = 'Выслан номер счета и пароль на email, указанный в анкете'; mysql_query( 'UPDATE `bank` SET `repass` = "' . (time( ) + 24 * 3600) . '" WHERE `id` = "' . $b_pass['id'] . '" LIMIT 1' ); - $subject = ' ' . $u->info['login']; - $message = ' : ' . getNum($b_pass['id']) . '
            : ' . $b_pass['pass'] . - '

            ,
            '; + $subject = 'Восстановление пароля от счета в банке персонажа ' . $u->info['login']; + $message = 'Номер счета: ' . getNum($b_pass['id']) . '
            Пароль: ' . $b_pass['pass'] . + '

            С уважением,
            Администрация Бойцовского Клуба'; \Core\Mail::send($u->info['mail'], $message, $subject); //mails($u->info['mail'], $message, $subject); unset($subject, $message); } } elseif (isset($_GET['open']) && !isset($u->bank['id'])) { if ($_POST['rdn01'] == 2 && ($u->info['level'] >= 8 || $u->info['money4'] < 15)) { - $re2 = ' !'; + $re2 = 'Недостаточно зубов!'; } elseif ($u->info['money'] >= 3 || ($u->info['level'] < 8 && $u->info['money4'] >= 15)) { if ($_POST['pass1'] == '' || $_POST['pass1'] == ' ') { - $re2 = ' !'; + $re2 = 'Вы не указали пароль!'; } elseif ($_POST['pass1'] != $_POST['pass2']) { - $re2 = ' !'; + $re2 = 'Пароли не совпадают!'; } elseif ($u->info['money'] - 3 < 0 && $_POST['rdn01'] != 2) { - $re2 = ' .'; + $re2 = 'У вас недостаточно кр.'; } elseif ($u->info['align'] != 2) { $pass = rand(10000, 91191); - $pass = htmlspecialchars($_POST['pass1'], null, 'cp1251'); + $pass = htmlspecialchars($_POST['pass1'], null); $ins = mysql_query( 'INSERT INTO `bank` (`uid`,`create`,`pass`) VALUES ("' . $u->info['id'] . '","' . time( ) . '","' . $pass . '")' @@ -162,24 +162,24 @@ if ($u->room['file'] == 'an/bank') { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money4` = "' . $u->info['money4'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); - $re2 = ' ' . getNum( + $re2 = 'Счет №' . getNum( $bank - ) . ' .
            : ' . $pass . '

            ( " " )'; + ) . '
            был успешно открыт.
            Пароль от счета: ' . $pass . '

            (Сменить пароль можно в разделе "Управление счетом" после авторизации)'; $u->addDelo( - 3, $u->info['id'], ' ' . getNum($bank) . '', time(), $u->info['city'], + 3, $u->info['id'], 'Вы успешно открыли счет №' . getNum($bank) . '', time(), $u->info['city'], 'Bank.System', 3, 0, '' ); } else { - $re2 = ' .'; + $re2 = 'Банк отказал в получении банковского счета.'; } } else { - $re2 = ' .'; + $re2 = 'Хаосники не могут создавать новые счета в банке.'; } } else { if ($u->info['level'] < 8) { - $re2 = ' 3.00 . ' . $u->zuby(15) . ''; + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр. или ' . $u->zuby(15) . ''; } else { - $re2 = ' 3.00 .'; + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр.'; } } } elseif (isset($_GET['exit']) && isset($u->bank['id'])) { @@ -196,7 +196,7 @@ if ($u->room['file'] == 'an/bank') { if (isset($u->bank['id'])) { if (isset($_POST['sd4']) && $u->newAct($_POST['sd4'])) { if (isset($_POST['transfer_kredit2']) && $u->info['admin'] > 0) { - // + //перевод екредитов с одного счета на другой $ub = mysql_fetch_array( mysql_query( 'SELECT * FROM `bank` WHERE `id` = "' . mysql_real_escape_string( @@ -219,7 +219,7 @@ if ($u->room['file'] == 'an/bank') { $mn += $prc; if ($u->bank['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money2` = "' . mysql_real_escape_string( @@ -246,25 +246,25 @@ if ($u->room['file'] == 'an/bank') { $ub['money2'] ) . '" WHERE `id` = "' . $ub['id'] . '" LIMIT 1' ); - $re2 = ' ' . ($mn - $prc) . ' . ( ' . $prc . ' .) ' . getNum( + $re2 = 'Вы удачно перевели ' . ($mn - $prc) . ' екр. (комиссия ' . $prc . ' екр.) на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '"'; + ) . ' персонажу "' . $ut['login'] . '"'; $u->addDelo( - 3, $ut['id'], ' ' . ($mn - $prc) . ' . ' . getNum( + 3, $ut['id'], 'Получено ' . ($mn - $prc) . ' екр. со счета №' . getNum( $u->bank['id'] - ) . ' "' . $u->info['login'] . '", ' . $prc . ' . (: ' . $ub['money1'] . ' ., ' . $ub['money2'] . ' .)', + ) . ' от персонажа "' . $u->info['login'] . '", комиссия ' . $prc . ' екр. (Итого: ' . $ub['money1'] . ' кр., ' . $ub['money2'] . ' екр.)', time(), $ut['city'], 'Bank.System', mysql_real_escape_string($mn - $prc), 0, $ub['id'] ); $u->addDelo( 3, $u->info['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Передано ' . ($mn - $prc) . ' екр. на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '", ' . $prc . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' персонажу "' . $ut['login'] . '", комиссия ' . $prc . ' екр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn), $u->bank['id'] ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $u->bank['id'] . ' ' . $ub['id'] . ' "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' .'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] перевел со своего банковского счета №' . $u->bank['id'] . ' на счет №' . $ub['id'] . ' к персонажу "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' екр.'; $u->addDelo( 1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, '' ); @@ -274,9 +274,9 @@ if ($u->room['file'] == 'an/bank') { if ($u->info['align'] == 50) { $alg = ''; } - $text = '"' . $alg . '[login:' . $u->info['login'] . ']" ' . ($u->info['sex'] == 0 ? "" : "") . ' ' . ($mn - $prc) . ' . ' . getNum( + $text = '"' . $alg . '[login:' . $u->info['login'] . ']" перевел' . ($u->info['sex'] == 0 ? "" : "а") . ' вам ' . ($mn - $prc) . ' екр. со своего банковского счета №' . getNum( $u->bank['id'] - ) . ' ' . getNum($ub['id']) . '.'; + ) . ' на ваш банковский счет №' . getNum($ub['id']) . '.'; mysql_query( "INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('" . $ut['city'] . "','" . $ut['room'] . "','','" . $ut['login'] . "','" . $text . "','" . time( @@ -284,20 +284,20 @@ if ($u->room['file'] == 'an/bank') { ); } } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' екр. на счете'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } elseif (isset($_POST['transfer_kredit']) && $u->info['align'] != 2) { - // + //перевод кредитов с одного счета на другой if ($u->info['level'] >= 4 || $u->info['admin'] > 0) { $ub = mysql_fetch_array( mysql_query( @@ -321,7 +321,7 @@ if ($u->room['file'] == 'an/bank') { $mn += $prc; if ($u->bank['money1'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money1` = "' . mysql_real_escape_string( @@ -336,58 +336,58 @@ if ($u->room['file'] == 'an/bank') { $ub['money1'] ) . '" WHERE `id` = "' . $ub['id'] . '" LIMIT 1' ); - $re2 = ' ' . ($mn - $prc) . ' . ( ' . $prc . ' .) ' . getNum( + $re2 = 'Вы удачно перевели ' . ($mn - $prc) . ' кр. (комиссия ' . $prc . ' кр.) на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '"'; + ) . ' персонажу "' . $ut['login'] . '"'; $u->addDelo( 3, $ut['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Получено ' . ($mn - $prc) . ' кр. со счета №' . getNum( $u->bank['id'] - ) . ' "' . $u->info['login'] . '", ' . $prc . ' . (: ' . $ub['money1'] . ' ., ' . $ub['money2'] . ' .)', + ) . ' от персонажа "' . $u->info['login'] . '", комиссия ' . $prc . ' кр. (Итого: ' . $ub['money1'] . ' кр., ' . $ub['money2'] . ' екр.)', time(), $ut['city'], 'Bank.System', mysql_real_escape_string($mn - $prc), 0, $ub['id'] ); $u->addDelo( 3, $u->info['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Передано ' . ($mn - $prc) . ' кр. на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '", ' . $prc . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' персонажу "' . $ut['login'] . '", комиссия ' . $prc . ' кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn), $u->bank['id'] ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $u->bank['id'] . ' ' . $ub['id'] . ' "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' . ' . $prc . ' . .'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] перевел со своего банковского счета №' . $u->bank['id'] . ' на счет №' . $ub['id'] . ' к персонажу "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' кр. Дополнительно снято ' . $prc . ' кр. за услуги банка.'; $u->addDelo( 1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, '' ); $u->addDelo(1, $ut['id'], $log, time(), $ut['city'], 'Bank.System', 0, 0, ''); if ($ut['id'] != $u->info['id']) { - $text = '"[login:' . $u->info['login'] . ']" ' . ($u->info['sex'] == 0 ? "" : "") . ' ' . ($mn - $prc) . ' . ' . getNum( + $text = '"[login:' . $u->info['login'] . ']" перевел' . ($u->info['sex'] == 0 ? "" : "а") . ' вам ' . ($mn - $prc) . ' кр. со своего банковского счета №' . getNum( $u->bank['id'] - ) . ' ' . getNum($ub['id']) . '.'; + ) . ' на ваш банковский счет №' . getNum($ub['id']) . '.'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $ut['city'] . "','" . $ut['room'] . "','','" . $ut['login'] . "','" . $text . "','" . time( ) . "','6','0','1')" ); } } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' 4- '; + $re2 = 'Передача кредитов возможна только с 4-го уровня'; } } elseif ($u->info['align'] != 2 && $u->info['haos'] < time( ) && $u->info['haos'] != 1 && $u->info['align'] != 50 && isset($_POST['convert_kredit']) && 1 == 2) { - // . . + //обменять кр. на екр. if ($u->info['palpro'] > time()) { $mn = ceil((int)($_POST['convert_sum2'] * 100)); $mn = round(($mn / 100), 2); @@ -401,11 +401,11 @@ if ($u->room['file'] == 'an/bank') { $sm_lim = 50; if (isset($sm['id']) && $sm['vals'] + $mne > $sm_lim) { if ($sm['vals'] < $sm_lim) { - $re2 = ' ' . ($sm_lim - $sm['vals']) . ' .. ( ' . round( + $re2 = 'На сегодня Вы можете обменять еще на ' . ($sm_lim - $sm['vals']) . ' екр.. (Примерно ' . round( (($sm_lim - $sm['vals']) * $noc), 2 - ) . ' .), ' . $mne . ' ..'; + ) . ' кр.), текущий обмен на ' . $mne . ' екр..'; } else { - $re2 = ' . . (' . $sm_lim . ' .)'; + $re2 = 'На сегодня Вы исчерпали свой лимит обмена кр. на екр. (' . $sm_lim . ' екр.)'; } } elseif ($mn > 0 && $mne > 0 && $mn >= round((0.01 * ($noc * 1.03) + 5), 2)) { if ($u->bank['money1'] >= $mn) { @@ -416,7 +416,7 @@ if ($u->room['file'] == 'an/bank') { 'UPDATE `actions` SET `vals` = "' . ($sm['vals'] + $mne) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' ); } - $re2 = ' ' . $mn . ' . ' . $mne . ' .'; + $re2 = 'Вы успешно обменяли ' . $mn . ' кр. на ' . $mne . ' екр.'; $u->bank['money1'] -= $mn; $u->bank['money2'] += $mne; @@ -433,34 +433,34 @@ if ($u->room['file'] == 'an/bank') { $u->bank['money2'] ) . '" WHERE `id` = "' . mysql_real_escape_string($u->bank['id']) . '" LIMIT 1' ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $mn . ' . ' . $mne . ' ., ' . $u->bank['id'] . '.'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] обменял ' . $mn . ' кр. на ' . $mne . ' екр., Банковский счет №' . $u->bank['id'] . '.'; $u->addDelo(1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, ''); $u->addDelo( - 3, $u->info['id'], ' ' . ceil( + 3, $u->info['id'], 'Вы успешно обменяли ' . ceil( (int)($_POST['convert_sum2'] * 100 / 100) - ) . ' . ' . $mne . ' ., ' . round( + ) . ' кр. на ' . $mne . ' екр., комиссия ' . round( (ceil((int)($_POST['convert_sum2'] * 100 / 100)) / 100 * 3 + 5), 2 - ) . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } else { - $re2 = ' ' . round( + $re2 = 'Минимальная сумма для обмена составляет ' . round( (0.01 * ($noc * 1.03) + 5), 2 - ) . ' .'; + ) . ' кр.'; } } else { - $re2 = ' .'; + $re2 = 'Вы должны пройти проверку на чистоту у Паладинов или Тарманов.'; } } elseif (isset($_POST['convert_ekredit'])) { - // . . + //обменять екр. на кр. $mn = ceil((int)($_POST['convert_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->bank['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money1` = "' . mysql_real_escape_string( @@ -474,25 +474,25 @@ if ($u->room['file'] == 'an/bank') { $u->bank['money2'] -= $mn; $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' . ' . ($mn * $con) . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы обменяли ' . $mn . ' екр. на ' . ($mn * $con) . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn * $con), $u->bank['id'] ); - $re2 = ' ' . $mn . ' . ' . ($mn * $con) . ' .'; + $re2 = 'Вы удачно обменяли ' . $mn . ' екр. на ' . ($mn * $con) . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' екр. на счете'; } } elseif (isset($_POST['get_kredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['get_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->bank['money1'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( @@ -509,24 +509,24 @@ if ($u->room['file'] == 'an/bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы сняли со счета ' . $mn . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно сняли со счета ' . $mn . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } elseif (isset($_POST['add_kredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['add_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->info['money'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( @@ -543,31 +543,31 @@ if ($u->room['file'] == 'an/bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы положили на счет ' . $mn . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно положили на свой счет ' . $mn . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' .'; + $re2 = 'У вас нет при себе ' . $mn . ' кр.'; } } elseif (isset($_POST['change_psw2'])) { - // + //смена пароля счета $sm = $u->testAction( '`uid` = "' . $u->info['id'] . '" AND `vals` = "id=' . $u->bank['id'] . '&new_pass=' . $u->bank['pass'] . '" AND `vars` = "bank_new_pass" AND `time` > "' . (time( ) - 24 * 60 * 60) . '" LIMIT 1', 1 ); if ($_POST['new_psw1'] != $_POST['new_psw2']) { - $re2 = ' '; + $re2 = 'Пароли не совпадают'; } elseif (iconv_strlen($_POST['new_psw1']) < 6 || iconv_strlen($_POST['new_psw1']) > 32) { - $re2 = ' 6 32 '; + $re2 = 'Пароль не может быть короче 6 или длинее 32 символов'; } elseif (isset($sm['id'])) { - $re2 = ' '; + $re2 = 'Нельзя менять пароль чаще одного раза в день'; } else { - // + //меняем $upd = mysql_query( 'UPDATE `bank` SET `pass` = "' . mysql_real_escape_string( $_POST['new_psw1'] @@ -578,15 +578,15 @@ if ($u->room['file'] == 'an/bank') { time(), 'bank_new_pass', 'id=' . $u->bank['id'] . '&new_pass=' . $_POST['new_psw1'] . '' ); $u->bank['pass'] = $_POST['new_psw1']; - $re2 = ' ' . getNum( + $re2 = 'Пароль от счета №' . getNum( $u->bank['id'] - ) . '
            : ' . $u->bank['pass'] . ''; + ) . '
            был успешно изменен
            Новый пароль: ' . $u->bank['pass'] . ''; $u->addDelo( - 3, $u->info['id'], ' .', time(), $u->info['city'], 'Bank.System', + 3, $u->info['id'], 'Был изменен пароль от счета.', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); } else { - $re2 = ' '; + $re2 = 'Вам отказали в смене пароля'; } } } @@ -654,7 +654,7 @@ if ($u->room['file'] == 'an/bank') {
            @@ -685,8 +685,8 @@ if ($u->room['file'] == 'an/bank') { title=""> - + ); ?>">Страшилкина + улица
            Соединение Чарок
            :
            +
            Чарки:

            - +
            -   
            ,
            +   
            Добавляйте сюда чарки, которые хотите соединить
            '.$res_Add; } ?>
            :Ресурсы у вас в рюкзаке:
            + @@ -292,7 +292,7 @@ if(isset($file) && $file[0]=='altar_cat.php')
            -
            +
            У вас нет подходящих чарок в рюкзаке
            - +
            Вернуться назад
            -


            +

            Банк

            -
            - + - +
            :Пароль счета:
            :Еще раз:
            - +
            @@ -785,13 +785,13 @@ if ($u->room['file'] == 'an/bank') {
            - + Управление счетом @@ -822,8 +822,8 @@ if ($u->room['file'] == 'an/bank') { >

            - ? email, : + Забыли пароль? Можно его выслать на email, номер счета:
            - + - + - +
            Номер счета
            Пароль
            @@ -850,34 +850,34 @@ if ($u->room['file'] == 'an/bank') { .pay td:hover img { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=80); /* IE 5.5+*/ - -moz-opacity: 0.8; /* Mozilla 1.6 */ + -moz-opacity: 0.8; /* Mozilla 1.6 и ниже */ -khtml-opacity: 0.8; /* Konqueror 3.1, Safari 1.1 */ opacity: 0.8; /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +, Safari 1.2+, Opera 9 */ cursor: pointer; } - +
            - -

              - : bank['id']); ?> [x]
            +

            Управление счетом

              + Счёт №: bank['id']); ?> [x]
            - + У вас на счете - + - + @@ -886,8 +886,8 @@ if ($u->room['file'] == 'an/bank') { - - + +
            :Кредитов: round2($u->bank['money1']); ?>
            :Еврокредитов: round2($u->bank['money2']); ?>
            :round2($u->info['money']); ?> .При себе наличных:round2($u->info['money']); ?> кр.
            @@ -895,8 +895,8 @@ if ($u->room['file'] == 'an/bank') {
            ! - , . + Внимание! Некоторые услуги банка + платные, о размере взымаемой комиссии написано в соответствующем разделе.
            @@ -919,7 +919,7 @@ if ($u->room['file'] == 'an/bank') {
            . + height="15"/> Приобретение Екр. онлайн - .: - + @@ -946,12 +946,12 @@ if ($u->room['file'] == 'an/bank') {
            - - + Пополнить счет + Сумма - . - + кр. +
            - - + Перевести кредиты на другой счет + Сумма - .
            - + кр.
            + Номер счета куда перевести кредиты
            + value="Перевести кредиты на другой счет" + onclick="if(Math.round(document.getElementById('vl1')).value==0 || Math.round(document.getElementById('vl2').value)==0) {alert('Укажите сумму и номер счета'); return false;} else {return confirm('Вы хотите перевести со своего счета '+(Math.floor(document.getElementById('vl1').value*100)/100).toFixed(2)+' кр. на счет номер '+Math.floor(document.getElementById('vl2').value)+' ?')}"/>
            - 3.00 % , 1.00 - . + Комиссия составляет 3.00 % от суммы, но не менее 1.00 + кр.
            - - .
            - 1 . = .00 .
            - + Обменный пункт + Обменять еврокредиты на кредиты.
            + Курс 1 екр. = .00 кр.
            + Сумма - . + екр. /> + value="Обменять" ).toFixed(2)+' кр. ?');" */ ?> />
            - - .
            - . = 1.00 .
            - + Обменный пункт + Обменять кредиты на еврокредиты.
            + Курс кр. = 1.00 екр.
            + Сумма - . + кр.
            - 3.00 % , - 5.00 . - + Комиссия составляет 3.00 % от суммы, а так-же 5.00 кр. +
            - - + Перевести еврокредиты на другой счет + Сумма - .
            - + екр.
            + Номер счета куда перевести кредиты
            + value="Перевести еврокредиты на другой счет" + onclick="if(Math.round(document.getElementById('vl12')).value==0 || Math.round(document.getElementById('vl22').value)==0) {alert('Укажите сумму и номер счета'); return false;} else {return confirm('Вы хотите перевести со своего счета '+(Math.floor(document.getElementById('vl12').value*100)/100).toFixed(2)+' екр. на счет номер '+Math.floor(document.getElementById('vl22').value)+' ?')}"/>
            - 0.00 % , 0.01 . + Комиссия составляет 0.00 % от суммы, но не менее 0.01 екр.
            - - email. - email, , , - email. - email. - / , !
            + Настройки + У вас разрешена высылка номера счета и пароля на email. Если вы не уверены в + своем email, или убеждены, что не забудете свой номер счета и пароль к нему, то + можете запретить высылку пароля на email. Это убережет вас от кражи кредитов с + вашего счета в случае взлома вашего email. Но если вы сами забудете свой номер + счета и/или пароль, вам уже никто не поможет!
            + value="Запретить высылку пароля на email"/>
            -
            + Сменить пароль
            - + - +
            Новый пароль
            Введите новый пароль повторно
            - +
            @@ -1071,12 +1071,12 @@ if ($u->room['file'] == 'an/bank') {
            - - + Снять со счета + Сумма - . - + кр. +
            - + Курс еврокредита к мировой валюте room['file'] == 'an/bank') { if (isset($pl['id'])) { ?> - + - @@ -1140,7 +1140,7 @@ if ($u->room['file'] == 'an/bank') {
            - Данные на + без учета комиссий
            1 . = 1 екр. = @@ -1128,8 +1128,8 @@ if ($u->room['file'] == 'an/bank') { ?>
            -
            -
            +
            Не удалось получить + информацию
            - + Последние операции room['file'] == 'an/bank') {
            - \ . + Сумма указанная в окне оповещения и суммы взымаемая\начисляемая могут различаться. room['file']=='an/bk'){ if(!isset($tst['id'])) { if(isset($_GET['noobgo'])) { if($_GET['noobgo'] == 1) { - // ( + //Согласился (создаем пещеру и телепортируем туда $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$u->info['city'].'","'.$u->info['id'].'","106"," ","'.time().'")'); + VALUES ("'.$u->info['city'].'","'.$u->info['id'].'","106","Академия Новичков","'.time().'")'); if($ins){ $zid = mysql_insert_id(); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`id`="'.$u->info['id'].'"'); $ids = ''; @@ -36,8 +36,8 @@ if($u->room['file']=='an/bk'){ $upd1 = mysql_query('UPDATE `stats` SET `s`="4",`res_s`="1",`x`="0",`y`="0",`res_x`="0",`res_y`="0",`dn` = "0",`dnow` = "'.$zid.'" WHERE '.$ids.''); if( $upd1 ){ $upd2 = mysql_query('UPDATE `users` SET `room` = "391" WHERE '.$ids.''); - // $zid for_dn = $dungeon['id'] - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dungeon['id'] + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "106"'); while( $pl = mysql_fetch_array( $sp ) ) { @@ -50,7 +50,7 @@ if($u->room['file']=='an/bk'){ } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`,`noatack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "106"'); while($pl = mysql_fetch_array($sp)) @@ -67,53 +67,53 @@ if($u->room['file']=='an/bk'){ if( $upd2 && $ins1 && $ins2 ){ die(''); } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } // //header('location: main.php'); die(); }else{ - // ( , ) + //Отказался (добавляем квест, системку и пошел нах) mysql_query('INSERT INTO `dialog_act` ( `uid`,`var`,`time` ) VALUES ( "'.$u->info['id'].'","noobqst1","'.time().'" )'); - // + //Начало обучения $humor = array( 0 => array( - ':maniac: ;)',':beggar: - !',':pal: !', - ':vamp: !',':susel: - !',':duel: !', - ':friday: !',':doc: : ! , ! ! - !' + ':maniac: Сильно не бейте ;)',':beggar: Будет попрошайничать - бейте!',':pal: Возможно светлый!', + ':vamp: Возможно темный!',':susel: Судя по здоровенному бицепсу - это мужик!',':duel: И сразу же кинулся в бой!', + ':friday: Не долго думав он начал искать собутыльника!',':doc: Лекарь: Новичок! Да, да! Ты! Если тебя сломают - у знахаря тебя соберут обратно!' ), 1 => array( - ':maniac: ! ;)',':nail: , ;)',':pal: !', - ':vamp: !',':rev: - !',':hug: !', - ':angel2: ...' + ':maniac: Помните! Девочек не бьем ;)',':nail: Она красит ногти, не отвлекайте все сразу ;)',':pal: Возможно светлая!', + ':vamp: Возможно темная!',':rev: Судя по красивой одежде - это женщина!',':hug: И сразу же кинулась всех целовать!', + ':angel2: Ангел сошел с небес...' ) ); $humor = $humor[$u->info['sex']]; //$u->info['fnq'] = 1; //mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // + //Отправляем сообщение в чат о новичке //mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4703'); //mysql_query('UPDATE `users` SET `room` = 4 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); //mysql_query('UPDATE `stats` SET `hpNow` = 1000,`mpNow` = 1000,`dn` = 0 , `dnow` = 0 , `x` = 0 , `y` = 0 , `s` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->send('','','','','',' "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); + $u->send('','','','','','В нашем мире появился новый игрок "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); - echo '
            , !
            '; + echo '
            Вы отказались от обучения, второй попытки больше не будет!
            '; } }else{ echo ''; @@ -152,10 +152,10 @@ if($u->room['file']=='an/bk'){ ?>
            -
            -
            +
            +
            -
            +
            @@ -174,30 +174,30 @@ if($u->room['file']=='an/bk'){
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +

            - testHome(); if(!isset($hgo['id'])){ ?> - - + testHome(); if(!isset($hgo['id'])){ ?> + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.

            -
            +
            onclick="location='main.php?loc=2.180.0.260';" onmouseover="this.className='aFilterhover';" onmouseout="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_sec5.gif" width="122" height="31" class="aFilter" />
            @@ -41,32 +41,32 @@ if($u->room['file']=='an/bk2')
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/an/cp1.php b/modules_data/location/an/cp1.php index 5e064173..b8cc2028 100644 --- a/modules_data/location/an/cp1.php +++ b/modules_data/location/an/cp1.php @@ -6,7 +6,7 @@ if(!defined('GAME')) $tattack = ''; if( date('H') >= 22 || date('H') < 6 ) { - $tattack = '   '; + $tattack = 'Напасть   '; } if($u->room['file']=='an/cp1') @@ -77,7 +77,7 @@ function DrawWeather(room) { var div = ''; for (i = 0; i < no; ++ i) { SetVariable(i); - div += "
            \"\"
            "; + div += "
            \"Снежинка\"
            "; } document.getElementById('snow').innerHTML = div; @@ -121,7 +121,7 @@ function WeatherBegin() { // IE main animation function
              -   + Форум  
            '; + echo ''; }elseif( $u->info['transfers'] < 1 ) { $pu = false; - echo ''; + echo ''; } } @@ -55,7 +55,7 @@ if($r == 1) { if(isset($_POST['itm_post']) && (int)$_POST['itm_post'] > 0) { $itm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.*,`iu`.item_id as item_id FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "'.mysql_real_escape_string($_POST['itm_post']).'" LIMIT 1')); if( $u->info['align'] == 2 ) { - $u->error = ' '; + $u->error = 'Хаосники не могут передавать кредиты и предметы'; }elseif(isset($itm['id'])) { $itm['id'] = mysql_real_escape_string(round((int)$_POST['itm_post'])); $see1 = 1; @@ -95,41 +95,41 @@ if($r == 1) { } $u->info['money'] -= $mny; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$itm['name'].'" "'.$pu['login'].'" '.$mny.' . '; + $u->error = 'Вы успешно передали "'.$itm['name'].'" к персонажу "'.$pu['login'].'" за '.$mny.' кр. '; $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - $txt = ' '.$u->info['login'].': "'.$itm['name'].'". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + //логи + $txt = 'Предмет от '.$u->info['login'].': "'.$itm['name'].'". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($itm['id']).'","0")'); - $txt = ' '.$pu['login'].': "'.$itm['name'].'". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Отправление предмета к '.$pu['login'].': "'.$itm['name'].'". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($itm['id']).'","0")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $u->error = ' '; + $u->error = 'Не достаточно денежных средств'; } }else{ - $u->error = ' '; + $u->error = 'Подходящий предмет не найден'; } }else{ - $u->error = ' '; + $u->error = 'Предмет не найден'; } } }elseif($r == 3) { if(isset($_GET['itm_take'])) { $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="-51'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "'.mysql_real_escape_string($_GET['itm_take']).'" LIMIT 1')); if( $u->info['align'] == 2 ) { - $u->error = ' '; + $u->error = 'Хаосники не могут передавать кредиты и предметы'; }elseif(isset($itm['id'])) { if($itm['item_id'] == 1220) { - // + //Прием денег $post = mysql_fetch_array(mysql_query('SELECT * FROM `post` WHERE `item_id` = "0" AND `money` = "'.$itm['1price'].'" AND `uid` = "'.$u->info['id'].'" AND `finish` = "0" ORDER BY `id` DESC LIMIT 1')); if(isset($post['id'])) { if($post['sender_id'] < 0) { @@ -139,11 +139,11 @@ if($r == 1) { $pup = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$post['sender_id'].'" LIMIT 1')); if($post['sender_id'] == 0) { $pup = array( - 'login' => '', + 'login' => 'Администрация', 'id' => 0 ); } - $u->error = ' '.$itm['1price'].' . '.$pup['login']; + $u->error = 'Вы успешно забрали '.$itm['1price'].' кр. от '.$pup['login']; $u->info['money'] += $itm['1price']; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `post` SET `finish` = "'.time().'" WHERE `item_id` = "'.$post['id'].'" ORDER BY `id` DESC LIMIT 1'); @@ -152,17 +152,17 @@ if($r == 1) { $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - $txt = ' '.$u->info['login'].': '.$itm['1price'].' . .'; + //логи + $txt = 'Деньги для '.$u->info['login'].': '.$itm['1price'].' кр. Доставлены.'; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2")'); - $txt = ' '.$pup['login'].': '.$itm['1price'].' . .'; + $txt = 'Деньги от '.$pup['login'].': '.$itm['1price'].' кр. Получены.'; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2")'); } }else{ - // + //Прием вещей $post = mysql_fetch_array(mysql_query('SELECT `p`.id,`p`.sender_id, count(`iuu`.id) as inGroupCount, `iu`.id as idItem, `iuu`.item_id, `iuu`.inGroup FROM `post` as `p` LEFT JOIN `items_users` as `iu` ON (`iu`.id = `p`.item_id ) LEFT JOIN `items_users` as `iuu` ON (`iuu`.item_id = `iu`.item_id AND `iu`.`inGroup` = `iu`.`inGroup` AND `iuu`.`uid` = `iu`.`uid`) WHERE (`p`.`sender_id` = "'.$u->info['id'].'" OR `p`.`sender_id` = "-'.$u->info['id'].'") AND `iu`.`id` = "'.mysql_real_escape_string($_GET['itm_take']).'" GROUP BY `iu`.id ORDER BY `iu`.`id` DESC LIMIT 1')); if(isset($post['id'])) { if($post['sender_id'] < 0) { @@ -183,29 +183,29 @@ if($r == 1) { mysql_query('UPDATE `post` SET `finish` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($post['id']).'" ORDER BY `id` DESC LIMIT 1'); $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$itm['name'].'"'; + $u->error = 'Вы успешно забрали "'.$itm['name'].'"'; $pup = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$post['sender_id'].'" LIMIT 1')); if($post['sender_id'] == 0) { $pup = array( - 'login' => '', + 'login' => 'Администрация', 'id' => 0 ); } - // - $txt = ' '.$u->info['login'].': "'.$itm['name'].'". .'; + //логи + $txt = 'Предмет для '.$u->info['login'].': "'.$itm['name'].'". Доставлен.'; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`,`finish`) VALUES ("'.mysql_real_escape_string($txt).'","'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2", "'.time().'")'); - $txt = ' '.$pup['login'].': "'.$itm['name'].'". .'; + $txt = 'Предмет от '.$pup['login'].': "'.$itm['name'].'". Получен.'; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`,`finish`) VALUES ("'.mysql_real_escape_string($txt).'","-'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2", "'.time().'")'); } else { - $u->error = ' ('.$itm['id'].')'; + $u->error = 'Не удалось забрать предмет ('.$itm['id'].')'; } }else{ - $u->error = ' '; + $u->error = 'Не удалось найти предмет'; } } }else{ - $u->error = ' '; + $u->error = 'Предмет не найден'; } if($u->error != '') { echo '
            '.$u->error.'
            '; @@ -221,15 +221,15 @@ if($r == 1) {
            -
            Почтовое отделение
            microLogin($u->info['id'],1)?>
            @@ -247,43 +247,43 @@ if($r == 1) { if(isset($pu['id'])) { ?>
            - : microLogin($pu,2)?>  
            + К кому передавать: microLogin($pu,2)?>  
            info['city']) { - echo ' .
            '; + echo 'Находится в этом городе.
            '; }else{ - echo ' '.$u->city[$pu['city']].'.
            '; + echo 'Находится в '.$u->city[$pu['city']].'.
            '; } - echo ' : 0 . 30 .'; + echo 'Примерное время доставки: 0 ч. 30 мин.'; ?>
            genInv(67,'`iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" AND `im`.`inRazdel`="'.mysql_real_escape_string($otdel).'" AND `iu`.`data` NOT LIKE "%zazuby=%" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0){ - $itmAllSee = ''; + $itmAllSee = 'ПУСТО'; }else{ $itmAllSee = $itmAll[2]; } ?> - - - - - + + + + +
            ">">">">">">Обмундирование">Заклятия">Эликсиры">Руны">Прочее
            -
            (: aves['now']?>/aves['max']?>, : aves['items']?>)
            +
            Рюкзак (масса: aves['now']?>/aves['max']?>, предметов: aves['items']?>)
            -info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            .
            :
            '; } ?> +info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            Рюкзак закрыт.
            Введите пароль:
            '; } ?>
            0) { if($u->info['money'] >= round($m+$cm,2)) { - $e1 = ' '.$m.' . (: '.$cm.' .) '.$pu['login'].''; + $e1 = 'Вы успешно перевели '.$m.' кр. (Комиссия: '.$cm.' кр.) к персонажу '.$pu['login'].''; $u->info['money'] -= round($m+$cm,2); mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -304,36 +304,36 @@ if(isset($pu['id'])) { mysql_query("INSERT INTO `items_users`(`item_id`,`1price`,`uid`,`delete`,`lastUPD`)VALUES('1220','".mysql_real_escape_string($m)."','-51".$pu['id']."','0','".(time()+$tmgo*60)."');"); - $txt = ' '.$u->info['login'].': '.round($m,2).' . : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Деньги от '.$u->info['login'].': '.round($m,2).' кр. Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES("'.$pu['id'].'","-'.$u->info['id'].'","'.time().'", "'.mysql_real_escape_string(round($m,2)).'","'.mysql_real_escape_string($txt).'")'); - $txt = ' '.$pu['login'].': '.round($m,2).' . : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Деньги к '.$pu['login'].': '.round($m,2).' кр. Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES("'.$u->info['id'].'","'.$pu['id'].'","'.time().'", "0","'.mysql_real_escape_string($txt).'")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e1 = ' '; + $e1 = 'У вас недостаточно средств'; } } }elseif(isset($_POST['send2'])) { if($u->info['money'] >= 0.1) { - $ttest = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `chat` WHERE `text` LIKE "% '.$u->info['login'].'%" ORDER BY `id` DESC LIMIT 1')); + $ttest = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `chat` WHERE `text` LIKE "%Телеграмма от '.$u->info['login'].'%" ORDER BY `id` DESC LIMIT 1')); if( $ttest['time'] < 0 ) { $ttest['time'] = -$ttest['time']; } if( !isset($ttest['id']) || ( $ttest['time']-$tmgo*60-time()+10 ) <= 0 ) { - $_POST['snd_telegraf'] = htmlspecialchars($_POST['snd_telegraf'],NULL,'cp1251'); + $_POST['snd_telegraf'] = htmlspecialchars($_POST['snd_telegraf'],NULL); $_POST['snd_telegraf'] = substr($_POST['snd_telegraf'],0,100); $_POST['snd_telegraf'] = str_replace('<','<',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace('\x3e','<',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace(']:[','] : [',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace('>','>',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace("'", "",$_POST['snd_telegraf']); - $e2 = ' '; + $e2 = 'Ваше сообщение успешно доставлено'; $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -341,17 +341,17 @@ if(isset($pu['id'])) { $u->info['money'] -= 0.1; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! ".date("d.m.y H:i")." ".$u->info['login'].": \'".mysql_real_escape_string($_POST['snd_telegraf'])."\' .','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от ".$u->info['login'].": \'".mysql_real_escape_string($_POST['snd_telegraf'])."\' .','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e2 = ' . '.( $ttest['time']-$tmgo*60-time()+10 ).' .'; + $e2 = 'Вы не можете отправлять сообщения так часто. Осталось '.( $ttest['time']-$tmgo*60-time()+10 ).' сек.'; } }else{ - $e2 = ' (0.1 .)'; + $e2 = 'У вас недостаточно средств (0.1 кр.)'; } }elseif(isset($_POST['send3'])) { if($u->info['money'] >= 1) { //max_text - $_POST['snd_post'] = htmlspecialchars($_POST['snd_post'],NULL,'cp1251'); + $_POST['snd_post'] = htmlspecialchars($_POST['snd_post'],NULL); $_POST['snd_post'] = substr($_POST['snd_post'],0,500); $_POST['snd_post'] = str_replace('<','<',$_POST['snd_post']); $_POST['snd_post'] = str_replace('\x3e','<',$_POST['snd_post']); @@ -359,7 +359,7 @@ if(isset($pu['id'])) { $_POST['snd_post'] = str_replace('>','>',$_POST['snd_post']); $_POST['snd_post'] = str_replace("'", "",$_POST['snd_post']); $_POST['snd_post'] = str_replace("\n", "
            ",$_POST['snd_post']); - $e3 = ' '; + $e3 = 'Ваше письмо успешно доставлено'; $u->info['money'] -= 1; $u->info['transfers']--; @@ -369,75 +369,75 @@ if(isset($pu['id'])) { mysql_query("INSERT INTO `items_users` (`item_id`,`1price`,`uid`,`delete`,`lastUPD`) VALUES ('2131','0','-51".$pu['id']."','0','".(time()+$tmgo*0)."')"); $id = mysql_insert_id(); mysql_query("INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`x`) VALUES ('".$id."','".time()."','".$u->info['login']."','
            ".mysql_real_escape_string($_POST['snd_post'])."','1')"); - // - $txt = ' '.$u->info['login'].': "". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + //логи + $txt = 'Предмет от '.$u->info['login'].': "Письмо". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.$id.'","0")'); - $txt = ' '.$pu['login'].': "". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Отправление предмета к '.$pu['login'].': "Письмо". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.$id.'","0")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e3 = ' (1 .)'; + $e3 = 'У вас недостаточно средств (1 кр.)'; } } ?>
            -

            +

            Передать кредиты


            - : info['money']?> .
            - , 1 . 5%
            - : +У вас на счету: info['money']?> кр.
            +Передать кредиты, минимально 1 кр. Комиссия составит 5%
            +Укажите передаваемую сумму:
            -

            +

            Телеграф


            - : 0.1 .
            -: ( 100 )
            - +Услуга платная: 0.1 кр.
            +Сообщение: (Максимально 100 символов)
            +
            -

            +

            Письмо


            - : 1 .
            -: ( 30 .)
            +Услуга платная: 1 кр.
            +Сообщение: (Время доставки 30 мин.)

            -( 500 ) +(Максимально 500 символов)
            genInv(68,'`iu`.`uid` = "-51'.$u->info['id'].'" AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `iu`.`lastUPD` < '.time().' ORDER BY `lastUPD` DESC'); if($itmAll[0]==0) { - $itmAllSee = ' - , '; + $itmAllSee = 'Для Вас пока-что нет посылок, проверьте раздел Отчеты'; }else{ $itmAllSee = $itmAll[2]; } ?> -info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            .
            :
            '; } ?> +info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            Рюкзак закрыт.
            Введите пароль:
            '; } ?>


            - . +В данном разделе отображаются все почтовые операции Вашего персонажа.
            '.date('d.m.Y H:i',$pl['time']).'
              '.$pl['text'].'
            '; } if($r == '') { - $r = '
            '; + $r = '
            Отчеты отсутствуют
            '; }else{ $ap = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `post` WHERE `uid` = "'.$u->info['id'].'"')); $ap = ceil($ap[0]/50); if($ap > 1) { $r .= '
            '; - $r .= ': '; + $r .= 'Страницы: '; $i = 1; while($i <= $ap) { if($i == $pg) { @@ -480,22 +480,22 @@ if($r == '') { } echo $r; }else{ - // + //общий раздел ?>

            -•
            - , . .
            +• Передать предмет
            +Вы можете отправить предмет любому персонажу, даже если он находится в другом городе. Цена и время доставки зависят от расстояния.

            -•
            - , offline .
            - .
            +• Кредиты и Телеграф
            +Вы можете отправить короткое сообщение любому персонажу, даже если он находится в offline или другом городе.
            +Вы можете отправить некоторую сумму денег персонажу.

            -•
            - , .
            - 7 , . - , . +• Получить вещи
            +Вы можете получить вещи, которые были отправлены вам другими игроками.
            +Посылка хранится на почте 7 дней, но не более одного дня с момента как вы увидели ее в списке вещей для получения. +По истечению этого срока, посылка отправляется обратно или удаляется.
            -
            , // 100% . - , // .
            +
            Администрация почты заявляет, что не несет ответственности за хранимый или пересылаемый товар/кредиты/сообщения и не гарантирует 100% его доставку. В случае форс-мажорных обстоятельств, товар/кредиты/сообщения могут быть утеряны.
            @@ -523,11 +523,11 @@ echo $r; - + - + testHome(); @@ -536,7 +536,7 @@ echo $r; ?> - +

             

            -

            : info['money']?> . +

            Деньги: info['money']?> кр.
            - : info['transfers']?> + Передач: info['transfers']?>

            -
            -
            + Передать предметы
            + Кредиты и Телеграф
            info['id'].'"')); $ot = $ot[0]; if($ot > 0) { - echo ' '; + echo 'Получить вещи'; }else{ - echo ' '; + echo 'Получить вещи'; } ?>

            - + Отчеты

            Центральная площадь
            Аукцион
            Возврат
            '); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -200,12 +200,12 @@ if($u->room['file']=='an/vokzal') $cst .= ' '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).' - '.$pl['price1'].' .'; + '.$pl['price1'].' кр.'; if(isset($zd['id'])) { - $cst .= ' '.$u->timeOut($zd['time']-time()).''; + $cst .= 'Задержка еще '.$u->timeOut($zd['time']-time()).''; }else{ - $cst .= '!'; + $cst .= 'Поехали!'; } $cst .= ''; } @@ -257,40 +257,40 @@ if($u->room['file']=='an/vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            -

            +

            Расписание движения карет на сегодня

            - - - - - - - + + + + + + +
            время отправления
            пункт назначения
            время в пути
            цена билета
            требуется виза
            осталось билетов
            приобрести билет
            - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            - -
            - - ,
            + - Для отправления в другой город Вы должны быть онлайн когда будет отправляться карета
            + - Если Вы опоздали на карету, тогда билет можно сдать в магазин за половину его стоимости
            @@ -318,8 +318,8 @@ if($u->room['file']=='an/vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/an/zalu.php b/modules_data/location/an/zalu.php index 7db3311e..8180c7a5 100644 --- a/modules_data/location/an/zalu.php +++ b/modules_data/location/an/zalu.php @@ -23,11 +23,11 @@ if($u->room['file']=='an/zalu')
              @@ -306,7 +306,7 @@ if($u->room['file']=='an/vokzal') - +
            Центральная площадь
            -
            +
            onClick="location='main.php?loc=2.180.0.402';" src="https://img.new-combats.com/i/images/300x225/map_klub5-1.gif" width="123" height="30" class="aFilter" />
            -
            -
            +
            +
            onClick="location='main.php?loc=2.180.0.230';" src="https://img.new-combats.com/i/images/300x225/map_zalu7.gif" width="100" height="35" class="aFilter" />
            @@ -36,32 +36,32 @@ if($u->room['file']=='an/zalu')
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/an/zalu_pal.php b/modules_data/location/an/zalu_pal.php index 9d0ca05f..99573bf0 100644 --- a/modules_data/location/an/zalu_pal.php +++ b/modules_data/location/an/zalu_pal.php @@ -23,12 +23,12 @@ if($u->room['file']=='an/zalu_pal')
            -
            +
            onClick="location='main.php?loc=2.180.0.240';" class="aFilter" src="https://img.new-combats.com/i/images/300x225/map_halls.gif" width="120" height="35" />
            -
            -
            -
            +
            +
            +
            @@ -36,32 +36,32 @@ if($u->room['file']=='an/zalu_pal') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/an/znahar.php b/modules_data/location/an/znahar.php index 61756849..ee75460d 100644 --- a/modules_data/location/an/znahar.php +++ b/modules_data/location/an/znahar.php @@ -6,7 +6,7 @@ if(!defined('GAME')) if($u->room['file']=='an/znahar'){ if($c['znahar']==true){$raspst=99999;$kr=0;$price = 1;}else{$raspst=0;$kr=0;$price = 0;} -// +//Платно или бесплатно if(date('w') == 6 || date('w') == 0) { @@ -19,22 +19,22 @@ function add_narkoz($tm,$name) { $name = ': '.$name; } //mysql_query('INSERT INTO `eff_users` (`uid`,`id_eff`,`name`,`data`,`overType`,`timeUse`) VALUES ( - // "'.$u->info['id'].'","50","'.mysql_real_escape_string($name).'","" + // "'.$u->info['id'].'","50","Наркоз'.mysql_real_escape_string($name).'","" //)'); - $name = ''.$name; - $stat=rand(1, 3); // + $name = 'Наркоз'.$name; + $stat=rand(1, 3); // пока без духовности if($tm == 3) { - $timeEnd=rand(2,5);// 12 6 + $timeEnd=rand(2,5);// время травмы от 12 до 6 часов $timeEnd = $timeEnd * 3600; }elseif($tm == 1 || $tm == 2) { - $timeEnd=rand(1,2);// 5 10 + $timeEnd=rand(1,2);// время травмы от 5 до 10 мин $timeEnd = $timeEnd * (60*5); }else{ $tm = round($tm*60); } - $timeEnd = rand(1,3);// 5 15 + $timeEnd = rand(1,3);// время травмы от 5 до 15 мин $timeEnd = $timeEnd * (60*5); //$timeEnd = 0; @@ -93,11 +93,11 @@ function test_s5() { return $r; } -$c['znahar1'] = 1; // -$c['znahar2'] = 1; // -$c['znahar3'] = 1; // -$c['znahar4'] = 1; // -$c['znahar5'] = 1; // +$c['znahar1'] = 1; //сброс навыков +$c['znahar2'] = 1; //сброс особенностей +$c['znahar3'] = 1; //сброс статов +$c['znahar4'] = 1; //сброс пристрастия +$c['znahar5'] = 1; //перераспределение статов if($price == 0) { @@ -151,11 +151,11 @@ function zact($i,$x = 1) { $bad = 0; if( $price == 1 ) { - // + //бесплатно $point = 0; $price1 = 0; }else{ - // + //платно $point = $pr_free[$i]*$x; if($point > $u->info['znahar']) { $price1 = $pr[$i]*$x; @@ -184,12 +184,12 @@ function zact($i,$x = 1) { $i++; } }else{ - $r = array(0,' .'); + $r = array(0,'У вас недостаточно денег для этого действия.'); } return $r; } -#------------------ +#------------------Запросы и прочее $st = $u->lookStats($u->info['stats']); $vinos = array( /* level,summvinos*/ @@ -208,7 +208,7 @@ $vinos = array( "12" => 41, "21" => 41 ); -// +//минимальный уровень для статов $minlvl = array( 1=>0, 2=>0, @@ -225,28 +225,28 @@ $minlvl = array( $tst_trvm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 4 OR `id_eff` = 5) AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" LIMIT 1')); if(isset($tst_trvm['id'])) { - $err = ' "'.$tst_trvm['name'].'". !'; + $err = 'У вас травма "'.$tst_trvm['name'].'". Вы не можете пользоваться услугами знахаря!'; }elseif(isset($_GET['unprist'])) { $epr = mysql_fetch_array(mysql_query('SELECT `a`.`id`,`b`.`mname` FROM `eff_users` AS `a` LEFT JOIN `eff_main` AS `b` ON `b`.`id2` = `a`.`id_eff` WHERE ((`a`.`id_eff` >= 301 AND `a`.`id_eff` <= 304) OR (`a`.`id_eff` >= 321 AND `a`.`id_eff` <= 332)) AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`id` = "'.mysql_real_escape_string((int)$_GET['unprist']).'" LIMIT 1')); if(isset($epr['id'])) { $z_na = zact(4); if($z_na[0] == 1) { - // + //сброс пристрастия mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($epr['id']).'" LIMIT 1'); $st = $u->lookStats($u->info['stats']); - add_narkoz(2,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(2,'Сброс пристрастий'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } }else{ - $err = ' ...'; + $err = 'Пристрастие не найдено...'; } }elseif(isset($_POST['dropstats'])) { $z_na = zact(3); if($z_na[0] == 1) { - // + //сброс статов $st = $u->lookStats($u->info['stats']); $st['s1'] = 3; $st['s2'] = 3; @@ -272,8 +272,8 @@ if(isset($tst_trvm['id'])) { //$u->info['wipe'] = 2; //$u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(1,'Сброс характеристик'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } @@ -281,7 +281,7 @@ if(isset($tst_trvm['id'])) { { $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс статов $st = $u->lookStats($u->info['stats']); $st['a1'] = 0; $st['a2'] = 0; @@ -305,21 +305,21 @@ if(isset($tst_trvm['id'])) { //$u->info['wipe'] = 2; //$u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(1,'Сброс умений'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } }elseif(isset($_POST['dropmastery'])) { - // + //Старая версия $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс характеристик $u->info['wipe'] = 3; $u->wipe(); $st = $u->lookStats($u->info['stats']); - $err = ' ... ...'; + $err = 'Умения покину вас... вам плохо...'; }else{ $err = ''.$z_na[1].''; } @@ -327,17 +327,17 @@ if(isset($tst_trvm['id'])) { { $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс особенностей $u->info['wipe'] = 3.5; $u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' ... ...'; + add_narkoz(1,'Сброс навыков'); + $err = 'Особенности покинули вас... вам плохо...'; }else{ $err = ''.$z_na[1].''; } }elseif(isset($_GET['movestat'])){ - // - + //общее кол-во статов $allStats = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10']; $allStatsTesto = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10']; $no = 0; $st_l = 0; @@ -359,7 +359,7 @@ if(isset($tst_trvm['id'])) { if( $allStatsTesto != $allStats ) { $no++; } - //echo ":
            ".$st['s1']."=3
            ".$st['s2']."=3
            ".$st['s3']."=3
            ".$st['s4']."=3
            ".$st['s5']."=0
            ".$st['s6']."=0
            ".$st['s7']."=0
            ".$st['s8']."=0
            ".$st['s9']."=0
            ".$st['s10']."=0
            "; + //echo "Статы:
            ".$st['s1']."=3
            ".$st['s2']."=3
            ".$st['s3']."=3
            ".$st['s4']."=3
            ".$st['s5']."=0
            ".$st['s6']."=0
            ".$st['s7']."=0
            ".$st['s8']."=0
            ".$st['s9']."=0
            ".$st['s10']."=0
            "; if($no==0){ $z_na = zact(5,(int)$st_l); @@ -367,12 +367,12 @@ if(isset($tst_trvm['id'])) { if( ($st['s5'] > 0 && $u->info['level'] < 4) || ($st['s6'] > 0 && $u->info['level'] < 7) || ($st['s7'] > 0 && $u->info['level'] < 9) || ($st['s8'] > 0 && $u->info['level'] < 11) || ($st['s9'] > 0 && $u->info['level'] < 12) || ($st['s10'] > 0 && $u->info['level'] < 13) ) { }elseif($st['s1']>=3 && $st['s2']>=3 && $st['s3']>=3 && $st['s4']>=test_s5() && $st['s5']>=0 && $st['s6']>=0 && $st['s7']>=0 && $st['s8']>=0 && $st['s9']>=0 && $st['s10']>=0){ - // ( ) + //Желательно проверку на статы по уровню (можно ли этот стат поднимать на текущем уровне перса) $u->info['stats'] = $u->impStats($st); if(mysql_query('UPDATE `stats` SET `stats` = "'.mysql_real_escape_string($u->info['stats']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1')) { - add_narkoz(2,' '); - // UPDATE + add_narkoz(2,'Переброс характеристик'); + //Надо добавить UPDATE в базе свободных статов $u->stats = $u->getStats($u->info['id'],0,1); $u->testItems($u->info['id'],$u->stats,0); $st = $u->lookStats($u->info['stats']); @@ -383,7 +383,7 @@ if(isset($tst_trvm['id'])) { } } } -#------------------ +#------------------Запросы и прочее ?> diff --git a/modules_data/location/artshop.php b/modules_data/location/artshop.php index 5afca96c..dc7b5fbf 100644 --- a/modules_data/location/artshop.php +++ b/modules_data/location/artshop.php @@ -32,7 +32,7 @@ if($u->room['file']=='artshop') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['buy_vip']) && isset($u->bank['id']) && $u->stats['silver'] > 1) { @@ -40,7 +40,7 @@ if($u->room['file']=='artshop') { $re = $u->buyItem($sid,(int)$_GET['buy_vip'],(int)$_GET['x'],NULL,true); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -48,9 +48,9 @@ if($u->room['file']=='artshop') '; - }else{ - //! - $bank['useNow'] = time()+12*60*60; - mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `id` != "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); - mysql_query('UPDATE `bank` SET `useNow` = "'.$bank['useNow'].'" WHERE `id` = "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_good_pass_'.mysql_real_escape_string($bank['id']).'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); - $u->bank = $bank; - } - } - }elseif(isset($_GET['res'])) - { - //echo $_GET['schet'].'
            '; - $b_pass = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string(getNumId($_GET['schet'])).'" ORDER BY `id` DESC LIMIT 1')); - if($b_pass['repass'] >= time()) - { - $re2 = ' '; - }else{ - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_res","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); - $re2 = ' email, '; - mysql_query('UPDATE `bank` SET `repass` = "'.(time()+24*3600).'" WHERE `id` = "'.$b_pass['id'].'" LIMIT 1'); - send_mime_mail(' - Support', - 'support@new-combats.com', - ''.$u->info['login'].'', - $u->info['mail'], - 'CP1251', // , - 'KOI8-R', // , - ' '.$u->info['login'].'', - " : ".getNum($b_pass['id'])."
            : ".$b_pass['pass'].'

            ,
            '); - - } - }elseif(isset($_GET['open']) && !isset($u->bank['id'])) - { - if( $_POST['rdn01'] == 2 && ($u->info['level'] >= 8 || $u->info['money4'] < 15 )) { - $re2 = ' !'; - }elseif($u->info['money']>=3 || ($u->info['level'] < 8 && $u->info['money4'] >= 15 && $c['zuby'] == true )) - { - if( $_POST['pass1'] == '' || $_POST['pass1'] == ' ' ) { - $re2 = ' !'; - }elseif( $_POST['pass1'] != $_POST['pass2'] ) { - $re2 = ' !'; - }elseif( $u->info['money'] - 3 < 0 && $_POST['rdn01'] != 2 ) { - $re2 = ' .'; - }elseif($u->info['align']!=2) - { - $pass = rand(10000,91191); - $pass = htmlspecialchars($_POST['pass1'],NULL,'cp1251'); - $ins = mysql_query('INSERT INTO `bank` (`uid`,`create`,`pass`) VALUES ("'.$u->info['id'].'","'.time().'","'.$pass.'")'); - if($ins) - { - $bank = mysql_insert_id(); - if( $u->info['level'] < 8 && $_POST['rdn01'] == 2 && $c['zuby'] == true) { - $u->info['money4'] -= 15; - }else{ - $u->info['money'] -= 3; - } - $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re2 = ' '.getNum($bank).' .
            : '.$pass.'

            ( " " )'; - $u->addDelo(3,$u->info['id'],' '.getNum($bank).'',time(),$u->info['city'],'Bank.System',3,0,''); - }else{ - $re2 = ' .'; - } - }else{ - $re2 = ' .'; - } - }else{ - if( $u->info['level'] < 8 && $c['zuby'] == true ) { - $re2 = ' 3.00 . '.$u->zuby(15).''; - }else{ - $re2 = ' 3.00 .'; - } - } - }elseif(isset($_GET['exit']) && isset($u->bank['id'])) - { - $u->bank = false; - mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); - } - - if($u->info['allLock'] > time()) { - $u->bank = false; - } - - if(isset($u->bank['id'])) - { - if(isset($_POST['sd4']) && $u->newAct($_POST['sd4'])) - { - if(isset($_POST['transfer_kredit2']) && $u->info['admin']>0) - { - // - $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num2']).'" LIMIT 1')); - if(isset($ub['id']) && $ub['id']!=$u->bank['id']) - { - $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); - if($ut['level']>=0 || $ut['id']==$u->info['id'] || $u->info['admin']>0) - { - $mn = floor((int)($_POST['tansfer_sum2']*100)); - $mn = round(($mn/100),2); - $prc = 0; - $mn += $prc; - if($u->bank['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money2'] -= $mn; - $ub['money2'] += $mn-$prc; - - mysql_query('UPDATE `users` SET `catch` = `catch` + "'.floor($mn-$prc).'" WHERE `id` = "'.$ut['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `frg` = `frg` + '.floor($mn).' WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($ub['money2']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); - $re2 = ' '.($mn-$prc).' . ( '.$prc.' .) '.getNum($ub['id']).' "'.$ut['login'].'"'; - $u->addDelo(3,$ut['id'],' '.($mn-$prc).' . '.getNum($u->bank['id']).' "'.$u->info['login'].'", '.$prc.' . (: '.$ub['money1'].' ., '.$ub['money2'].' .)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); - $u->addDelo(3,$u->info['id'],' '.($mn-$prc).' . '.getNum($ub['id']).' "'.$ut['login'].'", '.$prc.' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$u->bank['id'].' '.$ub['id'].' "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' .'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); - if($ut['id']!=$u->info['id']) - { - $alg = ''; - if($u->info['align']==50) - { - $alg = ''; - } - $text = '"'.$alg.'[login:'.$u->info['login'].']" '.($u->info['sex']==0?"":"").' '.($mn-$prc).' . '.getNum($u->bank['id']).' '.getNum($ub['id']).'.'; - - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','12','0','1')"); - } - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' '; - } - }elseif(isset($_POST['transfer_kredit']) && $u->info['align']!=2) - { - // - if($u->info['level']>=4 || $u->info['admin']>0) - { - $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num']).'" LIMIT 1')); - if(isset($ub['id']) && $ub['id']!=$u->bank['id']) - { - $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); - if($ut['level']>=4 || $ut['id']==$u->info['id'] || $u->info['admin']>0) - { - $mn = floor((int)($_POST['tansfer_sum']*100)); - $mn = round(($mn/100),2); - $prc = round($mn*3/100,2); - $mn += $prc; - if($u->bank['money1']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] -= $mn; - $ub['money1'] += $mn-$prc; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($ub['money1']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); - $re2 = ' '.($mn-$prc).' . ( '.$prc.' .) '.getNum($ub['id']).' "'.$ut['login'].'"'; - $u->addDelo(3,$ut['id'],' '.($mn-$prc).' . '.getNum($u->bank['id']).' "'.$u->info['login'].'", '.$prc.' . (: '.$ub['money1'].' ., '.$ub['money2'].' .)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); - $u->addDelo(3,$u->info['id'],' '.($mn-$prc).' . '.getNum($ub['id']).' "'.$ut['login'].'", '.$prc.' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$u->bank['id'].' '.$ub['id'].' "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' . '.$prc.' . .'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); - if($ut['id']!=$u->info['id']) - { - $text = '"[login:'.$u->info['login'].']" '.($u->info['sex']==0?"":"").' '.($mn-$prc).' . '.getNum($u->bank['id']).' '.getNum($ub['id']).'.'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','6','0','1')"); - } - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' 4- '; - } - }elseif($u->info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $u->info['align'] !=50 && isset($_POST['convert_kredit']) && $c['crtoecr'] > 0) { - // . . - if($u->info['palpro'] > time()) { - $mn = ceil((int)($_POST['convert_sum2']*100)); - $mn = round(($mn/100),2); - $mne = round($mn/$noc,2); - $mn = round(($mn/100*103+5),2); - $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "bank_kr_to_ekr_['.date('d.m.Y',time()).']" ORDER BY `id` DESC LIMIT 1',1); - $sm_lim = 100; - if(isset($sm['id']) && $sm['vals']+$mne > $sm_lim) { - if($sm['vals'] < $sm_lim) { - $re2 = ' '.($sm_lim-$sm['vals']).' .. ( '.round( ( ($sm_lim-$sm['vals'])*$noc ) ,2).' .), '.$mne.' ..'; - }else{ - $re2 = ' . . ('.$sm_lim.' .)'; - } - }elseif($mn > 0 && $mne > 0 && $mn >= round((0.01*($noc*1.03)+5),2)) { - if($u->bank['money1'] >= $mn) { - if(!isset($sm['id'])) { - $u->addAction(time(),'bank_kr_to_ekr_['.date('d.m.Y').']',$mne); - }else{ - mysql_query('UPDATE `actions` SET `vals` = "'.($sm['vals']+$mne).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - } - $re2 = ' '.$mn.' . '.$mne.' .'; - $u->bank['money1'] -= $mn; - $u->bank['money2'] += $mne; - - mysql_query('UPDATE `users` SET `catch` = `catch` + "'.round($mne,2).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'", `money2` = "'.mysql_real_escape_string($u->bank['money2']).'",`shara` = `shara` + "'.mysql_real_escape_string($mne).'" WHERE `id` = "'.mysql_real_escape_string($u->bank['id']).'" LIMIT 1'); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$mn.' . '.$mne.' ., '.$u->bank['id'].'.'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(3,$u->info['id'],' '.ceil((int)($_POST['convert_sum2']*100/100)).' . '.$mne.' ., '.round((ceil((int)($_POST['convert_sum2']*100/100))/100*3+5),2).' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '.round((0.01*($noc*1.03)+5),2).' .'; - } - }else{ - $re2 = ' .'; - } - }elseif(isset($_POST['convert_ekredit'])) - { - // . . - $mn = ceil((int)($_POST['convert_sum']*100)); - $mn = round(($mn/100),2); - if($u->bank['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']+($mn*$con)).'",`money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] += $mn*$con; - $u->bank['money2'] -= $mn; - $u->addDelo(3,$u->info['id'],' '.$mn.' . '.($mn*$con).' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn*$con),$u->bank['id']); - $re2 = ' '.$mn.' . '.($mn*$con).' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }elseif(isset($_POST['get_kredit'])) - { - // - $mn = floor((int)($_POST['get_sum']*100)); - $mn = round(($mn/100),2); - if($u->bank['money1']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( '.((int)$_POST['get_sum']).' .)'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']+$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] -= $mn; - $u->info['money'] += $mn; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }elseif(isset($_POST['get_ekredit'])) - { - // - $mn = floor((int)($_POST['get_esum']*100)); - $mn = round(($mn/100),2); - if($u->bank['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( '.((int)$_POST['get_esum']).' .)'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']+$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money2'] -= $mn; - $u->info['money2'] += $mn; - mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }elseif(isset($_POST['add_ekredit'])) - { - // - $mn = floor((int)($_POST['add_esum']*100)); - $mn = round(($mn/100),2); - if($u->info['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( )'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money2` = "'.mysql_real_escape_string($u->info['money2']-$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money2'] += $mn; - $u->info['money2'] -= $mn; - mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' E., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' .'; - } - }elseif(isset($_POST['add_kredit'])) - { - // - $mn = floor((int)($_POST['add_sum']*100)); - $mn = round(($mn/100),2); - if($u->info['money']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( )'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']-$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] += $mn; - $u->info['money'] -= $mn; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' .'; - } - }elseif(isset($_POST['change_psw2'])) - { - // - $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vals` = "id='.$u->bank['id'].'&new_pass='.$u->bank['pass'].'" AND `vars` = "bank_new_pass" AND `time` > "'.(time()-24*60*60).'" LIMIT 1',1); - if($_POST['new_psw1']!=$_POST['new_psw2']) - { - $re2 = ' '; - }elseif(iconv_strlen($_POST['new_psw1'])<6 || iconv_strlen($_POST['new_psw1'])>32) - { - $re2 = ' 6 32 '; - }elseif(isset($sm['id'])) - { - $re2 = ' '; - }else{ - // - $upd = mysql_query('UPDATE `bank` SET `pass` = "'.mysql_real_escape_string($_POST['new_psw1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->addAction(time(),'bank_new_pass','id='.$u->bank['id'].'&new_pass='.$_POST['new_psw1'].''); - $u->bank['pass'] = $_POST['new_psw1']; - $re2 = ' '.getNum($u->bank['id']).'
            : '.$u->bank['pass'].''; - $u->addDelo(3,$u->info['id'],' .',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - }else{ - $re2 = ' '; - } - } - } - } - } - - if($re!=''){ echo '
            '.$re.'
            '; } ?> - -


            -
            +
            Арена
            '.$error.''; ?> @@ -75,15 +75,15 @@ if($u->room['file']=='arena') - + - + - +
            Большая торговая улица
            Турнирный магазин
            Алтарь крови
            -
            - - - - - -
            -
            -


            -
            -
            -
            - - - - - -
              - - - -
            - - - - - - -
            - - - - -
            -
            - - - - - - - - - - -
            -
            - '.$re2.'
            '; } - if(!isset($u->bank['id'])) - { - ?> - : -
              -
            1. / / -
            2. / -
            3. . -
            - - -
            - ? : - -
            -
            -
            -
            - - -
            - - - - - -
            -
            -
            -
            -
            - > -
            -
            - ? email, :
            -
            -
            - - - - -
            - - - - - - - -

              - : bank['id']); ?> [x]
            -
            -
            -
            - - - - - - - - - -
            :round2($u->bank['money1']); ?>
            :round2($u->bank['money2']); ?>

            :round2($u->info['money']); ?> .
            :round2($u->info['money2']); ?> .
            -
            -
            -
            ! , .
            - - - - - - -
            - - - - - - - - - - info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $c['crtoecr'] > 0) { ?> - - - - info['admin']>1000) - { - ?> - - - - - - - - - - -
            - - - - . - -
            - - - . - -
            -
            - - - - .
            - - -
            - -
            - 3.00 % , 1.00 . -
            - - .
            - 1 . = .00 .
            - - - . - /> -
            - - .
            - . = 1.00 .
            - - - . -
            - 3.00 % , - 5.00 . - -
            - - - - .
            - - -
            - -
            - 0.00 % , 0.01 . -
            - - email. email, , , email. email. / , !
            - -
            -
            - - - - - - - - - -
            - -
            - -
             
            -
            - - - - - - - - - - - - -
            - - - - . - -
            - - - E. - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            1 . =
            10UAH = 1
            0.35USD = 1
            20RUB = 1
            0.29EUR = 1
            -
            - - - info['id'].'" AND `dop` = "'.$u->bank['id'].'" AND `type` = "3" ORDER BY `time` DESC LIMIT 21'); - while($pl = mysql_fetch_array($sp)) - { - ?> - - - - -
            '.date('d.m.Y H:i',$pl['time']).' '; echo $pl['text']; ?>
            -
            -
            - \ . - \ No newline at end of file diff --git a/modules_data/location/bank.php b/modules_data/location/bank.php index bdc8ec6f..5d3524be 100644 --- a/modules_data/location/bank.php +++ b/modules_data/location/bank.php @@ -9,7 +9,7 @@ if (!defined('GAME')) { if ($u->room['file'] == 'bank') { $noc = \Core\Config::get('crtoecr') * 2; //120 kr = 1 ekr. - $con = \Core\Config::get('ecrtocr') * 2.5; //1 . = 30 . + $con = \Core\Config::get('ecrtocr') * 2.5; //1 екр. = 30 кр. function getNum($v) { $plid = $v; @@ -55,7 +55,7 @@ if ($u->room['file'] == 'bank') { ) ); if (!isset($bank['id'])) { - $re2 = ' .'; + $re2 = 'Неверный номер счета.'; } elseif ($bank['pass'] != $_POST['pass']) { $pl = mysql_fetch_array( mysql_query( @@ -66,13 +66,13 @@ if ($u->room['file'] == 'bank') { ) ); if ($pl[0] >= 3) { - $re2 = ' 1 '; + $re2 = 'Ваш счет был заблокирован на 1 час'; } else { if ($pl[0] == 0) { - $re2 = ' . , '; + $re2 = 'Неверный номер счета или пароль. Если вы трижды введете неверный номер счета или пароль, счет будет заблокирован на час'; } else { - $pp = [0 => '', 1 => '', 2 => '', 3 => '']; - $re2 = ' . ' . (3 - $pl[0]) . ' ' . $pp[3 - $pl[0]] . ', '; + $pp = [0 => 'ок', 1 => 'ка', 2 => 'ки', 3 => 'ки']; + $re2 = 'Неверный номер счета или пароль. У вас осталось ' . (3 - $pl[0]) . ' попыт' . $pp[3 - $pl[0]] . ', в противном случаи счет будет заблокирован на час'; } mysql_query( 'INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("' . $u->info['id'] . '","' . time( @@ -84,11 +84,11 @@ if ($u->room['file'] == 'bank') { } else { if ($u->info['allLock'] > time()) { - echo ''; } else { - //! + //вошли! $bank['useNow'] = time() + 12 * 60 * 60; mysql_query( 'UPDATE `bank` SET `useNow` = "0" WHERE `id` != "' . $bank['id'] . '" AND `uid` = "' . $u->info['id'] . '" AND `useNow`!="0" LIMIT 1' @@ -114,7 +114,7 @@ if ($u->room['file'] == 'bank') { ) ); if ($b_pass['repass'] >= time()) { - $re2 = ' '; + $re2 = 'Номера счетов и пароли к ним можно выслать только один раз в сутки'; } else { mysql_query( 'INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("' . $u->info['id'] . '","' . time( @@ -122,33 +122,33 @@ if ($u->room['file'] == 'bank') { $_SERVER['HTTP_X_REAL_IP'] ) . '")' ); - $re2 = ' email, '; + $re2 = 'Выслан номер счета и пароль на email, указанный в анкете'; mysql_query( 'UPDATE `bank` SET `repass` = "' . (time( ) + 24 * 3600) . '" WHERE `id` = "' . $b_pass['id'] . '" LIMIT 1' ); - $subject = ' ' . $u->info['login']; - $message = ' : ' . getNum($b_pass['id']) . '
            : ' . $b_pass['pass'] . - '

            ,
            '; + $subject = 'Восстановление пароля от счета в банке персонажа ' . $u->info['login']; + $message = 'Номер счета: ' . getNum($b_pass['id']) . '
            Пароль: ' . $b_pass['pass'] . + '

            С уважением,
            Администрация Бойцовского Клуба'; \Core\Mail::send($u->info['mail'], $message, $subject); //mails($u->info['mail'], $message, $subject); unset($subject, $message); } } elseif (isset($_GET['open']) && !isset($u->bank['id'])) { if ($_POST['rdn01'] == 2 && ($u->info['level'] >= 8 || $u->info['money4'] < 15)) { - $re2 = ' !'; + $re2 = 'Недостаточно зубов!'; } elseif ($u->info['money'] >= 3 || ($u->info['level'] < 8 && $u->info['money4'] >= 15 && \Core\Config::get( 'zuby' ))) { if ($_POST['pass1'] == '' || $_POST['pass1'] == ' ') { - $re2 = ' !'; + $re2 = 'Вы не указали пароль!'; } elseif ($_POST['pass1'] != $_POST['pass2']) { - $re2 = ' !'; + $re2 = 'Пароли не совпадают!'; } elseif ($u->info['money'] - 3 < 0 && $_POST['rdn01'] != 2) { - $re2 = ' .'; + $re2 = 'У вас недостаточно кр.'; } elseif ($u->info['align'] != 2) { $pass = rand(10000, 91191); - $pass = htmlspecialchars($_POST['pass1'], null, 'cp1251'); + $pass = htmlspecialchars($_POST['pass1'], null); $ins = mysql_query( 'INSERT INTO `bank` (`uid`,`create`,`pass`) VALUES ("' . $u->info['id'] . '","' . time( ) . '","' . mysql_real_escape_string($pass) . '")' @@ -163,24 +163,24 @@ if ($u->room['file'] == 'bank') { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . $u->info['money'] . '",`money4` = "' . $u->info['money4'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); - $re2 = ' ' . getNum( + $re2 = 'Счет №' . getNum( $bank - ) . ' .
            : ' . $pass . '

            ( " " )'; + ) . '
            был успешно открыт.
            Пароль от счета: ' . $pass . '

            (Сменить пароль можно в разделе "Управление счетом" после авторизации)'; $u->addDelo( - 3, $u->info['id'], ' ' . getNum($bank) . '', time(), $u->info['city'], + 3, $u->info['id'], 'Вы успешно открыли счет №' . getNum($bank) . '', time(), $u->info['city'], 'Bank.System', 3, 0, '' ); } else { - $re2 = ' .'; + $re2 = 'Банк отказал в получении банковского счета.'; } } else { - $re2 = ' .'; + $re2 = 'Хаосники не могут создавать новые счета в банке.'; } } else { if ($u->info['level'] < 8 && \Core\Config::get('zuby')) { - $re2 = ' 3.00 . ' . $u->zuby(15) . ''; + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр. или ' . $u->zuby(15) . ''; } else { - $re2 = ' 3.00 .'; + $re2 = 'Для открытия счета необходимо иметь при себе 3.00 кр.'; } } } elseif (isset($_GET['exit']) && isset($u->bank['id'])) { @@ -197,7 +197,7 @@ if ($u->room['file'] == 'bank') { if (isset($u->bank['id'])) { if (isset($_POST['sd4']) && $u->newAct($_POST['sd4'])) { if (isset($_POST['transfer_kredit2']) && $u->info['admin'] > 0) { - // + //перевод екредитов с одного счета на другой $ub = mysql_fetch_array( mysql_query( 'SELECT * FROM `bank` WHERE `id` = "' . mysql_real_escape_string( @@ -220,7 +220,7 @@ if ($u->room['file'] == 'bank') { $mn += $prc; if ($u->bank['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money2` = "' . mysql_real_escape_string( @@ -247,25 +247,25 @@ if ($u->room['file'] == 'bank') { $ub['money2'] ) . '" WHERE `id` = "' . $ub['id'] . '" LIMIT 1' ); - $re2 = ' ' . ($mn - $prc) . ' . ( ' . $prc . ' .) ' . getNum( + $re2 = 'Вы удачно перевели ' . ($mn - $prc) . ' екр. (комиссия ' . $prc . ' екр.) на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '"'; + ) . ' персонажу "' . $ut['login'] . '"'; $u->addDelo( - 3, $ut['id'], ' ' . ($mn - $prc) . ' . ' . getNum( + 3, $ut['id'], 'Получено ' . ($mn - $prc) . ' екр. со счета №' . getNum( $u->bank['id'] - ) . ' "' . $u->info['login'] . '", ' . $prc . ' . (: ' . $ub['money1'] . ' ., ' . $ub['money2'] . ' .)', + ) . ' от персонажа "' . $u->info['login'] . '", комиссия ' . $prc . ' екр. (Итого: ' . $ub['money1'] . ' кр., ' . $ub['money2'] . ' екр.)', time(), $ut['city'], 'Bank.System', mysql_real_escape_string($mn - $prc), 0, $ub['id'] ); $u->addDelo( 3, $u->info['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Передано ' . ($mn - $prc) . ' екр. на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '", ' . $prc . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' персонажу "' . $ut['login'] . '", комиссия ' . $prc . ' екр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn), $u->bank['id'] ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $u->bank['id'] . ' ' . $ub['id'] . ' "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' .'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] перевел со своего банковского счета №' . $u->bank['id'] . ' на счет №' . $ub['id'] . ' к персонажу "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' екр.'; $u->addDelo( 1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, '' ); @@ -275,9 +275,9 @@ if ($u->room['file'] == 'bank') { if ($u->info['align'] == 50) { $alg = ''; } - $text = '"' . $alg . '[login:' . $u->info['login'] . ']" ' . ($u->info['sex'] == 0 ? "" : "") . ' ' . ($mn - $prc) . ' . ' . getNum( + $text = '"' . $alg . '[login:' . $u->info['login'] . ']" перевел' . ($u->info['sex'] == 0 ? "" : "а") . ' вам ' . ($mn - $prc) . ' екр. со своего банковского счета №' . getNum( $u->bank['id'] - ) . ' ' . getNum($ub['id']) . '.'; + ) . ' на ваш банковский счет №' . getNum($ub['id']) . '.'; mysql_query( "INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('" . $ut['city'] . "','" . $ut['room'] . "','','" . $ut['login'] . "','" . $text . "','" . time( @@ -285,20 +285,20 @@ if ($u->room['file'] == 'bank') { ); } } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' екр. на счете'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } elseif (isset($_POST['transfer_kredit']) && $u->info['align'] != 2) { - // + //перевод кредитов с одного счета на другой if ($u->info['level'] >= 4 || $u->info['admin'] > 0) { $ub = mysql_fetch_array( mysql_query( @@ -322,7 +322,7 @@ if ($u->room['file'] == 'bank') { $mn += $prc; if ($u->bank['money1'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money1` = "' . mysql_real_escape_string( @@ -337,58 +337,58 @@ if ($u->room['file'] == 'bank') { $ub['money1'] ) . '" WHERE `id` = "' . $ub['id'] . '" LIMIT 1' ); - $re2 = ' ' . ($mn - $prc) . ' . ( ' . $prc . ' .) ' . getNum( + $re2 = 'Вы удачно перевели ' . ($mn - $prc) . ' кр. (комиссия ' . $prc . ' кр.) на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '"'; + ) . ' персонажу "' . $ut['login'] . '"'; $u->addDelo( 3, $ut['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Получено ' . ($mn - $prc) . ' кр. со счета №' . getNum( $u->bank['id'] - ) . ' "' . $u->info['login'] . '", ' . $prc . ' . (: ' . $ub['money1'] . ' ., ' . $ub['money2'] . ' .)', + ) . ' от персонажа "' . $u->info['login'] . '", комиссия ' . $prc . ' кр. (Итого: ' . $ub['money1'] . ' кр., ' . $ub['money2'] . ' екр.)', time(), $ut['city'], 'Bank.System', mysql_real_escape_string($mn - $prc), 0, $ub['id'] ); $u->addDelo( 3, $u->info['id'], - ' ' . ($mn - $prc) . ' . ' . getNum( + 'Передано ' . ($mn - $prc) . ' кр. на счет №' . getNum( $ub['id'] - ) . ' "' . $ut['login'] . '", ' . $prc . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' персонажу "' . $ut['login'] . '", комиссия ' . $prc . ' кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn), $u->bank['id'] ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $u->bank['id'] . ' ' . $ub['id'] . ' "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' . ' . $prc . ' . .'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] перевел со своего банковского счета №' . $u->bank['id'] . ' на счет №' . $ub['id'] . ' к персонажу "' . $ut['login'] . '" [' . $ut['level'] . '] ' . ($mn - $prc) . ' кр. Дополнительно снято ' . $prc . ' кр. за услуги банка.'; $u->addDelo( 1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, '' ); $u->addDelo(1, $ut['id'], $log, time(), $ut['city'], 'Bank.System', 0, 0, ''); if ($ut['id'] != $u->info['id']) { - $text = '"[login:' . $u->info['login'] . ']" ' . ($u->info['sex'] == 0 ? "" : "") . ' ' . ($mn - $prc) . ' . ' . getNum( + $text = '"[login:' . $u->info['login'] . ']" перевел' . ($u->info['sex'] == 0 ? "" : "а") . ' вам ' . ($mn - $prc) . ' кр. со своего банковского счета №' . getNum( $u->bank['id'] - ) . ' ' . getNum($ub['id']) . '.'; + ) . ' на ваш банковский счет №' . getNum($ub['id']) . '.'; mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $ut['city'] . "','" . $ut['room'] . "','','" . $ut['login'] . "','" . $text . "','" . time( ) . "','6','0','1')" ); } } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' '; + $re2 = 'Нельзя перевести кредиты на этот счет'; } } else { - $re2 = ' 4- '; + $re2 = 'Передача кредитов возможна только с 4-го уровня'; } } elseif ($u->info['align'] != 2 && $u->info['haos'] < time( ) && $u->info['haos'] != 1 && $u->info['align'] != 50 && isset($_POST['convert_kredit']) && \Core\Config::get('crtoecr') > 0) { - // . . + //обменять кр. на екр. if ($u->info['palpro'] > time()) { $mn = ceil((int)($_POST['convert_sum2'] * 100)); $mn = round(($mn / 100), 2); @@ -402,11 +402,11 @@ if ($u->room['file'] == 'bank') { $sm_lim = 100; if (isset($sm['id']) && $sm['vals'] + $mne > $sm_lim) { if ($sm['vals'] < $sm_lim) { - $re2 = ' ' . ($sm_lim - $sm['vals']) . ' .. ( ' . round( + $re2 = 'На сегодня Вы можете обменять еще на ' . ($sm_lim - $sm['vals']) . ' екр.. (Примерно ' . round( (($sm_lim - $sm['vals']) * $noc), 2 - ) . ' .), ' . $mne . ' ..'; + ) . ' кр.), текущий обмен на ' . $mne . ' екр..'; } else { - $re2 = ' . . (' . $sm_lim . ' .)'; + $re2 = 'На сегодня Вы исчерпали свой лимит обмена кр. на екр. (' . $sm_lim . ' екр.)'; } } elseif ($mn > 0 && $mne > 0 && $mn >= round((0.01 * ($noc * 1.03) + 5), 2)) { if ($u->bank['money1'] >= $mn) { @@ -417,7 +417,7 @@ if ($u->room['file'] == 'bank') { 'UPDATE `actions` SET `vals` = "' . ($sm['vals'] + $mne) . '" WHERE `id` = "' . $sm['id'] . '" LIMIT 1' ); } - $re2 = ' ' . $mn . ' . ' . $mne . ' .'; + $re2 = 'Вы успешно обменяли ' . $mn . ' кр. на ' . $mne . ' екр.'; $u->bank['money1'] -= $mn; $u->bank['money2'] += $mne; @@ -436,34 +436,34 @@ if ($u->room['file'] == 'bank') { $mne ) . '" WHERE `id` = "' . mysql_real_escape_string($u->bank['id']) . '" LIMIT 1' ); - $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] ' . $mn . ' . ' . $mne . ' ., ' . $u->bank['id'] . '.'; + $log = '"' . $u->info['login'] . '" [' . $u->info['level'] . '] обменял ' . $mn . ' кр. на ' . $mne . ' екр., Банковский счет №' . $u->bank['id'] . '.'; $u->addDelo(1, $u->info['id'], $log, time(), $u->info['city'], 'Bank.System', 0, 0, ''); $u->addDelo( - 3, $u->info['id'], ' ' . ceil( + 3, $u->info['id'], 'Вы успешно обменяли ' . ceil( (int)($_POST['convert_sum2'] * 100 / 100) - ) . ' . ' . $mne . ' ., ' . round( + ) . ' кр. на ' . $mne . ' екр., комиссия ' . round( (ceil((int)($_POST['convert_sum2'] * 100 / 100)) / 100 * 3 + 5), 2 - ) . ' . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + ) . ' кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } else { - $re2 = ' ' . round( + $re2 = 'Минимальная сумма для обмена составляет ' . round( (0.01 * ($noc * 1.03) + 5), 2 - ) . ' .'; + ) . ' кр.'; } } else { - $re2 = ' .'; + $re2 = 'Вы должны пройти проверку на чистоту у Паладинов или Тарманов.'; } } elseif (isset($_POST['convert_ekredit'])) { - // . . + //обменять екр. на кр. $mn = ceil((int)($_POST['convert_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->bank['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' '; + $re2 = 'Неверно указана сумма'; } else { $upd = mysql_query( 'UPDATE `bank` SET `money1` = "' . mysql_real_escape_string( @@ -477,25 +477,25 @@ if ($u->room['file'] == 'bank') { $u->bank['money2'] -= $mn; $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' . ' . ($mn * $con) . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы обменяли ' . $mn . ' екр. на ' . ($mn * $con) . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, mysql_real_escape_string($mn * $con), $u->bank['id'] ); - $re2 = ' ' . $mn . ' . ' . ($mn * $con) . ' .'; + $re2 = 'Вы удачно обменяли ' . $mn . ' екр. на ' . ($mn * $con) . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' екр. на счете'; } } elseif (isset($_POST['get_kredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['get_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->bank['money1'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' ( ' . ((int)$_POST['get_sum']) . ' .)'; + $re2 = 'Неверно указана сумма (Снять ' . ((int)$_POST['get_sum']) . ' кр.)'; } else { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( @@ -512,24 +512,24 @@ if ($u->room['file'] == 'bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы сняли со счета ' . $mn . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно сняли со счета ' . $mn . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' кр. на счете'; } } elseif (isset($_POST['get_ekredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['get_esum'] * 100)); $mn = round(($mn / 100), 2); if ($u->bank['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' ( ' . ((int)$_POST['get_esum']) . ' .)'; + $re2 = 'Неверно указана сумма (Снять ' . ((int)$_POST['get_esum']) . ' Екр.)'; } else { $upd = mysql_query( 'UPDATE `users` SET `money2` = "' . mysql_real_escape_string( @@ -546,24 +546,24 @@ if ($u->room['file'] == 'bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы сняли со счета ' . $mn . ' Екр., комиссия 0 Екр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно сняли со счета ' . $mn . ' Екр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' . '; + $re2 = 'У вас нет ' . $mn . ' Екр. на счете'; } } elseif (isset($_POST['add_ekredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['add_esum'] * 100)); $mn = round(($mn / 100), 2); if ($u->info['money2'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' ( )'; + $re2 = 'Неверно указана сумма (Пополнение счета)'; } else { $upd = mysql_query( 'UPDATE `users` SET `money2` = "' . mysql_real_escape_string( @@ -580,24 +580,24 @@ if ($u->room['file'] == 'bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' E., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы положили на счет ' . $mn . ' Eкр., комиссия 0 Екр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно положили на свой счет ' . $mn . ' Екр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' .'; + $re2 = 'У вас нет при себе ' . $mn . ' Екр.'; } } elseif (isset($_POST['add_kredit'])) { - // + //положить деньги на счет $mn = floor((int)($_POST['add_sum'] * 100)); $mn = round(($mn / 100), 2); if ($u->info['money'] >= $mn) { if ($mn < 0.01 || $mn > 1000000000) { - $re2 = ' ( )'; + $re2 = 'Неверно указана сумма (Пополнение счета)'; } else { $upd = mysql_query( 'UPDATE `users` SET `money` = "' . mysql_real_escape_string( @@ -614,31 +614,31 @@ if ($u->room['file'] == 'bank') { ); $u->addDelo( 3, $u->info['id'], - ' ' . $mn . ' ., 0 . (: ' . $u->bank['money1'] . ' ., ' . $u->bank['money2'] . ' .)', + 'Вы положили на счет ' . $mn . ' кр., комиссия 0 кр. (Итого: ' . $u->bank['money1'] . ' кр., ' . $u->bank['money2'] . ' екр.)', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); - $re2 = ' ' . $mn . ' .'; + $re2 = 'Вы удачно положили на свой счет ' . $mn . ' кр.'; } else { - $re2 = ' '; + $re2 = 'Не удалось выполнить операцию'; } } } else { - $re2 = ' ' . $mn . ' .'; + $re2 = 'У вас нет при себе ' . $mn . ' кр.'; } } elseif (isset($_POST['change_psw2'])) { - // + //смена пароля счета $sm = $u->testAction( '`uid` = "' . $u->info['id'] . '" AND `vals` = "id=' . $u->bank['id'] . '&new_pass=' . $u->bank['pass'] . '" AND `vars` = "bank_new_pass" AND `time` > "' . (time( ) - 24 * 60 * 60) . '" LIMIT 1', 1 ); if ($_POST['new_psw1'] != $_POST['new_psw2']) { - $re2 = ' '; + $re2 = 'Пароли не совпадают'; } elseif (iconv_strlen($_POST['new_psw1']) < 6 || iconv_strlen($_POST['new_psw1']) > 32) { - $re2 = ' 6 32 '; + $re2 = 'Пароль не может быть короче 6 или длинее 32 символов'; } elseif (isset($sm['id'])) { - $re2 = ' '; + $re2 = 'Нельзя менять пароль чаще одного раза в день'; } else { - // + //меняем $upd = mysql_query( 'UPDATE `bank` SET `pass` = "' . mysql_real_escape_string( $_POST['new_psw1'] @@ -649,15 +649,15 @@ if ($u->room['file'] == 'bank') { time(), 'bank_new_pass', 'id=' . $u->bank['id'] . '&new_pass=' . $_POST['new_psw1'] . '' ); $u->bank['pass'] = $_POST['new_psw1']; - $re2 = ' ' . getNum( + $re2 = 'Пароль от счета №' . getNum( $u->bank['id'] - ) . '
            : ' . $u->bank['pass'] . ''; + ) . '
            был успешно изменен
            Новый пароль: ' . $u->bank['pass'] . ''; $u->addDelo( - 3, $u->info['id'], ' .', time(), $u->info['city'], 'Bank.System', + 3, $u->info['id'], 'Был изменен пароль от счета.', time(), $u->info['city'], 'Bank.System', 0, 0, $u->bank['id'] ); } else { - $re2 = ' '; + $re2 = 'Вам отказали в смене пароля'; } } } @@ -725,7 +725,7 @@ if ($u->room['file'] == 'bank') {
            -


            +

            Банк

            @@ -756,8 +756,8 @@ if ($u->room['file'] == 'bank') { title=""> - + ); ?>">Страшилкина + улица @@ -777,7 +777,7 @@ if ($u->room['file'] == 'bank') {
            - +
            @@ -787,12 +787,12 @@ if ($u->room['file'] == 'bank') { } if (!isset($u->bank['id'])) { ?> - : + Мы предоставляем следующие услуги:
              -
            1. -
            2. / / -
            3. / -
            4. . +
            5. Открытие счета +
            6. Возможность положить/снять кредиты/еврокредиты со счета +
            7. Перевести кредиты/еврокредиты с одного счета на другой +
            8. Обменный пункт. Обмен еврокредитов на кредиты
            - ? : + Хотите открыть свой счет? Услуга платная: @@ -856,13 +856,13 @@ if ($u->room['file'] == 'bank') {
            - + Управление счетом @@ -893,8 +893,8 @@ if ($u->room['file'] == 'bank') { >

            - ? email, : + Забыли пароль? Можно его выслать на email, номер счета:
            - + - + - +
            Номер счета
            Пароль
            @@ -921,34 +921,34 @@ if ($u->room['file'] == 'bank') { .pay td:hover img { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=80); /* IE 5.5+*/ - -moz-opacity: 0.8; /* Mozilla 1.6 */ + -moz-opacity: 0.8; /* Mozilla 1.6 и ниже */ -khtml-opacity: 0.8; /* Konqueror 3.1, Safari 1.1 */ opacity: 0.8; /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +, Safari 1.2+, Opera 9 */ cursor: pointer; } - +
            - -

              - : bank['id']); ?> [x]
            +

            Управление счетом

              + Счёт №: bank['id']); ?> [x]
            - + У вас на счете - + - + @@ -957,12 +957,12 @@ if ($u->room['file'] == 'bank') { - - + + - - + +
            :Кредитов: round2($u->bank['money1']); ?>
            :Еврокредитов: round2($u->bank['money2']); ?>
            :round2($u->info['money']); ?> .При себе наличных:round2($u->info['money']); ?> кр.
            :round2($u->info['money2']); ?> .При себе наличных:round2($u->info['money2']); ?> Екр.
            @@ -971,8 +971,8 @@ if ($u->room['file'] == 'bank') {
            ! - , . + Внимание! Некоторые услуги банка + платные, о размере взымаемой комиссии написано в соответствующем разделе.
            @@ -993,18 +993,18 @@ if ($u->room['file'] == 'bank') {
            - - + Пополнить счет + Сумма - . - + кр. +
            - + Сумма - . - + Екр. +
            @@ -1012,34 +1012,34 @@ if ($u->room['file'] == 'bank') {
            - - + Перевести кредиты на другой счет + Сумма - .
            - + кр.
            + Номер счета куда перевести кредиты
            + value="Перевести кредиты на другой счет" + onclick="if(Math.round(document.getElementById('vl1')).value==0 || Math.round(document.getElementById('vl2').value)==0) {alert('Укажите сумму и номер счета'); return false;} else {return confirm('Вы хотите перевести со своего счета '+(Math.floor(document.getElementById('vl1').value*100)/100).toFixed(2)+' кр. на счет номер '+Math.floor(document.getElementById('vl2').value)+' ?')}"/>
            - 3.00 % , 1.00 - . + Комиссия составляет 3.00 % от суммы, но не менее 1.00 + кр.
            - - .
            - 1 . = .00 .
            - + Обменный пункт + Обменять еврокредиты на кредиты.
            + Курс 1 екр. = .00 кр.
            + Сумма - . + екр. /> + value="Обменять" ).toFixed(2)+' кр. ?');" */ ?> />
            @@ -1048,17 +1048,17 @@ if ($u->room['file'] == 'bank') {
            - - .
            - . = 1.00 .
            - + Обменный пункт + Обменять кредиты на еврокредиты.
            + Курс кр. = 1.00 екр.
            + Сумма - . + кр.
            - 3.00 % , - 5.00 . - + Комиссия составляет 3.00 % от суммы, а так-же 5.00 кр. +
            @@ -1068,19 +1068,19 @@ if ($u->room['file'] == 'bank') {
            - - + Перевести еврокредиты на другой счет + Сумма - .
            - + екр.
            + Номер счета куда перевести кредиты
            + value="Перевести еврокредиты на другой счет" + onclick="if(Math.round(document.getElementById('vl12')).value==0 || Math.round(document.getElementById('vl22').value)==0) {alert('Укажите сумму и номер счета'); return false;} else {return confirm('Вы хотите перевести со своего счета '+(Math.floor(document.getElementById('vl12').value*100)/100).toFixed(2)+' екр. на счет номер '+Math.floor(document.getElementById('vl22').value)+' ?')}"/>
            - 0.00 % , 0.01 . + Комиссия составляет 0.00 % от суммы, но не менее 0.01 екр.
            @@ -1088,19 +1088,19 @@ if ($u->room['file'] == 'bank') {
            - -
            + Настройки + Сменить пароль
            - + - +
            Новый пароль
            Введите новый пароль повторно
            - +
            @@ -1116,18 +1116,18 @@ if ($u->room['file'] == 'bank') {
            - - + Снять со счета + Сумма - . - + кр. +
            - + Сумма - E. - + Eкр. +
            @@ -1138,7 +1138,7 @@ if ($u->room['file'] == 'bank') {
            - + Курс еврокредита к мировой валюте
            room['file'] == 'bank') { $i = 0; $true = [ - ['USD', ' '], - ['EUR', ''], - ['RUB', ' '], - ['UAH', '. '], - ['BYR', ' '], - ['AZN', ' '], - ['GBP', '. '], + ['USD', 'долларов США'], + ['EUR', 'ЕВРО'], + ['RUB', 'российских рублей'], + ['UAH', 'укр. гривен'], + ['BYR', 'белорусских рублей'], + ['AZN', 'азербайджанских манат'], + ['GBP', 'англ. фунтов стерлингов'], ]; - $str = '1 . = %s %s
            '; + $str = '1 екр. = %s %s
            '; $kurs_str = ''; foreach ($true as $item) { if ($pl[$item[0]] > 0) { @@ -1170,16 +1170,16 @@ if ($u->room['file'] == 'bank') {
            - - - + Данные на + без + учета комиссий
            - : - . + Ошибка: не удалось получить курс + валют.
            @@ -1188,7 +1188,7 @@ if ($u->room['file'] == 'bank') {
            - + Последние операции
            room['file'] == 'bank') { - \ . + Сумма указанная в окне оповещения и суммы взымаемая\начисляемая могут различаться. '; - $subject = mime_header_encode($subject, $data_charset, $send_charset); - $from = mime_header_encode($name_from, $data_charset, $send_charset) - .' <' . $email_from . '>'; - if($data_charset != $send_charset) { - $body = iconv($data_charset, $send_charset, $body); - } - $headers = "From: $from\r\n"; - $headers .= "Content-type: text/html; charset=$send_charset\r\n"; - - return mail($to, $subject, $body, $headers); - } - - function mime_header_encode($str, $data_charset, $send_charset) { - if($data_charset != $send_charset) { - $str = iconv($data_charset, $send_charset, $str); - } - return '=?' . $send_charset . '?B?' . base64_encode($str) . '?='; - } - } - -if($u->room['file']=='bank') -{ - $noc = $c['crtoecr']; //120 kr = 1 ekr. - $con = $c['ecrtocr']; //1 . = 30 . - function getNum($v) - { - $plid = $v; - $pi = iconv_strlen($plid); - if($pi<5) - { - $i = 0; - while($i<=5-$pi) - { - $plid = '0'.$plid; - $i++; - } - } - return $plid; - } - function getNumId($v) - { - $plid = $v; - $array = str_split($plid); - $ends=0; - $result=''; - for($i=0,$end=(count($array)-1);$i<=$end;$i++){ - if($array[$i]==0 and $ends==0){$array[$i]='';}else{$ends=1;} - $result.=$array[$i]; - } - //print_r($array); - return $result; - } - - if($u->info['allLock'] > time()) { - $u->bank = false; - } - - $re2 = ''; - if(isset($_GET['enter']) && !isset($u->bank['id'])) - { - $bank = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string((int)$_POST['bank']).'" LIMIT 1')); - if(!isset($bank['id'])) - { - $re2 = ' .'; - }elseif($bank['pass']!=$_POST['pass']) - { - $pl = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `time` > "'.(time()-60*60).'" AND `vars` = "bank_bad_pass_'.mysql_real_escape_string($bank['id']).'" LIMIT 5')); - if($pl[0]>=3) - { - $re2 = ' 1 '; - }else{ - if($pl[0]==0) - { - $re2 = ' . , '; - }else{ - $pp = array(0=>'',1=>'',2=>'',3=>''); - $re2 = ' . '.(3-$pl[0]).' '.$pp[3-$pl[0]].', '; - } - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_bad_pass_'.mysql_real_escape_string($bank['id']).'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); - } - }else{ - - if($u->info['allLock'] > time()) { - echo ''; - }else{ - //! - $bank['useNow'] = time()+12*60*60; - mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `id` != "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); - mysql_query('UPDATE `bank` SET `useNow` = "'.$bank['useNow'].'" WHERE `id` = "'.$bank['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_good_pass_'.mysql_real_escape_string($bank['id']).'","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); - $u->bank = $bank; - } - } - }elseif(isset($_GET['res'])) - { - //echo $_GET['schet'].'
            '; - $b_pass = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string(getNumId($_GET['schet'])).'" ORDER BY `id` DESC LIMIT 1')); - if($b_pass['repass'] >= time()) - { - $re2 = ' '; - }else{ - mysql_query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`) VALUES ("'.$u->info['id'].'","'.time().'","'.$u->info['city'].'","'.$u->info['room'].'","bank_res","'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'")'); - $re2 = ' email, '; - mysql_query('UPDATE `bank` SET `repass` = "'.(time()+24*3600).'" WHERE `id` = "'.$b_pass['id'].'" LIMIT 1'); - send_mime_mail(' - Support', - 'support@new-combats.com', - ''.$u->info['login'].'', - $u->info['mail'], - 'CP1251', // , - 'KOI8-R', // , - ' '.$u->info['login'].'', - " : ".getNum($b_pass['id'])."
            : ".$b_pass['pass'].'

            ,
            '); - - } - }elseif(isset($_GET['open']) && !isset($u->bank['id'])) - { - if( $_POST['rdn01'] == 2 && ($u->info['level'] >= 8 || $u->info['money4'] < 15 )) { - $re2 = ' !'; - }elseif($u->info['money']>=3 || ($u->info['level'] < 8 && $u->info['money4'] >= 15 && $c['zuby'] == true )) - { - if( $_POST['pass1'] == '' || $_POST['pass1'] == ' ' ) { - $re2 = ' !'; - }elseif( $_POST['pass1'] != $_POST['pass2'] ) { - $re2 = ' !'; - }elseif( $u->info['money'] - 3 < 0 && $_POST['rdn01'] != 2 ) { - $re2 = ' .'; - }elseif($u->info['align']!=2) - { - $pass = rand(10000,91191); - $pass = htmlspecialchars($_POST['pass1'],NULL,'cp1251'); - $ins = mysql_query('INSERT INTO `bank` (`uid`,`create`,`pass`) VALUES ("'.$u->info['id'].'","'.time().'","'.$pass.'")'); - if($ins) - { - $bank = mysql_insert_id(); - if( $u->info['level'] < 8 && $_POST['rdn01'] == 2 && $c['zuby'] == true) { - $u->info['money4'] -= 15; - }else{ - $u->info['money'] -= 3; - } - $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'",`money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re2 = ' '.getNum($bank).' .
            : '.$pass.'

            ( " " )'; - $u->addDelo(3,$u->info['id'],' '.getNum($bank).'',time(),$u->info['city'],'Bank.System',3,0,''); - }else{ - $re2 = ' .'; - } - }else{ - $re2 = ' .'; - } - }else{ - if( $u->info['level'] < 8 && $c['zuby'] == true ) { - $re2 = ' 3.00 . '.$u->zuby(15).''; - }else{ - $re2 = ' 3.00 .'; - } - } - }elseif(isset($_GET['exit']) && isset($u->bank['id'])) - { - $u->bank = false; - mysql_query('UPDATE `bank` SET `useNow` = "0" WHERE `uid` = "'.$u->info['id'].'" AND `useNow`!="0" LIMIT 1'); - } - - if($u->info['allLock'] > time()) { - $u->bank = false; - } - - if(isset($u->bank['id'])) - { - if(isset($_POST['sd4']) && $u->newAct($_POST['sd4'])) - { - if(isset($_POST['transfer_kredit2']) && $u->info['admin']>0) - { - // - $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num2']).'" LIMIT 1')); - if(isset($ub['id']) && $ub['id']!=$u->bank['id']) - { - $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); - if($ut['level']>=0 || $ut['id']==$u->info['id'] || $u->info['admin']>0) - { - $mn = floor((int)($_POST['tansfer_sum2']*100)); - $mn = round(($mn/100),2); - $prc = 0; - $mn += $prc; - if($u->bank['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money2'] -= $mn; - $ub['money2'] += $mn-$prc; - - mysql_query('UPDATE `users` SET `catch` = `catch` + "'.floor($mn-$prc).'" WHERE `id` = "'.$ut['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `frg` = `frg` + '.floor($mn).' WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - mysql_query('UPDATE `bank` SET `money2` = "'.mysql_real_escape_string($ub['money2']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); - $re2 = ' '.($mn-$prc).' . ( '.$prc.' .) '.getNum($ub['id']).' "'.$ut['login'].'"'; - $u->addDelo(3,$ut['id'],' '.($mn-$prc).' . '.getNum($u->bank['id']).' "'.$u->info['login'].'", '.$prc.' . (: '.$ub['money1'].' ., '.$ub['money2'].' .)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); - $u->addDelo(3,$u->info['id'],' '.($mn-$prc).' . '.getNum($ub['id']).' "'.$ut['login'].'", '.$prc.' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$u->bank['id'].' '.$ub['id'].' "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' .'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); - if($ut['id']!=$u->info['id']) - { - $alg = ''; - if($u->info['align']==50) - { - $alg = ''; - } - $text = '"'.$alg.'[login:'.$u->info['login'].']" '.($u->info['sex']==0?"":"").' '.($mn-$prc).' . '.getNum($u->bank['id']).' '.getNum($ub['id']).'.'; - - mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','12','0','1')"); - } - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' '; - } - }elseif(isset($_POST['transfer_kredit']) && $u->info['align']!=2) - { - // - if($u->info['level']>=4 || $u->info['admin']>0) - { - $ub = mysql_fetch_array(mysql_query('SELECT * FROM `bank` WHERE `id` = "'.mysql_real_escape_string((int)$_POST['num']).'" LIMIT 1')); - if(isset($ub['id']) && $ub['id']!=$u->bank['id']) - { - $ut = mysql_fetch_array(mysql_query('SELECT `id`,`level`,`city`,`room`,`login` FROM `users` WHERE `id` = "'.mysql_real_escape_string($ub['uid']).'" LIMIT 1')); - if($ut['level']>=4 || $ut['id']==$u->info['id'] || $u->info['admin']>0) - { - $mn = floor((int)($_POST['tansfer_sum']*100)); - $mn = round(($mn/100),2); - $prc = round($mn*3/100,2); - $mn += $prc; - if($u->bank['money1']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] -= $mn; - $ub['money1'] += $mn-$prc; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($ub['money1']).'" WHERE `id` = "'.$ub['id'].'" LIMIT 1'); - $re2 = ' '.($mn-$prc).' . ( '.$prc.' .) '.getNum($ub['id']).' "'.$ut['login'].'"'; - $u->addDelo(3,$ut['id'],' '.($mn-$prc).' . '.getNum($u->bank['id']).' "'.$u->info['login'].'", '.$prc.' . (: '.$ub['money1'].' ., '.$ub['money2'].' .)',time(),$ut['city'],'Bank.System',mysql_real_escape_string($mn-$prc),0,$ub['id']); - $u->addDelo(3,$u->info['id'],' '.($mn-$prc).' . '.getNum($ub['id']).' "'.$ut['login'].'", '.$prc.' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn),$u->bank['id']); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$u->bank['id'].' '.$ub['id'].' "'.$ut['login'].'" ['.$ut['level'].'] '.($mn-$prc).' . '.$prc.' . .'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(1,$ut['id'],$log,time(),$ut['city'],'Bank.System',0,0,''); - if($ut['id']!=$u->info['id']) - { - $text = '"[login:'.$u->info['login'].']" '.($u->info['sex']==0?"":"").' '.($mn-$prc).' . '.getNum($u->bank['id']).' '.getNum($ub['id']).'.'; - mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$ut['city']."','".$ut['room']."','','".$ut['login']."','".$text."','".time()."','6','0','1')"); - } - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' '; - } - }else{ - $re2 = ' 4- '; - } - }elseif($u->info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $u->info['align'] !=50 && isset($_POST['convert_kredit']) && $c['crtoecr'] > 0) { - // . . - if($u->info['palpro'] > time()) { - $mn = ceil((int)($_POST['convert_sum2']*100)); - $mn = round(($mn/100),2); - $mne = round($mn/$noc,2); - $mn = round(($mn/100*103+5),2); - $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "bank_kr_to_ekr_['.date('d.m.Y',time()).']" ORDER BY `id` DESC LIMIT 1',1); - $sm_lim = 100; - if(isset($sm['id']) && $sm['vals']+$mne > $sm_lim) { - if($sm['vals'] < $sm_lim) { - $re2 = ' '.($sm_lim-$sm['vals']).' .. ( '.round( ( ($sm_lim-$sm['vals'])*$noc ) ,2).' .), '.$mne.' ..'; - }else{ - $re2 = ' . . ('.$sm_lim.' .)'; - } - }elseif($mn > 0 && $mne > 0 && $mn >= round((0.01*($noc*1.03)+5),2)) { - if($u->bank['money1'] >= $mn) { - if(!isset($sm['id'])) { - $u->addAction(time(),'bank_kr_to_ekr_['.date('d.m.Y').']',$mne); - }else{ - mysql_query('UPDATE `actions` SET `vals` = "'.($sm['vals']+$mne).'" WHERE `id` = "'.$sm['id'].'" LIMIT 1'); - } - $re2 = ' '.$mn.' . '.$mne.' .'; - $u->bank['money1'] -= $mn; - $u->bank['money2'] += $mne; - - mysql_query('UPDATE `users` SET `catch` = `catch` + "'.round($mne,2).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'", `money2` = "'.mysql_real_escape_string($u->bank['money2']).'",`shara` = `shara` + "'.mysql_real_escape_string($mne).'" WHERE `id` = "'.mysql_real_escape_string($u->bank['id']).'" LIMIT 1'); - $log = '"'.$u->info['login'].'" ['.$u->info['level'].'] '.$mn.' . '.$mne.' ., '.$u->bank['id'].'.'; - $u->addDelo(1,$u->info['id'],$log,time(),$u->info['city'],'Bank.System',0,0,''); - $u->addDelo(3,$u->info['id'],' '.ceil((int)($_POST['convert_sum2']*100/100)).' . '.$mne.' ., '.round((ceil((int)($_POST['convert_sum2']*100/100))/100*3+5),2).' . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - }else{ - $re2 = ' '.$mn.' . '; - } - }else{ - $re2 = ' '.round((0.01*($noc*1.03)+5),2).' .'; - } - }else{ - $re2 = ' .'; - } - }elseif(isset($_POST['convert_ekredit'])) - { - // . . - $mn = ceil((int)($_POST['convert_sum']*100)); - $mn = round(($mn/100),2); - if($u->bank['money2']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' '; - }else{ - $upd = mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']+($mn*$con)).'",`money2` = "'.mysql_real_escape_string($u->bank['money2']-$mn).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] += $mn*$con; - $u->bank['money2'] -= $mn; - $u->addDelo(3,$u->info['id'],' '.$mn.' . '.($mn*$con).' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,mysql_real_escape_string($mn*$con),$u->bank['id']); - $re2 = ' '.$mn.' . '.($mn*$con).' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }elseif(isset($_POST['get_kredit'])) - { - // - $mn = floor((int)($_POST['get_sum']*100)); - $mn = round(($mn/100),2); - if($u->bank['money1']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( '.((int)$_POST['get_sum']).' .)'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']+$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] -= $mn; - $u->info['money'] += $mn; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' . '; - } - }elseif(isset($_POST['add_kredit'])) - { - // - $mn = floor((int)($_POST['add_sum']*100)); - $mn = round(($mn/100),2); - if($u->info['money']>=$mn) - { - if($mn<0.01 || $mn>1000000000) - { - $re2 = ' ( )'; - }else{ - $upd = mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']-$mn).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($upd) - { - $u->bank['money1'] += $mn; - $u->info['money'] -= $mn; - mysql_query('UPDATE `bank` SET `money1` = "'.mysql_real_escape_string($u->bank['money1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - $u->addDelo(3,$u->info['id'],' '.$mn.' ., 0 . (: '.$u->bank['money1'].' ., '.$u->bank['money2'].' .)',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - $re2 = ' '.$mn.' .'; - }else{ - $re2 = ' '; - } - } - }else{ - $re2 = ' '.$mn.' .'; - } - }elseif(isset($_POST['change_psw2'])) - { - // - $sm = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vals` = "id='.$u->bank['id'].'&new_pass='.$u->bank['pass'].'" AND `vars` = "bank_new_pass" AND `time` > "'.(time()-24*60*60).'" LIMIT 1',1); - if($_POST['new_psw1']!=$_POST['new_psw2']) - { - $re2 = ' '; - }elseif(iconv_strlen($_POST['new_psw1'])<6 || iconv_strlen($_POST['new_psw1'])>32) - { - $re2 = ' 6 32 '; - }elseif(isset($sm['id'])) - { - $re2 = ' '; - }else{ - // - $upd = mysql_query('UPDATE `bank` SET `pass` = "'.mysql_real_escape_string($_POST['new_psw1']).'" WHERE `id` = "'.$u->bank['id'].'" LIMIT 1'); - if($upd) - { - $u->addAction(time(),'bank_new_pass','id='.$u->bank['id'].'&new_pass='.$_POST['new_psw1'].''); - $u->bank['pass'] = $_POST['new_psw1']; - $re2 = ' '.getNum($u->bank['id']).'
            : '.$u->bank['pass'].''; - $u->addDelo(3,$u->info['id'],' .',time(),$u->info['city'],'Bank.System',0,0,$u->bank['id']); - }else{ - $re2 = ' '; - } - } - } - } - } - - if($re!=''){ echo '
            '.$re.'
            '; } ?> - - -
            - - - - - -
            -
            -


            -
            -
            -
            - - - - - -
              - - - -
            - - - - - - -
            - - - - -
            -
            - - - - - - - - - - -
            -
            - '.$re2.'
            '; } - if(!isset($u->bank['id'])) - { - ?> - : -
              -
            1. / / -
            2. / -
            3. . -
            - - -
            - ? : - -
            -
            -
            -
            - - -
            - - - - - -
            -
            -
            -
            -
            - > -
            -
            - ? email, :
            -
            -
            - - - - -
            - - - - - - - -

              - : bank['id']); ?> [x]
            -
            -
            -
            - - - - - - - -
            :round2($u->bank['money1']); ?>
            :round2($u->bank['money2']); ?>

            :round2($u->info['money']); ?> .
            -
            -
            -
            ! , .
            - - - - - - -
            - - - - - - - - - - info['align']!=2 && $u->info['haos'] < time() && $u->info['haos'] != 1 && $c['crtoecr'] > 0) { ?> - - - - info['admin']>1000) - { - ?> - - - - - - - - - - -
            - - - - . - -
            -
            - - - - .
            - - -
            - -
            - 3.00 % , 1.00 . -
            - - .
            - 1 . = .00 .
            - - - . - /> -
            - - .
            - . = 1.00 .
            - - - . -
            - 3.00 % , - 5.00 . - -
            - - - - .
            - - -
            - -
            - 0.00 % , 0.01 . -
            - - email. email, , , email. email. / , !
            - -
            -
            - - - - - - - - - -
            - -
            - -
             
            -
            - - - - - - - - - - - - -
            - - - - . - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            1 . =
            10UAH = 1
            0.35USD = 1
            20RUB = 1
            0.29EUR = 1
            -
            - - - info['id'].'" AND `dop` = "'.$u->bank['id'].'" AND `type` = "3" ORDER BY `time` DESC LIMIT 21'); - while($pl = mysql_fetch_array($sp)) - { - ?> - - - - -
            '.date('d.m.Y H:i',$pl['time']).' '; echo $pl['text']; ?>
            -
            -
            - \ . - \ No newline at end of file diff --git a/modules_data/location/berezka.php b/modules_data/location/berezka.php index 705bce87..49e95fb7 100644 --- a/modules_data/location/berezka.php +++ b/modules_data/location/berezka.php @@ -22,7 +22,7 @@ if($u->room['file']=='berezka') //$shopProcent = $u->shopSaleM( $shopProcent , $itm ); if($shopProcent>90){ $shopProcent = 90; } if($shopProcent<10){ $shopProcent = 10; } - //echo '
              : '.$bns.'%
            '; + //echo '
              У Вас действует бонус при продаже: '.$bns.'%
            '; } } @@ -52,7 +52,7 @@ if($u->room['file']=='berezka') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['sale']) && isset($_GET['item']) && $u->newAct($_GET['sd4']) && isset($u->bank['id']) && $sale_ekr == true ) { $id = (int)$_GET['item']; @@ -70,20 +70,20 @@ if($u->room['file']=='berezka') //$cblim = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `ekr_sale` WHERE `uid` = "'.$u->info['id'].'" AND `time` >= '.$effvip['timeUse'].' LIMIT 1')); /*if( $cblim[0] >= $u->stats['silver'] * 5 ) { - $error = ' , VIP '; + $error = 'Лимит продаж предметов в березку исчерпан, обновите VIP аккаунт'; }else*/ if( ($itm['gift'] != '' && $itm['gift'] != '0') && ( $itm['type'] == 37 || $itm['type'] == 38 || $itm['type'] == 39 || $itm['type'] == 63 ) ) { - $error = ' , ! :)'; + $error = 'Нельзя продавать подарки, они должны оставаться на память! :)'; }elseif(isset($po['nosale'])){ - $error = ' ...'; + $error = 'Не удалось продать предмет ...'; }elseif(isset($po['fromshop']) && ($po['fromshop'] != 777 && $po['fromshop'] != 2)){ - $error = ' -, ...'; + $error = 'Предмет не был приобретен за Евро-кредиты, его нельзя продать здесь...'; }elseif($itm['gift'] != '0' && $itm['gift'] != '') { - $error = ' ... - ;)'; + $error = 'Не удалось продать предмет ... Все-таки подарок ;)'; }elseif(isset($po['frompisher'])){ - $error = ' ... '; + $error = 'Не удалось продать предмет ... предмет из подземелья'; //}elseif(isset($po['srok'] <= '5000000' )){ - //$error = ' ...'; + //$error = 'Предметы со сроком годности продавать нельзя ...'; }elseif(isset($itm['id'])){ if($itm['2price']>0){ $itm['price2'] = $itm['2price']; @@ -106,9 +106,9 @@ if($u->room['file']=='berezka') $shpCena = $shpCena/100*(ceil($itm['iznosMAX'])/$itm['iznosMAXi']*100); } if( isset($po['art']) ) { - $shpCena = $u->round2($shpCena*$u->berezCena()); // 35% + $shpCena = $u->round2($shpCena*$u->berezCena()); // Процент продажи 35% }else{ - $shpCena = $u->round2($shpCena*$u->berezCena()); // 35% + $shpCena = $u->round2($shpCena*$u->berezCena()); // Процент продажи 35% } if($shpCena < 0){ $shpCena = 0; @@ -131,27 +131,27 @@ if($u->room['file']=='berezka') mysql_query('INSERT INTO `ekr_sale` (`uid`,`time`,`money2`) VALUES ("'.$u->info['id'].'","'.time().'","'.mysql_real_escape_string($shpCena).'")'); $u->info['catch'] += $shpCena; mysql_query('UPDATE `users` SET `catch` = "'.$u->info['catch'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' "'.$itm['name'].' [x'.$col.']" '.$shpCena.' .'; + $error = 'Вы успешно продали предмет "'.$itm['name'].' [x'.$col.']" за '.$shpCena.' екр.'; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.Ekrshop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.Ekrshop',0,$shpCena); + $u->addDelo(2,$u->info['id'],'"System.Ekrshop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' екр..',time(),$u->info['city'],'System.Ekrshop',0,$shpCena); }else{ - $u->addDelo(2,$u->info['id'],'"System.Ekrshop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.Ekrshop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.Ekrshop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' екр. (кредиты не переведены).',time(),$u->info['city'],'System.Ekrshop',0,0); + $error = 'Не удалось продать предмет ...'; } }else{ - $error = ' ...'; + $error = 'Не удалось продать предмет...'; } }else{ - $error = ' .'; + $error = 'Предмет не найден в инвентаре.'; } } if($re!=''){ echo '
            '.$re.'
            '; } ?> '); - } else { - $error = ' ...'; - } - } else { - $error = ' ...'; - } - } else { - $error = ' ...'; - } - // - //header('location: main.php'); - die(); - }else{ - // ( , ) - mysql_query('INSERT INTO `dialog_act` ( - `uid`,`var`,`time` - ) VALUES ( - "'.$u->info['id'].'","noobqst1","'.time().'" - )'); - - // - $humor = array( - 0 => array( - ':maniac: ;)',':beggar: - !',':pal: !', - ':vamp: !',':susel: - !',':duel: !', - ':friday: !',':doc: : ! , ! ! - !' - ), - 1 => array( - ':maniac: ! ;)',':nail: , ;)',':pal: !', - ':vamp: !',':rev: - !',':hug: !', - ':angel2: ...' - ) - ); - $humor = $humor[$u->info['sex']]; - //$u->info['fnq'] = 1; - //mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - //mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4703'); - //mysql_query('UPDATE `users` SET `room` = 4 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //mysql_query('UPDATE `stats` SET `hpNow` = 1000,`mpNow` = 1000,`dn` = 0 , `dnow` = 0 , `x` = 0 , `y` = 0 , `s` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->send('','','','','',' "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); - - echo '
            , !
            '; - } - }else{ - echo ''; - } - }*/ - - - -?> - - - - error != '' ) { ?> - - error; ?> - - - - - - -
            - getInfoPers($u->info['id'],0); if($usee!=false){ echo $usee[0]; }else{ echo 'information is lost.'; } ?> -
            - error!=''){ echo ''.$u->error.''; } ?> - - - - - -
            - '.$re.''; } ?> - - - - -
            -
            - > - > - > - > - > - > - > - > - > - room['id']==3) { - ?>
            - -
            - -
            - -
            - -
            «» , info['login']; ?>.
            - info['level']<6) - { - echo ' - ? , ? . , ? , ? , . Capital city. . - '; - }else{ - echo ', - .'; - } ?> -
            - -
            - -
            - - testHome(); if(!isset($hgo['id'])){ ?> - -
            - ! . , " ", "", ", ". , , , .
            - .

            -
            - -
            -room['file']=='bk2')
            -
            +
            onclick="location='main.php?loc=1.180.0.221';" onmouseover="this.className='aFilterhover';" onmouseout="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_sec5.gif" width="122" height="31" class="aFilter" />
            @@ -44,27 +44,27 @@ if($u->room['file']=='bk2') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/bk_rm1.php b/modules_data/location/bk_rm1.php index 0b03f2eb..01f3091e 100644 --- a/modules_data/location/bk_rm1.php +++ b/modules_data/location/bk_rm1.php @@ -42,87 +42,87 @@ if($u->room['file']=='bk_rm1') } ?>
            - - - + + +
            - + - +

            Карта миров

            - - + - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules_data/location/bookshop.php b/modules_data/location/bookshop.php index 5a7c54c4..7d79ede6 100644 --- a/modules_data/location/bookshop.php +++ b/modules_data/location/bookshop.php @@ -23,7 +23,7 @@ if($u->room['file']=='bookshop') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].''); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -31,9 +31,9 @@ if($u->room['file']=='bookshop') '; @@ -69,9 +69,9 @@ echo ''; function maginfo(z, p, m, obj) { var r = ''; r += '' + $(obj).attr('magelogin') + '

            '; - r += ': ' + m + ', '; - r += ': ' + z + ', '; - r += ': ' + p + ''; + r += 'Мощь: ' + m + ', '; + r += 'Защита: ' + z + ', '; + r += 'Подавление: ' + p + ''; return r; } var server_fight = "";'; function ($m) {return chr(hexdec($m[1]) - 1072 + 224);}, $str ); -// $str = preg_replace_callback( -// '/\\\u([a-f0-9]{4})/i', create_function('$m', 'return chr(hexdec($m[1])-1072+224);'), $str -// ); -// return $str; } ?> - var log_text = ; + var log_text = ; var youlogin = "info['login']?>"; function looklogrep(text, vars) { @@ -332,7 +328,7 @@ echo ''; i = 1; while (i <= 21) { - // R - 1 + //замена R - игрок 1 if (log_text[data['s1']] != undefined) { if (log_text[data['s1']][i] != undefined) { r = log_text[data['s1']][i]; @@ -347,7 +343,7 @@ echo ''; } } } - // R - 2 + //замена R - игрок 2 if (log_text[data['s2']] != undefined) { if (log_text[data['s2']][i] != undefined) { r = log_text[data['s2']][i]; @@ -365,7 +361,7 @@ echo ''; i++; } - // + //Повторная замена text = replaceAll('{u1}', '' + data['login1'] + '', text); text = replaceAll('{u2}', '' + data['login2'] + '', text); @@ -436,25 +432,25 @@ echo '';
            (level 0)
              ()
            2 (level 0)
            +
            Комната для новичков (level 0)
              ()
            Комната для новичков 2 (level 0)
              ()
            3 (level 0)
            +
            Комната для новичков 3 (level 0)
              ()
            4 (level 0)
            +
            Комната для новичков 4 (level 0)
              ()
            (level 1-3)
            +
            Зал Воинов (level 1-3)
              ()
            2 (level 1-3)
            +
            Зал Воинов 2 (level 1-3)
              ()
            3 (level 1-3)
            +
            Зал Воинов 3 (level 1-3)
              ()
            (level 4-21)
            +
            Торговый Зал (level 4-21)
              ()
            (level 4-6)
            +
            Рыцарский зал (level 4-6)
              ()
            - (level 7-9)
            +
            Башня рыцарей-магов (level 7-9)
              ()
            (level 10-12)
            +
            Колдовской мир (level 10-12)
              ()
            (level 13-15)
            +
            Этажи духов (level 13-15)
              ()
            (level 16-19)
            +
            Астральные этажи (level 16-19)
              ()
            (level 19-21)
            +
            Огненный мир (level 19-21)
              ()

            +
            Зал Паладинов
              ()

            +
            Совет Белого Братства
              ()

            +
            Зал Тьмы
              ()

            +
            Царство Тьмы
              ()

            +
            Зал Стихий
              ()
            (level 1-21)
            +
            Будуар (level 1-21)
              ()

            +
            Зал Света
              ()

            +
            Царство Света
              ()

            +
            Царство Стихий
              ()
            (level 4-21)
            +
            Зал кланов (level 4-21)
              ()
            - - - - - - - - - -
            @@ -471,13 +467,13 @@ echo ''; cellpadding="0"> -
            +
            Атака
            -
            -
            +
            Защита
            @@ -536,7 +532,7 @@ echo ''; height="18"/>
            + align="left">удар в голову   @@ -553,10 +549,10 @@ echo ''; -
             
            -
             
            -
              , - +
             блок головы
            +
             блок головы и груди
            +
             блок головы, груди и + живота
            @@ -612,7 +608,7 @@ echo ''; height="18"/>
            + align="left">удар в грудь   @@ -629,9 +625,9 @@ echo ''; -
             
            -
             
            -
              , +
             блок груди
            +
             блок груди и живота
            +
             блок груди, живота и пояса
            @@ -686,7 +682,7 @@ echo ''; height="18"/>
            + align="left">удар в живот   @@ -703,9 +699,9 @@ echo ''; -
             
            -
             
            -
              , +
             блок живота
            +
             блок живота и пояса
            +
             блок живота, пояса и ног
            @@ -761,7 +757,7 @@ echo ''; height="18"/>
            () + align="left">удар в пояс(пах)   @@ -778,9 +774,9 @@ echo ''; -
             
            -
             
            -
              , +
             блок пояса
            +
             блок пояса и ног
            +
             блок пояса, ног и головы
            @@ -836,7 +832,7 @@ echo ''; height="18"/>
            + align="left">удар по ногам   @@ -853,9 +849,9 @@ echo ''; -
             
            -
             
            -
              , +
             блок ног
            +
             блок ног и головы
            +
             блок ног, головы и груди
            @@ -866,7 +862,7 @@ echo ''; align="center" cellpadding="0" cellspacing="0">   - '; } '; @@ -919,24 +915,24 @@ echo ''; }else{ ?>style="cursor:pointer;" onclick="top.leaderFight();" id="btn_down_img3" style="cursor:pointer;" - title=" " + title="Передать флаг" src="https://img.new-combats.com/i/ico_change_leader1.gif" width="16" height="19"/> + } ?> onclick="top.leaderFight2();" id="btn_down_img4" style="cursor:pointer;" title="Убить" src="https://img.new-combats.com/i/ico_kill_member1.gif" width="16" height="19" />-->
             
            @@ -957,9 +953,9 @@ echo ''; info['level'] == 0) { ?>
            -
            - !!! -
            +
            Просто нажмите + Вперёд!!! чтобы сделать рандомный + удар

            @@ -979,45 +975,45 @@ echo ''; echo ' style="display:none;" '; } ?> border="0" cellspacing="0" cellpadding="0"> - info['tactic1']; ?> - info['tactic2']; ?> - info['tactic3']; ?> - info['tactic4']; ?> - info['tactic5']; ?> - info['tactic6']); ?> - var server_fight = "";';
            - :  На данный момент вами нанесено урона:  info['battle_yron']); ?> HP .
            - (: +info['battle_exp']); ?> ., ) + (Опыт: +info['battle_exp']); ?> ед., Без учета процентов)


            - ( NaN .) + echo $u->info['battle']; ?>" target="blank_">Лог боя »»
            + (Бой идет с таймаутом NaN мин.)
            @@ -1086,9 +1082,9 @@ echo '';  
            - + echo $u->info['battle']; ?>" target="blank_">здесь »»

              @@ -1096,8 +1092,8 @@ echo '';
            - '; timedCount(); } - function reflesht() { // 2 - // console.log(" ") + function reflesht() { // в душе не ебу что это№2 + // console.log("зашел в саму функцию") высвечивается дважды при нажатии на кнопках document.getElementById('reflesh_btn').setAttribute("class", "buttons btnnew btnnew2"); document.getElementById('reflesh_btn').setAttribute("onclick", ""); document.getElementById('reflesh_btn').setAttribute("disabled", "disabled"); document.getElementById('btn_down_img1').setAttribute("onclick", ""); document.getElementById('btn_down_img1').setAttribute("disabled", "disabled"); - console.log("") + console.log("тут") reflesh(true); timedCount(); } @@ -1120,16 +1116,16 @@ echo ''; var cgo = 250; var tgo; var timer_is_on = 0; - timedCount(); // + timedCount(); //это тот момент когда кнопка серая function timedCount() { //reflesh_btn document.getElementById('go_btn').setAttribute("class", "buttons btnnew btnnew2"); document.getElementById('go_btn').setAttribute("onclick", ""); document.getElementById('go_btn').setAttribute("disabled", "disabled"); - document.getElementById("go_btn").innerHTML = '!!!';// + cgo; + document.getElementById("go_btn").innerHTML = 'Ждем!!!';// + cgo; document.getElementById('reflesh_btn').setAttribute("class", "buttons btnnew btnnew2"); document.getElementById('reflesh_btn').setAttribute("onclick", ""); document.getElementById('reflesh_btn').setAttribute("disabled", "disabled"); - document.getElementById("reflesh_btn").innerHTML = '!!!';// + cgo; + document.getElementById("reflesh_btn").innerHTML = 'Ждем!!!';// + cgo; document.getElementById('btn_down_img1').setAttribute("onclick", ""); document.getElementById('btn_down_img1').setAttribute("disabled", "disabled"); if (cgo > 0) { @@ -1139,15 +1135,15 @@ echo ''; clearTimeout(tgo); timer_is_on = 0; - cgo = 100; // - // console.log(" ") - document.getElementById("go_btn").innerHTML = '!!!'; + cgo = 100; // доступная атака + // console.log("задержка и отправка запроса сразу же") + document.getElementById("go_btn").innerHTML = 'Вперёд!!!'; document.getElementById('go_btn').removeAttribute("disabled"); document.getElementById('go_btn').setAttribute("onclick", "atackt();"); - document.getElementById("reflesh_btn").innerHTML = ''; + document.getElementById("reflesh_btn").innerHTML = 'Обновить'; document.getElementById('reflesh_btn').removeAttribute("disabled"); - // , - + // при клике должен быть вызов, а при клике на клаву - быть не должно document.getElementById('reflesh_btn').setAttribute("onclick", "reflesht();"); document.getElementById('btn_down_img1').setAttribute("onclick", "reflesht();"); document.getElementById('btn_down_img1').removeAttribute("disabled"); diff --git a/modules_data/location/commision.php b/modules_data/location/commision.php index d68c060f..1db4e5c6 100644 --- a/modules_data/location/commision.php +++ b/modules_data/location/commision.php @@ -18,7 +18,7 @@ if($u->room['file']=='commision') $shopProcent -= $bns; if($shopProcent>99){ $shopProcent = 99; } if($shopProcent<1){ $shopProcent = 1; } - echo '
            : '.$bns.'%
            '.(100-$shopProcent).'%
            '; + echo '
            У Вас действует бонус при продаже: '.$bns.'%
            Вы сможете продавать предметы за '.(100-$shopProcent).'% от их стоимости
            '; } } @@ -28,28 +28,28 @@ if($u->room['file']=='commision') $error = ''; - # + # Выполнение функции покупки предмета if(isset($_GET['buy'])) { if($u->info['allLock'] > time()) { - $re = '
            '.date('d.m.y H:i',$u->info['allLock']).'
            '; + $re = '
            Вам запрещается пользоваться данным магазином до '.date('d.m.y H:i',$u->info['allLock']).'
            '; }elseif($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; + $re = '
            Хаосникам запрещается пользоваться данным магазином
            '; }elseif($u->newAct($_GET['sd4'])==true) { $re = $u->buyItemCommison($sid,(int)$_GET['itemid'],(int)$_GET['buy']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } /* - * " " - * . + * Выполнение функции "положить предмет в комисионку" + * Или забрать предме из коммисионки. */ if($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; + $re = '
            Хаосникам запрещается пользоваться данным магазином
            '; }elseif(isset($_POST['PresTR'])){ $u->commisonRent(mysql_real_escape_string($_POST['PresTR']),(int)$_POST['iid'],(int)$_POST['summTR']); } @@ -59,9 +59,9 @@ if($u->room['file']=='commision') + + + + +
            ' . $error . ''; + ?> +
            + + + + + + +
            + + + + + + + + +
            + 'Отдел "Прочие предметы"', 1 => 'Отдел "Оружие: кастеты,ножи"', 2 => 'Отдел "Оружие: топоры"', 3 => 'Отдел "Оружие: дубины,булавы"', 4 => 'Отдел "Оружие: мечи"', 5 => 'Отдел "Оружие: магические посохи"', 6 => 'Отдел "Одежда: сапоги"', 7 => 'Отдел "Одежда: перчатки"', 8 => 'Отдел "Одежда: рубахи"', 9 => 'Отдел "Одежда: легкая броня"', 10 => 'Отдел "Одежда: тяжелая броня"', 11 => 'Отдел "Одежда: шлемы"', 12 => 'Отдел "Одежда: наручи"', 13 => 'Отдел "Одежда: пояса"', 14 => 'Отдел "Одежда: поножи"', 15 => 'Отдел "Щиты"', 16 => 'Отдел "Ювелирные товары: серьги"', 17 => 'Отдел "Ювелирные товары: ожерелья"', 18 => 'Отдел "Ювелирные товары: кольца"', 19 => 'Отдел "Заклинания: нейтральные"', 20 => 'Отдел "Заклинания: боевые и защитные"', 21 => 'Отдел "Амуниция"', 22 => 'Отдел "Эликсиры"', 23 => 'Отдел "Подарки"', 24 => 'Отдел "Подарки: недобрые"', 25 => 'Отдел "Подарки: упаковка"', 26 => 'Отдел "Подарки: открытки"', 27 => 'Отдел "Подарки: фейерверки"']; + if (isset($otdels_small_array[$_GET['otdel']])) { + echo $otdels_small_array[$_GET['otdel']]; + } + } + ?> +
            + + + commisionShop($sid, "preview"); + + } elseif ($_GET['toRent'] == 1) { + /* + * Выводим вещи из инвентарая + * которые хотим сдать в комок + */ + if ($u->info['allLock'] < time()) { + $itmAll = $u->genInv( + 30, + '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`gift` = "" ORDER BY `lastUPD` DESC' + ); + } else { + $itmAll[0] = 0; + } + if ($itmAll[0] == 0) { + $itmAllSee = ''; + } else { + $itmAllSee = $itmAll[2]; + } + echo $itmAllSee; + } elseif ($_GET['toRent'] == 2) { + /* + * Выводим вещи которые мы сдали в комок + */ + $itmAll = $u->genInv( + 31, + '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="30" AND `iu`.`gift` = "" ORDER BY `lastUPD` DESC' + ); + if ($itmAll[0] == 0) { + $itmAllSee = ''; + } else { + $itmAllSee = $itmAll[2]; + } + echo $itmAllSee; + } elseif ($_GET['toRent'] == 3) { + /* + * Выводим полный перечень вещей + * продоваемых в комке по определенному + * выбранному айтему + */ + $comshop->commisionShop($sid); + } + ?> +
            ПУСТО
            ПУСТО
            +
            +
            +
            + + + +
              + + + +
            + + + + + + + +
            + + + + + +
            Центральная Площадь +
            +
            +
            +
            +
            +
            +
            + + Масса: aves['now'] ?>/aves['max'] ?>  
            + У вас в наличии: info['money'], 2); ?>кр. +   +
            +
            +
            +    '; + ?> +
            +
            +
            Отделы магазина
            +
            +
            + 'Оружие: кастеты,ножи', 2 => '     топоры', 3 => '     дубины,булавы', 4 => '     мечи', 5 => '     магические посохи', 6 => 'Одежда: сапоги', 7 => '     перчатки', 8 => '     рубахи', 9 => '     легкая броня', 10 => '     тяжелая броня', 11 => '     шлемы', 12 => '     наручи', 13 => '     пояса', 14 => '     поножи', 15 => 'Щиты', 16 => 'Ювелирные товары: серьги', 17 => '     ожерелья', 18 => '     кольца', 19 => 'Заклинания', 20 => 'Эликсиры']; + $i = 1; + while ($i != -1) { + if (isset($otdels_array[$i])) { + if (isset($_GET['otdel']) && $_GET['otdel'] == $i) { + $color = 'C7C7C7'; + } else { + $color = 'e2e0e0'; + } + echo ''; + } else { + $i = -2; + } + $i++; + } + if (isset($_GET['otdel']) && $_GET['otdel'] == 1050) { + $color = 'C7C7C7'; + } else { + $color = 'e2e0e0'; + } + echo ''; + ?> +
            +
            +
            + + -if($u->room['file']=='commision2'){ - if(isset($u->stats['shopSale'],$_GET['sale'])){ - $bns = 0+$u->stats['shopSale']; - if($bns!=0){ - if($bns>0){ - $bns = '+'.$bns; - } - $shopProcent -= $bns; - if($shopProcent>99){ $shopProcent = 99; } - if($shopProcent<1){ $shopProcent = 1; } - echo '
            : '.$bns.'%
            '.(100-$shopProcent).'%
            '; - } - } - - if(!isset($_GET['otdel'])) $_GET['otdel'] = 1; - $sid = 1; - $error = ''; - - # - if(isset($_GET['buy'])){ - if($u->info['allLock'] > time()) { - $re = '
            '.date('d.m.y H:i',$u->info['allLock']).'
            '; - }elseif($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; - /* }elseif($u->info['palpro'] < time()) { // - $re = '
            ';*/ - }elseif($u->newAct($_GET['sd4'])==true){ - $re = $u->buyItemCommison($sid,(int)$_GET['itemid'],(int)$_GET['buy']); - }else{ - $re = ' ?'; - } - } - - /* - * " " - * . - */ - // - - if($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; - }elseif(isset($_POST['PresTR'])){ - $itemid = mysql_fetch_array(mysql_query('SELECT `inGroup`, `item_id` , `uid` FROM `items_users` WHERE `id` = "'.$_POST['iid'].'" LIMIT 1')); - $itemcount = mysql_fetch_array(mysql_query('SELECT COUNT(*) AS `total` FROM `items_users` WHERE `item_id` = "'.$itemid['item_id'].'" AND `inGroup` = "'.$itemid['inGroup'].'" AND `uid`="'.$itemid['uid'].'" LIMIT 1')); - $itemkt = mysql_fetch_array(mysql_query('SELECT * FROM `kom_price` WHERE `id` = "'.$itemid['item_id'].'" LIMIT 1')); //id min max - if (isset($_POST['summTR'])) - { - if ($itemcount['total']==0 || $itemid['inGroup']==0){$itemcount['total']=1;} - $itemkt['min'] = $itemkt['min']*$itemcount['total']; - $itemkt['max'] = $itemkt['max']*$itemcount['total']; - if ( $_POST['summTR']>=$itemkt['min'] && $_POST['summTR']<=$itemkt['max'] ) - { - $u->commisonRent(mysql_real_escape_string($_POST['PresTR']),(int)$_POST['iid'],(int)$_POST['summTR']); - } - else - { - $re = '
            : '.$itemkt['min'].'. : '.$itemkt['max'].'. -: '.$itemcount['total'].'
            '; - } - } - else - { - $u->commisonRent(mysql_real_escape_string($_POST['PresTR']),(int)$_POST['iid'],(int)$_POST['summTR']); - } - - } - - if($re!=''){ echo '
            '.$re.'
            '; } ?> - - - - - -
            '.$error.''; - ?> -
            - - - - - - -
            - - - - - - -
            - ' " "',1=>' ": ,"',2=>' ": "',3=>' ": ,"',4=>' ": "',5=>' ": "',6=>' ": "',7=>' ": "',8=>' ": "',9=>' ": "',10=>' ": "',11=>' ": "',12=>' ": "',13=>' ": "',14=>' ": "',15=>' ""',16=>' " : "',17=>' " : "',18=>' " : "',19=>' ": "',20=>' ": "',21=>' ""',22=>' ""',23=>' ""',24=>' ": "',25=>' ": "',26=>' ": "',27=>' ": "'); - if(isset($otdels_small_array[$_GET['otdel']])){ - echo $otdels_small_array[$_GET['otdel']]; - } - } - ?> -
            - - - commisionShop($sid,"preview"); - //$u->commisionShop($sid,"full"); - }elseif($_GET['toRent'] == 1){ - /* - * - * - */ - if($u->info['allLock'] < time()) { - $itmAll = $u->genInv(30,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`gift` = "" ORDER BY `lastUPD` DESC'); - } else { - $itmAll[0] = 0; - } - if($itmAll[0]==0){ - $itmAllSee = ''; - }else{ - $itmAllSee = $itmAll[2]; - } - echo $itmAllSee; - }elseif($_GET['toRent'] == 2){ - /* - * - */ - $itmAll = $u->genInv(31,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="30" AND `iu`.`gift` = "" ORDER BY `lastUPD` DESC'); - if($itmAll[0]==0){ - $itmAllSee = ''; - }else{ - $itmAllSee = $itmAll[2]; - } - echo $itmAllSee; - }elseif($_GET['toRent'] == 3){ - /* - * - * - * - */ - $u->commisionShop($sid,"full"); - } - ?> -
            -
            -
            -
            -
              - - -
            - - - - - - - -
            - - - - - -
            -
            -
            -
            -
            -
            -
            - - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   -
            -
            -
            -    '; - // echo '   '; - // "if(confirm(\' " " \')) location.href=\'?toRent=1\';" - ?> -
            -
            -
            - ': ,',2=>'     ',3=>'     ,',4=>'     ',5=>'      ',6=>': ',7=>'     ',8=>'     ',9=>'      ',10=>'      ',11=>'     ',12=>'     ',13=>'     ',14=>'     ',15=>'',16=>' : ',17=>'     ',18=>'     ',19=>'',20=>''); - $i=1; - while ($i!=-1){ - if(isset($otdels_array[$i])){ - if(isset($_GET['otdel']) && $_GET['otdel']==$i) { - $color = 'C7C7C7'; - } else { - $color = 'e2e0e0'; - } - echo ''; - } else { - $i = -2; - } - $i++; - } - if(isset($_GET['otdel']) && $_GET['otdel']==1050) { - $color = 'C7C7C7'; - } else { - $color = 'e2e0e0'; - } - echo ''; - ?> -
            -
            -
            - - \ No newline at end of file diff --git a/modules_data/location/cp1.php b/modules_data/location/cp1.php index 35be5ad8..d0d95eed 100644 --- a/modules_data/location/cp1.php +++ b/modules_data/location/cp1.php @@ -10,7 +10,7 @@ if($u->room['file']=='cp1') { if(date("H")>=8 && date("H")<=23) { $now = 'day'; - $tattack = '   '; + $tattack = 'Напасть на игрока   '; }else{ $now = 'night'; $tattack = ''; @@ -45,7 +45,7 @@ function AtackNoWindow() if ($tmp > 0) { $id++; - if ($id<3) {$out .= $tmp." . ";} + if ($id<3) {$out .= $tmp." мес. ";} $time_still = $time_still-$tmp*2592000; } /* @@ -53,7 +53,7 @@ function AtackNoWindow() if ($tmp > 0) { $id++; - if ($id<3) {$out .= $tmp." . ";} + if ($id<3) {$out .= $tmp." нед. ";} $time_still = $time_still-$tmp*604800; } */ @@ -61,21 +61,21 @@ function AtackNoWindow() if ($tmp > 0) { $id++; - if ($id<3) {$out .= $tmp." . ";} + if ($id<3) {$out .= $tmp." дн. ";} $time_still = $time_still-$tmp*86400; } $tmp = floor($time_still/3600); if ($tmp > 0) { $id++; - if ($id<3) {$out .= $tmp." . ";} + if ($id<3) {$out .= $tmp." ч. ";} $time_still = $time_still-$tmp*3600; } $tmp = floor($time_still/60); if ($tmp > 0) { $id++; - if ($id<3) {$out .= $tmp." . ";} + if ($id<3) {$out .= $tmp." мин. ";} } if($out=='') { @@ -83,7 +83,7 @@ function AtackNoWindow() { $time_still = 0; } - $out = $time_still.' .'; + $out = $time_still.' сек.'; } return $out; }?> @@ -97,7 +97,7 @@ function AtackNoWindow() ".$pl['login']."
            "; //echo "info
            "; // - if (timeOut($btc['res_x']-time()) =='0 .'){ - echo " !"; + if (timeOut($btc['res_x']-time()) =='0 сек.'){ + echo "Монстр атакует защити город!"; } else{ if ($btc['res_x']-time()<20*60) { - echo " : ".timeOut($btc['res_x']-time()).""; + echo "Атака через: ".timeOut($btc['res_x']-time()).""; }elseif ($btc['res_x']-time()<45*60) { - echo ": "; + echo "Атака: Очень скоро "; }elseif ($btc['res_x']-time()<1.2*60*60) { - echo ": "; + echo "Атака: Скоро "; }elseif ($btc['res_x']-time()<2.2*60*60) { - echo ": "; + echo "Атака: Не скоро "; }elseif ($btc['res_x']-time()<3*60*60) { - echo ": "; + echo "Атака: Совсем не скоро "; }else - {echo ": ! ";} + {echo "Атака: Невозможна! ";} - //echo " : ".timeOut($btc['res_x']-time()).""; + //echo "До атаки осталось: ".timeOut($btc['res_x']-time()).""; } echo "
            "; - //echo ''.$pl['login'].' ['.$pl['level'].'] '.timeOut($btc['res_x']-time()).''.date('d.m.Y H:i',$btc['res_x']).'
            '; + //echo ''.$pl['login'].' ['.$pl['level'].'] появится через '.timeOut($btc['res_x']-time()).''.date('d.m.Y H:i',$btc['res_x']).'
            '; } } */?> @@ -159,7 +159,7 @@ function AtackNoWindow()
              -   + Форум проекта  
            '); } - // + //Предметы в локации $itms = ''; if (isset($objs[$u->info['x']][$u->info['y']]['id'])) { $var = []; $mitm = $objs[$u->info['x']][$u->info['y']]; if ($mitm['type'] == 6) { - // + //Случайный предмет if ($mitm['vars'] < 25) { $i = 0; while ($i < $mitm['vars']) { @@ -324,7 +324,7 @@ if ($u->room['file'] == 'dragopsh') { $i++; } } else { - // + //Конкретный предмет } mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $mitm['id'] . '" LIMIT 1'); @@ -332,17 +332,17 @@ if ($u->room['file'] == 'dragopsh') { if ($mitm['use'] == 0) { $tbtl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `team_win` = -1 AND `dn_id` = "' . $lab['id'] . '" AND `x` = "' . $u->info['x'] . '" AND `y` = "' . $u->info['y'] . '" LIMIT 1')); if (isset($tbtl['id'])) { - // + //вступаем в поединок mysql_query('UPDATE `users` SET `battle` = "' . $tbtl['id'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $u->error = ' ... '; + $u->error = 'Нападаем ... '; } else { $var['bots'] = [[357, 5], [358, 5], [359, 5], [360, 5], [361, 3], [362, 3], [363, 3], [364, 2], [365, 5], [366, 5], [367, 3]]; - // + //Создаем новый бой if ($mitm['vars'] != null) { - // + //Боты уже есть } else { - // + //Новый список составляем $i = 0; while ($i <= $u->info['level']) { $var['ab'] = $var['bots'][rand(0, count($var['bots']) - 1)]; @@ -403,31 +403,31 @@ if ($u->room['file'] == 'dragopsh') { if ($j > 0) { 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'); - $u->error = ' ... '; + $u->error = 'Нападаем ... '; } else { - $u->error = ' , ...'; + $u->error = 'Не удалось напасть, ошибка обьекта нападения ...'; } } // } } } elseif ($mitm['type'] == 1) { - // + //Сундук if ($mitm['use'] == 0) { - $itms .= ''; + $itms .= ''; } else { - $itms .= ''; + $itms .= ''; } } elseif ($mitm['type'] == 3) { - // + //хилка if ($mitm['use'] == 0) { - $itms .= ''; + $itms .= ''; } else { - $itms .= ''; + $itms .= ''; } } elseif ($mitm['type'] == 4) { if ($mitm['use'] == 0) { - // + //Ловушка $var['trap1'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals`,`time` FROM `laba_act` WHERE `uid` = "' . $u->info['id'] . '" AND `lib` = "' . $lab['id'] . '" AND `time` > "' . time() . '" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); $var['time'] = rand(1, 60); if (isset($var['trap1']['id'])) { @@ -441,21 +441,21 @@ if ($u->room['file'] == 'dragopsh') { $var['sex'] = ''; if ($u->info['sex'] == 1) { - $var['sex'] = ''; + $var['sex'] = 'а'; } - $var['text'] = ' ' . $u->info['login'] . ' ' . $var['sex'] . ' ...'; + $var['text'] = ' ' . $u->info['login'] . ' угодил' . $var['sex'] . ' в ловушку...'; $varos['trap1'] = mysql_fetch_array(mysql_query('SELECT `vals`,`time` FROM `laba_act` WHERE `uid` = "' . $u->info['id'] . '" AND `lib` = "' . $lab['id'] . '" AND `time` > "' . time() . '" AND `vars` = "trap1" ORDER BY `time` DESC LIMIT 1')); mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $u->info['dnow'] . "','" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $var['text'] . "','" . time() . "','6','0','1','1')"); - $errors .= ' ' . $u->info['login'] . ' ' . $var['sex'] . ' ... +3 (: +' . $var['time'] . ' .)'; + $errors .= ' ' . $u->info['login'] . ' угодил' . $var['sex'] . ' в ловушку... Время перехода +3 секунды (Длительность: +' . $var['time'] . ' мин.)'; } } elseif ($mitm['type'] == 5) { - // + //Пандора if ($mitm['use'] == 0) { - $itms .= ''; + $itms .= ''; } else { - $itms .= ''; + $itms .= ''; } } unset($var); @@ -463,15 +463,15 @@ if ($u->room['file'] == 'dragopsh') { $sp = mysql_query('SELECT `i`.*,`m`.`name`,`m`.`img` FROM `laba_itm` AS `i` LEFT JOIN `items_main` AS `m` ON `m`.`id` = `i`.`itm` WHERE `i`.`lib` = "' . $lab['id'] . '" AND `i`.`x` = "' . $u->info['x'] . '" AND `i`.`y` = "' . $u->info['y'] . '" AND `i`.`take` = "0"'); while ($pl = mysql_fetch_array($sp)) { - $itms .= ' '; + $itms .= ' '; } if ($itms != '') { - $itms = ' :

            ' . $itms . '
            '; + $itms = 'В этой комнате находится:

            ' . $itms . '
            '; } elseif ($u->info['y'] == count($map_d) - 2) { - // ! + //Выход нашелся! if ($lab['users'] < 2) { - // + //Удаляем подземелье mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"'); @@ -486,22 +486,22 @@ if ($u->room['file'] == 'dragopsh') { mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND `data` LIKE "%nosavelaba=1%"'); mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `dnow` = "0",`x`="0",`y`="0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - $r = ' " (50.)"'; + $r = ' Вы получили награду "Чек на предъявителя (50кр.)"'; mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','" . time() . "','6','0')"); - $r = ' " " !'; + $r = ' Вы прошли лабиринт "Подземелья Драконов" и сохранили предметы из лабиринта!'; mysql_query("INSERT INTO `chat` (`typeTime`,`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','" . time() . "','6','0')"); - // + //Выбрасываем предметы которые из подземелья die(''); } $sp = mysql_query('SELECT `s`.`x`,`s`.`y`,`u`.`id`,`u`.`login`,`u`.`level` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`dnow` = "' . $lab['id'] . '" AND `s`.`id` != "' . $u->info['id'] . '" LIMIT 5'); $pi = 1; while ($pl = mysql_fetch_array($sp)) { - $objs[$pl['x']][$pl['y']] = [2 => '
            ']; // 1 + $objs[$pl['x']][$pl['y']] = [2 => '
            ']; //Персонаж 1 $pi++; } - $objs[$u->info['x']][$u->info['y']] = [2 => '
            ']; // 1 + $objs[$u->info['x']][$u->info['y']] = [2 => '
            ']; //Персонаж 1 $i = 0; while ($i <= count($map_d)) { $j = 0; @@ -514,9 +514,9 @@ if ($u->room['file'] == 'dragopsh') { if (isset($objs[$i][$j][2])) { // } elseif ($j == 1) { - $objs[$i][$j][2] = '
            '; + $objs[$i][$j][2] = '
            '; } elseif ($j == count($map_d) - 2) { - $objs[$i][$j][2] = '
            '; + $objs[$i][$j][2] = '
            '; } } else { if ($objs[$i][$j]['use'] == 0) { @@ -538,9 +538,9 @@ if ($u->room['file'] == 'dragopsh') { $mapsee = '
            ' . $mapsee . '
            '; - // + //Эффекты на персонаже if (isset($varos['trap1']['vals']) && $varos['trap1']['vals'] > 0) { - $effed .= '
            - +3 (: ' . $u->timeOut($varos['trap1']['time'] - time()) . ')
            '; + $effed .= '
            - Время перехода +3 секунды (Осталось: ' . $u->timeOut($varos['trap1']['time'] - time()) . ')
            '; } unset($varos); ?> @@ -679,7 +679,7 @@ if ($u->room['file'] == 'dragopsh') {  
            error ?>
            -
            :
            +
            Карта:
            room['file'] == 'dungeon') { echo '' . $d->error . '
            '; } ?>

            info['bsid'] == 0 && $d->info['id2'] != 106) { ?>

            + onClick="if(confirm('Выйти из пещеры?')){ location.href = '/main.php?exitd='; }" + href="javascript:void(0)">Выйти

            @@ -904,27 +904,27 @@ if ($u->room['file'] == 'dungeon') {
            info['bsid'] == 0) { echo $d->usersDng(); if ($dies > 0) { - echo '

            - : ' . $dies . '

            '; + echo '

            Кол-во смертей: ' . $dies . '

            '; } /*if($dies > 3) { mysql_query('UPDATE `users` set `room` = "321" WHERE `id` = "'.$u->info['id'].'" LIMIT1 '); }*/ } else { if ($d->info['id2'] != 15) { - // - echo '

            :

            '; + //Живые участники и архивариусы + echo '

            Живые участники:

            '; echo $d->usersDng(); } else { - echo '

            . : ' . (0 + $tm1win) . ' - : ' . (0 + $tm2win) . '

            '; + echo '

            Игровой счет. Красные: ' . (0 + $tm1win) . ' - Синие: ' . (0 + $tm2win) . '

            '; if ($dies > 0) { - echo '

            - : ' . $dies . '

            '; + echo '

            Кол-во смертей: ' . $dies . '

            '; } if (isset($sb['id'])) { - echo '

            , !

            '; + echo '

            Шайба у вас, забейте её в ворота противника!

            '; } } } - // + //Генерируем список текущих квестов $qsee = ''; $dungeon_enter = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_room` WHERE `dungeon_room` = "' . $u->info['room'] . '" LIMIT 1')); @@ -932,7 +932,7 @@ if ($u->room['file'] == 'dungeon') { while ($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "' . str_replace('start_quest', '', $pl['vars']) . '" AND (`tr_date` LIKE "%tr_dn:=:' . $d->info['id2'] . '" OR `tr_date` LIKE "%tr_dn:=:' . $d->info['id2'] . '|%" OR `tr_date` NOT LIKE "%tr_dn:=:%") LIMIT 1')); if (isset($pq['id'])) { - $qsee .= ':   ' . $pq['name'] . ' ' . $q->infoDng($pq) . '
            '; + $qsee .= 'Задание:   ' . $pq['name'] . ' ' . $q->infoDng($pq) . '
            '; $qx++; } } @@ -944,13 +944,13 @@ if ($u->room['file'] == 'dungeon') { $xrz = $r; } $r = '
            -
            ' . $xrz . '/' . $r . '
            -
            +
            ' . $xrz . '/' . $r . '
            +
            -
            +

            '; - $qsee .= ':   ' . $pl['info'] . ' ' . $r . '
            '; + $qsee .= 'Задание:   ' . $pl['info'] . ' ' . $r . '
            '; } if ($qsee != '') { echo '

            ' . $qsee; @@ -1038,10 +1038,10 @@ if ($u->room['file'] == 'dungeon') { '); } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } } elseif( isset( $_POST['go'] , $_POST['goid'] ) && $dungeonGo == 1 ) { @@ -297,23 +297,23 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `id`="'.mysql_real_escape_string($_POST['goid']).'" AND `delete` = "0" LIMIT 1')); if( isset( $zv['id'] ) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $error = ' '; + $error = 'Вы ввели неправильный пароль'; } elseif( $u->info['level'] > 7 && $zv['dun'] != 1 ){ $row = 0; if( 5 > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( $zv['dun'] == 1 ){ - // + //Канализация $row_max = 5; if( $u->info['level'] == 4 ) { $row_max = 4; @@ -338,21 +338,21 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $l45 = 1; } if( $row2['level'] != $u->info['level'] && $l45 == 0 ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( ($u->info['level'] < 4 && $zv['dun'] == 104) || $u->info['admin'] > 0 ){ - // + //Шахты $row_max = 3; if( $u->info['level'] > 3 ) { $row_max = 1; @@ -362,32 +362,32 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); $row = $row[0]; if( $row2['level'] != $u->info['level'] && $u->info['level'] > 3 && $u->info['admin'] == 0 ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе для вас нет места'; unset($zv); } } else { - $error = ' '; + $error = 'Вы не подходите по уровню'; unset($zv); } } else { - $error = ' '; + $error = 'Заявка не найдена'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } elseif( isset( $_POST['leave'] ) && isset( $zv['id'] ) && $dungeonGo == 1 ) { if( $zv['uid'] == $u->info['id'] ) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if( isset($ld['id']) ){ $zv['uid'] = $ld['id']; @@ -396,14 +396,14 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $u->info['dn'] = 0; unset($zv); } else { - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } } else { - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -423,26 +423,26 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' '; + $error = 'Вы успешно создали группу'; } else { - $error = ' '; + $error = 'Не удалось создать группу'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "'.$dungeon['id'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while( $pl = mysql_fetch_array( $sp ) ){ $dungeonGroupList .= '
            '; if( $u->info['dn'] == 0 ) $dungeonGroupList .= ''; $dungeonGroupList .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while( $pu = mysql_fetch_array( $su ) ) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim( $pus, ', ' ); @@ -453,18 +453,18 @@ while( $pl = mysql_fetch_array( $sp ) ){ if( $pl['com'] != '' ) { $dl = ''; - // , . + // Если модератор, даем возможность удалять комментарий к походу. $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); if( ( $moder['boi'] == 1 || $u->info['admin'] > 0 ) && $pl['dcom'] == 0 ){ - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if( isset( $_GET['delcom'] ) && $_GET['delcom'] == $pl['id'] && $u->newAct( $_GET['key'] ) == true ) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['dcom'] = $u->info['id']; } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if( $pl['dcom'] > 0 ) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if( $pl['dcom'] > 0 ) { if( $moder['boi'] == 1 || $u->info['admin'] > 0 ) { @@ -528,23 +528,23 @@ while( $pl = mysql_fetch_array( $sp ) ){ } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; } elseif($u->info['city']=='abandonedplain'){ - echo " "; + echo "Центральная площадь"; } elseif($u->info['room']==188){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==393){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==372){ - echo " "; + echo "Большая парковая улица"; } elseif($u->info['room']==395){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==397){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==242){ - echo " "; + echo "Страшилкина улица"; } else { - echo " "; + echo "Магический Портал"; } ?> @@ -553,7 +553,7 @@ while( $pl = mysql_fetch_array( $sp ) ){ if( isset($shop['code']) ){?> - + Рыцарский магазин @@ -573,18 +573,18 @@ while( $pl = mysql_fetch_array( $sp ) ){

            - +
            - +

            - +
            - +

            @@ -592,13 +592,13 @@ while( $pl = mysql_fetch_array( $sp ) ){ '.$error.'

            '; -// +//отображаем if( $dungeonGroupList == '' ) { $dungeonGroupList = ''; } else { if( !isset( $zv['id'] ) || $u->info['dn'] == 0 ){ if($dungeonGo==1 || $u->info['dn'] == 0 ){ - $pr = ''; + $pr = ''; } $dungeonGroupList = '
            '.$pr.'
            '.$dungeonGroupList.''.$pr.'
            '; } @@ -607,7 +607,7 @@ if( $dungeonGroupList == '' ) { if( $roomSection == 0 ) { echo $dungeonGroupList; } if( $roomSection == 1 ) { - # endQuest . + # endQuest завершаем задание по нажатию. if( isset( $_GET['endQuest'] ) && $_GET['endQuest'] != '' ){ $action = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = '.$u->info['id'].' AND `id`="'.$_GET['endQuest'].'" AND `vals` = "go" LIMIT 1')); $quest = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$action['vars']).'" LIMIT 1')); @@ -622,15 +622,15 @@ if( $roomSection == 1 ) { $qsee = ''; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.$dungeon['city'].'" LIMIT 1',1); $qc=0; // Quest Count - // + //Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while( $pl = mysql_fetch_array( $sp ) ) { if($pl['room'] == $u->info['room']){ $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - if( $q->questCheckEnd($pq)==1 ) $qsee2 = ''; else $qsee2 = ''; + if( $q->questCheckEnd($pq)==1 ) $qsee2 = ''; else $qsee2 = ''; $qsee .= ' - + '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).''.$qsee2.'

            '; @@ -643,18 +643,18 @@ if( $roomSection == 1 ) { if( isset( $_GET['add_quest'] ) && $qc == 0 ) { if( isset( $hgo['id'] ) ) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; } else { $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = '.$dungeon['id'].''); $dq_add = array(); while( $pl = mysql_fetch_array( $sp ) ) { if( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } } elseif( $u->rep['rep'.$dungeon['city']] == 24999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -670,43 +670,43 @@ if( $roomSection == 1 ) { if( $q->testGood($dq_add) == 1 && $dq_add > 0 ) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $u->addAction(time(),'psh_qt_'.$dungeon['city'],$dq_add['id']); } else { if ( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, - echo ' !
            '; + //квест, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; } elseif( $u->rep['rep'.$dungeon['city']] >= 24999 ) { - //, - echo ' , !
            '; + //квест, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; } else { - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset( $dq_add ); } } elseif( isset( $_GET['add_quest'] ) && $qc > 0 ) { - echo '- ... ..


            '; + echo 'Что-то пошло не так... осторожнее..


            '; } if( $qsee == '' ) { - $qsee = '

            '; + $qsee = 'К сожалению у вас нет ни одного задания

            '; } ?>
            - : + Текущие задания: 0 ){ - echo ' .'; + echo 'Вы еще не справились с текущим заданием.'; } elseif( !isset( $hgo['id'] ) && $qc == 0 ) { ?>
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).'
            ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?> @@ -714,14 +714,14 @@ if( $roomSection == 1 ) {
            rep['add_stats']*100); $cur_price = array('price'=>0); - if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! + if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // Характеристики! foreach( $dungeon['list'] as $key => $val ) { if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -740,18 +740,18 @@ if( $roomSection == 1 ) { $u->info['ability'] += 1; $u->rep['add_stats'] += 1; mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 2 ) { // ! + } elseif( $_GET['buy1'] == 2 ) { // Умения! $price = 10000; $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -770,18 +770,18 @@ if( $roomSection == 1 ) { $u->info['skills'] += 1; $u->rep['add_skills'] += 1; mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 3 ) { // + } elseif( $_GET['buy1'] == 3 ) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -800,18 +800,18 @@ if( $roomSection == 1 ) { $u->info['money'] += 10; $u->rep['add_money'] += 10; mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 4 ) { // + } elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -830,45 +830,45 @@ if( $roomSection == 1 ) { $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> - . + Награда: rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) 10000 .Умение (еще rep['add_skills'])?>)за 10000 ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.
            @@ -888,7 +888,7 @@ if( $roomSection == 1 ) { } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; ?>

            @@ -896,8 +896,8 @@ if( $roomSection == 1 ) { } if($chk[0]>0) { ?> - +
            @@ -905,14 +905,14 @@ onclick="if (confirm(' foreach($dungeon['list'] as $key=>$val){ //if( $u->rep['rep'.$val] > 0 ) { echo ' - - + + '; //} } ?>
            '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' . Репутация в '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' ед.
            - : + Текущая репутация:
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -944,21 +944,21 @@ onclick="if (confirm(' $psh_start = ''; if(isset($zv['id'])){ if($zv['uid']==$u->info['id']){ - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } } }else{ - echo ' . : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; if( $dungeon['id'] == 104 ) { - echo '
            : '; + echo '
            Вы можете посетить подземелье без ожидания: '; } } } diff --git a/modules_data/location/dungeon_enter_all.php b/modules_data/location/dungeon_enter_all.php index c98cad46..c7522b39 100644 --- a/modules_data/location/dungeon_enter_all.php +++ b/modules_data/location/dungeon_enter_all.php @@ -18,13 +18,13 @@ if($u->room['file'] == 'dungeon_enter_all') { mysql_query('UPDATE `users` SET `room` = "'.$room.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); } ?> -
            +

            22:00 00:00

            '); + die('

            Подземелья закрыты с 22:00 до 00:00

            '); }*/ - $error = ''; // . - $dungeonGroupList = ''; // . - $dungeonGo = 1; // , . + $error = ''; // Собираем ошибки. + $dungeonGroupList = ''; // Сюда помещаем список Групп. + $dungeonGo = 1; // По умолчанию, мы идем в пещеру. $dungeon = mysql_fetch_assoc( mysql_query('SELECT `id` as room, city, `dungeon_room` as d_room, city, `shop`, `dungeon_id` as id, `dungeon_name` as name, quest FROM `dungeon_room` WHERE `id`="'.$u->room['id'].'" LIMIT 1') ); // @@ -32,35 +32,35 @@ if($u->room['file'] == 'dungeon_enter_all') { // $dunname = array( - 12 => array('capitalcity',' '), - 3 => array('demonscity',''), - 101 => array('angelscity',''), - 16 => array('sandcity',' '), - 9 => array('emeraldscity',' '), //108 - 10 => array('suncity',''), - 1 => array('dreamscity',''), - 13 => array('abandonedplain',' '), - 31 => array('devilscity',' '), - 109 => array('izlom16',' '), - 444 => array('eastcity',' ') + 12 => array('capitalcity','Пещера Тысячи Проклятий'), + 3 => array('demonscity','Катакомбы'), + 101 => array('angelscity','Бездна'), + 16 => array('sandcity','Пещеры Мглы'), + 9 => array('emeraldscity','Потерянный вход'), //108 + 10 => array('suncity','Грибница'), + 1 => array('dreamscity','Водосток'), + 13 => array('abandonedplain','Гора Легиона'), + 31 => array('devilscity','Туманные Низины'), + 109 => array('izlom16','Излом Хаоса'), + 444 => array('eastcity','Тропа Инквизиции') ); - if($u->info['admin'] > 0) $dunname[999] = array('capitalcity',' '); + if($u->info['admin'] > 0) $dunname[999] = array('capitalcity','Тестовая локация'); if( $dungeon['id'] == 104 && isset($_GET['freego'])) { if( $u->info['level'] > 7 ) { }elseif( $u->info['money4'] < $u->info['level'] * 5 ) { - echo '
            , '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; + echo '
            Недостаточно зубов, необходимо '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; }else{ mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` >= '.(time()-60*60*2).' LIMIT 1'); $u->info['money4'] -= $u->info['level'] * 5; mysql_query('UPDATE `users` SET `money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo '
            '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; + echo '
            Вы успешно сняли задержку на поход за '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; } } -if(isset($_GET['rz']) && $dungeon['quest'] == 1) $roomSection = 1; // - else $roomSection = 0; // +if(isset($_GET['rz']) && $dungeon['quest'] == 1) $roomSection = 1; // Получаем Задание + else $roomSection = 0; // Собираем группу для похода //if( $u->info['admin'] > 0 ) var_info($dungeon); $all_dungeon = mysql_query('SELECT `city` FROM `dungeon_room` WHERE `city` IS NOT NULL AND `active`=1 '); @@ -77,18 +77,18 @@ if( $u->info['dn'] > 0 ) { $dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` > '.(time()-60*60*2).' LIMIT 1',1); -if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - . -if(isset($dungeon_timeout['id'])) // - , - . +if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - задержка на посещение пещеры. +if(isset($dungeon_timeout['id'])) // Кто-то передумал и не пойдет в пещеру, так-как уже там был. { $dungeonGo = 0; if(isset($_GET['start'])){ - $error = ' : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']); + $error = 'До следующего похода осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']); } } if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) { $ig = 1; - if( $ig > 0 ){ // + if( $ig > 0 ){ //перемещаем игроков в пещеру //$u->addAction(time(),'psh'.$dun,''); // @@ -100,7 +100,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) if($ins){ $zid = mysql_insert_id(); mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" /*LIMIT '.($zv['team_max']+1).'*/'); $ids = ''; @@ -121,9 +121,9 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $u->addAction(time(),'psh0',$pu['id'],$pu['id']); } if(date('w') == 0 || date('w') == 6 || date('w') == 1) { - $u->repexp_add($pu['id'],5); // +5 + $u->repexp_add($pu['id'],5); //Репутация +5 } - // + //Добавляем квестовые обьекты для персонажей $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `room` = '.$dungeon['room'].' AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); while($pl2 = mysql_fetch_array($sp)){ $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.(str_replace('start_quest','',$pl2['vars'])).'" AND `line` = "'.$dungeon['id'].'" LIMIT 1')); @@ -136,7 +136,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $val = explode(':=:',$val); $actdate[$val[0]] = $val[1]; } - // + //Сбор ресурсов if( isset($actdate['tk_itm']) && $actdate['tk_itm'] != '' ) { $xr2 = explode('=',$actdate['tk_itm']); if( $xr2[2] == 0 ) { @@ -145,14 +145,14 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $actdate['tk_itm_toY'] = (integer)$actdate['tk_itm_toY']; } $ml_arr = array(); - foreach($map_locs as $ml){ // tk_itm_fromY tk_itm_toY - . + foreach($map_locs as $ml){ // tk_itm_fromY tk_itm_toY - отсеиваем позицию для дропа предметов. if( (isset($actdate['tk_itm_fromY']) && isset($actdate['tk_itm_toY'])) OR (!isset($actdate['tk_itm_fromY']) && isset($actdate['tk_itm_toY'])) ) { if( $ml[1] > $actdate['tk_itm_fromY'] && $actdate['tk_itm_toY'] > $ml[1] )$ml_arr[] = $ml; elseif( !isset($actdate['tk_itm_fromY']) && $actdate['tk_itm_toY'] > $ml[1] ) $ml_arr[] = $ml; } else $ml_arr[] = $ml; } if( isset($ml_arr) && count($ml_arr) == 0 ) $ml_arr = $map_locs; - // + //Добавляем обьект для юзера $j = 0; while( $j < $xr2[1] ){ $cord = $ml_arr[rand(0,count($ml_arr)-1)]; @@ -164,7 +164,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $j++; } }else{ - // + //Предмет находится в конкретном месте mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( "'.$zid.'","'.$u->info['id'].'","'.$xr2[0].'","'.time().'","'.$xr2[2].'","'.$xr2[3].'","'.$u->info['id'].'","'.$pl['id'].'" )'); @@ -181,8 +181,8 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $upd1 = mysql_query('UPDATE `stats` SET `s`="'.$snew.'",`res_s`="1",`x`="0",`y`="0",`res_x`="0",`res_y`="0",`dn` = "0",`dnow` = "'.$zid.'" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); if( $upd1 ){ $upd2 = mysql_query('UPDATE `users` SET `room` = "405" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dungeon['id'] - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dungeon['id'] + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$zv['dun'].'"'); while( $pl = mysql_fetch_array( $sp ) ) { @@ -195,7 +195,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`,`noatack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$zv['dun'].'"'); while($pl = mysql_fetch_array($sp)) @@ -203,34 +203,34 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),'; } - // ( ) + //Добавление обьектов (день святого валентина) if( floor(date('m')) == 2 && floor(date('d')) >= 7 && floor(date('d')) <= 20) { if( floor(date('m')) == 2 && floor(date('d')) >= 14 && floor(date('d')) <= 20) { - // + //Появляются мобы которые принимают цветы $vlsbts = ''; $ins1bts = NULL; if( $zv['dun'] == 1 ) { - //4 () + //4 уровня (КАНАЛИЗАЦИЯ) $vlsbts .='("'.$zid.'","410","1","","-5","3","8","0","0"),'; - //4-7 + //4-7 уровня $vlsbts .='("'.$zid.'","413","1","","8","46","9","0","0"),'; }elseif( $zv['dun'] == 12 ) { - //() - //4-7 + //(ПТП) + //4-7 уровня $vlsbts .='("'.$zid.'","413","1","","-3","18","9","0","0"),'; - //4-9 + //4-9 уровня $vlsbts .='("'.$zid.'","414","1","","-2","29","10","0","0"),'; }elseif( $zv['dun'] == 3 ) { - //() - //4-7 + //(КАТАКОМБЫ) + //4-7 уровня $vlsbts .='("'.$zid.'","413","1","","15","8","9","0","0"),'; - //4-9 + //4-9 уровня $vlsbts .='("'.$zid.'","414","1","","3","35","10","0","0"),'; }elseif( $zv['dun'] == 101 ) { - //() - //4-7 + //(бездна) + //4-7 уровня $vlsbts .='("'.$zid.'","413","1","","-2","21","9","0","0"),'; - //4-9 + //4-9 уровня $vlsbts .='("'.$zid.'","414","1","","2","43","10","0","0"),'; } @@ -240,7 +240,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) } unset($vlsbts,$ins1bts); } - // ( ) + //Раскидываем предметы по пещере (Блёклый подземник) $dcords = array(); $c_sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$zv['dun'].'"'); while( $c_pl = mysql_fetch_array($c_sp)) { @@ -256,12 +256,12 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $rndy = $dcords[$rndxy][1]; $fcords[$rndx][$rndy] = true; unset($dcords[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; + $vls .= '("'.$zid.'","Блеклый подземник","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; $j--; } $i++; } - // ( ) + //Раскидываем предметы по пещере (Черепичный подземник) $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$zv['dun'].'"'); $test = array(); $dcords2 = array(); @@ -291,7 +291,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) if(!isset($fcords[$rndx][$rndy]) && isset($dcords2[$rndxy][0])) { $fcords[$rndx][$rndy] = true; unset($dcords2[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig2.gif","'.$rndx.'","'.$rndy.'","fileact:vbig2","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; + $vls .= '("'.$zid.'","Черепичный подземник","vbig2.gif","'.$rndx.'","'.$rndy.'","fileact:vbig2","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; } $j--; } @@ -307,7 +307,7 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) if(!isset($fcords[$rndx][$rndy]) && isset($dcords3[$rndxy][0])) { $fcords[$rndx][$rndy] = true; unset($dcords3[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig3.gif","'.$rndx.'","'.$rndy.'","fileact:vbig3","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; + $vls .= '("'.$zid.'","Кровавый подземник","vbig3.gif","'.$rndx.'","'.$rndy.'","fileact:vbig3","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; } $j--; } @@ -325,13 +325,13 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) if( $upd2 && $ins1 && $ins2 ){ die(''); } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } } elseif( isset( $_POST['go'] , $_POST['goid'] ) && $dungeonGo == 1 ) { @@ -339,23 +339,23 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `id`="'.mysql_real_escape_string($_POST['goid']).'" AND `delete` = "0" LIMIT 1')); if( isset( $zv['id'] ) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $error = ' '; + $error = 'Вы ввели неправильный пароль'; } elseif( $u->info['level'] > 7 && $zv['dun'] != 1 ){ $row = 0; if( 5 > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( $zv['dun'] == 1 ){ - // + //Канализация $row_max = 5; if( $u->info['level'] == 4 ) { $row_max = 4; @@ -371,21 +371,21 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); $row = $row[0]; if( $row2['level'] != $u->info['level'] ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( $u->info['level'] < 4 && $zv['dun'] == 104 ){ - // + //Шахты $row_max = 3; if( $u->info['level'] > 3 ) { $row_max = 1; @@ -395,32 +395,32 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); $row = $row[0]; if( $row2['level'] != $u->info['level'] && $u->info['level'] > 3 ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе для вас нет места'; unset($zv); } } else { - $error = ' '; + $error = 'Вы не подходите по уровню'; unset($zv); } } else { - $error = ' '; + $error = 'Заявка не найдена'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } elseif( isset( $_POST['leave'] ) && isset( $zv['id'] ) && $dungeonGo == 1 ) { if( $zv['uid'] == $u->info['id'] ) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if( isset($ld['id']) ){ $zv['uid'] = $ld['id']; @@ -429,14 +429,14 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $u->info['dn'] = 0; unset($zv); } else { - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } } else { - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -447,34 +447,34 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) // if(isset($_POST['rpmg1'])) { if($_POST['rpmg1']==2) { - $dun5 = 101; // + $dun5 = 101; //Бездна }elseif($_POST['rpmg1']==8) { - $dun5 = 12; // + $dun5 = 12; //ПТП }elseif($_POST['rpmg1']==10) { - $dun5 = 1; // + $dun5 = 1; //Водосток }elseif($_POST['rpmg1']==16) { - $dun5 = 16; // + $dun5 = 16; //Пещера Мглы }elseif($_POST['rpmg1']==4) { - $dun5 = 3; // + $dun5 = 3; //Катакомбы }elseif($_POST['rpmg1']==5) { - $dun5 = 9; // + $dun5 = 9; //Потерянный вход }elseif($_POST['rpmg1']==444) { - $dun5 = 444; // + $dun5 = 444; //Тропа Инквизиции }elseif($_POST['rpmg1']==6) { - $dun5 = 10; // + $dun5 = 10; //Грибница }elseif($_POST['rpmg1']==11) { - $dun5 = 13; // + $dun5 = 13; //Гора легиона }elseif($_POST['rpmg1']==106) { - $dun5 = 31; // + $dun5 = 31; //Низины }elseif($_POST['rpmg1']==999) { - $dun5 = 999; // + $dun5 = 999; //Тестовая локация }elseif($_POST['rpmg1']==9) { - $dun5 = 9; // + $dun5 = 9; //Потеряный вход }else{ - $dun5 = 12; // + $dun5 = 12; //ПТП } }else{ - $dun5 = 12; // + $dun5 = 12; //ПТП } // $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -490,16 +490,16 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' '; + $error = 'Вы успешно создали группу'; } else { - $error = ' '; + $error = 'Не удалось создать группу'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while( $pl = mysql_fetch_array( $sp ) ){ $dungeonGroupList .= '
            '; @@ -508,10 +508,10 @@ while( $pl = mysql_fetch_array( $sp ) ){ $dungeonGroupList .= ' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while( $pu = mysql_fetch_array( $su ) ) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim( $pus, ', ' ); @@ -522,18 +522,18 @@ while( $pl = mysql_fetch_array( $sp ) ){ if( $pl['com'] != '' ) { $dl = ''; - // , . + // Если модератор, даем возможность удалять комментарий к походу. $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); if( ( $moder['boi'] == 1 || $u->info['admin'] > 0 ) && $pl['dcom'] == 0 ){ - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if( isset( $_GET['delcom'] ) && $_GET['delcom'] == $pl['id'] && $u->newAct( $_GET['key'] ) == true ) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['dcom'] = $u->info['id']; } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if( $pl['dcom'] > 0 ) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if( $pl['dcom'] > 0 ) { if( $moder['boi'] == 1 || $u->info['admin'] > 0 ) { @@ -559,7 +559,7 @@ body {
            -

            +

            Вход в подземелье

            @@ -602,25 +602,25 @@ body { } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; } elseif($u->info['city']=='abandonedplain'){ - echo " "; + echo "Центральная площадь"; } elseif($u->info['room']==188){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==393){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==372){ - echo " "; + echo "Большая парковая улица"; } elseif($u->info['room']==395){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==397){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==242){ - echo " "; + echo "Большая торговая улица"; } elseif($u->info['room']==321){ - echo " "; + echo "Большая торговая улица"; } else { - echo " "; + echo "Магический Портал"; } ?> @@ -639,31 +639,31 @@ body {
            -

            +

            Рыцарский Магазин

            -   -
            +   +
            info['level'] > 7) { ?> -     +     -
            +
            '.$error.'
            '; -// +//отображаем if( $dungeonGroupList == '' ) { $dungeonGroupList = ''; } else { if( !isset( $zv['id'] ) || $u->info['dn'] == 0 ) { if($dungeonGo==1 || $u->info['dn'] == 0 ) { - $pr = ''; + $pr = ''; } $dungeonGroupList = '
            '.$pr.'
            '.$dungeonGroupList.''.$pr.'
            '; } @@ -672,7 +672,7 @@ if( $dungeonGroupList == '' ) { if( $roomSection == 0 ) { echo $dungeonGroupList; } if( $roomSection == 1 ) { - # endQuest . + # endQuest завершаем задание по нажатию. if(!empty($_GET['endQuest'])){ $action = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = '.$u->info['id'].' AND `id`="'.$_GET['endQuest'].'" AND `vals` = "go" LIMIT 1')); $quest = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$action['vars']).'" LIMIT 1')); @@ -688,18 +688,18 @@ if( $roomSection == 1 ) { $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.$dungeon['city'].'" LIMIT 1',1); $qc=0; // Quest Count $qcc = array(); - // + //Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while( $pl = mysql_fetch_array( $sp ) ) { if($pl['room'] == $u->info['room']){ $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - if( $q->questCheckEnd($pq)==1 or $u->info['login'] == '1') { - if ($u->info['login'] == '1') {print_r($pl['id'] . ' ');} - $qsee2 = ''; + if( $q->questCheckEnd($pq)==1 or $u->info['login'] == 'тест1') { + if ($u->info['login'] == 'тест1') {print_r($pl['id'] . ' ');} + $qsee2 = ''; } else $qsee2 = ''; $qsee .= ' - + '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).''.$qsee2.'

            '; @@ -714,39 +714,39 @@ if( $roomSection == 1 ) { $qst_city = $_GET['city_quest']; // if($qst_city=='angelscity') { - $dun5 = 101; // + $dun5 = 101; //Бездна }elseif($qst_city=='sandcity') { - $dun5 = 16; // + $dun5 = 16; //Пещера Мглы }elseif($qst_city=='demonscity') { - $dun5 = 3; // + $dun5 = 3; //Катакомбы /*}elseif($qst_city=='emeraldscity') { - $dun5 = 17; // 17*/ + $dun5 = 17; //Потерянный вход 17*/ }elseif($qst_city=='suncity') { - $dun5 = 10; // + $dun5 = 10; //Грибница }elseif($qst_city=='dreamscity') { - $dun5 = 1; // + $dun5 = 1; //Водосток }elseif($qst_city=='abandonedplain') { - $dun5 = 13; // + $dun5 = 13; //Гора легиона }elseif($qst_city=='izlom16') { - $dun5 = 109; // + $dun5 = 109; //Излом }elseif($qst_city=='emeraldscity') { - $dun5 = 9; // + $dun5 = 9; //Потерянный вход }elseif($qst_city=='eastcity') { - $dun5 = 444; // + $dun5 = 444; //Тропа Инквизиции }elseif($qst_city=='devilscity') { - $dun5 = 31; // + $dun5 = 31; //Низины }else{ - $dun5 = 12; // + $dun5 = 12; //ПТП } // $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.mysql_real_escape_string($qst_city).'" LIMIT 1',1); //$qcc if( $qcc[$dun5] > 0 ) { - echo ' , .
            '; + echo 'У Вас уже есть задание, завершите его или отмените для получения нового.
            '; }elseif( $qst_city != 'capitalcity' && $qst_city != 'angelscity' && $qst_city != 'suncity' && $qst_city != 'demonscity' && $qst_city != 'dreamscity' && $qst_city != 'abandonedplain' && $qst_city != 'izlom16' && $qst_city != 'sandcity' && $qst_city != 'emeraldscity' && $qst_city != 'devilscity' ) { - echo '
            '; + echo 'Для этой пещеры еще нет заданий
            '; }elseif( isset( $hgo['id'] ) ) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; } else { // @@ -757,13 +757,13 @@ if( $roomSection == 1 ) { $dq_add = array(); while( $pl = mysql_fetch_array( $sp ) ) { /*if( $u->rep['rep'.$qst_city] == 9999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } } else*/ if( $u->rep['rep'.$qst_city] == 24999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -779,23 +779,23 @@ if( $roomSection == 1 ) { if( $q->testGood($dq_add) == 1 && $dq_add > 0 && $u->rep['rep'.$qst_city] < 25000) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $u->addAction(time(),'psh_qt_'.$qst_city,$dq_add['id']); } else { if( $u->rep['rep'.$qst_city] >= 24999 ) { - //, - echo ' , !
            '; + //квест, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; } else { - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset( $dq_add ); } } elseif( isset( $_GET['add_quest'] ) && $qc > 0 ) { - echo '- ... ..


            '; + echo 'Что-то пошло не так... осторожнее..


            '; } if( $qsee == '' ) { - $qsee = '

            '; + $qsee = 'К сожалению у вас нет ни одного задания

            '; } ?>
            - : + Текущие задания: 0 ){ - // echo ' .'; + // echo 'Вы еще не справились с текущим заданием.'; //} elseif( !isset( $hgo['id'] ) && $qc == 0 ) { $hgo1 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_capitalcity" LIMIT 1',1); $hgo2 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_angelscity" LIMIT 1',1); @@ -831,58 +831,58 @@ if( $roomSection == 1 ) { // if( !isset($hgo1['id']) ) { ?> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=capitalcity"' /> + (Пещера Тысячи Проклятий)' onclick='location="main.php?rz=1&add_quest=1&city_quest=capitalcity"' /> - + - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=angelscity"' /> + (Бездна)' onclick='location="main.php?rz=1&add_quest=1&city_quest=angelscity"' /> - + - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=suncity"' /> + (Грибница)' onclick='location="main.php?rz=1&add_quest=1&city_quest=suncity"' /> - + - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=demonscity"' /> + (Катакомбы)' onclick='location="main.php?rz=1&add_quest=1&city_quest=demonscity"' /> -
            +
            - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=dreamscity"' /> + (Водосток)' onclick='location="main.php?rz=1&add_quest=1&city_quest=dreamscity"' /> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=abandonedplain"' /> + (Гора Легиона)' onclick='location="main.php?rz=1&add_quest=1&city_quest=abandonedplain"' /> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=izlom16"' /> + (Излом Хаоса)' onclick='location="main.php?rz=1&add_quest=1&city_quest=izlom16"' /> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=sandcity"' /> + (Пещера Мглы)' onclick='location="main.php?rz=1&add_quest=1&city_quest=sandcity"' /> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=emeraldscity"' /> + (Потерянный Вход)' onclick='location="main.php?rz=1&add_quest=1&city_quest=emeraldscity"' /> - + - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=devilscity"' /> + (Туманные Низины)' onclick='location="main.php?rz=1&add_quest=1&city_quest=devilscity"' /> array('sandcity',' '), + //16 => array('sandcity','Пещеры Мглы'), //} else { - // echo ' '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + // echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; //} ?>
            @@ -891,14 +891,14 @@ if( $roomSection == 1 ) {
            0); - if( 50 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! + if( 50 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // Характеристики! foreach( $dungeon['list'] as $key => $val ) { if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -921,18 +921,18 @@ if( $roomSection == 1 ) { $u->info['ability'] += 1; $u->rep['add_stats'] += 1; mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 2 ) { // ! + } elseif( $_GET['buy1'] == 2 ) { // Умения! $price = 5000; $cur_price = array('price'=>0); - if(15-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(15-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -951,18 +951,18 @@ if( $roomSection == 1 ) { $u->info['skills'] += 1; $u->rep['add_skills'] += 1; mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 3 ) { // + } elseif( $_GET['buy1'] == 3 ) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -981,18 +981,18 @@ if( $roomSection == 1 ) { $u->info['money'] += 10; $u->rep['add_money'] += 10; mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 4 ) { // + } elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1011,23 +1011,23 @@ if( $roomSection == 1 ) { $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } }elseif( $_GET['buy1'] == 5 ) { - // + //покупаем слоты $price = 2000+($u->rep['add_slot']*2000); $price_kr = 500+($u->rep['add_slot']*500); $cur_price = array('price'=>0); if( $price_kr > $u->info['money'] ) { - echo '
            '; - }elseif( 4 - $u->rep['add_slot'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! + echo 'Недостаточно денег
            '; + }elseif( 4 - $u->rep['add_slot'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // Характеристики! foreach( $dungeon['list'] as $key => $val ) { if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1054,50 +1054,50 @@ if( $roomSection == 1 ) { mysql_query('UPDATE `rep` SET `add_slot` = "'.$u->rep['add_slot'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `priemslot` = "'.$u->info['priemslot'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' '.$price_kr.' .
            '; + echo 'Вы успешно приобрели 1 слот для приема за '.$price.' награды и '.$price_kr.' кр.
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } - // + //цена на слоты ?>
            - : rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> - . + Наград: rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> + ед. rep['add_stats']) > 0 ) { ?> - - - + + + rep['add_skills']) > 0 ) { ?> - - - + + + - - - + + + rep['add_slot']) > 0 ) { ?> - - - + + +
            ( rep['add_stats'])?>) 2000 .Способность (еще rep['add_stats'])?>)за 2000 ед.
            ( rep['add_skills'])?>) 5000 .Умение (еще rep['add_skills'])?>)за 5000 ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_slot'])?>) rep['add_slot']*2000);?> . rep['add_slot']*500); ?> .Слоты (еще rep['add_slot'])?>)за rep['add_slot']*2000);?> ед. и rep['add_slot']*500); ?> кр.
            @@ -1118,7 +1118,7 @@ if( $roomSection == 1 ) { } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; ?>

            @@ -1126,8 +1126,8 @@ if( $roomSection == 1 ) { } if($chk[0]>0) { ?> - +
            @@ -1135,14 +1135,14 @@ onclick="if (confirm(' foreach($dungeon['list'] as $key=>$val){ if( $u->rep['rep'.$val] >= 0 ) { echo ' - - + + '; } } ?>
            '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' . Репутация в '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' ед.
            - : + Текущая репутация:
            - - :
            + Группа + Выберите пещеру:

            + Водосток [8]


            + Пещера Тысячи Проклятий[9]


            + Бездна[8]

            + Грибница[8]


            + Катакомбы[10]


            + Гора Легиона[10]


            + Пещера Мглы[10]

            info['level'] == 12){?>
            + Потерянный вход[11-12]

            info['admin']> 0){?>
            + Туманные Низины v.2.0

            -
            - + Пароль
            - +  
            @@ -1216,21 +1216,21 @@ onclick="if (confirm(' $psh_start = ''; if(isset($zv['id'])){ if($zv['uid']==$u->info['id']){ - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } } }else{ - echo ' . : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; //if( $dungeon['id'] == 104 ) { - //echo '
            : '; + //echo '
            Вы можете посетить подземелье без ожидания: '; //} } } diff --git a/modules_data/location/dungeon_enter_all.php.bac b/modules_data/location/dungeon_enter_all.php.bac deleted file mode 100644 index 29a52abd..00000000 --- a/modules_data/location/dungeon_enter_all.php.bac +++ /dev/null @@ -1,1178 +0,0 @@ -room['file'] == 'dungeon_enter_all') { - - /*if( date('H') >= 22 && date('H') <= 24 ) { - - if($u->info['align'] >= 1 && $u->info['align'] < 2) { - $room = 220; - }elseif($u->info['align'] >= 3 && $u->info['align'] < 4){ - $room = 2; - }elseif($u->info['align']==7) { - $room = 5; - }else{ - $room = 4; - } - if($_GET['GoBattle']=='1') { - mysql_query('UPDATE `users` SET `room` = "'.$room.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } - ?> -
            -

            22:00 00:00

            '); - }*/ - $error = ''; // . - $dungeonGroupList = ''; // . - $dungeonGo = 1; // , . - $dungeon = mysql_fetch_assoc( mysql_query('SELECT `id` as room, city, `dungeon_room` as d_room, city, `shop`, `dungeon_id` as id, `dungeon_name` as name, quest FROM `dungeon_room` WHERE `id`="'.$u->room['id'].'" LIMIT 1') ); - - // - $dungeon['quest'] = 1; - // - - $dunname = array( - 12 => array('capitalcity',' '), - 3 => array('demonscity',''), - 101 => array('angelscity',''), - 16 => array('sandcity',' '), - 108 => array('emeraldscity',' '), - 10 => array('suncity',''), - 1 => array('dreamscity',''), - 13 => array('abandonedplain',' '), - 106 => array('devilscity',' '), - ); - if($u->info['admin'] > 0) $dunname[999] = array('capitalcity',' '); -if( $dungeon['id'] == 104 && isset($_GET['freego'])) { - if( $u->info['level'] > 7 ) { - - }elseif( $u->info['money4'] < $u->info['level'] * 5 ) { - echo '
            , '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; - }else{ - mysql_query('DELETE FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` >= '.(time()-60*60*2).' LIMIT 1'); - $u->info['money4'] -= $u->info['level'] * 5; - mysql_query('UPDATE `users` SET `money4` = "'.$u->info['money4'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo '
            '.$u->zuby( ($u->info['level'] * 5) ,1).'
            '; - } -} - -if(isset($_GET['rz']) && $dungeon['quest'] == 1) $roomSection = 1; // - else $roomSection = 0; // -//if( $u->info['admin'] > 0 ) var_info($dungeon); - -$all_dungeon = mysql_query('SELECT `city` FROM `dungeon_room` WHERE `city` IS NOT NULL AND `active`=1 '); -while( $t = mysql_fetch_array($all_dungeon) ) { $dungeon['list'][] = $t['city']; } -unset($all_dungeon); - -if( $u->info['dn'] > 0 ) { - $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `id`="'.$u->info['dn'].'" AND `delete` = "0" LIMIT 1')); - if(!isset($zv['id'])){ - mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['dn'] = 0; - } -} - -$dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh0" AND `time` > '.(time()-60*60*2).' LIMIT 1',1); - -if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - . -if(isset($dungeon_timeout['id'])) // - , - . -{ - $dungeonGo = 0; - if(isset($_GET['start'])){ - $error = ' : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']); - } -} - -if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) { - $ig = 1; - if( $ig > 0 ){ // - //$u->addAction(time(),'psh'.$dun,''); - - // - $dungeon['room'] = 321; - $dungeon['id'] = $zv['dun']; - // - $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$zv['dun'].'","'.$dunname[$zv['dun']][1].'","'.time().'")'); - if($ins){ - $zid = mysql_insert_id(); - mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - // - $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" /*LIMIT '.($zv['team_max']+1).'*/'); - $ids = ''; - - $map_locs = array(); - $spm2 = mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id_dng` = "'.$zv['dun'].'"'); - while( $plm2 = mysql_fetch_array( $spm2 ) ) { - $map_locs[] = array($plm2['x'],$plm2['y']); - } - unset( $spm2 , $plm2 ); - - $pxd = 0; - while( $pu = mysql_fetch_array($su) ) { - $pxd++; - $ids .= ' `id` = "'.$pu['id'].'" OR'; - if( $u->stats['silver'] >= 3 ) { - $u->addAction( ( time() - ((60*60*2)/100*30) ) ,'psh0',$pu['id'],$pu['id']); - }else{ - $u->addAction(time(),'psh0',$pu['id'],$pu['id']); - } - // - $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `room` = '.$dungeon['room'].' AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); - while($pl2 = mysql_fetch_array($sp)){ - $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.(str_replace('start_quest','',$pl2['vars'])).'" AND `line` = "'.$dungeon['id'].'" LIMIT 1')); - if( isset($pl['id']) ) { - $act = explode(',',$pl['act_date']); - $i = 0; - while( $i < count($act) ) { - $act_date = explode(':|:',$act[$i]); - foreach($act_date as $key=>$val){ - $val = explode(':=:',$val); - $actdate[$val[0]] = $val[1]; - } - // - if( isset($actdate['tk_itm']) && $actdate['tk_itm'] != '' ) { - $xr2 = explode('=',$actdate['tk_itm']); - if( $xr2[2] == 0 ) { - if( isset($actdate['tk_itm_fromY']) && isset($actdate['tk_itm_toY']) ) { - $actdate['tk_itm_fromY'] = (integer)$actdate['tk_itm_fromY']; - $actdate['tk_itm_toY'] = (integer)$actdate['tk_itm_toY']; - } - $ml_arr = array(); - foreach($map_locs as $ml){ // tk_itm_fromY tk_itm_toY - . - if( (isset($actdate['tk_itm_fromY']) && isset($actdate['tk_itm_toY'])) OR (!isset($actdate['tk_itm_fromY']) && isset($actdate['tk_itm_toY'])) ) { - if( $ml[1] > $actdate['tk_itm_fromY'] && $actdate['tk_itm_toY'] > $ml[1] )$ml_arr[] = $ml; - elseif( !isset($actdate['tk_itm_fromY']) && $actdate['tk_itm_toY'] > $ml[1] ) $ml_arr[] = $ml; - } else $ml_arr[] = $ml; - } - if( isset($ml_arr) && count($ml_arr) == 0 ) $ml_arr = $map_locs; - // - $j = 0; - while( $j < $xr2[1] ){ - $cord = $ml_arr[rand(0,count($ml_arr)-1)]; - if( $cord[0] != 0 || $cord[1] != 0 ) { - mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( - "'.$zid.'","'.$u->info['id'].'","'.$xr2[0].'","'.time().'","'.$cord[0].'","'.$cord[1].'","'.$u->info['id'].'","'.$pl['id'].'" - )'); - } - $j++; - } - }else{ - // - mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( - "'.$zid.'","'.$u->info['id'].'","'.$xr2[0].'","'.time().'","'.$xr2[2].'","'.$xr2[3].'","'.$u->info['id'].'","'.$pl['id'].'" - )'); - } - } - $i++; - } - } - } - - } - $ids = rtrim($ids,'OR'); - $snew = 1; - $upd1 = mysql_query('UPDATE `stats` SET `s`="'.$snew.'",`res_s`="1",`x`="0",`y`="0",`res_x`="0",`res_y`="0",`dn` = "0",`dnow` = "'.$zid.'" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - if( $upd1 ){ - $upd2 = mysql_query('UPDATE `users` SET `room` = "405" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dungeon['id'] - // - $vls = ''; - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$zv['dun'].'"'); - while( $pl = mysql_fetch_array( $sp ) ) { - if( $pl['id_bot'] == 0 && $pl['bot_group'] !=''){ - $bots = explode( ',', $pl['bot_group'] ); - $pl['id_bot'] = (int)$bots[rand(0, count($bots)-1 )]; - } - if( $pl['id_bot'] > 0 )$vls .= '("'.$zid.'","'.$pl['id_bot'].'","'.$pl['colvo'].'","'.$pl['items'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['dialog'].'","'.$pl['items'].'","'.$pl['go_bot'].'","'.$pl['noatack'].'"),'; - unset($bots); - } - $vls = rtrim($vls,','); - $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`,`noatack`) VALUES '.$vls.''); - // - $vls = ''; - $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$zv['dun'].'"'); - while($pl = mysql_fetch_array($sp)) - { - $vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),'; - } - - // ( ) - if( floor(date('m')) == 2 && floor(date('d')) >= 7 && floor(date('d')) <= 20) { - if( floor(date('m')) == 2 && floor(date('d')) >= 14 && floor(date('d')) <= 20) { - // - $vlsbts = ''; - $ins1bts = NULL; - if( $zv['dun'] == 1 ) { - //4 () - $vlsbts .='("'.$zid.'","410","1","","-5","3","8","0","0"),'; - //4-7 - $vlsbts .='("'.$zid.'","413","1","","8","46","9","0","0"),'; - }elseif( $zv['dun'] == 12 ) { - //() - //4-7 - $vlsbts .='("'.$zid.'","413","1","","-3","18","9","0","0"),'; - //4-9 - $vlsbts .='("'.$zid.'","414","1","","-2","29","10","0","0"),'; - }elseif( $zv['dun'] == 3 ) { - //() - //4-7 - $vlsbts .='("'.$zid.'","413","1","","15","8","9","0","0"),'; - //4-9 - $vlsbts .='("'.$zid.'","414","1","","3","35","10","0","0"),'; - }elseif( $zv['dun'] == 101 ) { - //() - //4-7 - $vlsbts .='("'.$zid.'","413","1","","-2","21","9","0","0"),'; - //4-9 - $vlsbts .='("'.$zid.'","414","1","","2","43","10","0","0"),'; - } - - if( $vlsbts != '' ) { - $vlsbts = rtrim($vlsbts,','); - $ins1bts = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`) VALUES '.$vlsbts.''); - } - unset($vlsbts,$ins1bts); - } - // ( ) - $dcords = array(); - $c_sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "'.$zv['dun'].'"'); - while( $c_pl = mysql_fetch_array($c_sp)) { - $dcords[] = array($c_pl['x'],$c_pl['y']); - } - $fcords = array(); - $i = 1; - while($i <= $pxd) { - $j = rand(1,10); - while( $j >= 0 ) { - $rndxy = rand(0,count($dcords)-1); - $rndx = $dcords[$rndxy][0]; - $rndy = $dcords[$rndxy][1]; - $fcords[$rndx][$rndy] = true; - unset($dcords[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; - $j--; - } - $i++; - } - // ( ) - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$zv['dun'].'"'); - $test = array(); - $dcords2 = array(); - $dcords3 = array(); - while( $pl = mysql_fetch_array( $sp ) ) { - if(!isset($test[$pl['id_bot']])) { - $test[$pl['id_bot']] = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `id` = "'.$pl['id_bot'].'" LIMIT 1')); - } - if( isset($test[$pl['id_bot']]['id']) && $test[$pl['id_bot']] != 2 ) { - if( $test[$pl['id_bot']]['level'] > 6 ) { - $dcords2[] = array($pl['x'],$pl['y']); - } - if( $test[$pl['id_bot']]['level'] >= 8 && $test[$pl['id_bot']]['align'] == 9 ) { - $dcords3[] = array($pl['x'],$pl['y']); - } - }else{ - $test[$pl['id_bot']] = 2; - } - } - $i = 1; - while($i <= $pxd) { - $j = rand(1,5); - while( $j >= 0 ) { - $rndxy = rand(0,count($dcords2)-1); - $rndx = $dcords2[$rndxy][0]; - $rndy = $dcords2[$rndxy][1]; - if(!isset($fcords[$rndx][$rndy]) && isset($dcords2[$rndxy][0])) { - $fcords[$rndx][$rndy] = true; - unset($dcords2[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig2.gif","'.$rndx.'","'.$rndy.'","fileact:vbig2","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; - } - $j--; - } - $i++; - } - $i = 1; - while($i <= $pxd) { - $j = rand(1,2); - while( $j >= 0 ) { - $rndxy = rand(0,count($dcords3)-1); - $rndx = $dcords3[$rndxy][0]; - $rndy = $dcords3[$rndxy][1]; - if(!isset($fcords[$rndx][$rndy]) && isset($dcords3[$rndxy][0])) { - $fcords[$rndx][$rndy] = true; - unset($dcords3[$rndxy]); - $vls .= '("'.$zid.'"," ","vbig3.gif","'.$rndx.'","'.$rndy.'","fileact:vbig3","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; - } - $j--; - } - $i++; - } - unset($test); - } - // - $vls = rtrim($vls,','); - if( $vls != '' ) { - $ins2 = mysql_query('INSERT INTO `dungeon_obj` (`dn`,`name`,`img`,`x`,`y`,`action`,`type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date`) VALUES '.$vls.''); - } else { - $ins2 = true; - } - if( $upd2 && $ins1 && $ins2 ){ - die(''); - } else { - $error = ' ...'; - } - } else { - $error = ' ...'; - } - } else { - $error = ' ...'; - } - } -} elseif( isset( $_POST['go'] , $_POST['goid'] ) && $dungeonGo == 1 ) { - if(!isset($zv['id'])) { - $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `id`="'.mysql_real_escape_string($_POST['goid']).'" AND `delete` = "0" LIMIT 1')); - if( isset( $zv['id'] ) && $u->info['dn'] == 0) { - if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $error = ' '; - } elseif( $u->info['level'] > 7 && $zv['dun'] != 1 ){ - $row = 0; - if( 5 > $row ) { - $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if( !$upd ){ - $error = ' '; - unset($zv); - } else { - $u->info['dn'] = $zv['id']; - } - } else { - $error = ' '; - unset($zv); - } - } elseif( $zv['dun'] == 1 ){ - // - $row_max = 5; - if( $u->info['level'] == 4 ) { - $row_max = 4; - }elseif( $u->info['level'] == 5 ) { - $row_max = 3; - }elseif( $u->info['level'] == 6 ) { - $row_max = 2; - }elseif( $u->info['level'] >= 7 ) { - $row_max = 1; - } - $row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dn` = "'.$zv['id'].'" LIMIT 1')); - $row1 = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `dn` = "'.$zv['id'].'" LIMIT 1')); - $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); - $row = $row[0]; - if( $row2['level'] != $u->info['level'] ) { - $error = ' '; - }elseif( $row_max > $row ) { - $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if( !$upd ){ - $error = ' '; - unset($zv); - } else { - $u->info['dn'] = $zv['id']; - } - } else { - $error = ' '; - unset($zv); - } - } elseif( $u->info['level'] < 4 && $zv['dun'] == 104 ){ - // - $row_max = 3; - if( $u->info['level'] > 3 ) { - $row_max = 1; - } - $row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `dn` = "'.$zv['id'].'" LIMIT 1')); - $row1 = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `dn` = "'.$zv['id'].'" LIMIT 1')); - $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); - $row = $row[0]; - if( $row2['level'] != $u->info['level'] && $u->info['level'] > 3 ) { - $error = ' '; - }elseif( $row_max > $row ) { - $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if( !$upd ){ - $error = ' '; - unset($zv); - } else { - $u->info['dn'] = $zv['id']; - } - } else { - $error = ' '; - unset($zv); - } - } else { - $error = ' '; - unset($zv); - } - } else { - $error = ' '; - } - } else { - $error = ' '; - } -} elseif( isset( $_POST['leave'] ) && isset( $zv['id'] ) && $dungeonGo == 1 ) { - if( $zv['uid'] == $u->info['id'] ) { - // - $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); - if( isset($ld['id']) ){ - $zv['uid'] = $ld['id']; - mysql_query('UPDATE `dungeon_zv` SET `uid` = "'.$zv['uid'].'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['dn'] = 0; - unset($zv); - } else { - // - mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['dn'] = 0; - unset($zv); - } - } else { - // - mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->info['dn'] = 0; - unset($zv); - } -} elseif( isset($_POST['add']) && $u->info['level'] > 1 && $dungeonGo == 1 ) { - if( $u->info['dn'] == 0 ) { - $dun5 = $dungeon['id']; - // - if(isset($_POST['rpmg1'])) { - if($_POST['rpmg1']==2) { - $dun5 = 101; // - }elseif($_POST['rpmg1']==8) { - $dun5 = 12; // - }elseif($_POST['rpmg1']==10) { - $dun5 = 1; // - }elseif($_POST['rpmg1']==16) { - $dun5 = 16; // - }elseif($_POST['rpmg1']==4) { - $dun5 = 3; // - }elseif($_POST['rpmg1']==5) { - $dun5 = 108; // - }elseif($_POST['rpmg1']==6) { - $dun5 = 10; // - }elseif($_POST['rpmg1']==11) { - $dun5 = 13; // - }elseif($_POST['rpmg1']==7) { - $dun5 = 15; // - }elseif($_POST['rpmg1']==999) { - $dun5 = 999; // - }else{ - $dun5 = 12; // - } - }else{ - $dun5 = 12; // - } - // - $ins = mysql_query('INSERT INTO `dungeon_zv` - (`city`,`time`,`uid`,`dun`,`pass`,`com`,`lvlmin`,`lvlmax`,`team_max`) VALUES - ("all","'.time().'","'.$u->info['id'].'","'.$dun5.'", - "'.mysql_real_escape_string($_POST['pass']).'", - "'.mysql_real_escape_string($_POST['text']).'", - "8", - "21", - "5")'); - if( $ins ) { - $u->info['dn'] = mysql_insert_id(); - $zv['id'] = $u->info['dn']; - $zv['uid'] = $u->info['id']; - mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' '; - } else { - $error = ' '; - } - } else { - $error = ' '; - } -} - -// -$sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); -while( $pl = mysql_fetch_array( $sp ) ){ - $dungeonGroupList .= '
            '; - if( $u->info['dn'] == 0 ) $dungeonGroupList .= ''; - $dungeonGroupList .= ''.date('H:i',$pl['time']).' '; - - $dungeonGroupList .= ' '; - - $pus = ''; // - $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); - while( $pu = mysql_fetch_array( $su ) ) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; - $pus .= ', '; - } - $pus = trim( $pus, ', ' ); - - $dungeonGroupList .= $pus; unset($pus); - - if( $pl['pass'] != '' && $u->info['dn'] == 0 ) $dungeonGroupList .= ' '; - - if( $pl['com'] != '' ) { - $dl = ''; - // , . - $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); - if( ( $moder['boi'] == 1 || $u->info['admin'] > 0 ) && $pl['dcom'] == 0 ){ - $dl .= ' ( )'; - if( isset( $_GET['delcom'] ) && $_GET['delcom'] == $pl['id'] && $u->newAct( $_GET['key'] ) == true ) { - mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); - $pl['dcom'] = $u->info['id']; - } - } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); - if( $pl['dcom'] > 0 ) { - $dl = ' '; - } - if( $pl['dcom'] > 0 ) { - if( $moder['boi'] == 1 || $u->info['admin'] > 0 ) { - $pl['com'] = ''.$pl['com'].''; - } else { - $pl['com'] = ''; - } - } - $dungeonGroupList .= ' | '.$pl['com'].''.$dl.''; - } - $dungeonGroupList .= '
            '; -} -?> - - - - - - - - -
            -

            -
            - -
            -

            -
            -
            -   -
            - -
            - info['level'] > 7) { - ?> -     - -
            - -'.$error.'
            '; - -// -if( $dungeonGroupList == '' ) { - $dungeonGroupList = ''; -} else { - if( !isset( $zv['id'] ) || $u->info['dn'] == 0 ) { - if($dungeonGo==1 || $u->info['dn'] == 0 ) { - $pr = ''; - } - $dungeonGroupList = '
            '.$pr.'
            '.$dungeonGroupList.''.$pr.'
            '; - } - $dungeonGroupList .= '
            '; -} - -if( $roomSection == 0 ) { echo $dungeonGroupList; } -if( $roomSection == 1 ) { - # endQuest . - if( isset( $_GET['endQuest'] ) && $_GET['endQuest'] != '' ){ - $action = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = '.$u->info['id'].' AND `id`="'.$_GET['endQuest'].'" AND `vals` = "go" LIMIT 1')); - $quest = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$action['vars']).'" LIMIT 1')); - if( $q->questCheckEnd($quest)==1 ){ - $q->questSuccesEnd($quest, $action); - } - } -?> -
            -
            -testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.$dungeon['city'].'" LIMIT 1',1); - $qc=0; // Quest Count - $qcc = array(); - // - $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); - while( $pl = mysql_fetch_array( $sp ) ) { - if($pl['room'] == $u->info['room']){ - $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - if( $q->questCheckEnd($pq)==1 ) $qsee2 = ''; else $qsee2 = ''; - - $qsee .= ' - - '.$pq['name'].' -
            '.$pq['info'].'
            '.$q->info($pq).''.$qsee2.'
            -
            '; - # - $qcc[$pq['line']]++; - # - $qc++; - } - } - - if( isset( $_GET['add_quest'] )) { - $qst_city = $_GET['city_quest']; - // - if($qst_city=='angelscity') { - $dun5 = 101; // - }elseif($qst_city=='sandcity') { - $dun5 = 16; // - }elseif($qst_city=='demonscity') { - $dun5 = 3; // - }elseif($qst_city=='emeraldscity') { - $dun5 = 17; // - }elseif($qst_city=='suncity') { - $dun5 = 10; // - }elseif($qst_city=='dreamscity') { - $dun5 = 1; // - }elseif($qst_city=='abandonedplain') { - $dun5 = 13; // - }else{ - $dun5 = 12; // - } - // - $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.mysql_real_escape_string($qst_city).'" LIMIT 1',1); - //$qcc - if( $qcc[$dun5] > 0 ) { - echo ' , .
            '; - }elseif( $qst_city != 'capitalcity' && $qst_city != 'angelscity' && $qst_city != 'suncity' && $qst_city != 'demonscity' && $qst_city != 'dreamscity' && $qst_city != 'abandonedplain' ) { - echo '
            '; - }elseif(!isset($u->city_id[$qst_city])) { - echo ' ?
            '; - }elseif( isset( $hgo['id'] ) ) { - echo '
            '; - } else { - // - - - - // - $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = '.$dun5.''); - $dq_add = array(); - while( $pl = mysql_fetch_array( $sp ) ) { - /*if( $u->rep['rep'.$qst_city] == 9999 ) { - //, - if( $pl['kin'] == 1 ) { - $dq_add = array( 0 => $pl ); - } - } else*/if( $u->rep['rep'.$qst_city] == 24999 ) { - //, - if( $pl['kin'] == 2 ) { - $dq_add = array( 0 => $pl ); - } - } else { - if( $pl['kin'] == 0 ) { - $dq_add[count($dq_add)] = $pl; - } - } - } - $dq_add = $q->onlyOnceQuest($dq_add, $u->info['id']); - $dq_add = $dq_add[rand(0,count($dq_add)-1)]; - - - if( $q->testGood($dq_add) == 1 && $dq_add > 0 ) { - $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; - $u->addAction(time(),'psh_qt_'.$qst_city,$dq_add['id']); - } else { - /*if ( $u->rep['rep'.$qst_city] == 9999 ) { - //, - echo ' !
            '; - } else*/if( $u->rep['rep'.$qst_city] >= 24999 ) { - //, - echo ' , !
            '; - } else { - echo ' "'.$dq_add['name'].'". ...
            '; - } - } - unset( $dq_add ); - } - } elseif( isset( $_GET['add_quest'] ) && $qc > 0 ) { - echo '- ... ..


            '; - } - if( $qsee == '' ) { - $qsee = '

            '; - } -?> -
            -
            - : - - - 0 ){ - // echo ' .'; - //} elseif( !isset( $hgo['id'] ) && $qc == 0 ) { - $hgo1 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_capitalcity" LIMIT 1',1); - $hgo2 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_angelscity" LIMIT 1',1); - $hgo3 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_suncity" LIMIT 1',1); - $hgo4 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_demonscity" LIMIT 1',1); - $hgo5 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_dreamscity" LIMIT 1',1); - $hgo6 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_abandonedplain" LIMIT 1',1); - // - if( !isset($hgo1['id']) ) { ?> - - - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=capitalcity"' /> - - - - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=angelscity"' /> - - - - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=suncity"' /> - - - - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=demonscity"' /> - - - - ()' onclick='location="main.php?rz=1&add_quest=1&city_quest=dreamscity"' /> - - - - ( )' onclick='location="main.php?rz=1&add_quest=1&city_quest=abandonedplain"' /> - - '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; - //} - ?> - -
            -
            -
            - 0); - if( 50 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! - foreach( $dungeon['list'] as $key => $val ) { - if( !( $cur_price['price'] >= $price ) ) { - $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); - $cur_price['nu_'.$val] = $cur; - } - } - //$mnt1 = ( isset( $rt ) && $rt == 1 ? ($u->rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) ); - //print_r($dungeon['list']); - // - if( $price == $cur_price['price'] ) { - foreach( $dungeon['list'] as $key => $val ) { - //echo '['.$val.'->'.$cur_price['nu_'.$val].'->'.$u->rep['nu_'.$val].'->'.$rt.']'; - if( isset( $cur_price['nu_'.$val] ) && isset( $u->rep['nu_'.$val] ) && $rt == 1 ) { - $u->rep['nu_'.$val] += $cur_price['nu_'.$val]; - $r = mysql_query('UPDATE `rep` SET `nu_'.$val.'` = "'.$u->rep['nu_'.$val].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($r) $rt = 1; else $rt = 0; - } - } - if($rt==1){ - $u->info['ability'] += 1; $u->rep['add_stats'] += 1; - mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; - } else { - echo ' ...
            '; - } - } else echo ' .'; - } else { - echo ' ...
            '; - } - } elseif( $_GET['buy1'] == 2 ) { // ! - $price = 5000; - $cur_price = array('price'=>0); - if(15-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! - foreach($dungeon['list'] as $key=>$val){ - if( !( $cur_price['price'] >= $price ) ) { - $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); - $cur_price['nu_'.$val] = $cur; - } - } - if( $price == $cur_price['price'] ) { - foreach( $dungeon['list'] as $key => $val ) { - if( isset( $cur_price['nu_'.$val] ) && isset( $u->rep['nu_'.$val] ) && $rt == 1 ) { - $u->rep['nu_'.$val] += $cur_price['nu_'.$val]; - $r = mysql_query('UPDATE `rep` SET `nu_'.$val.'` = "'.$u->rep['nu_'.$val].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($r) $rt = 1; else $rt = 0; - } - } - if($rt==1){ - $u->info['skills'] += 1; $u->rep['add_skills'] += 1; - mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; - } else { - echo ' ...
            '; - } - } else echo ' .'; - } else { - echo ' ...
            '; - } - } elseif( $_GET['buy1'] == 3 ) { // - $price = 100; - $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // - foreach($dungeon['list'] as $key=>$val){ - if( !( $cur_price['price'] >= $price ) ) { - $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); - $cur_price['nu_'.$val] = $cur; - } - } - if( $price == $cur_price['price'] ) { - foreach( $dungeon['list'] as $key => $val ) { - if( isset( $cur_price['nu_'.$val] ) && isset( $u->rep['nu_'.$val] ) && $rt == 1 ) { - $u->rep['nu_'.$val] += $cur_price['nu_'.$val]; - $r = mysql_query('UPDATE `rep` SET `nu_'.$val.'` = "'.$u->rep['nu_'.$val].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($r) $rt = 1; else $rt = 0; - } - } - if($rt==1){ - $u->info['money'] += 10; $u->rep['add_money'] += 10; - mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 10 . '.$price.' .
            '; - } else { - echo ' ...
            '; - } - } else echo ' .'; - }else{ - echo ' ...
            '; - } - } elseif( $_GET['buy1'] == 4 ) { // - $price = 3000; - $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // - foreach($dungeon['list'] as $key=>$val){ - if( !( $cur_price['price'] >= $price ) ) { - $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); - $cur_price['nu_'.$val] = $cur; - } - } - if( $price == $cur_price['price'] ) { - foreach( $dungeon['list'] as $key => $val ) { - if( isset( $cur_price['nu_'.$val] ) && isset( $u->rep['nu_'.$val] ) && $rt == 1 ) { - $u->rep['nu_'.$val] += $cur_price['nu_'.$val]; - $r = mysql_query('UPDATE `rep` SET `nu_'.$val.'` = "'.$u->rep['nu_'.$val].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($r) $rt = 1; else $rt = 0; - } - } - if($rt==1){ - $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; - mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; - } else { - echo ' ...
            '; - } - } else echo ' .'; - - } else { - echo ' ...
            '; - } - }elseif( $_GET['buy1'] == 5 ) { - // - $price = 2000+($u->rep['add_slot']*2000); - $price_kr = 500+($u->rep['add_slot']*500); - $cur_price = array('price'=>0); - if( $price_kr > $u->info['money'] ) { - echo '
            '; - }elseif( 4 - $u->rep['add_slot'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! - foreach( $dungeon['list'] as $key => $val ) { - if( !( $cur_price['price'] >= $price ) ) { - $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); - $cur_price['nu_'.$val] = $cur; - } - } - //$mnt1 = ( isset( $rt ) && $rt == 1 ? ($u->rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) ); - //print_r($dungeon['list']); - // - if( $price == $cur_price['price'] ) { - foreach( $dungeon['list'] as $key => $val ) { - //echo '['.$val.'->'.$cur_price['nu_'.$val].'->'.$u->rep['nu_'.$val].'->'.$rt.']'; - if( isset( $cur_price['nu_'.$val] ) && isset( $u->rep['nu_'.$val] ) && $rt == 1 ) { - $u->rep['nu_'.$val] += $cur_price['nu_'.$val]; - $r = mysql_query('UPDATE `rep` SET `nu_'.$val.'` = "'.$u->rep['nu_'.$val].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - if($r) $rt = 1; else $rt = 0; - } - } - if($rt==1){ - - $u->info['priemslot'] += 1; - $u->rep['add_slot'] += 1; - $u->info['money'] -= $price_kr; - mysql_query('UPDATE `rep` SET `add_slot` = "'.$u->rep['add_slot'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `stats` SET `priemslot` = "'.$u->info['priemslot'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' '.$price_kr.' .
            '; - } else { - echo ' ...
            '; - } - } else echo ' .'; - } else { - echo ' ...
            '; - } - } - } - // - ?> -
            - : rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> - . - - rep['add_stats']) > 0 ) { ?> - - - - - - - rep['add_skills']) > 0 ) { ?> - - - - - - - - - - - - rep['add_slot']) > 0 ) { ?> - - - - - - -
            ( rep['add_stats'])?>) 2000 .
            ( rep['add_skills'])?>) 5000 .
            (10 .) 100 .
            ( rep['add_slot'])?>) rep['add_slot']*2000);?> . rep['add_slot']*500); ?> .
            -
            - info['id'].'" LIMIT 1000')); - if(isset($_GET['buy777']) && $chk[0]>0) { - ?> -
            -

            - info['id'].'" LIMIT 1000'); - while($chk_pl = mysql_fetch_array($chk_cl)) { - if(mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$chk_pl['id'].'" LIMIT 1')); - { - $x++; $prc += $chk_pl['price1']; - } - } - $u->info['money'] += $prc; - mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; - $chk[0] = 0; - ?> -

            -
            0) { - ?> - - - -
            -info['dn']==0){ - ?> - - - - -
            -
            -
            - - :
            - -
            -
            - -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            ( ) -
            - - -
            - - -
            - -  
            -
            -
            -
            - info['id']){ - $psh_start = '  '; - } - echo '
            -
            - - '.$psh_start.' - -
            -
            '; - } - } - }else{ - echo ' . : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            " " ;)'; - if( $dungeon['id'] == 104 ) { - echo '
            : '; - } - } - } -} -?> diff --git a/modules_data/location/dungeon_shop.php b/modules_data/location/dungeon_shop.php index 780c3f3f..1123ea95 100644 --- a/modules_data/location/dungeon_shop.php +++ b/modules_data/location/dungeon_shop.php @@ -9,26 +9,26 @@ if( $u->room['file'] == 'dungeon_shop' ) { $dungeon = mysql_fetch_array( mysql_query('SELECT * FROM `dungeon_room` WHERE `shop`="'.$u->room['id'].'" LIMIT 1') ); $getout_room = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `id` = "'.$dungeon['id'].'" LIMIT 1')); - if($u->room['id'] == 379) $sid = 803; // - elseif($u->room['id'] == 373) $sid = 802; // - elseif($u->room['id'] == 367) $sid = 801; // - elseif($u->room['id'] == 381) $sid = 804; // + if($u->room['id'] == 379) $sid = 803; // Катакомбы + elseif($u->room['id'] == 373) $sid = 802; // Пещера Тысячи Проклятий + elseif($u->room['id'] == 367) $sid = 801; // Бездна + elseif($u->room['id'] == 381) $sid = 804; // Пещера Мглы $error = ''; if(isset($_GET['buy'])){ if($u->newAct($_GET['sd4'])==true){ $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } if($re!=''){ echo '
            '.$re.'
            '; } ?> '; + Прогресс строительства % +
            '.round($count/($need_count/100)).'/'.(100).'

            '; $r .= ''; - # . + # Текущее состояние строительства. foreach( $actions['resource'] as $key=>$val) { if($count==0){ $current = mysql_fetch_assoc(mysql_query('SELECT im.`name`, im.`img` FROM `items_main` as im WHERE im.`id` = '.$val['item'].' LIMIT 1')); @@ -103,7 +103,7 @@ if(isset($file) && $file[0]=='dungeons/building.php' /* && $u->info['admin'] > $actions['resource'][$key]['img'] = $current['img']; } else { $actions['resource'][$key]['current'] = 0; - $actions['resource'][$key]['name'] = " "; + $actions['resource'][$key]['name'] = "Неизвестный предмет"; $actions['resource'][$key]['img'] = ""; } } @@ -112,13 +112,13 @@ if(isset($file) && $file[0]=='dungeons/building.php' /* && $u->info['admin'] > foreach( $actions['resource'] as $row) { $current_uid = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) as count FROM `items_users` WHERE `item_id` = '.$row['item'].' AND `uid` = '.$u->info['id'].' AND (`delete` = "0" OR `delete` = "1000") AND `inOdet` = "0" AND `inShop` = "0" LIMIT 1')); - if(isset($current_uid) && $current_uid['count'] == NULL) $current_uid['count'] = 0; // + if(isset($current_uid) && $current_uid['count'] == NULL) $current_uid['count'] = 0; // Сколько можем внести $r .= '['.$row['name'].']'; if($row['current'] >= $row['count']){ $input = ''; } else{ - $input = '
            '; + $input = '
            '; } $r .= ''.$input.''; $r .='
            '.round($row['current']/($row['count']/100)).'/'.(100).'

            '; @@ -127,7 +127,7 @@ if(isset($file) && $file[0]=='dungeons/building.php' /* && $u->info['admin'] > } if( round($count/($need_count/100)) >= 100 ) { - $r .= '
            '; + $r .= '
            '; } $r .= ''; @@ -136,10 +136,10 @@ if(isset($file) && $file[0]=='dungeons/building.php' /* && $u->info['admin'] > /* * - + + ?> кр.

            Прогресс строительства */ - # "'.$actions['name'].'", , . + # Идет строительство "'.$actions['name'].'", но нам нехватает ресурсов, помоги добрый странник. $d->information = '
            '.$r; diff --git a/modules_data/location/dungeons/trap.php b/modules_data/location/dungeons/trap.php index b391547c..70a80e7b 100644 --- a/modules_data/location/dungeons/trap.php +++ b/modules_data/location/dungeons/trap.php @@ -24,15 +24,15 @@ if(isset($file) && $file[0]=='dungeons/trap.php'){ } #$test = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_nakova2_use" LIMIT 1')); $temp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `dn` = "'.$u->info['dnow'].'" AND ('.$action.') AND `delete`=\'0\' AND `inBattle`=\'0\' LIMIT 10'); - #echo ' , '; + #echo ' Если страница не сработала, обновитесь '; while($t = mysql_fetch_array($temp)){ if( isset($t['id_bot']) ) $d->botAtack($t,$u->info,2); } /* if( $u->info['sex'] == 0 ) { - $d->sys_chat(''.$u->info['login'].' , '); + $d->sys_chat(''.$u->info['login'].' сделав необдуманый шаг, подвергся нападению '); }else{ - $d->sys_chat(''.$u->info['login'].' "", '); + $d->sys_chat(''.$u->info['login'].' воспользовалась "Наковальней", другим данный обьект стал недоступен'); } mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`time`,`vars`) VALUES ( "'.$u->info['dnow'].'","'.$u->info['id'].'","'.time().'","obj_nakova2_use" @@ -68,12 +68,12 @@ if(isset($file) && $file[0]=='dungeons/trap.php'){ } } elseif( isset($vad['count_uses']) && ( $vad['count_uses']['vals'][0]=='ready_die' OR $vad['count_uses']['vals'][0]=='ready_damage')) { if($vad['count_uses']['vals'][0]=='ready_damage'){ - $d->error = ' -'.$vad['count_uses']['vals'][1].'HP...'; + $d->error = 'Вы попали в ловушку и получили повреждения на -'.$vad['count_uses']['vals'][1].'HP...'; } if($u->info['sex'] == 0) { - $vad['text'] = '[img[items/trap.gif]] '.$u->info['login'].' . -'. $vad['count_uses']['vals'][1].'HP'; + $vad['text'] = '[img[items/trap.gif]] '.$u->info['login'].' угодил в ловушку оставленную одним из обитателей подземелья. -'. $vad['count_uses']['vals'][1].'HP'; }else{ - $vad['text'] = '[img[items/trap.gif]] '.$u->info['login'].' . -'. $vad['count_uses']['vals'][1].'HP'; + $vad['text'] = '[img[items/trap.gif]] '.$u->info['login'].' угодила в ловушку оставленную одним из обитателей подземелья. -'. $vad['count_uses']['vals'][1].'HP'; } $d->sys_chat($vad['text']); mysql_query('UPDATE `dungeon_actions` SET `vals` = "end" WHERE `id` = "'.$vad['count_uses']['id'].'" LIMIT 1'); diff --git a/modules_data/location/dungeons/trap15.php b/modules_data/location/dungeons/trap15.php index f34ca58f..51a1a33b 100644 --- a/modules_data/location/dungeons/trap15.php +++ b/modules_data/location/dungeons/trap15.php @@ -15,37 +15,37 @@ if(isset($file) && $file[0]=='dungeons/trap15.php'){ // $vad['rnd'] = rand(-3,5); if($vad['rnd'] == 1) { - // (: -5) + //Вымороженные сухожилия (Ловкость: -5) $vad['img'] = 'hockey_trap_agil'; - $vad['g'] = ' '; + $vad['g'] = 'Вымороженные сухожилия'; $vad['id_eff'] = 391; $vad['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff` = "'.$vad['id_eff'].'" LIMIT 1')); $vad['data'] = 'add_s2=-'.(round($vad['eff']['x']+1)*5).''; }elseif($vad['rnd'] == 2) { - // (: -5) + //Замедленная реакция (Интуиция: -5) $vad['img'] = 'hockey_trap_inst'; - $vad['g'] = ' '; + $vad['g'] = 'Замедленная реакция'; $vad['id_eff'] = 392; $vad['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff` = "'.$vad['id_eff'].'" LIMIT 1')); $vad['data'] = 'add_s3=-'.(round($vad['eff']['x']+1)*5).''; }elseif($vad['rnd'] == 3) { - // ( (): -10%) + //Пробитый иммунитет (Уровень жизни (НР): -10%) $vad['img'] = 'hockey_trap_hp'; - $vad['g'] = ' '; + $vad['g'] = 'Пробитый иммунитет'; $vad['id_eff'] = 393; $vad['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff` = "'.$vad['id_eff'].'" LIMIT 1')); $vad['data'] = 'add_hpProc=-'.(round($vad['eff']['x']+1)*10).''; }elseif($vad['rnd'] == 4) { - // (: -5) + //Печальное бессилие (Сила: -5) $vad['img'] = 'hockey_trap_str'; - $vad['g'] = ' '; + $vad['g'] = 'Печальное бессилие'; $vad['id_eff'] = 394; $vad['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff` = "'.$vad['id_eff'].'" LIMIT 1')); $vad['data'] = 'add_s1=-'.(round($vad['eff']['x']+1)*5).''; }elseif($vad['rnd'] == 5) { - // + //Замедленная скорость передвижения $vad['img'] = 'hockey_trap_speed'; - $vad['g'] = ' '; + $vad['g'] = 'Замедленная скорость передвижения'; $vad['id_eff'] = 395; $vad['eff'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff` = "'.$vad['id_eff'].'" LIMIT 1')); $vad['data'] = 'add_speed_dungeon=-'.(round($vad['eff']['x']+1)*20).''; @@ -54,13 +54,13 @@ if(isset($file) && $file[0]=='dungeons/trap15.php'){ } if( $vad['eff']['x'] > 4 ) { - $d->error = ' , , ...'; + $d->error = 'Вы и так покалечены, вы не катаетесь на коньках, а просто ползете по льду...'; }elseif( $vad['g'] == '' ) { - $d->error = ' , !'; + $d->error = 'Вы чудом не упали, но в следующий раз вам точно не повезет!'; }else{ - $d->error = ' "'.$vad['g'].'"...'; + $d->error = 'Вы упали и получили негативный эффект "'.$vad['g'].'"...'; // - // + //Добавляем новую болезнь if(!isset($vad['eff']['id'])) { mysql_query('INSERT INTO `eff_users` ( `id_eff`,`uid`,`name`,`data`,`timeUse` @@ -69,9 +69,9 @@ if(isset($file) && $file[0]=='dungeons/trap15.php'){ )'); // if($u->info['sex'] == 0) { - $vad['text'] = '[img[items/'.$vad['img'].'.gif]] '.$u->info['login'].' "'.$vad['g'].'"!'; + $vad['text'] = '[img[items/'.$vad['img'].'.gif]] '.$u->info['login'].' поскользнулся и получил увечья "'.$vad['g'].'"!'; }else{ - $vad['text'] = '[img[items/'.$vad['img'].'.gif]] '.$u->info['login'].' "'.$vad['g'].'"!'; + $vad['text'] = '[img[items/'.$vad['img'].'.gif]] '.$u->info['login'].' поскользнулась и получила увечья "'.$vad['g'].'"!'; } $d->sys_chat($vad['text']); }else{ diff --git a/modules_data/location/dungeons/trap_portal.php b/modules_data/location/dungeons/trap_portal.php index 12d92e43..408b68fb 100644 --- a/modules_data/location/dungeons/trap_portal.php +++ b/modules_data/location/dungeons/trap_portal.php @@ -2,7 +2,7 @@ if(!defined('GAME')) { die(); } if(isset($file) && $file[0] == 'dungeons/trap_portal.php') { - echo '   , . '; + echo '  Вы должны быть перемещены, но портал еще не работает. '; $actions = array(); $action = explode('|', $file[1]); foreach($action as $value) { diff --git a/modules_data/location/elka.php b/modules_data/location/elka.php index cdc35742..b6307216 100644 --- a/modules_data/location/elka.php +++ b/modules_data/location/elka.php @@ -3,7 +3,7 @@ if(!defined('GAME')) { die(); } -//id +//id Новогоднего подарка $pidid = 4008; $dy = 1; @@ -17,14 +17,14 @@ $dt = 2023; if($u->room['file']=='elka') { - if(isset($_GET['elka_shar'])&& isset($_GET['shar_name'])) // + if(isset($_GET['elka_shar'])&& isset($_GET['shar_name'])) //Украшение Ёлки { $itd = mysql_fetch_array(mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "'.$u->info['id'].'" AND `delete` = 0 AND `id`= "'.$_GET['elka_shar'].'" LIMIT 1 ')); if (isset($itd['id'])){ $itdu=mysql_query('UPDATE `items_users` SET `delete` ="'.time().'" WHERE `id` ="'.$_GET['elka_shar'].'" LIMIT 1 '); if (isset($itdu)) { - //eff X + //eff Благословение Ёлки X $effe = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`= "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff`= 477 LIMIT 1')); if (isset($effe['id'])) { @@ -32,7 +32,7 @@ if($u->room['file']=='elka') $tdata=$tdata+5; if ($tdata>500){$tdata=500;} $newdata='add_hpAll='.$tdata; - $newname=' x'.($tdata/5); + $newname='Благословение Ёлки x'.($tdata/5); @@ -40,7 +40,7 @@ if($u->room['file']=='elka') if (isset($effeadd)) { - echo " x".round($tdata/5)." " ; + echo "Вы получили Благословение Ёлки x".round($tdata/5)." " ; } } @@ -49,20 +49,20 @@ if($u->room['file']=='elka') $effeadd=mysql_query('INSERT INTO `eff_users` (`id`,`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES - (NULL, "477", "'.$u->info['id'].'", " x1", "add_hpAll=5", "110", "'.time().'", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")'); + (NULL, "477", "'.$u->info['id'].'", "Благословение Ёлки x1", "add_hpAll=5", "110", "'.time().'", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")'); if (isset($effeadd)) { - echo " x1 " ; + echo "Вы получили Благословение Ёлки x1 " ; } } - echo ": ".$_GET['shar_name']."" ; + echo "Использовал: ".$_GET['shar_name']."" ; } else { - echo "" ; + echo "Ошибка" ; } } @@ -70,21 +70,21 @@ if($u->room['file']=='elka') if(isset($_GET['take_gift']) && (date('m') == 12 || (date('m') == 1 && date('d') <= 8))) { - // addItem($id,$uid) + //получаем свой новогодний подарок за текущий год addItem($id,$uid) $smt = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "take_gift_'.$dt.'" LIMIT 1',1); if(!isset($smt['id'])) { $pid = $u->addItem($pidid,$u->info['id']); if($pid>0) { - mysql_query('UPDATE `items_users` SET `gift` = "",`gtxt1` = " !" WHERE `id` = "'.$pid.'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); + mysql_query('UPDATE `items_users` SET `gift` = "Администрация",`gtxt1` = "Поздравляем Вас с Новым Годом!" WHERE `id` = "'.$pid.'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); $u->addAction(time(),'take_gift_'.$dt.'',$u->info['city']); - echo ' , ""'; + echo 'Предмет находится у Вас в инвентаре, в разделе "прочее"'; }else{ - echo ' ...'; + echo 'Не удалось получить подарок...'; } }else{ - echo ' ;)'; + echo 'Вы уже получили свой подарок ;)'; } }elseif(isset($_GET['del'])) { @@ -105,11 +105,11 @@ if($u->room['file']=='elka') { $u->addAction(time(),'use_cupNewYear',''); mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpAll'].'",`mpNow` = "'.$u->stats['mpAll'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' " "'; + echo 'Успешно использован эликсир "Полное восстановление"'; } }elseif(isset($_POST['message'])) { - $_POST['message'] = htmlspecialchars($_POST['message'],NULL,'cp1251'); + $_POST['message'] = htmlspecialchars($_POST['message'],NULL); if($_POST['message']!='') { $dy = 1; @@ -120,7 +120,7 @@ if($u->room['file']=='elka') $u->info['ET'] = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "send_elka" LIMIT 1',1); if(isset($u->info['ET']['id'])) { - echo ' 10 '; + echo 'Оставлять надписи на стволе ёлки можно не чаще одного раза в 10 минут'; }else{ $pInfo = ''.$u->info['align'].'|'.$u->info['clan'].'|'.$u->info['login'].'|'.$u->info['level'].'|'.$u->info['cityreg'].'|'.$u->info['id'].''; mysql_query("INSERT INTO `elka` (`year`,`time`,`pers`,`text`,`city`) VALUES (".(date('Y',time())+$dy).",".time().",'".$pInfo."','".mysql_real_escape_string($_POST['message'])."','".$u->info['city']."'); "); @@ -173,40 +173,40 @@ if($u->room['file']=='elka')
            '.$re.''; } ?>
            -
            Новогодняя елка !

            - +
            - : + Подарки:
            testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "use_cupNewYear" LIMIT 1',1); ?> - /> + /> testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "take_gift'.$dt.'" LIMIT 1',1); ?> - /> + />

            info['admin']>0) // { ?>
            - : + Наряжаем Ёлку:
            2723 AND `item_id` < 2741 AND `uid`= "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1 ')); @@ -214,9 +214,9 @@ if($u->room['file']=='elka') { $itt = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$it['item_id'].'" LIMIT 1')); ?> - /> + />
            @@ -263,7 +263,7 @@ if(isset($_GET['page'])) { $jt = ''.$j.''; } - $pagesN .= ' '.$jt.' '; + $pagesN .= ' '.$jt.' '; } } } @@ -283,7 +283,7 @@ if(isset($_GET['page'])) { $jt = ''.$j.''; } - $pagesN .= ' '.$jt.' '; + $pagesN .= ' '.$jt.' '; } $k++; } @@ -302,19 +302,19 @@ if(isset($_GET['page'])) $_GET['d'] = (int)$_GET['d']; if($fpage-7>0) { - $pages .= ' ... '; + $pages .= '« ... '; } $pages .= ' '.$pagesN.' '; if($fpage<$d-5) { - $pages .= '... '; + $pages .= '... »'; } } }else{ $pages = ''; } ?> - :
            + Посетители оставили надписи на стволе елки:
            info['city'].'" AND (`delete` = "0" OR '.$u->info['admin'].' > 0) ORDER BY `time` DESC LIMIT '.$limit1.','.$limit2.''); @@ -332,16 +332,16 @@ if(isset($_GET['page'])) $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$prs[1].'" LIMIT 1')); $pers .= ''; } - $pers .= ''.$prs[2].'['.$prs[3].']'; + $pers .= ''.$prs[2].'['.$prs[3].']'; if($pl['delete']!='0') { if($pl['delete']=='1') { if($u->info['admin']>0) { - $pl['text'] = ' ('.$pl['text'].')'; + $pl['text'] = 'Сообщение стерто ('.$pl['text'].')'; }else{ - $pl['text'] = ' '; + $pl['text'] = 'Сообщение стерто'; } }else{ $prs = explode('|',$pl['delete']); $pers2 = ''; @@ -354,19 +354,19 @@ if(isset($_GET['page'])) $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$prs[1].'" LIMIT 1')); $pers2 .= ''; } - $pers2 .= ''.$prs[2].'['.$prs[3].']'; + $pers2 .= ''.$prs[2].'['.$prs[3].']'; if($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) { - $pl['text'] = ' '.$pers2.' ('.$pl['text'].')'; + $pl['text'] = 'Сообщение стерто персонажем '.$pers2.' ('.$pl['text'].')'; }else{ - $pl['text'] = ' '.$pers2.''; + $pl['text'] = 'Сообщение стерто персонажем '.$pers2.''; } } } if(($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) && $pl['delete']=='0') { - $dl = ' '; + $dl = ' Стереть'; }else{ $dl = ''; } @@ -374,9 +374,9 @@ if(isset($_GET['page'])) } ?>
            - :
            + Страницы:
            - :   + Оставить сообщение:  
            @@ -391,14 +391,14 @@ if(isset($_GET['page'])) diff --git a/modules_data/location/em/casino.php b/modules_data/location/em/casino.php index 43000a00..a005986d 100644 --- a/modules_data/location/em/casino.php +++ b/modules_data/location/em/casino.php @@ -82,7 +82,7 @@ if($u->room['file']=='em/casino')
            - +
            Центральная Площадь
            - +
            diff --git a/modules_data/location/em/ruletka.php b/modules_data/location/em/ruletka.php index 11968814..52445a46 100644 --- a/modules_data/location/em/ruletka.php +++ b/modules_data/location/em/ruletka.php @@ -51,20 +51,20 @@ if($u->room['file']=='ruletka')
            room['name']; if( $rz == 1 ) { - echo ' ""'; + echo ' "Рулетка"'; } ?>

            @@ -90,12 +90,12 @@ if($u->room['file']=='em/casino')
            - - - + + +
            : Залы:РулеткаОднорукий бандит
            @@ -104,7 +104,7 @@ if($u->room['file']=='em/casino') if( isset($u->bank['id']) ) { ?>

            - : bank['id']?> + Банковский счет для игры: №bank['id']?>
            room['file']=='em/casino')


            - :
            - :     info['id'].'" AND `block` = "0"'); while( $pl = mysql_fetch_array($sp)) { ?>
            - :
            - + Пароль:
            +


            @@ -129,7 +129,7 @@ if($u->room['file']=='em/casino') }elseif( $rz == 0 ) { ?>
            - + Выберите игровой зал


            room['file']=='em/casino') $sm = $u->testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); $bnk1 += $sm['vals']; if( $bnk1 <= 0 ) { - echo ' '.(-$bnk1).'.00 .

            '; + echo 'За все время выиграли '.(-$bnk1).'.00 екр.

            '; }else{ - echo ' '.($bnk1).'.00 .

            '; + echo 'За все время проиграли '.($bnk1).'.00 екр.

            '; } $sp = mysql_query('SELECT * FROM `ruletka_coin` ORDER BY `id`'); $bag1d = array(); while( $pl = mysql_fetch_array($sp)) { $bag1d[$pl['game_id']][$pl['uid']] += $pl['money']; if( $bag1d[$pl['game_id']][$pl['uid']] > 100 ) { - echo '
            '.date('d.m.Y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' '.$bag1d[$pl['game_id']][$pl['uid']].' .'; + echo '
            '.date('d.m.Y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' сделал баговую ставку '.$bag1d[$pl['game_id']][$pl['uid']].' екр.'; } } //} @@ -161,10 +161,10 @@ if($u->room['file']=='em/casino') - + - + @@ -173,10 +173,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -195,10 +195,10 @@ if($u->room['file']=='em/casino') - + - + @@ -207,10 +207,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -219,7 +219,7 @@ if($u->room['file']=='em/casino')



            '; + echo '


            Игровой стол временно закрыт

            '; }elseif( $rz == 3 ) { $min_s = 1; $max_s = 10; @@ -230,10 +230,10 @@ if($u->room['file']=='em/casino') - + - + @@ -242,10 +242,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -257,7 +257,7 @@ if($u->room['file']=='em/casino') ?>
            - ! . , .. + Внимание! Все игры проводятся на екр. и Администрация не несет ответственности за возможные исходы игры, включая сбои и т.д.
            @@ -284,7 +284,7 @@ if($u->room['file']=='em/casino')

            bank['id'])) { ?> -
            : bank['money2'],2); ?> .   +
            У вас в наличии: bank['money2'],2); ?> екр.  

            diff --git a/modules_data/location/em/casino.php.bac b/modules_data/location/em/casino.php.bac deleted file mode 100644 index 6f15bef4..00000000 --- a/modules_data/location/em/casino.php.bac +++ /dev/null @@ -1,299 +0,0 @@ -room['file']=='em/casino') -{ - $rz = 0; - - if( $u->room['id'] == 388 ) { - $rz = 0; - }elseif( $u->room['id'] == 389 ) { - $rz = 1; - }elseif( $u->room['id'] == 390 ) { - $rz = 2; - }elseif( $u->room['id'] == 391 ) { - $rz = 3; - }elseif( $u->room['id'] == 392 ) { - $rz = 4; - } - - - if($re!=''){ echo '
            '.$re.'
            '; } ?> - - -
              @@ -273,7 +273,7 @@ if($u->room['file']=='em/casino') - +
            Страшилкина улица
            - -
            room['name']; - if( $rz == 1 ) { - echo ' ""'; - } - ?>
            -
            -
            -
            - - - - - - - -
            :
            -
            - bank['id']) ) { - ?> -

            - : bank['id']?> -
            - bank['id']) ) { - ?> -
            -

            -
            - :
            - :    
            - :
            - -
            -

            -
            - -
            - -
            -

            - -

            - info['admin'] > 0 ) { - $bnk1 = 0; - $sm = $u->testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); - $bnk1 += $sm['vals']; - if( $bnk1 <= 0 ) { - echo ' '.(-$bnk1).'.00 .

            '; - }else{ - echo ' '.($bnk1).'.00 .

            '; - } - $sp = mysql_query('SELECT * FROM `ruletka_coin` ORDER BY `id`'); - $bag1d = array(); - while( $pl = mysql_fetch_array($sp)) { - $bag1d[$pl['game_id']][$pl['uid']] += $pl['money']; - if( $bag1d[$pl['game_id']][$pl['uid']] > 100 ) { - echo '
            '.date('d.m.Y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' '.$bag1d[$pl['game_id']][$pl['uid']].' .'; - } - } - //} - ?> - - - - - - - - - - - - - - - - - - -
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            -
            - -
            - -


            - -
            - -

            - - - - - - - - - - - - - - - - - - -
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            -
            - -
            - -


            -
            -



            '; - }elseif( $rz == 3 ) { - $min_s = 1; - $max_s = 10; - ?> -

            - - - - - - - - - - - - - - - - - - -
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            -
            - -
            - -


            -
            - -
            -
            - ! . , .. -
            -
            -
              - - -
            - - - - - - - -
            - - - - - -
            -
            -
            -
            -
            -
            - bank['id'])) { ?> -
            : bank['money2'],2); ?> .   - -
            -
            -
            -
            -
            -
            - - diff --git a/modules_data/location/em/casino.php1 b/modules_data/location/em/casino.php1 index 830c5953..49a78d66 100644 --- a/modules_data/location/em/casino.php1 +++ b/modules_data/location/em/casino.php1 @@ -82,7 +82,7 @@ if($u->room['file']=='em/casino') diff --git a/modules_data/location/em/cp2.php b/modules_data/location/em/cp2.php index 405ee6e8..9b0bb4d1 100644 --- a/modules_data/location/em/cp2.php +++ b/modules_data/location/em/cp2.php @@ -32,9 +32,9 @@ if($u->room['file']=='em/cp2') {
            - + - +
            />
            />
            @@ -45,15 +45,15 @@ if($u->room['file']=='em/cp2') { info['admin'] > 0 ) { - // + //Хэллоуин /* if( (date('m') == 11 && date('d') <= 6) || (date('m') == 10 && date('d') == 31) ) { ?> -
            +
            src="https://img.new-combats.com/newyear2014.png" width="60" height="90" title="" class="aFilter" />
            room['file']=='em/cp2') {
            = 22 || date('H') < 6 ) { - echo '   '; + echo 'Напасть   '; } ?> - + Форум
            @@ -79,14 +79,14 @@ if($u->room['file']=='em/cp2') {
            room['name']; if( $rz == 1 ) { - echo ' ""'; + echo ' "Рулетка"'; } ?>

            @@ -90,12 +90,12 @@ if($u->room['file']=='em/casino')
            - - -
            :
            @@ -104,7 +104,7 @@ if($u->room['file']=='em/casino') if( isset($u->bank['id']) ) { ?>

            - : bank['id']?> + Банковский счет для игры: №bank['id']?>
            room['file']=='em/casino')


            - :
            - :     info['id'].'" AND `block` = "0"'); while( $pl = mysql_fetch_array($sp)) { ?>
            - :
            - + Пароль:
            +


            @@ -129,7 +129,7 @@ if($u->room['file']=='em/casino') }elseif( $rz == 0 ) { ?>
            - + Выберите игровой зал


            room['file']=='em/casino') $sm = $u->testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); $bnk1 += $sm['vals']; if( $bnk1 <= 0 ) { - echo ' '.(-$bnk1).'.00 .

            '; + echo 'За все время выиграли '.(-$bnk1).'.00 екр.

            '; }else{ - echo ' '.($bnk1).'.00 .

            '; + echo 'За все время проиграли '.($bnk1).'.00 екр.

            '; } $sp = mysql_query('SELECT * FROM `ruletka_coin` ORDER BY `id`'); $bag1d = array(); while( $pl = mysql_fetch_array($sp)) { $bag1d[$pl['game_id']][$pl['uid']] += $pl['money']; if( $bag1d[$pl['game_id']][$pl['uid']] > 100 ) { - echo '
            '.date('d.m.Y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' '.$bag1d[$pl['game_id']][$pl['uid']].' .'; + echo '
            '.date('d.m.Y H:i',$pl['time']).' '.$u->microLogin($pl['uid'],1).' сделал баговую ставку '.$bag1d[$pl['game_id']][$pl['uid']].' екр.'; } } //} @@ -161,10 +161,10 @@ if($u->room['file']=='em/casino') - + - + @@ -173,10 +173,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -195,10 +195,10 @@ if($u->room['file']=='em/casino') - + - + @@ -207,10 +207,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -219,7 +219,7 @@ if($u->room['file']=='em/casino')



            '; + echo '


            Игровой стол временно закрыт

            '; }elseif( $rz == 3 ) { $min_s = 1; $max_s = 10; @@ -230,10 +230,10 @@ if($u->room['file']=='em/casino') - + - + @@ -242,10 +242,10 @@ if($u->room['file']=='em/casino') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -257,7 +257,7 @@ if($u->room['file']=='em/casino') ?>
            - ! . , .. + Внимание! Все игры проводятся на екр. и Администрация не несет ответственности за возможные исходы игры, включая сбои и т.д.
            @@ -284,7 +284,7 @@ if($u->room['file']=='em/casino')

            bank['id'])) { ?> -
            : bank['money2'],2); ?> .   +
            У вас в наличии: bank['money2'],2); ?> екр.  

            diff --git a/modules_data/location/em/cp.php b/modules_data/location/em/cp.php index 231a19e7..e1222a3d 100644 --- a/modules_data/location/em/cp.php +++ b/modules_data/location/em/cp.php @@ -32,9 +32,9 @@ if($u->room['file']=='em/cp') {
            - + - +
            />
            />
            @@ -45,15 +45,15 @@ if($u->room['file']=='em/cp') { info['admin'] > 0 ) { - // + //Хэллоуин /* if( (date('m') == 11 && date('d') <= 6) || (date('m') == 10 && date('d') == 31) ) { ?> -
            +
            src="https://img.new-combats.com/newyear2014.png" width="60" height="90" title="" class="aFilter" />
            room['file']=='em/cp') {
            = 22 || date('H') < 6 ) { - echo '   '; + echo 'Напасть   '; } ?> - + Форум
            @@ -79,14 +79,14 @@ if($u->room['file']=='em/cp') {
              @@ -273,7 +273,7 @@ if($u->room['file']=='em/casino') - +
            Бойцовский Клуб
            - +

            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            - +

            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            - @@ -107,7 +107,7 @@ if($u->room['file']=='ruletka')
            +
            Рулетка

            -

            . ., .

            +

            Рулетка работает в тестовом режиме. Вы можете потерять кр., возмещаться потери не будут.

            - + - + @@ -73,10 +73,10 @@ if($u->room['file']=='ruletka') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -98,7 +98,7 @@ if($u->room['file']=='ruletka') - +
            Бойцовский клуб

            -

            : Банк казино: room['file']=='ruletka') } } echo ($mn); - ?> .


            diff --git a/modules_data/location/em/ruletka11.php b/modules_data/location/em/ruletka11.php index e0e34568..a5ce5e2f 100644 --- a/modules_data/location/em/ruletka11.php +++ b/modules_data/location/em/ruletka11.php @@ -51,20 +51,20 @@ if($u->room['file']=='ruletka') - @@ -107,7 +107,7 @@ if($u->room['file']=='ruletka')
            +
            Рулетка

            -

            . ., .

            +

            Рулетка работает в тестовом режиме. Вы можете потерять кр., возмещаться потери не будут.

            - + - + @@ -73,10 +73,10 @@ if($u->room['file']=='ruletka') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -98,7 +98,7 @@ if($u->room['file']=='ruletka') - +
            Бойцовский клуб

            -

            : Банк казино: room['file']=='ruletka') } } echo ($mn); - ?> .

            + ?> кр.


            diff --git a/modules_data/location/em/vokzal.php b/modules_data/location/em/vokzal.php index d7d6b2bc..31fa2597 100644 --- a/modules_data/location/em/vokzal.php +++ b/modules_data/location/em/vokzal.php @@ -10,13 +10,13 @@ if($u->room['file']=='em/vokzal') $sp = mysql_query('SELECT * FROM `vokzal` WHERE `city` = "'.$u->info['city'].'" OR `tocity` = "'.$u->info['city'].'"'); while($pl = mysql_fetch_array($sp)) { - $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['city'].'" LIMIT 1')); - $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); + $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['city'].'" LIMIT 1')); + $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); $crm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "'.$pl['name'].'" LIMIT 1')); - //period 0 - (), 1 - , 3 - (), 4 - ( tocity) + //period 0 - прибытие в город (стоянка), 1 - движение, 3 - прибытие в другой город (стоянка), 4 - движение (из tocity) if($pl['time_start_go']==0) { - // + //Это новая карета обновляем данные mysql_query('UPDATE `vokzal` SET `time_start_go` = "'.(time()+$pl['timeStop']*60).'",`time_finish_go` = "'.(time()+$pl['timeStop']*60+$pl['time_go']*60).'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['time_start_go'] = time()+$pl['timeStop']*60; $pl['time_finish_go'] = $pl['time_start_go']+$pl['time_go']*60; @@ -24,12 +24,12 @@ if($u->room['file']=='em/vokzal') $see = 1; $plc = $pl['tocity']; $col = 'e6e6e6" style="color:#B7B7B7;"'; - $tmgo = '( '.date('H:i',$pl['time_finish_go']).')'; + $tmgo = '(Прибудет в '.date('H:i',$pl['time_finish_go']).')'; $bl = '--'; - $bb = ' '; + $bb = 'билетов нет'; if($pl['time_start_go']-600time()) { - // + //можно знанимать места в карете if(isset($crm['id'])) { $sr = mysql_query('SELECT `uid`,`id` FROM `items_users` WHERE `secret_id` = "'.$pl['time_start_go'].'_b'.$pl['id'].'" AND `delete` = "0" LIMIT 100'); @@ -46,27 +46,27 @@ if($u->room['file']=='em/vokzal') if((($pl['period']==0 && $u->info['city']==$pl['city']) || ($pl['period']==3 && $u->info['city']==$pl['tocity'])) && $pl['time_start_go']>time() && $pl['citygo']!=$u->info['city']) { $see = 1; - $tmgo = date('d.m.Y H:i',$pl['time_start_go']); + $tmgo = date('d.m.Y в H:i',$pl['time_start_go']); $col = 'c9c9c9'; $bl = $pl['bilets']; - $bb = ''; + $bb = ''; if($pl['bilets']<=0) { - $bb = ' '; + $bb = 'билетов нет'; } }else{ - // + //отправляем карету в другой город if($pl['time_finish_go']room['file']=='em/vokzal') $pl['period'] = 3; }elseif($pl['period']==3) { - // , , + //Прибыли в город, время стоянки закончилось, и поехали mysql_query('UPDATE `vokzal` SET `period` = "4" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['period'] = 4; }elseif($pl['period']==4) { - // , + //приехалис в другой город, делаем там стоянку if(isset($crm['id'])) { mysql_query('UPDATE `users` SET `city` = "'.$pl['city'].'",`room` = "'.$vz1['id'].'" WHERE `room` = "'.$crm['id'].'" LIMIT '.$pl['bilets_default'].''); @@ -104,9 +104,9 @@ if($u->room['file']=='em/vokzal') $cs .= ' '.$tmgo.' '.$u->city_name[$plc].' - '.$pl['time_go'].' . - '.$pl['price1'].' . - + '.$pl['time_go'].' мин. + '.$pl['price1'].' кр. + нет '.$bl.' '.$bb.' '; @@ -128,33 +128,33 @@ if($u->room['file']=='em/vokzal') { if($buy['bilets']<=0) { - $error = ' , '; + $error = 'Билетов больше нет, загляните позже'; }elseif($u->info['money']>=$buy['price1']) { $u->info['money'] -= $buy['price1']; $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - // - $error = ' '.$buy['price1'].' . '.$u->city_name[$buy['tocity']].'
            '.date('d.m.Y H:i',$buy['time_start_go']).' '; - $ib = ' '.$u->city_name[$buy['tocity']].': '.date('d.m.Y H:i',$buy['time_start_go']).'
            : '.$u->info['login'].''; + //передаем Билет персонажу + $error = 'Вы заплатили '.$buy['price1'].' кр. за билет в '.$u->city_name[$buy['tocity']].'
            Отправка в '.date('d.m.Y H:i',$buy['time_start_go']).' по серверу'; + $ib = 'Дата отправления кареты в '.$u->city_name[$buy['tocity']].': '.date('d.m.Y в H:i',$buy['time_start_go']).'
            Билет на имя: '.$u->info['login'].''; $ins = mysql_query('INSERT INTO `items_users` (`1price`,`maidin`,`data`,`uid`,`item_id`,`iznosMAX`,`lastUPD`,`secret_id`,`time_create`) VALUES ("'.$buy['price1'].'","'.$u->info['city'].'","info='.$ib.'|noodet=1","'.$u->info['id'].'","866","1","'.time().'","'.$buy['time_start_go'].'_b'.$buy['id'].'","'.time().'")'); if($ins) { - $error .= '
            "" , "".'; + $error .= '
            Предмет "Билет" был перемещен к Вам в инвентарь, в раздел "прочее".'; mysql_query('UPDATE `vokzal` SET `bilets` = "'.($buy['bilets']-1).'" WHERE `id` = "'.$buy['id'].'" LIMIT 1'); }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ $u->info['money'] += $buy['price1']; - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ - $error = ' '; + $error = 'У Вас недостаточно денег'; } }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } } @@ -165,7 +165,7 @@ if($u->room['file']=='em/vokzal') { if($u->info['money']>=$tp['price1']) { - $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); + $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); if(isset($rm['id'])) { $u->info['money'] -= $tp['price1']; @@ -174,13 +174,13 @@ if($u->room['file']=='em/vokzal') $u->addAction((time()+$tp['time']*60),'teleport',$tp['toCity']); die(''); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -196,12 +196,12 @@ if($u->room['file']=='em/vokzal') $cst .= ' '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).' - '.$pl['price1'].' .'; + '.$pl['price1'].' кр.'; if(isset($zd['id'])) { - $cst .= ' '.$u->timeOut($zd['time']-time()).''; + $cst .= 'Задержка еще '.$u->timeOut($zd['time']-time()).''; }else{ - $cst .= '!'; + $cst .= 'Поехали!'; } $cst .= ''; } @@ -253,40 +253,40 @@ if($u->room['file']=='em/vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            -

            +

            Расписание движения карет на сегодня

            - - - - - - - + + + + + + +
            время отправления
            пункт назначения
            время в пути
            цена билета
            требуется виза
            осталось билетов
            приобрести билет
            - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            - -
            - - ,
            + - Для отправления в другой город Вы должны быть онлайн когда будет отправляться карета
            + - Если Вы опоздали на карету, тогда билет можно сдать в магазин за половину его стоимости
            @@ -314,8 +314,8 @@ if($u->room['file']=='em/vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/enterbezdna.php b/modules_data/location/enterbezdna.php index d1ae27b7..71cb50f5 100644 --- a/modules_data/location/enterbezdna.php +++ b/modules_data/location/enterbezdna.php @@ -42,25 +42,25 @@ if(isset($g11['id'])) $g111 = 0; if(isset($_GET['start'])) { - $re = ' : '.$u->timeOut(60*60*2-time()+$g11['time']); + $re = 'До следующего похода осталось еще: '.$u->timeOut(60*60*2-time()+$g11['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh101',''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","Бездна","'.time().'")'); if($ins) { $zid = mysql_insert_id(); mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; @@ -77,7 +77,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $ppx++; $ids .= ' `id` = "'.$pu['id'].'" OR'; $u->addAction(time(),'psh101','',$pu['id']); - // + //Добавляем квестовые обьекты для персонажей $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$pu['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); //$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); while($pl2 = mysql_fetch_array($sp)) @@ -88,11 +88,11 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $i = 0; while( $i < count($act) ) { $xr = explode(':=:',$act[$i]); - // + //Сбор ресурсов if( $xr[0] == 'tk_itm' ) { $xr2 = explode('=',$xr[1]); if( $xr2[2] == 0 ) { - // + //Добавляем обьект для юзера $j = 0; while( $j < $xr2[1] ) { $cord = $map_locs[rand(0,count($map_locs)-1)]; @@ -104,7 +104,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $j++; } }else{ - // + //Предмет находится в конкретном месте mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( "'.$zid.'","'.$pu['id'].'","'.$xr2[0].'","'.time().'","'.$xr2[2].'","'.$xr2[3].'","'.$pu['id'].'","'.$pl['id'].'" )'); @@ -122,8 +122,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "360" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dun - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dun + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -132,23 +132,23 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) { $vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),'; } - // ( ) + //Добавление обьектов (день святого валентина) if( floor(date('m')) == 2 && floor(date('d')) >= 7 && $u->info['admin'] > 0 ) { - // ( ) + //Раскидываем предметы по пещере (Блёклый подземник) $i = 1; while($i <= $ppx) { $j = rand(1,3); while( $j >= 0 ) { $rndx = 0; $rndy = 0; - $vls .= '("'.$zid.'"," ","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:101/vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; + $vls .= '("'.$zid.'","Блеклый подземник","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:101/vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; $j--; } $i++; @@ -166,13 +166,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -183,7 +183,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if(isset($zv['id']) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $re = ' '; + $re = 'Вы ввели неправильный пароль'; }elseif($u->info['level'] > 7) { $row = 0; @@ -192,30 +192,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -225,14 +225,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -255,16 +255,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "101" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -275,11 +275,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -295,7 +295,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -303,11 +303,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -363,15 +363,15 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> - +
              @@ -302,7 +302,7 @@ if($u->room['file']=='em/vokzal') - +
            Центральная площадь
            Рыцарский магазин
            @@ -389,17 +389,17 @@ body

            - +
            - +

            - +
            - +

            @@ -409,7 +409,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -418,7 +418,7 @@ if($dzs=='') { if($g111==1 || $u->info['dn'] == 0) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -436,19 +436,19 @@ $qx = 0; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_angelscity" LIMIT 1',1); if(isset($_GET['add_quest'])) { if(isset($hgo['id'])) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; }else{ $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = 101'); $dq_add = array(); while($pl = mysql_fetch_array($sp)) { if($u->rep['repangelscity'] == 9999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } }elseif($u->rep['repangelscity'] == 24999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -464,51 +464,51 @@ if(isset($_GET['add_quest'])) { if($q->testGood($dq_add)==1 && $dq_add > 0) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $hgo['id'] = 1; $u->addAction(time(),'psh_qt_angelscity',$dq_add['id']); }else{ if($u->rep['repangelscity'] == 9999) { - //, - echo ' !
            '; + //квет, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; }elseif($u->rep['repangelscity'] == 24999) { - //, - echo ' , !
            '; + //квет, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; }else{ - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset($dq_add); } } -// +//Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qx++; } if($qsee == '') { - $qsee = ' '; + $qsee = 'К сожалению у вас нет ни одного задания'; } ?>
            - : [/28] +Текущие задания: [/28]
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).'
            ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?> @@ -516,14 +516,14 @@ if(!isset($hgo['id'])) {
            'capitalcity',2=>'demonscity',3=>'angelscity'); if($_GET['buy1']==1) { - // + //покупаем статы $price = 2000+($u->rep['add_stats']*100); $cur_price = array('price'=>0); - if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // ! + if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // Характеристики! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ @@ -537,7 +537,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; $u->info['ability'] += 1; $u->rep['add_stats'] += 1; @@ -549,14 +549,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif($_GET['buy1']==2) { // ! + } elseif($_GET['buy1']==2) { // Умения! $price = 2000+(2000*$u->rep['add_skills']); $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -569,7 +569,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; $u->info['skills'] += 1; $u->rep['add_skills'] += 1; @@ -581,14 +581,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif($_GET['buy1']==3) { // + }elseif($_GET['buy1']==3) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -601,7 +601,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; $u->info['money'] += 10; $u->rep['add_money'] += 10; @@ -613,14 +613,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif( $_GET['buy1'] == 4 ) { // + }elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -633,7 +633,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; $u->info['nskills'] += 1; $u->rep['add_skills2'] += 1; @@ -645,41 +645,41 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `nskills` = "'.$u->info['nskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : + Награда: rep['allrep']-$u->rep['allnurep'])?> - . + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) rep['add_skills']);?> .Умение (еще rep['add_skills'])?>)за rep['add_skills']);?> ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -695,33 +695,33 @@ onclick="if (confirm(' } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +

            - - + + - - + + - - + +
            Capital city:rep['repcapitalcity']?> .Репутация в Capital city:rep['repcapitalcity']?> ед.
            Demons city:rep['repdemonscity']?> .Репутация в Demons city:rep['repdemonscity']?> ед.
            Angels city:rep['repangelscity']?> .Репутация в Angels city:rep['repangelscity']?> ед.
            - : + Текущая репутация:
            info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -758,14 +758,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -774,7 +774,7 @@ if($u->info['dn']==0) timeOut(60*60*2-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/enterbezdna_shop.php b/modules_data/location/enterbezdna_shop.php index 9b6a9c96..a34c62c8 100644 --- a/modules_data/location/enterbezdna_shop.php +++ b/modules_data/location/enterbezdna_shop.php @@ -25,7 +25,7 @@ if($u->room['file']=='enterbezdna_shop') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -33,9 +33,9 @@ if($u->room['file']=='enterbezdna_shop') '); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -122,30 +122,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -155,14 +155,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -185,16 +185,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "3" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -205,11 +205,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -221,7 +221,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -229,11 +229,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -289,9 +289,9 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> @@ -311,17 +311,17 @@ body

            - +
            - +

            - +
            - +

            @@ -331,7 +331,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -340,7 +340,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -358,19 +358,19 @@ $qx = 0; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_demonscity" LIMIT 1',1); if(isset($_GET['add_quest'])) { if(isset($hgo['id'])) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; }else{ $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = 3'); $dq_add = array(); while($pl = mysql_fetch_array($sp)) { if($u->rep['repdemonscity'] == 9999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } }elseif($u->rep['repdemonscity'] == 24999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -386,43 +386,43 @@ if(isset($_GET['add_quest'])) { if($q->testGood($dq_add)==1) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $hgo['id'] = 1; $u->addAction(time(),'psh_qt_demonscity',$dq_add['id']); }else{ - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } unset($dq_add); } } -// +//Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qx++; } if($qsee == '') { - $qsee = ' '; + $qsee = 'К сожалению у вас нет ни одного задания'; } ?>
            - : [/28] +Текущие задания: [/28]
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).'
            ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?> @@ -430,14 +430,14 @@ if(!isset($hgo['id'])) {
            'capitalcity',2=>'demonscity',3=>'angelscity'); if($_GET['buy1']==1) { - // + //покупаем статы $price = 2000+($u->rep['add_stats']*100); $cur_price = array('price'=>0); - if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // ! + if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // Характеристики! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ @@ -451,7 +451,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; $u->info['ability'] += 1; $u->rep['add_stats'] += 1; @@ -463,14 +463,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif($_GET['buy1']==2) { // ! + } elseif($_GET['buy1']==2) { // Умения! $price = 2000+(2000*$u->rep['add_skills']); $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -483,7 +483,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; $u->info['skills'] += 1; $u->rep['add_skills'] += 1; @@ -495,14 +495,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif($_GET['buy1']==3) { // + }elseif($_GET['buy1']==3) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -515,7 +515,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; $u->info['money'] += 10; $u->rep['add_money'] += 10; @@ -527,14 +527,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif( $_GET['buy1'] == 4 ) { // + }elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -547,7 +547,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; $u->info['nskills'] += 1; $u->rep['add_skills2'] += 1; @@ -559,41 +559,41 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `nskills` = "'.$u->info['nskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : + Награда: rep['allrep']-$u->rep['allnurep'])?> - . + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) rep['add_skills']);?> .Умение (еще rep['add_skills'])?>)за rep['add_skills']);?> ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -609,33 +609,33 @@ onclick="if (confirm(' } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +

            - - + + - - + + - - + +
            Capital city:rep['repcapitalcity']?> . Репутация в Capital city:rep['repcapitalcity']?> ед.
            Demons city:rep['repdemonscity']?> .Репутация в Demons city:rep['repdemonscity']?> ед.
            Angels city:rep['repangelscity']?> . Репутация в Angels city:rep['repangelscity']?> ед.
            - : + Текущая репутация:
            info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -671,14 +671,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -687,7 +687,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/enterdrago.php b/modules_data/location/enterdrago.php index 9f634e5e..94d38d1c 100644 --- a/modules_data/location/enterdrago.php +++ b/modules_data/location/enterdrago.php @@ -2,11 +2,11 @@ if(!defined('GAME')) { die(); } if($u->room['file']=='enterdrago') { -if(isset($_GET['rz'])) $roomSection = 1; // - else $roomSection = 0; // - $error = ''; // . - $dungeonGroupList = ''; // . - $dungeonGo = 1; // , . +if(isset($_GET['rz'])) $roomSection = 1; // Получаем Задание + else $roomSection = 0; // Собираем группу для похода + $error = ''; // Собираем ошибки. + $dungeonGroupList = ''; // Сюда помещаем список Групп. + $dungeonGo = 1; // По умолчанию, мы идем в пещеру. $dungeon = mysql_fetch_assoc( mysql_query('SELECT `id` as room, city, `dungeon_room` as d_room, city, `shop`, `dungeon_id` as id, `dungeon_name` as name FROM `dungeon_room` WHERE `id`="'.$u->room['id'].'" LIMIT 1') ); //var_info($dungeon); @@ -23,17 +23,17 @@ if( $u->info['dn'] > 0 ) { } $dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh'.$dungeon['id'].'" AND `time` > '.(time()-60*60*20).' LIMIT 1',1); -//if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - . -if(isset($dungeon_timeout['id'])) // - , - . +//if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - задержка на посещение пещеры. +if(isset($dungeon_timeout['id'])) // Кто-то передумал и не пойдет в пещеру, так-как уже там был. { $dungeonGo = 0; if(isset($_GET['start'])){ - $error = ' : '.$u->timeOut(60*60*20-time()+$dungeon_timeout['time']); + $error = 'До следующего похода осталось еще: '.$u->timeOut(60*60*20-time()+$dungeon_timeout['time']); } } -if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { // - // +if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { //начинаем поход + //Генирируем случайный поход //$level = $u->info['level']; if( $zv['type'] == 0 ) { $level = 5; @@ -103,40 +103,40 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $objects = array(); if( $rnds[0] == 1 ) { - // + //вход сверху $a[2][1]=0; $a[2][2]=0; $srg = array( 2,1 ); - $objects[2][1] = '
            '; + $objects[2][1] = '
            '; }elseif( $rnds[0] == 2 ) { - // + //вход по центру $a[$k][1]=0; $a[$k][2]=0; $srg = array( $k,1 ); - $objects[$k][1] = '
            '; + $objects[$k][1] = '
            '; }elseif( $rnds[0] == 3 ) { - // + //вход снизу $a[$k*2][1]=0; $a[$k*2][2]=0; $srg = array( $k*2,1 ); - $objects[$k*2][1] = '
            '; + $objects[$k*2][1] = '
            '; } if( $rnds[1] == 1 ) { - // + //вход сверху $a[2][$k*2+1]=0; $a[2][$k*2]=0; - $objects[2][$k*2+1] = '
            '; + $objects[2][$k*2+1] = '
            '; }elseif( $rnds[1] == 2 ) { - // + //вход по центру $a[$k][$k*2+1]=0; $a[$k][$k*2]=0; - $objects[$k][$k*2+1] = '
            '; + $objects[$k][$k*2+1] = '
            '; }elseif( $rnds[1] == 3 ) { - // + //вход снизу $a[$k*2][$k*2+1]=0; $a[$k*2][$k*2]=0; - $objects[$k*2][$k*2+1] = '
            '; + $objects[$k*2][$k*2+1] = '
            '; } //$a[1][2]=0; //$a[$k*2+1][$k*2]=0; // Draw entrance and exit. @@ -198,7 +198,7 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / } info['id'] && $dungeonGo == 1 ) { / $i++; } - // (XX %) + //Раскидываем обьекты (XX %) /* - $proc1 = 10; // % - $proc2 = 15; // % - $proc3 = 10; // % - $proc4 = 5; // % - $proc5 = 2; // % */ - $proc1 = round(1.7*$level); // % - $proc2 = round(2.5*$level); // % - $proc3 = round(1.35*$level); // % - $proc4 = round(0.5*$level); // % - $proc5 = round(0.1*$level); // % + $proc1 = 10; //Сколько % занимают сундуки + $proc2 = 15; //Сколько % занимают монстры + $proc3 = 10; //Сколько % занимают хилки + $proc4 = 5; //Сколько % занимают ловушки + $proc5 = 2; //Сколько % занимают пандоры*/ + $proc1 = round(1.7*$level); //Сколько % занимают сундуки + $proc2 = round(2.5*$level); //Сколько % занимают монстры + $proc3 = round(1.35*$level); //Сколько % занимают хилки + $proc4 = round(0.5*$level); //Сколько % занимают ловушки + $proc5 = round(0.1*$level); //Сколько % занимают пандоры // $proc1 = round($proc1/2); $proc1 = round(count($map)/100*$proc1); @@ -240,7 +240,7 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $usi = 0; - // + //Сохраняем карту mysql_query('INSERT INTO `laba_now` ( `time`,`uid`,`users`,`map_id`,`end`,`type` ) VALUES ( "'.time().'","'.$u->info['id'].'","-1","0","0","'.$zv['type'].'" )'); @@ -267,19 +267,19 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $cord = $map[rand(0,count($map)-1)]; $obj = ''; if( $i == 1 ) { - // + //сундуки $obj = 'ddp1s'; }elseif( $i == 2 ) { - // + //монстры $obj = 'ddp1m'; }elseif( $i == 3 ) { - // + //хилки $obj = 'ddp1h'; }elseif( $i == 4 ) { - // + //ловушки $obj = 'ddp1l'; }elseif( $i == 5 ) { - // + //пандора $obj = 'ddp1p'; } $test = mysql_fetch_assoc(mysql_query(' SELECT id FROM `laba_obj` WHERE `img`="'.$obj.'" AND `x`= "'.$cord[0].'" AND `y`= "'.$cord[1].'" AND `lib` = "'.$ding.'" ')); @@ -298,7 +298,7 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / die(''); - // + //Генирация карты /* $i = 1; while( $i < count($a) - 1 ) { @@ -321,35 +321,35 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `id`="'.mysql_real_escape_string($_POST['goid']).'" AND `delete` = "0" LIMIT 1')); if(isset($zv['id']) && $u->info['dn'] == 0){ if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $error = ' '; + $error = 'Вы ввели неправильный пароль'; }elseif($u->info['level'] > 3 && $u->info['level'] == $zv['lvlmin']){ $row = 0; if(4 > $row){ $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $error = ' '; + $error = 'В группе нет места'; unset($zv); } }else{ - $error = ' '; + $error = 'Вы не подходите по уровню'; unset($zv); } }else{ - $error = ' '; + $error = 'Заявка не найдена'; } }else{ - $error = ' '; + $error = 'Вы уже находитесь в группе'; } }elseif( isset($_POST['leave']) && isset($zv['id']) && $dungeonGo == 1 ) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])){ $zv['uid'] = $ld['id']; @@ -358,14 +358,14 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -380,11 +380,11 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $_POST['type_gors'] = 0; } if( $_POST['type_gors'] == 2 && ($u->info['level'] < 9 || $u->rep['rep3'] < 20000) ) { - $error = ' 8-
            - 20000 !'; + $error = 'Создавать турниры для Легендарных могут персонажи страше 8-го уровня
            Так-же у персонажа должно быть более 20000 воинственности!'; }elseif( $_POST['type_gors'] == 1 && $u->info['level'] < 8 ) { - $error = ' 7- '; + $error = 'Создавать турниры для Опытных могут персонажи страше 7-го уровня'; }elseif( $_POST['type_gors'] == 0 && $u->info['level'] > 7 ) { - $error = ' 8- '; + $error = 'Создавать турниры для Новичков могут персонажи младше 8-го уровня'; }else{ $ins = mysql_query('INSERT INTO `dungeon_zv` (`city`,`time`,`uid`,`dun`,`pass`,`com`,`lvlmin`,`lvlmax`,`team_max`,`type`) VALUES @@ -401,21 +401,21 @@ if( isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1 ) { / $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' '; + $error = 'Вы успешно создали группу'; }else{ - $error = ' '; + $error = 'Не удалось создать группу'; } } }else{ - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $pltype = array( - 0 => '', - 1 => '', - 2 => '' + 0 => 'Новичок', + 1 => 'Опытный', + 2 => 'Старый' ); $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `lvlmin` = "'.$u->info['level'].'" AND `dun` = "'.$dungeon['id'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); @@ -424,11 +424,11 @@ while( $pl = mysql_fetch_array( $sp ) ) { $dungeonGroupList .= '
            '; if( $u->info['dn'] == 0 ) $dungeonGroupList .= ''; $dungeonGroupList .= ''.date('H:i',$pl['time']).' '; - $dungeonGroupList .= ': '.$pltype[$pl['type']].' | '; - $pus = ''; // + $dungeonGroupList .= 'Тип: '.$pltype[$pl['type']].' | '; + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while( $pu = mysql_fetch_array( $su ) ) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim( $pus, ', ' ); @@ -438,18 +438,18 @@ while( $pl = mysql_fetch_array( $sp ) ) { if( $pl['pass'] != '' && $u->info['dn'] == 0 ) $dungeonGroupList .= ' '; if( $pl['com'] != '' ) { $dl = ''; - // , . + // Если модератор, даем возможность удалять комментарий к походу. $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); if( ( $moder['boi'] == 1 || $u->info['admin'] > 0 ) && $pl['dcom'] == 0 ){ - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if( isset( $_GET['delcom'] ) && $_GET['delcom'] == $pl['id'] && $u->newAct( $_GET['key'] ) == true ) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['dcom'] = $u->info['id']; } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if( $pl['dcom'] > 0 ) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if( $pl['dcom'] > 0 ) { if( $moder['boi'] == 1 || $u->info['admin'] > 0 ) { @@ -484,7 +484,7 @@ body

            room['name']; ?>

            - , ( ) - . , 3 . + Если вы не найдете выход из пещеры, то любые найденные вами ресурсы (даже в предыдущих походах) - исчезнут. То же самое, если вы умрёте 3 раза.
            @@ -510,9 +510,9 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> @@ -532,16 +532,16 @@ body

            - +
            - +

            - - ?> + + ?>

            @@ -551,7 +551,7 @@ if($error!='') echo ''.$error.'
            '; } -// +//отображаем if($dungeonGroupList=='') { $dungeonGroupList = ''; @@ -560,7 +560,7 @@ if($dungeonGroupList=='') { if($dungeonGo==1 || $u->info['dn'] == 0) { - $pr = ''; + $pr = ''; } $dungeonGroupList = ''.$pr.'
            '.$dungeonGroupList.''.$pr.''; } @@ -576,30 +576,30 @@ if($roomSection==0) { echo $dungeonGroupList; } $qsee = ''; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.$dungeon['city'].'" LIMIT 1',1); $qc=0; // Quest Count - // + //Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while( $pl = mysql_fetch_array( $sp ) ) { if($pl['room'] == $u->info['room']){ $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ''.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ''.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qc++; } } if( isset( $_GET['add_quest'] ) && $qc == 0 ) { if( isset( $hgo['id'] ) ) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; } else { $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = '.$dungeon['id'].''); $dq_add = array(); while( $pl = mysql_fetch_array( $sp ) ) { if( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } } elseif( $u->rep['rep'.$dungeon['city']] == 19999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -615,43 +615,43 @@ if($roomSection==0) { echo $dungeonGroupList; } if( $q->testGood($dq_add) == 1 && $dq_add > 0 ) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $u->addAction(time(),'psh_qt_'.$dungeon['city'],$dq_add['id']); } else { if ( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, - echo ' !
            '; + //квест, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; } elseif( $u->rep['rep'.$dungeon['city']] == 19999 ) { - //, - echo ' , !
            '; + //квест, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; } else { - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset( $dq_add ); } } elseif( isset( $_GET['add_quest'] ) && $qc > 0 ) { - echo '- ... ..


            '; + echo 'Что-то пошло не так... осторожнее..


            '; } if( $qsee == '' ) { - $qsee = '

            '; + $qsee = 'К сожалению у вас нет ни одного задания

            '; } ?>
            - : + Текущие задания: 0 ){ - echo ' .'; + echo 'Вы еще не справились с текущим заданием.'; } elseif( !isset( $hgo['id'] ) && $qc == 0 ) { ?>
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?>
            @@ -660,14 +660,14 @@ if($roomSection==0) { echo $dungeonGroupList; }
            rep['add_stats']*100); $cur_price = array('price'=>0); - if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! + if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // Характеристики! foreach( $dungeon['list'] as $key => $val ) { if( !( $cur_price['price'] >= $price ) ) { if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -690,18 +690,18 @@ if($roomSection==0) { echo $dungeonGroupList; } $u->info['ability'] += 1; $u->rep['add_stats'] += 1; mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 2 ) { // ! + } elseif( $_GET['buy1'] == 2 ) { // Умения! $price = 2000+(2000*$u->rep['add_skills']); $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -724,18 +724,18 @@ if($roomSection==0) { echo $dungeonGroupList; } $u->info['skills'] += 1; $u->rep['add_skills'] += 1; mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 3 ) { // + } elseif( $_GET['buy1'] == 3 ) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -757,18 +757,18 @@ if($roomSection==0) { echo $dungeonGroupList; } $u->info['money'] += 10; $u->rep['add_money'] += 10; mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 4 ) { // + } elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -791,44 +791,44 @@ if($roomSection==0) { echo $dungeonGroupList; } $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : rep['allrep']-$u->rep['allnurep'])?> . + Награда: rep['allrep']-$u->rep['allnurep'])?> ед.
            - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) rep['add_skills']);?> .Умение (еще rep['add_skills'])?>)за rep['add_skills']);?> ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -844,37 +844,37 @@ if($roomSection==0) { echo $dungeonGroupList; } } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +

            - - + + - - + + - - + + - - + +
            Dragons city:rep['repdragonscity']?> .Репутация в Dragons city:rep['repdragonscity']?> ед.
            Capital city:rep['repcapitalcity']?> .Репутация в Capital city:rep['repcapitalcity']?> ед.
            Demons city:rep['repdemonscity']?> .Репутация в Demons city:rep['repdemonscity']?> ед.
            Angels city:rep['repangelscity']?> .Репутация в Angels city:rep['repangelscity']?> ед.
            - : + Текущая репутация:
            - - : + Группа + Тип похода:
            - + Комментарий
            - + Пароль
            - +  
            @@ -915,20 +915,20 @@ if($roomSection==0) { echo $dungeonGroupList; } { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } } } else { - echo ' . : '.$u->timeOut(60*60*20-time()+$dungeon_timeout['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в двадцать часов. Осталось еще: '.$u->timeOut(60*60*20-time()+$dungeon_timeout['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/entergrib.php b/modules_data/location/entergrib.php index de6e4bcc..03a621a2 100644 --- a/modules_data/location/entergrib.php +++ b/modules_data/location/entergrib.php @@ -13,14 +13,14 @@ if(isset($_GET['rz'])) { $rz = 0; } -$dun = 10; // 2-7 +$dun = 10; //для новичков 2-7 лвл $er = ''; $dzs = ''; $g111 = 1; -// +//Задержка в Санд $g11 = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh2" AND `time`>'.(time()-7200).' LIMIT 1',1); $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); @@ -40,24 +40,24 @@ if(isset($g11['id'])) $g111 = 0; if(isset($_GET['start'])) { - $re = ' . : '.$u->timeOut(7200-time()+$g11['time']); + $re = 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh2',''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","Катакомбы","'.time().'")'); if($ins) { $zid = mysql_insert_id(); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; while($pu = mysql_fetch_array($su)) @@ -70,8 +70,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "305" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dun - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dun + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -80,7 +80,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -99,13 +99,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -123,30 +123,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -156,14 +156,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -186,16 +186,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "3" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -206,11 +206,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -222,7 +222,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -230,11 +230,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -282,7 +282,7 @@ body - +
            Центральная площадь
            @@ -300,17 +300,17 @@ body

            - +
            - +

            - +
            - +

            @@ -320,7 +320,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -329,7 +329,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -347,7 +347,7 @@ $qx = 0; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_allcity" LIMIT 1',1); if(isset($_GET['add_quest'])) { if(isset($hgo['id'])) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; }else{ $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = 4'); @@ -361,43 +361,43 @@ if(isset($_GET['add_quest'])) { if($q->testGood($dq_add)==1) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $hgo['id'] = 1; $u->addAction(time(),'psh_qt_allcity',$dq_add['id']); }else{ - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } unset($dq_add); } } -// +//Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qx++; } if($qsee == '') { - $qsee = ' '; + $qsee = 'К сожалению у вас нет ни одного задания'; } ?>
            - : [/28] +Текущие задания: [/28]
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?>
            @@ -405,87 +405,87 @@ if(!isset($hgo['id'])) {
            rep['add_stats']>0 && $u->rep['repsuncity']-$u->rep['nu_suncity']>=2000) { - echo ' 1 2000 .
            '; + echo 'Вы успешно приобрели 1 способность за 2000 ед. награды
            '; $u->info['ability'] += 1; $u->rep['nu_suncity'] += 2000; $u->rep['add_stats'] += 1; mysql_query('UPDATE `rep` SET `add_stats` = `add_stats`+1,`nu_suncity` = "'.$u->rep['nu_suncity'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } }elseif($_GET['buy1']==2) { - // + //покупаем статы if(10-$u->rep['add_skills']>0 && $u->rep['repsuncity']-$u->rep['nu_suncity']>=2000) { - echo ' 1 2000 .
            '; + echo 'Вы успешно приобрели 1 умение за 2000 ед. награды
            '; $u->info['skills'] += 1; $u->rep['nu_suncity'] += 2000; $u->rep['add_skills'] += 1; mysql_query('UPDATE `rep` SET `add_skills` = `add_skills`+1,`nu_suncity` = "'.$u->rep['nu_suncity'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } }elseif($_GET['buy1']==3) { - // + //покупаем статы if($u->rep['repsuncity']-$u->rep['nu_suncity']>=100) { - echo ' 10 . 100 .
            '; + echo 'Вы успешно приобрели 10 кр. за 100 ед. награды
            '; $u->info['money'] += 10; $u->rep['nu_suncity'] += 100; $u->rep['add_money'] += 10; mysql_query('UPDATE `rep` SET `add_money` = `add_money`+10,`nu_suncity` = "'.$u->rep['nu_suncity'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } }elseif($_GET['buy1']==4) { - // + //покупаем статы if(5-$u->rep['add_skills2']>0 && $u->rep['repsuncity']-$u->rep['nu_suncity']>=3000) { - echo ' 1 3000 .
            '; + echo 'Вы успешно приобрели 1 особенность за 3000 ед. награды
            '; $u->info['nskills'] += 1; $u->rep['nu_suncity'] += 3000; $u->rep['add_skills2'] += 1; mysql_query('UPDATE `rep` SET `add_skills2` = `add_skills2`+1,`nu_suncity` = "'.$u->rep['nu_suncity'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `nskills` = "'.$u->info['nskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : + Награда: rep['repsuncity']-$u->rep['nu_suncity'])?> - . + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) 2000 .Способность (еще rep['add_stats'])?>)за 2000 ед.
            ( rep['add_skills'])?>) 2000 .Умение (еще rep['add_skills'])?>)за 2000 ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -501,19 +501,19 @@ onclick="if (confirm(' } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +


            - Sun city: rep['repsuncity']?> + Репутация в Sun city: rep['repsuncity']?>
            info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -549,14 +549,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -565,7 +565,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/enternekro.php b/modules_data/location/enternekro.php index 3ffca8bc..93e99642 100644 --- a/modules_data/location/enternekro.php +++ b/modules_data/location/enternekro.php @@ -7,7 +7,7 @@ if(!defined('GAME')) if($u->room['file']=='enternekro') { -$dun = 11; // 2-7 +$dun = 11; //для новичков 2-7 лвл $er = ''; @@ -33,24 +33,24 @@ if(isset($g11['id'])) $g111 = 0; if(isset($_GET['start'])) { - $re = ' . : '.$u->timeOut(7200-time()+$g11['time']); + $re = 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh1',''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","Бездна","'.time().'")'); if($ins) { $zid = mysql_insert_id(); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; while($pu = mysql_fetch_array($su)) @@ -63,8 +63,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "297" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dun - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dun + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -73,7 +73,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -92,13 +92,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -116,30 +116,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -149,14 +149,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -169,7 +169,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $lmx = 21; $tmx = 5; - // + //только своего уровня $lmn = $u->info['level']; $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -186,16 +186,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -206,11 +206,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -222,7 +222,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -230,11 +230,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -280,7 +280,7 @@ body - +
            Вход в подземелье
            @@ -298,7 +298,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -307,7 +307,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -325,14 +325,14 @@ if($u->info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -346,14 +346,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -362,7 +362,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } diff --git a/modules_data/location/enternizin.php b/modules_data/location/enternizin.php index 18313fc1..e18f50d9 100644 --- a/modules_data/location/enternizin.php +++ b/modules_data/location/enternizin.php @@ -42,25 +42,25 @@ if(isset($g11['id'])) $g111 = 0; if(isset($_GET['start'])) { - $re = ' : '.$u->timeOut(60*60*2-time()+$g11['time']); + $re = 'До следующего похода осталось еще: '.$u->timeOut(60*60*2-time()+$g11['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh444',''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","Низины","'.time().'")'); if($ins) { $zid = mysql_insert_id(); mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; @@ -77,7 +77,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $ppx++; $ids .= ' `id` = "'.$pu['id'].'" OR'; $u->addAction(time(),'psh444','',$pu['id']); - // + //Добавляем квестовые обьекты для персонажей $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$pu['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); //$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); while($pl2 = mysql_fetch_array($sp)) @@ -88,11 +88,11 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $i = 0; while( $i < count($act) ) { $xr = explode(':=:',$act[$i]); - // + //Сбор ресурсов if( $xr[0] == 'tk_itm' ) { $xr2 = explode('=',$xr[1]); if( $xr2[2] == 0 ) { - // + //Добавляем обьект для юзера $j = 0; while( $j < $xr2[1] ) { $cord = $map_locs[rand(0,count($map_locs)-1)]; @@ -104,7 +104,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $j++; } }else{ - // + //Предмет находится в конкретном месте mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( "'.$zid.'","'.$pu['id'].'","'.$xr2[0].'","'.time().'","'.$xr2[2].'","'.$xr2[3].'","'.$pu['id'].'","'.$pl['id'].'" )'); @@ -122,8 +122,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "360" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dun - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dun + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -132,23 +132,23 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) { $vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),'; } - // ( ) + //Добавление обьектов (день святого валентина) if( floor(date('m')) == 2 && floor(date('d')) >= 7 && $u->info['admin'] > 0 ) { - // ( ) + //Раскидываем предметы по пещере (Блёклый подземник) $i = 1; while($i <= $ppx) { $j = rand(1,3); while( $j >= 0 ) { $rndx = 0; $rndy = 0; - $vls .= '("'.$zid.'"," ","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:444/vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; + $vls .= '("'.$zid.'","Блеклый подземник","vbig1.gif","'.$rndx.'","'.$rndy.'","fileact:444/vbig1","0","81","81","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt2:154,rl2:146,rt3:139,rl3:154,rt4:125,rl4:161}"),'; $j--; } $i++; @@ -166,13 +166,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -183,7 +183,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if(isset($zv['id']) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $re = ' '; + $re = 'Вы ввели неправильный пароль'; }elseif($u->info['level'] > 7) { $row = 0; @@ -192,30 +192,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -225,14 +225,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -255,16 +255,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "444" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -275,11 +275,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -295,7 +295,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -303,11 +303,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -363,9 +363,9 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> @@ -385,17 +385,17 @@ body

            - +
            - +

            - +
            - +

            @@ -405,7 +405,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -414,7 +414,7 @@ if($dzs=='') { if($g111==1 || $u->info['dn'] == 0) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -432,19 +432,19 @@ $qx = 0; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_angelscity" LIMIT 1',1); if(isset($_GET['add_quest'])) { if(isset($hgo['id'])) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; }else{ $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = 444'); $dq_add = array(); while($pl = mysql_fetch_array($sp)) { if($u->rep['repangelscity'] == 9999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } }elseif($u->rep['repangelscity'] == 24999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -460,51 +460,51 @@ if(isset($_GET['add_quest'])) { if($q->testGood($dq_add)==1 && $dq_add > 0) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $hgo['id'] = 1; $u->addAction(time(),'psh_qt_angelscity',$dq_add['id']); }else{ if($u->rep['repangelscity'] == 9999) { - //, - echo ' !
            '; + //квет, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; }elseif($u->rep['repangelscity'] == 24999) { - //, - echo ' , !
            '; + //квет, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; }else{ - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset($dq_add); } } -// +//Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qx++; } if($qsee == '') { - $qsee = ' '; + $qsee = 'К сожалению у вас нет ни одного задания'; } ?>
            - : [/28] +Текущие задания: [/28]
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?>
            @@ -512,14 +512,14 @@ if(!isset($hgo['id'])) {
            'capitalcity',2=>'demonscity',3=>'angelscity'); if($_GET['buy1']==1) { - // + //покупаем статы $price = 2000+($u->rep['add_stats']*100); $cur_price = array('price'=>0); - if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // ! + if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // Характеристики! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ @@ -533,7 +533,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; $u->info['ability'] += 1; $u->rep['add_stats'] += 1; @@ -545,14 +545,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif($_GET['buy1']==2) { // ! + } elseif($_GET['buy1']==2) { // Умения! $price = 2000+(2000*$u->rep['add_skills']); $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -565,7 +565,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; $u->info['skills'] += 1; $u->rep['add_skills'] += 1; @@ -577,14 +577,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif($_GET['buy1']==3) { // + }elseif($_GET['buy1']==3) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -597,7 +597,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; $u->info['money'] += 10; $u->rep['add_money'] += 10; @@ -609,14 +609,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif( $_GET['buy1'] == 4 ) { // + }elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -629,7 +629,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; $u->info['nskills'] += 1; $u->rep['add_skills2'] += 1; @@ -641,41 +641,41 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `nskills` = "'.$u->info['nskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : + Награда: rep['allrep']-$u->rep['allnurep'])?> - . + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) rep['add_skills']);?> .Умение (еще rep['add_skills'])?>)за rep['add_skills']);?> ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -691,33 +691,33 @@ onclick="if (confirm(' } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +

            - - + + - - + + - - + +
            Capital city:rep['repcapitalcity']?> .Репутация в Capital city:rep['repcapitalcity']?> ед.
            Demons city:rep['repdemonscity']?> .Репутация в Demons city:rep['repdemonscity']?> ед.
            Angels city:rep['repangelscity']?> .Репутация в Angels city:rep['repangelscity']?> ед.
            - : + Текущая репутация:
            info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -754,14 +754,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -770,7 +770,7 @@ if($u->info['dn']==0) timeOut(60*60*2-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/enterptp.php b/modules_data/location/enterptp.php index 284843d0..00c21ec4 100644 --- a/modules_data/location/enterptp.php +++ b/modules_data/location/enterptp.php @@ -6,26 +6,26 @@ if(!defined('GAME')) if($u->room['file']=='enterptp'){ -if(isset($_GET['rz'])) $roomSection = 1; // - else $roomSection = 0; // +if(isset($_GET['rz'])) $roomSection = 1; // Получаем Задание + else $roomSection = 0; // Собираем группу для похода $dun = 0; /* - if($u->room['id']==372){ $dun = 12; } // , CapitalCity -elseif($u->room['id']==369){ $dun = 102; } // , -elseif($u->room['id']==354){ $dun = 101; } // , AngelsCity -elseif($u->room['id']==293){ $dun = 3; } // , DemonsCity -elseif($u->room['id']==296){ $dun = 11; } // , 2-7 -elseif($u->room['id']==18){ $dun = 10; } // , 2-7 SandCity -elseif($u->room['id']==209){ $dun = 20; } // , -elseif($u->room['id']==188){ $dun = 1; } // + if($u->room['id']==372){ $dun = 12; } // Вход в Пещеру Тысячи Проклятий , CapitalCity +elseif($u->room['id']==369){ $dun = 102; } // Вход в подземелье Драконов, +elseif($u->room['id']==354){ $dun = 101; } // Вход в Бездну , AngelsCity +elseif($u->room['id']==293){ $dun = 3; } // Вход в Катакомбы , DemonsCity +elseif($u->room['id']==296){ $dun = 11; } // Вход в Некровиль , для новичков 2-7 лвл +elseif($u->room['id']==18){ $dun = 10; } // Вход в Грибницу , для новичков 2-7 лвл SandCity +elseif($u->room['id']==209){ $dun = 20; } // Вход в Ледяную пещеру, +elseif($u->room['id']==188){ $dun = 1; } // Вход в Вход в канализацию */ $dungeon = mysql_fetch_assoc(mysql_query('SELECT `id` as room, `dungeon_id` as id, `dungeon_name` as name FROM `dungeon_room` WHERE `id`="'.$u->room['id'].'" LIMIT 1')); $dungeon['list'] = array( - // , . - // , `rep`. - // - , __user.php , \, . - // , , , - . - capitalcity. + // список подземелий, которые используются для вычита используемой репутации. + // При добавлении в список нового города, следует проверить наличие ячеек в таблице `rep`. + // Так-же следует помнить, что в __user.php в выводе инвентаря, некоторых подземелий\городов, нету. + // Да и вообще, херня получается, что наши подземелья считаются как Город, то есть два подземелья на город - технически нет такого. Так-как ПТП это capitalcity. 1=>'capitalcity', 2=>'demonscity', 3=>'angelscity', @@ -33,11 +33,11 @@ $dungeon['list'] = array( 5=>'suncity'); -$er = ''; // . -$dungeonGroupList = ''; // . -$dungeonGo = 1; // , . +$er = ''; // Собираем ошибки. +$dungeonGroupList = ''; // Сюда помещаем список Групп. +$dungeonGo = 1; // По умолчанию, мы идем в пещеру. -if($u->info['dn']>0){ // , ! +if($u->info['dn']>0){ // Если ты пошел гулять, так иди и гуляй! $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `id`="'.$u->info['dn'].'" AND `delete` = "0" LIMIT 1')); if(!isset($zv['id'])){ mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -45,32 +45,32 @@ if($u->info['dn']>0){ // } } -$dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh'.$dungeon['id'].'" AND `time` > '.(time()-60*60*2).' LIMIT 1',1); // - ? -// if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - . -if(isset($dungeon_timeout['id'])) // - , - . +$dungeon_timeout = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "psh'.$dungeon['id'].'" AND `time` > '.(time()-60*60*2).' LIMIT 1',1); // Проверка - последний визит? +// if($u->info['admin']>0) unset($dungeon_timeout); // $dungeon_timeout - задержка на посещение пещеры. +if(isset($dungeon_timeout['id'])) // Кто-то передумал и не пойдет в пещеру, так-как уже там был. { $dungeonGo = 0; if(isset($_GET['start'])) { - $re = ' : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']); + $re = 'До следующего похода осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh'.$dun,''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dungeon['id'].'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dungeon['id'].'","Бездна","'.time().'")'); if($ins) { $zid = mysql_insert_id(); mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; @@ -85,7 +85,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ { $ids .= ' `id` = "'.$pu['id'].'" OR'; $u->addAction(time(),'psh'.$dungeon['id'],'',$pu['id']); - // + //Добавляем квестовые обьекты для персонажей $sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u->info['id'].'" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100'); while($pl2 = mysql_fetch_array($sp)) { @@ -95,11 +95,11 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ $i = 0; while( $i < count($act) ) { $xr = explode(':=:',$act[$i]); - // + //Сбор ресурсов if( $xr[0] == 'tk_itm' ) { $xr2 = explode('=',$xr[1]); if( $xr2[2] == 0 ) { - // + //Добавляем обьект для юзера $j = 0; while( $j < $xr2[1] ) { $cord = $map_locs[rand(0,count($map_locs)-1)]; @@ -111,7 +111,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ $j++; } }else{ - // + //Предмет находится в конкретном месте mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`onlyfor`,`quest`) VALUES ( "'.$zid.'","'.$u->info['id'].'","'.$xr2[0].'","'.time().'","'.$xr2[2].'","'.$xr2[3].'","'.$u->info['id'].'","'.$pl['id'].'" )'); @@ -129,8 +129,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "374" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dungeon['id'] - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dungeon['id'] + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dungeon['id'].'"'); while($pl = mysql_fetch_array($sp)) @@ -139,7 +139,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dungeon['id'].'"'); while($pl = mysql_fetch_array($sp)) @@ -157,13 +157,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ { die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $dungeonGo==1) @@ -174,7 +174,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ if(isset($zv['id']) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $re = ' '; + $re = 'Вы ввели неправильный пароль'; }elseif($u->info['level'] > 7) { $row = 0; @@ -183,30 +183,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $dungeonGo == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -216,14 +216,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -245,26 +245,26 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $dungeonGo == 1){ $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "'.$dungeon['id'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)){ $dungeonGroupList .= '
            '; if($u->info['dn']==0) $dungeonGroupList .= ''; $dungeonGroupList .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)){ - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -276,11 +276,11 @@ while($pl = mysql_fetch_array($sp)){ if($pl['com']!='') { $dl = ''; - // , . + // Если модератор, даем возможность удалять комментарий к походу. $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -288,11 +288,11 @@ while($pl = mysql_fetch_array($sp)){ } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -348,15 +348,15 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> - + Рыцарский магазин @@ -374,24 +374,24 @@ body

            - +
            - +

            - +
            - +

            '.$re.'
            '; -// +//отображаем if($dungeonGroupList=='') { $dungeonGroupList = ''; @@ -400,7 +400,7 @@ if($dungeonGroupList=='') { if($dungeonGo==1 || $u->info['dn'] == 0) { - $pr = ''; + $pr = ''; } $dungeonGroupList = '
            '.$pr.'
            '.$dungeonGroupList.''.$pr.'
            '; } @@ -421,11 +421,11 @@ $qx = 0; //} if(isset($_GET['add_quest'])){ if(isset($hgo['id'])) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; } else { //if($u->info['admin']>0){ -// $sp = mysql_query('SELECT * FROM `quests` WHERE `id` = "236" && `tr_date` LIKE "%tr_dn:=:'.$dun.'%"'); // +// $sp = mysql_query('SELECT * FROM `quests` WHERE `id` = "236" && `tr_date` LIKE "%tr_dn:=:'.$dun.'%"'); // Только дашку //} else { $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = '.$dungeon['id'].''); //} @@ -433,12 +433,12 @@ if(isset($_GET['add_quest'])){ $dq_add = array(); while($pl = mysql_fetch_array($sp)) { if($u->rep['repcapitalcity'] == 9999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } } elseif($u->rep['repcapitalcity'] == 24999) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -455,50 +455,50 @@ if(isset($_GET['add_quest'])){ if( $q->testGood($dq_add) == 1 && $dq_add > 0 ) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $u->addAction(time(),'psh_qt_capitalcity',$dq_add['id']); } else { if( $u->rep['repcapitalcity'] == 9999 ) { - //, - echo ' !
            '; + //квет, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; }elseif( $u->rep['repcapitalcity'] == 24999 ) { - //, - echo ' , !
            '; + //квет, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; }else{ - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset($dq_add); } } -// +//Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while($pl = mysql_fetch_array($sp)) { $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; + $qsee .= ' '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).'

            '; $qx++; } if($qsee == '') { - $qsee = ' '; + $qsee = 'К сожалению у вас нет ни одного задания'; } ?>
            - : [/28] +Текущие задания: [/28]
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?>
            @@ -506,13 +506,13 @@ if(!isset($hgo['id'])) {
            rep['add_stats']*100); $cur_price = array('price'=>0); - if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // ! + if(25-$u->rep['add_stats']>0 && $u->rep['allrep']-$u->rep['allnurep']>=$price) { // Характеристики! foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ @@ -526,7 +526,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; $u->info['ability'] += 1; $u->rep['add_stats'] += 1; @@ -538,14 +538,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif($_GET['buy1']==2) { // ! + } elseif($_GET['buy1']==2) { // Умения! $price = 2000+(2000*$u->rep['add_skills']); $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -558,7 +558,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; $u->info['skills'] += 1; $u->rep['add_skills'] += 1; @@ -570,14 +570,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif($_GET['buy1']==3) { // + }elseif($_GET['buy1']==3) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -590,7 +590,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; $u->info['money'] += 10; $u->rep['add_money'] += 10; @@ -602,14 +602,14 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - }elseif( $_GET['buy1'] == 4 ) { // + }elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon['list'] as $key=>$val){ if(!($cur_price['price'] >= $price)){ if( $u->rep['rep'.$val] - $u->rep['nu_'.$val] > $price ){ @@ -622,7 +622,7 @@ if(!isset($hgo['id'])) { } } if($price==$cur_price['price']) { - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; @@ -634,48 +634,48 @@ if(!isset($hgo['id'])) { } mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - } else echo ' .'; + } else echo 'Недостаточно репутации.'; - // echo ' 1 3000 .
            '; + // echo 'Вы успешно приобрели 1 особенность за 3000 ед. награды
            '; // $u->info['nskills'] += 1; // $u->rep['nu_capitalcity'] += 3000; // $u->rep['add_skills2'] += 1; // mysql_query('UPDATE `rep` SET `add_skills2` = `add_skills2`+1,`nu_capitalcity` = "'.$u->rep['nu_capitalcity'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); // mysql_query('UPDATE `stats` SET `nskills` = "'.$u->info['nskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : + Награда: rep['allrep']-$u->rep['allnurep'])?> - . + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) rep['add_skills']);?> .Умение (еще rep['add_skills'])?>)за rep['add_skills']);?> ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.

            @@ -691,33 +691,33 @@ onclick="if (confirm(' } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; } if($chk[0]>0) { ?> - +

            - - + + - - + + - - + +
            Capital city:rep['repcapitalcity']?> . Репутация в Capital city:rep['repcapitalcity']?> ед.
            Demons city:rep['repdemonscity']?> . Репутация в Demons city:rep['repdemonscity']?> ед.
            Angels city:rep['repangelscity']?> . Репутация в Angels city:rep['repangelscity']?> ед.
            - : + Текущая репутация:
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -749,19 +749,19 @@ onclick="if (confirm(' $psh_start = ''; if(isset($zv['id'])){ if($zv['uid']==$u->info['id']){ - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } } }else{ - echo ' . : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } } diff --git a/modules_data/location/enterptp_shop.php b/modules_data/location/enterptp_shop.php index dde0ee5c..c23bd2df 100644 --- a/modules_data/location/enterptp_shop.php +++ b/modules_data/location/enterptp_shop.php @@ -26,7 +26,7 @@ if($u->room['file']=='enterptp_shop') //$re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].''); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -34,9 +34,9 @@ if($u->room['file']=='enterptp_shop') '); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -117,30 +117,30 @@ if(isset($_GET['start']) && $zv_dn['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv_dn['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv_dn); }else{ $u->info['dn'] = $zv_dn['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv_dn); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv_dn); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv_dn['id']) && $g111 == 1) { if($zv_dn['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv_dn['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -150,14 +150,14 @@ if(isset($_GET['start']) && $zv_dn['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv_dn); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv_dn['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv_dn); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv_dn); @@ -170,7 +170,7 @@ if(isset($_GET['start']) && $zv_dn['uid']==$u->info['id'] && $g111 == 1) $lmx = 21; $tmx = 5; - // + //только своего уровня $lmn = $u->info['level']; $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -187,16 +187,16 @@ if(isset($_GET['start']) && $zv_dn['uid']==$u->info['id'] && $g111 == 1) $zv_dn['id'] = $u->info['dn']; $zv_dn['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `dun` = "'.$dun.'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -207,11 +207,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -223,7 +223,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -231,11 +231,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -281,7 +281,7 @@ body - +
            Елка
            @@ -299,7 +299,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -308,7 +308,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = '
            '.$pr.'
            '.$dzs.''.$pr.'
            '; } @@ -326,14 +326,14 @@ if($u->info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -347,14 +347,14 @@ if($u->info['dn']==0) { if($zv_dn['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -363,7 +363,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } diff --git a/modules_data/location/fe/bk.php b/modules_data/location/fe/bk.php index f9818c6d..4e8267ce 100644 --- a/modules_data/location/fe/bk.php +++ b/modules_data/location/fe/bk.php @@ -22,7 +22,7 @@ if($u->room['file']=='fe/bk')
            -
            +
            onClick="location='main.php?loc=1.180.0.7';" onMouseOver="this.className='aFilterhover';" onMouseOut="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_klub6.gif" width="123" height="30" class="aFilter" />
            onClick="location='main.php?loc=5.180.0.309';" onMouseOver="this.className='aFilterhover';" onMouseOut="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_klub4.gif" width="123" height="31" class="aFilter" />
            @@ -40,32 +40,32 @@ if($u->room['file']=='fe/bk') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/fe/cp.php b/modules_data/location/fe/cp.php index 850a5752..a79095d3 100644 --- a/modules_data/location/fe/cp.php +++ b/modules_data/location/fe/cp.php @@ -14,13 +14,13 @@ if($u->room['file']=='fe/cp') { if(date("H")>=6 && date("H")<22) { - $tattack = ' 22 6 .'; + $tattack = 'Нападение доступно с 22 до 6 ч.'; } else { if(isset($_POST['attack'])) { $magic->magicCentralAttack(); } - $tattack = ''; + $tattack = 'Напасть'; } } ?> @@ -43,7 +43,7 @@ if($u->room['file']=='fe/cp')
              -   + Форум  
            '); - }elseif($_POST['p1'] == '') { + }elseif($_POST['p1'] == 'Канализация') { mysql_query('UPDATE `users` SET `room` = "188" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); die(''); - }elseif($_POST['p1'] == '') { + }elseif($_POST['p1'] == 'Катакомбы') { mysql_query('UPDATE `users` SET `room` = "293" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); die(''); } else { @@ -49,7 +49,7 @@ body - +
            Центральная Площадь
            @@ -63,7 +63,7 @@ body - + diff --git a/modules_data/location/fe/sclep.php b/modules_data/location/fe/sclep.php index 72d460ff..2104a415 100644 --- a/modules_data/location/fe/sclep.php +++ b/modules_data/location/fe/sclep.php @@ -14,13 +14,13 @@ if($u->room['file']=='fe/sclep') { if(date("H")>=6 && date("H")<22) { - $tattack = ' 22 6 .'; + $tattack = 'Нападение доступно с 22 до 6 ч.'; } else { if(isset($_POST['attack'])) { $magic->magicCentralAttack(); } - $tattack = ''; + $tattack = 'Напасть'; } } ?> @@ -43,7 +43,7 @@ if($u->room['file']=='fe/sclep')
              -   + Форум  
            '); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -196,12 +196,12 @@ if($u->room['file']=='nc/vokzal') $cst .= ' - '; + '; if(isset($zd['id'])) { - $cst .= ''; + $cst .= ''; }else{ - $cst .= ''; + $cst .= ''; } $cst .= ''; } @@ -253,40 +253,40 @@ if($u->room['file']=='nc/vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            :Вы можете телепортироваться в любую из пещер:
            @@ -71,65 +71,65 @@ body info['admin'] == 1) {?> + Пещера Тысячи Проклятий (Moon City)
            + Бездна (Angels City)
            + Пещеры Мглы (Sand City)
            + Потерянный Вход (Emeralds City)
            + Грибница (Sun City)
            + Сторожевая Башня (Abandoned Plain)
            + Туманные Низины (Devils City)
            + Гора Легиона (Abandoned Plain)
            + Ледяная Пещера (Snow City)
            + Канализация (Dreams City) + Катакомбы (Demons City)


            - +

            '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).''.$pl['price1'].' .'.$pl['price1'].' кр. '.$u->timeOut($zd['time']-time()).'Задержка еще '.$u->timeOut($zd['time']-time()).'!Поехали!
            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            -

            +

            Расписание движения карет на сегодня

            - - - - - - - + + + + + + +
            время отправления
            пункт назначения
            время в пути
            цена билета
            требуется виза
            осталось билетов
            приобрести билет
            - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            - -
            - - ,
            + - Для отправления в другой город Вы должны быть онлайн когда будет отправляться карета
            + - Если Вы опоздали на карету, тогда билет можно сдать в магазин за половину его стоимости
            @@ -314,8 +314,8 @@ if($u->room['file']=='nc/vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/fe/zv1.php b/modules_data/location/fe/zv1.php index a26b7789..1a837711 100644 --- a/modules_data/location/fe/zv1.php +++ b/modules_data/location/fe/zv1.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv1')
              @@ -302,7 +302,7 @@ if($u->room['file']=='nc/vokzal') - +
            Центральная Площадь
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv1')
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/fe/zv2.php b/modules_data/location/fe/zv2.php index 778efbd7..8d713c17 100644 --- a/modules_data/location/fe/zv2.php +++ b/modules_data/location/fe/zv2.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv2')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            +
            +
            -
            -
            -
            -
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv2') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/fe/zv3.php b/modules_data/location/fe/zv3.php index 0b80fe24..b9c517b3 100644 --- a/modules_data/location/fe/zv3.php +++ b/modules_data/location/fe/zv3.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv3')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv3') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/fe/zv4.php b/modules_data/location/fe/zv4.php index 8848dafa..8cfa36de 100644 --- a/modules_data/location/fe/zv4.php +++ b/modules_data/location/fe/zv4.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv4')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv4') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/fight-club.database.php b/modules_data/location/fight-club.database.php index f855d417..08211168 100644 --- a/modules_data/location/fight-club.database.php +++ b/modules_data/location/fight-club.database.php @@ -3,24 +3,24 @@ if(!defined('GAME')){ die(); } $StaticMSG = array( - 'your-position'=>iconv("WINDOWS-1251", "UTF-8", ' '), - 'move-bk'=>iconv("WINDOWS-1251", "UTF-8", ' " "'), - 'move-zalu4'=>iconv("WINDOWS-1251", "UTF-8", ' " "'), - 'move-map_halls'=>iconv("WINDOWS-1251", "UTF-8", ' ""'), - 'move-to-sek4'=>iconv("WINDOWS-1251", "UTF-8", ' "" "" '), - 'move-sek5'=>iconv("WINDOWS-1251", "UTF-8", ' " "'), - 'move-sek6'=>iconv("WINDOWS-1251", "UTF-8", ' " "'), + 'your-position'=>'Ваше местоположение', + 'move-bk'=>'Проход через "Бойцовский клуб"', + 'move-zalu4'=>'Проход через "Зал паладинов"', + 'move-map_halls'=>'Проход через "Залы"', + 'move-to-sek4'=>'Проход через "Рыцарский" или "Торговый" зал', + 'move-sek5'=>'Проход через "Торговый зал"', + 'move-sek6'=>'Проход через "Рыцарский зал"', ); $Response = array('status'=>'update'); switch($u->room['file']){ - case'bk':// + case'bk':// Бойцовский клуб $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig', 'left'=>'241', 'top'=>'128', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -35,22 +35,22 @@ switch($u->room['file']){ array('id'=>'map_klub7','params'=>thisInfRm('1.180.0.9', NULL, true)) ), 'buttons'=>array( - array(iconv("WINDOWS-1251", "UTF-8", ''),'main.php?homeworld=true'), - array(iconv("WINDOWS-1251", "UTF-8", ''),'main.php?loc=1.180.0.225'), - array(iconv("WINDOWS-1251", "UTF-8", ' '),'main.php?clubmap=true'), - array(iconv("WINDOWS-1251", "UTF-8", ''),"window.open('https://" . $c['forum'] . "/', 'forum', 'location=yes,menubar=yes,status=yes,resizable=yes,toolbar=yes,scrollbars=yes,scrollbars=yes')"), - array(iconv("WINDOWS-1251", "UTF-8", ''),"window.open('/encicl/help/top1.html', 'help', 'height=300,width=500,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes')") + array('Возврат','main.php?homeworld=true'), + array('Казино','main.php?loc=1.180.0.225'), + array('Карта клуба','main.php?clubmap=true'), + array('Форум',"window.open('https://" . $c['forum'] . "/', 'forum', 'location=yes,menubar=yes,status=yes,resizable=yes,toolbar=yes,scrollbars=yes,scrollbars=yes')"), + array('Подсказка',"window.open('/encicl/help/top1.html', 'help', 'height=300,width=500,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes')") ) ); break; - case'zv1':// 1 + case'zv1':// Зал Воинов 1 $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig', 'left'=>'154', 'top'=>'148', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -66,14 +66,14 @@ switch($u->room['file']){ ) ); break; - case'zv2':// 2 + case'zv2':// Зал Воинов 2 $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig', 'left'=>'395', 'top'=>'142', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -89,14 +89,14 @@ switch($u->room['file']){ ) ); break; - case'zv3':// 3 + case'zv3':// Зал Воинов 3 $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig', 'left'=>'337', 'top'=>'79', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -112,14 +112,14 @@ switch($u->room['file']){ ) ); break; - case'zv4':// + case'zv4':// Будуар $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig', 'left'=>'139', 'top'=>'79', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -135,14 +135,14 @@ switch($u->room['file']){ ) ); break; - case'zalu':// + case'zalu':// Залы $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig1', 'left'=>'337', 'top'=>'117', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -156,14 +156,14 @@ switch($u->room['file']){ ) ); break; - case'zalu_pal':// + case'zalu_pal':// Залы $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig1', 'left'=>'163', 'top'=>'28', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), @@ -176,14 +176,14 @@ switch($u->room['file']){ ) ); break; - case'bk2':// + case'bk2':// Залы $Response = array( 'status'=>'success', 'location'=>array( 'bg'=>'navig3', 'left'=>'162', 'top'=>'125', - 'name'=>iconv("WINDOWS-1251", "UTF-8", $u->room['name']), + 'name'=>$u->room['name'], 'tgo'=>($tmGo*10), 'tgo1'=>($tmGol*10) ), diff --git a/modules_data/location/fight-club.php b/modules_data/location/fight-club.php index 7b35c0ae..5c960287 100644 --- a/modules_data/location/fight-club.php +++ b/modules_data/location/fight-club.php @@ -43,17 +43,17 @@ if(!defined('GAME')){
            testHome(); if(!isset($hgo['id'])){ - echo''; + echo''; } unset($hgo); - ?> onClick="location='main.php?loc=1.180.0.225';" class="btn" value="" type="button" name="combats" /> - - - - + ?> onClick="location='main.php?loc=1.180.0.225';" class="btn" value="Казино" type="button" name="combats" /> + + + +

            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/flower.php b/modules_data/location/flower.php index a130f133..565fdc38 100644 --- a/modules_data/location/flower.php +++ b/modules_data/location/flower.php @@ -29,36 +29,36 @@ if($u->room['file']=='flower') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].'|frompisher='.$d->info['id2'].'|nosale=1'); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['add_item_f'])) { - // + //Ложим предмет в магазин $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `data` LIKE "%fshop=%" AND `id` = "'.mysql_real_escape_string($_GET['add_item_f']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "0" AND `inOdet` = "0" AND `inTransfer` = "0" LIMIT 1')); if(!isset($itm['id'])) { - $re = ' '; + $re = 'Подходящий предмет не найден'; }else{ if($u->itemsX($itm['id'])==1) { $itm_m = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itm['item_id'].'" LIMIT 1')); mysql_query('UPDATE `items_users` SET `inShop` = "'.$sid.'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $re = ' "'.$itm_m['name'].'" '; + $re = 'Предмет "'.$itm_m['name'].'" успешно добавлен'; }else{ - // - $re = ' '; + //группа + $re = 'Разделите группу предметов'; } } }elseif(isset($_GET['clear_itm_f'])){ - // + //Ложим предмет в магазин $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `data` LIKE "%fshop=%" AND `id` = "'.mysql_real_escape_string($_GET['clear_itm_f']).'" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inShop` = "'.$sid.'" AND `inOdet` = "0" AND `inTransfer` = "0" LIMIT 1')); if(!isset($itm['id'])) { - $re = ' '; + $re = 'Подходящий предмет не найден'; }else{ $itm_m = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "'.$itm['item_id'].'" LIMIT 1')); mysql_query('UPDATE `items_users` SET `inShop` = "0",`lastUPD` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $re = ' "'.$itm_m['name'].'" '; + $re = 'Предмет "'.$itm_m['name'].'" успешно убран'; } }elseif(isset($_GET['createFlowers'])) { - // + //Собираем букет $vaza = false; $rec1 = ''; $rec2 = ''; @@ -97,10 +97,10 @@ if($u->room['file']=='flower') if(isset($itm['id'])) { if($vaza==true && isset($itm_data['data'])){ $itm_data = $u->lookStats($itm_data['data']); - $itm_data = array('srok'=>$itm_data['srok']); // ! - $itm_data['srok'] = (int)$itm_data['srok']; // ! + $itm_data = array('srok'=>$itm_data['srok']); // Извлекаем только срок! + $itm_data['srok'] = (int)$itm_data['srok']; // Только Цифры! if(isset($itm_data['srok']) and $itm_data['srok']>0){ - $itm_data['srok'] = $itm_data['srok']*3; // ! + $itm_data['srok'] = $itm_data['srok']*3; // В три раза больше срок хранения! $itm_data = '|'.$u->impStats($itm_data); } } else { @@ -109,15 +109,15 @@ if($u->room['file']=='flower') $u->addItem($itm['id'],$u->info['id'],$itm_data,NULL,NULL,true); mysql_query('UPDATE `items_users` SET `delete` = "'.time().'",`inShop` = "0" WHERE '.$rec3.' LIMIT '.$rec3l); - $re = ' "'.$itm['name'].'" '; + $re = 'Предмет "'.$itm['name'].'" был успешно перемещен в инвентарь'; }else{ - $re = ' ...'; + $re = 'Не удалось получить предмет по рецепту...'; } } else { if($u->info['admin']>0) { echo '
            ITM1: '.$rec1.'
            ITM2: '.$rec2.'
            '; } - $re = ' ...'; + $re = 'Подходящий рецепт не найден...'; } } @@ -125,9 +125,9 @@ if($u->room['file']=='flower') '); } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } } elseif( isset( $_POST['go'] , $_POST['goid'] ) && $dungeonGo == 1 ) { @@ -655,23 +655,23 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `id`="'.mysql_real_escape_string($_POST['goid']).'" AND `delete` = "0" LIMIT 1')); if( isset( $zv['id'] ) && $u->info['dn'] == 0) { if( $zv['pass'] != '' && $_POST['pass_com'] != $zv['pass'] ) { - $error = ' '; + $error = 'Вы ввели неправильный пароль'; } elseif( $u->info['level'] > 7 && $zv['dun'] != 1 ){ $row = 0; if( 5 > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( $zv['dun'] == 1 ){ - // + //Канализация $row_max = 5; if( $u->info['level'] == 4 ) { $row_max = 4; @@ -687,21 +687,21 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); $row = $row[0]; if( $row2['level'] != $u->info['level'] ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе нет места'; unset($zv); } } elseif( $u->info['level'] < 4 && $zv['dun'] == 104 ){ - // + //Шахты $row_max = 3; if( $u->info['level'] > 3 ) { $row_max = 1; @@ -711,32 +711,32 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $row2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row1['id'].'" LIMIT 1')); $row = $row[0]; if( $row2['level'] != $u->info['level'] && $u->info['level'] > 3 ) { - $error = ' '; + $error = 'Вы не подходите по уровню'; }elseif( $row_max > $row ) { $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if( !$upd ){ - $error = ' '; + $error = 'Не удалось вступить в эту группу'; unset($zv); } else { $u->info['dn'] = $zv['id']; } } else { - $error = ' '; + $error = 'В группе для вас нет места'; unset($zv); } } else { - $error = ' '; + $error = 'Вы не подходите по уровню'; unset($zv); } } else { - $error = ' '; + $error = 'Заявка не найдена'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } elseif( isset( $_POST['leave'] ) && isset( $zv['id'] ) && $dungeonGo == 1 ) { if( $zv['uid'] == $u->info['id'] ) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if( isset($ld['id']) ){ $zv['uid'] = $ld['id']; @@ -745,14 +745,14 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $u->info['dn'] = 0; unset($zv); } else { - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } } else { - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -763,22 +763,22 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) // if(isset($_POST['rpmg1'])) { if($_POST['rpmg1']==2) { - $dun5 = 101; // + $dun5 = 101; //Бездна }elseif($_POST['rpmg1']==3) { - $dun5 = 105; // + $dun5 = 105; //Пещера Мглы }elseif($_POST['rpmg1']==4) { - $dun5 = 3; // + $dun5 = 3; //Катакомбы }elseif($_POST['rpmg1']==5) { - $dun5 = 108; // + $dun5 = 108; //Потерянный вход }elseif($_POST['rpmg1']==6) { - $dun5 = 10; // + $dun5 = 10; //Грибница }elseif($_POST['rpmg1']==7) { - $dun5 = 12; // + $dun5 = 12; //Низины }else{ - $dun5 = 12; // + $dun5 = 12; //ПТП } }else{ - $dun5 = 12; // + $dun5 = 12; //ПТП } // $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -794,16 +794,16 @@ if( isset( $_GET['start'] ) && $zv['uid'] == $u->info['id'] && $dungeonGo == 1 ) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $error = ' '; + $error = 'Вы успешно создали группу'; } else { - $error = ' '; + $error = 'Не удалось создать группу'; } } else { - $error = ' '; + $error = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "all" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while( $pl = mysql_fetch_array( $sp ) ){ $dungeonGroupList .= '
            '; @@ -812,10 +812,10 @@ while( $pl = mysql_fetch_array( $sp ) ){ $dungeonGroupList .= ' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while( $pu = mysql_fetch_array( $su ) ) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim( $pus, ', ' ); @@ -826,18 +826,18 @@ while( $pl = mysql_fetch_array( $sp ) ){ if( $pl['com'] != '' ) { $dl = ''; - // , . + // Если модератор, даем возможность удалять комментарий к походу. $moder = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `align` = "'.$u->info['align'].'" LIMIT 1')); if( ( $moder['boi'] == 1 || $u->info['admin'] > 0 ) && $pl['dcom'] == 0 ){ - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if( isset( $_GET['delcom'] ) && $_GET['delcom'] == $pl['id'] && $u->newAct( $_GET['key'] ) == true ) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['dcom'] = $u->info['id']; } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if( $pl['dcom'] > 0 ) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if( $pl['dcom'] > 0 ) { if( $moder['boi'] == 1 || $u->info['admin'] > 0 ) { @@ -903,25 +903,25 @@ body { } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; } elseif($u->info['city']=='abandonedplain'){ - echo " "; + echo "Центральная площадь"; } elseif($u->info['room']==188){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==393){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==372){ - echo " "; + echo "Большая парковая улица"; } elseif($u->info['room']==395){ - echo " "; + echo "Зал воинов"; } elseif($u->info['room']==397){ - echo " 2"; + echo "Зал воинов 2"; } elseif($u->info['room']==242){ - echo " "; + echo "Страшилкина улица"; } elseif($u->info['room']==321){ - echo " "; + echo "Большая торговая улица"; } else { - echo " "; + echo "Магический Портал"; } ?> @@ -930,7 +930,7 @@ body { if( isset($shop['code']) ){?> - + Рыцарский магазин @@ -950,18 +950,18 @@ body {

            - +
            - +

            - +
            - +

            @@ -969,13 +969,13 @@ body { '.$error.'
            '; -// +//отображаем if( $dungeonGroupList == '' ) { $dungeonGroupList = ''; } else { if( !isset( $zv['id'] ) || $u->info['dn'] == 0 ){ if($dungeonGo==1 || $u->info['dn'] == 0 ){ - $pr = ''; + $pr = ''; } $dungeonGroupList = '
            '.$pr.'
            '.$dungeonGroupList.''.$pr.'
            '; } @@ -984,7 +984,7 @@ if( $dungeonGroupList == '' ) { if( $roomSection == 0 ) { echo $dungeonGroupList; } if( $roomSection == 1 ) { - # endQuest . + # endQuest завершаем задание по нажатию. if( isset( $_GET['endQuest'] ) && $_GET['endQuest'] != '' ){ $action = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = '.$u->info['id'].' AND `id`="'.$_GET['endQuest'].'" AND `vals` = "go" LIMIT 1')); $quest = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$action['vars']).'" LIMIT 1')); @@ -999,15 +999,15 @@ if( $roomSection == 1 ) { $qsee = ''; $hgo = $u->testAction('`uid` = "'.$u->info['id'].'" AND `room` = "'.$u->info['room'].'" AND `time` >= '.(time()-60*60*24).' AND `vars` = "psh_qt_'.$dungeon['city'].'" LIMIT 1',1); $qc=0; // Quest Count - // + //Генерируем список текущих квестов $sp = mysql_query('SELECT * FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "'.$u->info['id'].'" LIMIT 100'); while( $pl = mysql_fetch_array( $sp ) ) { if($pl['room'] == $u->info['room']){ $pq = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.str_replace('start_quest','',$pl['vars']).'" LIMIT 1')); - if( $q->questCheckEnd($pq)==1 ) $qsee2 = ''; else $qsee2 = ''; + if( $q->questCheckEnd($pq)==1 ) $qsee2 = ''; else $qsee2 = ''; $qsee .= ' - + '.$pq['name'].'
            '.$pq['info'].'
            '.$q->info($pq).''.$qsee2.'

            '; @@ -1020,18 +1020,18 @@ if( $roomSection == 1 ) { if( isset( $_GET['add_quest'] ) && $qc == 0 ) { if( isset( $hgo['id'] ) ) { - echo '
            '; + echo 'Нельзя получать задания чаще одного раза в сутки
            '; } else { $sp = mysql_query('SELECT * FROM `quests` WHERE `line` = '.$dungeon['id'].''); $dq_add = array(); while( $pl = mysql_fetch_array( $sp ) ) { if( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 1 ) { $dq_add = array( 0 => $pl ); } } elseif( $u->rep['rep'.$dungeon['city']] == 24999 ) { - //, + //квет, рыцарского задания if( $pl['kin'] == 2 ) { $dq_add = array( 0 => $pl ); } @@ -1047,43 +1047,43 @@ if( $roomSection == 1 ) { if( $q->testGood($dq_add) == 1 && $dq_add > 0 ) { $q->startq_dn($dq_add['id']); - echo ' "'.$dq_add['name'].'".
            '; + echo 'Вы успешно получили новое задание "'.$dq_add['name'].'".
            '; $u->addAction(time(),'psh_qt_'.$dungeon['city'],$dq_add['id']); } else { if ( $u->rep['rep'.$dungeon['city']] == 9999 ) { - //, - echo ' !
            '; + //квест, рыцарского задания + echo 'Вы уже получили задание на достижение титула рыцаря!
            '; } elseif( $u->rep['rep'.$dungeon['city']] >= 24999 ) { - //, - echo ' , !
            '; + //квест, рыцарского задания + echo 'Вы завершили квестовую линию, ожидайте новых заданий!
            '; } else { - echo ' "'.$dq_add['name'].'". ...
            '; + echo 'Не удалось получить задание "'.$dq_add['name'].'". Попробуйте еще...
            '; } } unset( $dq_add ); } } elseif( isset( $_GET['add_quest'] ) && $qc > 0 ) { - echo '- ... ..


            '; + echo 'Что-то пошло не так... осторожнее..


            '; } if( $qsee == '' ) { - $qsee = '

            '; + $qsee = 'К сожалению у вас нет ни одного задания

            '; } ?>
            - : + Текущие задания: 0 ){ - echo ' .'; + echo 'Вы еще не справились с текущим заданием.'; } elseif( !isset( $hgo['id'] ) && $qc == 0 ) { ?>
            - + '.date('d.m.Y H:i',$hgo['time']+60*60*24).'
            ( '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; + echo 'Получить новое задание можно '.date('d.m.Y H:i',$hgo['time']+60*60*24).' ( Через '.$u->timeOut($hgo['time']+60*60*24-time()).' )'; } ?> @@ -1091,14 +1091,14 @@ if( $roomSection == 1 ) {
            rep['add_stats']*100); $cur_price = array('price'=>0); - if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // ! + if( 25 - $u->rep['add_stats'] > 0 && $u->rep['allrep'] - $u->rep['allnurep'] >= $price ) { // Характеристики! foreach( $dungeon['list'] as $key => $val ) { if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1117,18 +1117,18 @@ if( $roomSection == 1 ) { $u->info['ability'] += 1; $u->rep['add_stats'] += 1; mysql_query('UPDATE `rep` SET `add_stats` = "'.$u->rep['add_stats'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `ability` = "'.$u->info['ability'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 способность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 2 ) { // ! + } elseif( $_GET['buy1'] == 2 ) { // Умения! $price = 10000; $cur_price = array('price'=>0); - if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // ! + if(10-$u->rep['add_skills']>0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Умения! foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1147,18 +1147,18 @@ if( $roomSection == 1 ) { $u->info['skills'] += 1; $u->rep['add_skills'] += 1; mysql_query('UPDATE `rep` SET `add_skills` = "'.$u->rep['add_skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `skills` = "'.$u->info['skills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 умение за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 3 ) { // + } elseif( $_GET['buy1'] == 3 ) { // Кредиты $price = 100; $cur_price = array('price'=>0); - if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // + if( $u->rep['allrep'] - $u->rep['allnurep'] >= $price) { // Покупаем кредиты foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1177,18 +1177,18 @@ if( $roomSection == 1 ) { $u->info['money'] += 10; $u->rep['add_money'] += 10; mysql_query('UPDATE `rep` SET `add_money` = "'.$u->rep['add_money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 10 . '.$price.' .
            '; + echo 'Вы успешно приобрели 10 кр. за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; }else{ - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } elseif( $_GET['buy1'] == 4 ) { // + } elseif( $_GET['buy1'] == 4 ) { // Особенности $price = 3000; $cur_price = array('price'=>0); - if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // + if( 5 - $u->rep['add_skills2'] > 0 && $u->rep['allrep']-$u->rep['allnurep'] >= $price ) { // Особенности foreach($dungeon['list'] as $key=>$val){ if( !( $cur_price['price'] >= $price ) ) { $cur_price['price'] += $cur = ( $price > ($cur_price['price'] + ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) ) ? ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) : ( ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) - (( ( $price - $cur_price['price'] ) - ( $u->rep['rep'.$val] - $u->rep['nu_'.$val] ) )*-1))); @@ -1207,45 +1207,45 @@ if( $roomSection == 1 ) { $u->info['sskills'] += 1; $u->rep['add_skills2'] += 1; mysql_query('UPDATE `rep` SET `add_skills2` = "'.$u->rep['add_skills2'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `sskills` = "'.$u->info['sskills'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' 1 '.$price.' .
            '; + echo 'Вы успешно приобрели 1 особенность за '.$price.' ед. награды
            '; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } - } else echo ' .'; + } else echo 'Недостаточно репутации.'; } else { - echo ' ...
            '; + echo 'Ничего не получилось...
            '; } } } ?>
            - : rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> - . + Награда: rep['allrep']-$u->rep['allnurep'])-$cur_price['price'] : ($u->rep['allrep']-$u->rep['allnurep']) );?> + ед. - - - + + + - - - + + + - - - + + + - - - + + +
            ( rep['add_stats'])?>) rep['add_stats']*100);?> .Способность (еще rep['add_stats'])?>)за rep['add_stats']*100);?> ед.
            ( rep['add_skills'])?>) 10000 .Умение (еще rep['add_skills'])?>)за 10000 ед.
            (10 .) 100 .Деньги (10 кр.)за 100 ед.
            ( rep['add_skills2'])?>) 3000 .Особенность (еще rep['add_skills2'])?>)за 3000 ед.
            @@ -1265,7 +1265,7 @@ if( $roomSection == 1 ) { } $u->info['money'] += $prc; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo ' '.$x.' . '.$prc.' .
            '; + echo 'Вы успешно сдали чеки в количестве '.$x.' шт. на сумму '.$prc.' кр.
            '; $chk[0] = 0; ?>

            @@ -1273,8 +1273,8 @@ if( $roomSection == 1 ) { } if($chk[0]>0) { ?> - +
            @@ -1282,14 +1282,14 @@ onclick="if (confirm(' foreach($dungeon['list'] as $key=>$val){ //if( $u->rep['rep'.$val] > 0 ) { echo ' - - + + '; //} } ?>
            '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' . Репутация в '.ucfirst(str_replace('city',' city',$val)).':'.$u->rep['rep'.$val].' ед.
            - : + Текущая репутация:
            - - :
            + Группа + Выберите пещеру:

            + width="34" height="19" /> Пещера Тысячи Проклятий
            ( )
            + width="34" height="19" /> Бездна (Ведутся работы)

            + width="34" height="19" /> Пещеры Мглы

            + width="34" height="19" /> Катакомбы

            + width="34" height="19" /> Потерянный вход
            + width="34" height="19" /> Грибница
            + width="34" height="19" /> Туманные Низины

            - + Комментарий
            - + Пароль
            - +  
            @@ -1353,21 +1353,21 @@ onclick="if (confirm(' $psh_start = ''; if(isset($zv['id'])){ if($zv['uid']==$u->info['id']){ - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } } }else{ - echo ' . : '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(60*60*2-time()+$dungeon_timeout['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; if( $dungeon['id'] == 104 ) { - echo '
            : '; + echo '
            Вы можете посетить подземелье без ожидания: '; } } } diff --git a/modules_data/location/hram.php b/modules_data/location/hram.php index ab19b2fd..df3ea157 100644 --- a/modules_data/location/hram.php +++ b/modules_data/location/hram.php @@ -13,12 +13,12 @@ if($u->room['file']=='hram') { if($_GET['r']!=1) { - // + //Переплавка вещей $resz = $u->plavka($_GET['itm'],1); echo ''.$resz.''; unset($resz); }else{ - // + //Переплавка рун } } @@ -67,7 +67,7 @@ if($u->room['file']=='hram')
            '.$re.''; } ?>
            -
            +
            Храм Знаний
            @@ -81,7 +81,7 @@ if($u->room['file']=='hram') @@ -93,7 +93,7 @@ if($u->room['file']=='hram')
              - +
            Центральная площадь


            -   +  
            @@ -102,11 +102,11 @@ if($u->room['file']=='hram') $itmAll = $u->genInv(11,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0) { - $itmAllSee = ' ( )'; + $itmAllSee = 'ПУСТО (нет подходящих предметов)'; }else{ $itmAllSee = $itmAll[2]; } - // " ". " ". + //Удачно растворен предмет "Укрепленный Костыль". Получена руна "Моно Бауни". ?> '); + die('Начало матча...'); } ?> @@ -185,19 +185,19 @@ body {
            - - :     + Группа + Всего заявок:    

            - :
            -
            • 6 !
            - • 12 - 2 6 . .. [4] . -
            • 12 , 2 . . -
            • 1 , , 4 . -
            • + Правила участия:
            +
            • На время тестов требуется 6 игроков для старта!
            + • Для начала игры необходимо набрать 12 заявок - это 2 команды по 6 участников. Уровень игроков значения не имеет т.к. в начале игры все персонажи переселяются в новые тела [4] уровня. +
            • Как только набирается 12 заявок, автоматически создаётся 2 команды и начинается Матч. Игроки распределяются в команды рандомно. +
            • Задержка на посещение 1 час после выхода с хоккея, если вы вышли во время игры, тогда вы не сможете посещать каток еще 4 часа. +
            • Вы не сможете выйти с катка пока не завершится игра
            @@ -214,7 +214,7 @@ body { diff --git a/modules_data/location/kinght.php b/modules_data/location/kinght.php index 49b469ab..cdd52546 100644 --- a/modules_data/location/kinght.php +++ b/modules_data/location/kinght.php @@ -29,7 +29,7 @@ if($u->room['file']=='kinght')
            -
            +
            onclick="location='main.php?loc=1.180.0.220';" onmouseover="this.className='aFilterhover';" onmouseout="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_2stair.gif" width="120" height="35" class="aFilter" />
            @@ -50,26 +50,26 @@ if($u->room['file']=='kinght') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            Выход с катка
            - +

            - - - testHome(); if(!isset($hgo['id'])){ ?> - + + + testHome(); if(!isset($hgo['id'])){ ?> +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/komorka.php b/modules_data/location/komorka.php index af502929..c9a184b6 100644 --- a/modules_data/location/komorka.php +++ b/modules_data/location/komorka.php @@ -23,7 +23,7 @@ if(isset($file) && $file[0]=='komorka.php') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].'|frompisher='.$d->info['id2'].'|nosale=1'); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -31,9 +31,9 @@ if(isset($file) && $file[0]=='komorka.php') @@ -210,36 +210,36 @@ $titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'. var usedID = info['id'];?> var $arrLiImg = [ - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ', - '
          • ' + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ', + '
          • ' ] function shuffle (array) { @@ -293,7 +293,7 @@ $titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'. } $imgWin.innerHTML = "" - $button.textContent = "..." + $button.textContent = "Ожидание..." $button.disabled = true var response = await fetch("https://new-combats.com/lotowork.php", { @@ -315,7 +315,7 @@ $titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'. if (resultRegexp && resultRegexp[0] && resultRegexp[0] >= 0 && resultRegexp[0] <= 29) { idItem = resultRegexp[0]; } else { - return ($button.textContent = ', F5!'); + return ($button.textContent = 'Ошибка, нажмите F5!'); } var elemRul = 0 @@ -340,7 +340,7 @@ $titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'. $winWindow.hidden = false - $button.textContent = " !" + $button.textContent = "Приходите завтра!" $win.textContent = titleThing @@ -366,7 +366,7 @@ $titm = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'. var contentIsHidden = $tableItemChange.hidden; $tableItemChange.hidden = !contentIsHidden; - event.target.textContent = !contentIsHidden ? ' ' : ' '; + event.target.textContent = !contentIsHidden ? 'Предметы и шансы' : 'Скрыть шансы'; } -



            +


            Алтарь Крови

            '.$error.''; ?> @@ -98,16 +98,16 @@ if($u->room['file']=='monwar')
            - + @@ -155,18 +155,18 @@ if($u->room['file']=='monwar')

            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            -
            +
            -
            +
            Отделы монумента
            ': ',20=>'      ',21=>'',22=>'     ',23=>'',24=>' [10]'); + /*названия разделов (справа)*/ + $otdels_array = array (19=>'Заклинания: нейтральные',20=>'     боевые и защитные',21=>'Амуниция',22=>'     Эликсиры',23=>'Ресурсы',24=>'Поножи [10]'); $i=1; while ($i!=-1) { @@ -194,7 +194,7 @@ if($u->room['file']=='monwar')


            - ( , !) + (Все вещи связываются Общей Судьбой с тем, кто их купил!)
            diff --git a/modules_data/location/nakova2.php b/modules_data/location/nakova2.php index c83d1065..870daa8b 100644 --- a/modules_data/location/nakova2.php +++ b/modules_data/location/nakova2.php @@ -13,9 +13,9 @@ if(isset($file) && $file[0]=='nakova2.php'){ die(); }elseif(!isset($test['id'])) { if( $u->info['sex'] == 0 ) { - $d->sys_chat(''.$u->info['login'].' "", '); + $d->sys_chat(''.$u->info['login'].' воспользовался "Наковальней", другим данный обьект стал недоступен'); }else{ - $d->sys_chat(''.$u->info['login'].' "", '); + $d->sys_chat(''.$u->info['login'].' воспользовалась "Наковальней", другим данный обьект стал недоступен'); } mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`time`,`vars`) VALUES ( "'.$u->info['dnow'].'","'.$u->info['id'].'","'.time().'","obj_nakova2_use" @@ -33,16 +33,16 @@ if(isset($file) && $file[0]=='nakova2.php'){ if( $u->newAct($_GET['sd4']) == true ){ $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].'|frompisher='.$d->info['id2'].'|nosale=1'); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите получить этот предмет?'; } } if($re!=''){ echo '
            '.$re.'
            '; } ?> +
            />
            />
            @@ -70,22 +70,22 @@ if($u->room['file']=='nc/cp')
            ' ": ,"',2=>' ": "',3=>' ": ,"',4=>' ": "',5=>' ": "',6=>' ": "',7=>' ": "',8=>' ": "',9=>' ": "',10=>' ": "',11=>' ": "',12=>' ": "',13=>' ": "',14=>' ": "',15=>' ""',16=>' " : "',17=>' " : "',18=>' " : "',19=>' ": "',20=>' ": "',21=>' ""',22=>' ""',23=>' ""',24=>' " [10]"',25=>' ": "',26=>' ": "',27=>' ": "'); + $otdels_small_array = array (1=>'Отдел "Оружие: кастеты,ножи"',2=>'Отдел "Оружие: топоры"',3=>'Отдел "Оружие: дубины,булавы"',4=>'Отдел "Оружие: мечи"',5=>'Отдел "Оружие: магические посохи"',6=>'Отдел "Одежда: сапоги"',7=>'Отдел "Одежда: перчатки"',8=>'Отдел "Одежда: рубахи"',9=>'Отдел "Одежда: легкая броня"',10=>'Отдел "Одежда: тяжелая броня"',11=>'Отдел "Одежда: шлемы"',12=>'Отдел "Одежда: наручи"',13=>'Отдел "Одежда: пояса"',14=>'Отдел "Одежда: поножи"',15=>'Отдел "Щиты"',16=>'Отдел "Ювелирные товары: серьги"',17=>'Отдел "Ювелирные товары: ожерелья"',18=>'Отдел "Ювелирные товары: кольца"',19=>'Отдел "Заклинания: нейтральные"',20=>'Отдел "Заклинания: боевые и защитные"',21=>'Отдел "Амуниция"',22=>'Отдел "Эликсиры"',23=>'Отдел "Ресурсы"',24=>'Отдел "Поножи [10]"',25=>'Отдел "Подарки: упаковка"',26=>'Отдел "Подарки: открытки"',27=>'Отдел "Подарки: фейерверки"'); if(isset($otdels_small_array[$_GET['otdel']])) { echo $otdels_small_array[$_GET['otdel']]; @@ -117,10 +117,10 @@ if($u->room['file']=='monwar') ?>
            - + shopItems($sid); ?>
            @@ -144,7 +144,7 @@ if($u->room['file']=='monwar') - +
            Арена
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            - +

            - testHome(); if(!isset($hgo['id'])){ ?> - - - + testHome(); if(!isset($hgo['id'])){ ?> + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.

            diff --git a/modules_data/location/nc/shop_.php b/modules_data/location/nc/shop_.php index dab09ac7..6b3d9a60 100644 --- a/modules_data/location/nc/shop_.php +++ b/modules_data/location/nc/shop_.php @@ -14,13 +14,13 @@ if($u->room['file']=='nc/shop_') if(isset($to['id'])) { if($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; + $re = '
            Хаосникам запрещается делать подарки другим игрокам
            '; }elseif($to['id']==$u->info['id']) { - $re = '
            - ;)
            '; + $re = '
            Очень щедро дарить что-то самому себе ;)
            '; }elseif($u->info['level']<1) { - $re = '
            1-
            '; + $re = '
            Дарить подарки можно начиная с 1-го уровня
            '; }else{ $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "63" OR `im`.`type` = "64") AND `iu`.`id` = "'.mysql_real_escape_string($_POST['itemgift']).'" AND `iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`gift` = "" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" LIMIT 1')); if(isset($itm['id'])) @@ -32,24 +32,24 @@ if($u->room['file']=='nc/shop_') $itm['gtxt1'] = str_replace('\x3C','<',$itm['gtxt1']); $itm['gtxt1'] = str_replace('\x3','>',$itm['gtxt1']); - $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL,'cp1251'); + $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL); $itm['gtxt2'] = str_replace('\x3C','<',$itm['gtxt2']); $itm['gtxt2'] = str_replace('\x3','>',$itm['gtxt2']); - $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL,'cp1251'); + $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL); $upd = mysql_query('UPDATE `items_users` SET `data` = "'.$itm['data'].'",`gtxt1` = "'.mysql_real_escape_string($itm['gtxt1']).'",`gtxt2` = "'.mysql_real_escape_string($itm['gtxt2']).'",`uid` = "'.$to['id'].'",`gift` = "'.$u->info['login'].'",`time_create` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); if($upd) { - $re = '
            "'.$to['login'].'"
            '; + $re = '
            Подарок был успешно отправлен к "'.$to['login'].'"
            '; }else{ - $re = '
            '; + $re = '
            Не удалось сделать подарок
            '; } }else{ - $re = '
            '; + $re = '
            Предмет не найден
            '; } } }else{ - $re = '
            '; + $re = '
            Персонаж с таким логином не найден
            '; } } @@ -65,7 +65,7 @@ if($u->room['file']=='nc/shop_') $shopProcent -= $bns; if($shopProcent>99){ $shopProcent = 99; } if($shopProcent<1){ $shopProcent = 1; } - echo '
            : '.$bns.'%
            '.(100-$shopProcent).'%
            '; + echo '
            У Вас действует бонус при продаже: '.$bns.'%
            Вы сможете продавать предметы за '.(100-$shopProcent).'% от их стоимости
            '; } } @@ -81,7 +81,7 @@ if($u->room['file']=='nc/shop_') while($pl = mysql_fetch_array($sp)) { $test = mysql_fetch_array(mysql_query('SELECT `iid` FROM `items_shop` WHERE `sid` = 300 AND `item_id` = "'.$pl['item_id'].'" LIMIT 1')); if(!isset($test['iid'])) { - // + //добавляем предмет mysql_query('INSERT INTO `items_shop` (`sid`,`item_id`,`kolvo`, `data2`,`magic_inc`,`timeOver`,`overType`,`secret_id`,`r`,`price_1`,`price_2`,`level`,`tr_items`,`max_buy`) VALUES ( "300","'.$pl['item_id'].'","10000", @@ -99,7 +99,7 @@ if($u->room['file']=='nc/shop_') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['sale']) && isset($_GET['item']) && $u->newAct($_GET['sd4'])) { @@ -108,13 +108,13 @@ if($u->room['file']=='nc/shop_') $po = $u->lookStats($itm['data']); if(isset($po['nosale'])) { - $error = ' ...'; + $error = 'Не удалось продать предмет ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0)) { - $error = ' ...'; + $error = 'Не удалось продать предмет ...'; }elseif(isset($po['frompisher'])) { - $error = ' ...'; + $error = 'Не удалось продать предмет ...'; }elseif(isset($itm['id'])) { if($itm['1price']>0) @@ -163,18 +163,18 @@ if($u->room['file']=='nc/shop_') $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - $error = ' "'.$itm['name'].' [x'.$col.']" '.$shpCena.' .'; + $error = 'Вы успешно продали предмет "'.$itm['name'].' [x'.$col.']" за '.$shpCena.' кр.'; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр..',time(),$u->info['city'],'System.shop',0,0); }else{ - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр. (кредиты не переведены).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось продать предмет...'; } }else{ - $error = ' ...'; + $error = 'Не удалось продать предмет...'; } }else{ - $error = ' .'; + $error = 'Предмет не найден в инвентаре.'; } } @@ -182,9 +182,9 @@ if($u->room['file']=='nc/shop_') '); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -196,12 +196,12 @@ if($u->room['file']=='nc/vokzal') $cst .= ' '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).' - '.$pl['price1'].' .'; + '.$pl['price1'].' кр.'; if(isset($zd['id'])) { - $cst .= ' '.$u->timeOut($zd['time']-time()).''; + $cst .= 'Задержка еще '.$u->timeOut($zd['time']-time()).''; }else{ - $cst .= '!'; + $cst .= 'Поехали!'; } $cst .= ''; } @@ -253,40 +253,40 @@ if($u->room['file']=='nc/vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            -

            +

            Расписание движения карет на сегодня

            - - - - - - - + + + + + + +
            время отправления
            пункт назначения
            время в пути
            цена билета
            требуется виза
            осталось билетов
            приобрести билет
            - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            - -
            - - ,
            + - Для отправления в другой город Вы должны быть онлайн когда будет отправляться карета
            + - Если Вы опоздали на карету, тогда билет можно сдать в магазин за половину его стоимости
            @@ -314,8 +314,8 @@ if($u->room['file']=='nc/vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/nc/zv1.php b/modules_data/location/nc/zv1.php index a26b7789..1a837711 100644 --- a/modules_data/location/nc/zv1.php +++ b/modules_data/location/nc/zv1.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv1')
              @@ -302,7 +302,7 @@ if($u->room['file']=='nc/vokzal') - +
            Центральная Площадь
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv1')
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/nc/zv2.php b/modules_data/location/nc/zv2.php index 778efbd7..8d713c17 100644 --- a/modules_data/location/nc/zv2.php +++ b/modules_data/location/nc/zv2.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv2')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            +
            +
            -
            -
            -
            -
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv2') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/nc/zv3.php b/modules_data/location/nc/zv3.php index 0b80fe24..b9c517b3 100644 --- a/modules_data/location/nc/zv3.php +++ b/modules_data/location/nc/zv3.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv3')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv3') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/nc/zv4.php b/modules_data/location/nc/zv4.php index 8848dafa..8cfa36de 100644 --- a/modules_data/location/nc/zv4.php +++ b/modules_data/location/nc/zv4.php @@ -22,15 +22,15 @@ if($u->room['file']=='nc/zv4')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -38,33 +38,33 @@ if($u->room['file']=='nc/zv4') -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - testHome(); if(!isset($hgo['id'])){ ?> - - - - + + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/newtower.php1 b/modules_data/location/newtower.php1 index 3b8d0aa1..3d5cab1c 100644 --- a/modules_data/location/newtower.php1 +++ b/modules_data/location/newtower.php1 @@ -5,7 +5,7 @@ if($u->room['file'] == 'newtower') { require_once('_incl_data/class/__zv.php'); $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "'.$u->info['inTurnir'].'" LIMIT 1')); $bmid = 0; - if(!isset($bs['id']) || $bs['status'] == 0) { die(' .'); } + if(!isset($bs['id']) || $bs['status'] == 0) { die('Турнир не найден.'); } function b_act($uid, $val, $time) { global $bs; @@ -17,17 +17,17 @@ if($u->room['file'] == 'newtower') { function test_users_life() { global $u,$bs; - // + //Проверка бага с юзерами и архивариусами $sp = mysql_query('SELECT `id`,`lose`,`nich` FROM `users` WHERE `inTurnir` = "'.$bs['id'].'"'); $users = 0; $arhiv = 0; while( $pl = mysql_fetch_array($sp) ) { $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "'.$pl['id'].'" AND `real` > 0 AND `inUser` > 0 LIMIT 1')); if(isset($test['id'])) { - // + //Игрок $users++; }else{ - // + //Архив $arhiv++; } } @@ -51,7 +51,7 @@ if($u->room['file'] == 'newtower') { return $r; } - // + //ПОднять предмет if( isset($_GET['takeit']) ) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `bs_items` WHERE `bid` = "'.$bs['id'].'" AND `count` = "'.$bs['count'].'" AND `id` = "'.mysql_real_escape_string($_GET['takeit']).'" LIMIT 1')); if( isset($itm['id']) ) { @@ -64,40 +64,40 @@ if($u->room['file'] == 'newtower') { if( isset($itmb['id']) ) { $tact = b_test($u->info['id'],'take_itm'); if( $tact['time'] > time() ) { - $error2 = ' , '.($tact['time'] - time()).' .'; + $error2 = 'Нельзя поднимать предметы так часто, ждите еще '.($tact['time'] - time()).' сек.'; }else{ b_act($u->info['id'],'take_itm',time()+3); - $error2 = ' "'.$itmb['name'].'"'; + $error2 = 'Вы подняли предмет "'.$itmb['name'].'"'; $u->addItem( $itmb['id'] , $u->info['id'] ); mysql_query('DELETE FROM `bs_items` WHERE `id` = "'.$itm['id'].'" LIMIT 1'); } }else{ - $error2 = ' ...'; + $error2 = 'Предмет не найден...'; } }else{ - $error2 = ' ...'; + $error2 = 'Предмет не найден в комнате с вами...'; } }else{ - $error2 = ' , - ...'; + $error2 = 'Предмет не найден, кто-то оказался быстрее...'; } } - // + //Предметы БС $bs_items = ''; $sp = mysql_query('SELECT * FROM `bs_items` WHERE `bid` = "'.$bs['id'].'" AND `count` = "'.$bs['count'].'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'"'); while( $pl = mysql_fetch_array($sp) ) { $itm = mysql_fetch_array(mysql_query('SELECT `id`,`img`,`name` FROM `items_main` WHERE `id` = "'.$pl['item_id'].'" LIMIT 1')); if( isset($itm['id']) ) { - $bs_items .= ''; + $bs_items .= ''; } } if( $bs_items != '' ) { - $bs_items = '
            :

            '.$bs_items.'
            '; + $bs_items = '
            Предметы в комнате:

            '.$bs_items.'
            '; } - // + //Данные комнаты $map = array( - 'name' => ' ', + 'name' => 'Название локации', 'up' => array( 'i' => 'i' , 'js' => 'onclick="return false"' ), 'left' => array( 'i' => 'i' , 'js' => 'onclick="return false"' ), 'right' => array( 'i' => 'i' , 'js' => 'onclick="return false"' ), @@ -120,9 +120,9 @@ if($u->room['file'] == 'newtower') { } $sts = mysql_fetch_array(mysql_query('SELECT `id`,`x`,`y`,`team`,`hpNow` FROM `stats` WHERE `id` = "'.$usr['id'].'" LIMIT 1')); if( $sts['x'] != $u->info['x'] || $sts['y'] != $u->info['y'] ) { - $error = ' '; + $error = 'Вы должны находиться в одной комнате'; }elseif( $usr_real['login'] == $u->info['login'] ) { - $error = ' '; + $error = 'Нельзя нападать на самого себя'; }else{ $tbtl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$usr['battle'].'" AND `team_win` = "-1" LIMIT 1')); if( !isset($tbtl['id']) && $usr['battle'] > 0 ) { @@ -148,18 +148,18 @@ if($u->room['file'] == 'newtower') { } } if( $usr['battle'] > 0 ) { - // + //Заносим в лог БС if( $u->info['sex'] == 0 ) { - $text = '{u1} {u2} '; + $text = '{u1} вмешался в поединок против {u2} »»'; }else{ - $text = '{u1} {u2} '; + $text = '{u1} вмешалась в поединок против {u2} »»'; } }else{ - // + //Заносим в лог БС if( $u->info['sex'] == 0 ) { - $text = '{u1} {u2} '; + $text = '{u1} напал на {u2} завязался бой »»'; }else{ - $text = '{u1} {u2} '; + $text = '{u1} напала на {u2} завязался бой »»'; } } if( isset($usr_real['id'])) { @@ -172,7 +172,7 @@ if($u->room['file'] == 'newtower') { } $usrreal .= ''.$usr_real['login'].'['.$usr_real['level'].']'; }else{ - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } if( isset($me_real['id']) ) { $mereal = ''; @@ -184,11 +184,11 @@ if($u->room['file'] == 'newtower') { } $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; }else{ - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}',$mereal,$text); $text = str_replace('{u2}',$usrreal,$text); - // + //Добавляем в лог БС mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( "1", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$bs['id'].'", "'.$bs['count'].'", "'.$bs['city'].'", "'.round($bs['money']*0.85,2).'","'.$i.'" @@ -199,7 +199,7 @@ if($u->room['file'] == 'newtower') { header('location: main.php'); } }else{ - $error = ' '; + $error = 'Персонаж не найден в этом турнире'; } } $box = mysql_fetch_array(mysql_query('SELECT * FROM `bs_map` WHERE `mid` = "'.mysql_real_escape_string($bmid).'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'" LIMIT 1')); @@ -214,19 +214,19 @@ if($u->room['file'] == 'newtower') { unset($box2); } if( !isset($box['id']) ) { - // - $map['name'] = ' : '.$u->info['x'].' . '.$u->info['y']; + //Клетка не найдена + $map['name'] = 'Неизвестная локация: '.$u->info['x'].' . '.$u->info['y']; if( $u->info['x'] == 0 && $u->info['y'] == 0 ) { mysql_query('UPDATE `stats` SET `x` = "-3",`y` = "-8" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); header('location: main.php'); die(); } }else{ - // + //Действия на клетке $goto = false; if( isset($_GET['up']) ) { if( $box['up'] == 0 ) { - $error = ' '; + $error = 'Проход не существует'; }else{ if( $box['up'] > 1 ) { $goto = mysql_fetch_array(mysql_query('SELECT `id` FROM `bs_map` WHERE `mid` = "'.mysql_real_escape_string($bmid).'" AND `id` = "'.mysql_real_escape_string($box['up']).'" LIMIT 1')); @@ -239,7 +239,7 @@ if($u->room['file'] == 'newtower') { } }elseif( isset($_GET['down']) ) { if( $box['down'] == 0 ) { - $error = ' '; + $error = 'Проход не существует'; }else{ if( $box['down'] > 1 ) { $goto = mysql_fetch_array(mysql_query('SELECT `id` FROM `bs_map` WHERE `mid` = "'.mysql_real_escape_string($bmid).'" AND `id` = "'.mysql_real_escape_string($box['down']).'" LIMIT 1')); @@ -252,7 +252,7 @@ if($u->room['file'] == 'newtower') { } }elseif( isset($_GET['left']) ) { if( $box['left'] == 0 ) { - $error = ' '; + $error = 'Проход не существует'; }else{ if( $box['left'] > 1 ) { $goto = mysql_fetch_array(mysql_query('SELECT `id` FROM `bs_map` WHERE `mid` = "'.mysql_real_escape_string($bmid).'" AND `id` = "'.mysql_real_escape_string($box['left']).'" LIMIT 1')); @@ -265,7 +265,7 @@ if($u->room['file'] == 'newtower') { } }elseif( isset($_GET['right']) ) { if( $box['right'] == 0 ) { - $error = ' '; + $error = 'Проход не существует'; }else{ if( $box['right'] > 1 ) { $goto = mysql_fetch_array(mysql_query('SELECT `id` FROM `bs_map` WHERE `mid` = "'.mysql_real_escape_string($bmid).'" AND `id` = "'.mysql_real_escape_string($box['right']).'" LIMIT 1')); @@ -284,10 +284,10 @@ if($u->room['file'] == 'newtower') { $trap = mysql_fetch_array(mysql_query('SELECT * FROM `bs_trap` WHERE `bid` = "'.$bs['id'].'" AND `login` != "'.$u->info['login'].'" AND `count` = "'.$bs['count'].'" AND `x` = "'.$goto[0].'" AND `y` = "'.$goto[1].'" LIMIT 1')); if( isset($trap['id']) ) { if(rand(0, 100) < $trap['chance'] || $trap['chance'] == 0 ) { - // + //Добавляем эффект и отнимаем НР $ptntew = rand(1, 10)*60; mysql_query('INSERT INTO `eff_users` (`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`img2`) VALUES ( - "2","'.$u->info['id'].'"," ( '.$trap['login'].')","puti='.(time()+$ptntew).'","1","'.(time()+$ptntew).'","chains.gif" + "2","'.$u->info['id'].'","Путы (Ловушка '.$trap['login'].')","puti='.(time()+$ptntew).'","1","'.(time()+$ptntew).'","chains.gif" ) '); if( $u->stats['hpNow'] > floor($u->stats['hpAll']/100*33)) { $trap_hpmin = round($u->stats['hpNow']/2); @@ -299,16 +299,16 @@ if($u->room['file'] == 'newtower') { }elseif( $u->stats['hpNow'] > $u->stats['hpAll'] ) { $u->stats['hpNow'] = $u->stats['hpAll']; } - // - $rtxt = '[img[items/trap.gif]] "'.$u->info['login'].'" "'.$trap['login'].'". -'.$trap_hpmin.' ['.round($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']'; + //Заносим в чат + $rtxt = '[img[items/trap.gif]] Персонаж "'.$u->info['login'].'" угодил в ловушку поставленную "'.$trap['login'].'". -'.$trap_hpmin.' ['.round($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']'; mysql_query("INSERT INTO `chat` (`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1','1')"); - // + //Заносим в лог БС $me_real = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "'.$u->info['id'].'" AND `login` = "'.$u->info['login'].'" LIMIT 1')); - // + //Заносим в лог БС if( $u->info['sex'] == 0 ) { - $text = '{u1} {u2}'; + $text = '{u1} угодил в ловушку поставленную {u2}'; }else{ - $text = '{u1} {u2}'; + $text = '{u1} угодила в ловушку поставленную {u2}'; } if( isset($trap['id'])) { $usrreal = ''; @@ -320,7 +320,7 @@ if($u->room['file'] == 'newtower') { } $usrreal .= ''.$trap['login'].'['.$trap['level'].']'; }else{ - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } if( isset($me_real['id']) ) { $mereal = ''; @@ -332,18 +332,18 @@ if($u->room['file'] == 'newtower') { } $mereal .= ''.$me_real['login'].'['.$me_real['level'].']'; }else{ - $mereal = '[??]'; + $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}',$mereal,$text); $text = str_replace('{u2}',$usrreal,$text); - // + //Добавляем в лог БС mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( "2", "'.mysql_real_escape_string($text).'", "'.time().'", "'.$bs['id'].'", "'.$bs['count'].'", "'.$bs['city'].'", "'.round($bs['money']*0.85,2).'","'.$i.'" )'); // unset($text,$usrreal,$mereal,$usr_real,$me_real); - // + //Удаляем ловушку mysql_query('DELETE FROM `bs_trap` WHERE `id` = "'.$trap['id'].'" LIMIT 1'); } } @@ -351,13 +351,13 @@ if($u->room['file'] == 'newtower') { header('location: /main.php'); die(); } else { - $error = " ..."; + $error = "Вы в ловушке..."; } }else{ - $error = ' ...'; + $error = 'Вы не можете так быстро перемещаться...'; } } - // + //Данные клетки $map['name'] = $box['name']; if( $box['up'] > 0 ) { $map['up']['i'] = ''; @@ -432,10 +432,10 @@ if($u->room['file'] == 'newtower') { echo $zv->userInfo(); $sp = mysql_query('SELECT * FROM `bs_trap` WHERE `bid` = "'.$bs['id'].'" AND `count` = "'.$bs['count'].'" AND `login` = "'.$u->info['login'].'" AND `x` = "'.$u->info['x'].'" AND `y` = "'.$u->info['y'].'"'); while($pl = mysql_fetch_array($sp)) { - echo ''; + echo ''; } if(isset($u->stats['puti'])) { - echo '
            '.$u->timeOut($u->stats['puti']-time()).' '; + echo '
            Вы не можете передвигаться еще '.$u->timeOut($u->stats['puti']-time()).' '; } echo ''; echo $bs_items; @@ -532,27 +532,27 @@ if($u->room['file'] == 'newtower') { - + - : 0) { ?> + ... + Всего живых участников на данный момент: 0) { ?> + ...
            - : , - . + История текущего турнира. diff --git a/modules_data/location/noobshop106.php b/modules_data/location/noobshop106.php index a426efa8..bbd43997 100644 --- a/modules_data/location/noobshop106.php +++ b/modules_data/location/noobshop106.php @@ -23,7 +23,7 @@ if(isset($file) && $file[0]=='noobshop106.php') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x'],'sudba='.$u->info['login'].'|frompisher='.$d->info['id2'].'|nosale=1'); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } } @@ -31,9 +31,9 @@ if(isset($file) && $file[0]=='noobshop106.php') '); } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } } else { - $error = ' ...'; + $error = 'Ошибка перехода в подземелье...'; } // //header('location: main.php'); die(); }else{ - // ( , ) + //Отказался (добавляем квест, системку и пошел нах) mysql_query('INSERT INTO `dialog_act` ( `uid`,`var`,`time` ) VALUES ( "'.$u->info['id'].'","noobqst1","'.time().'" )'); - // + //Начало обучения $humor = array( 0 => array( '' @@ -100,18 +100,18 @@ if($u->room['file']=='novich') $humor = $humor[$u->info['sex']]; //$u->info['fnq'] = 1; //mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // + //Отправляем сообщение в чат о новичке //mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4703'); //mysql_query('UPDATE `users` SET `room` = 4 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); //mysql_query('UPDATE `stats` SET `hpNow` = 1000,`mpNow` = 1000,`dn` = 0 , `dnow` = 0 , `x` = 0 , `y` = 0 , `s` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - //$u->send('','','','','',' "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); + //$u->send('','','','','','В нашем мире появился новый игрок "' . $u->info['login'] . '"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0); - //echo '
            , !
            '; + //echo '
            Вы отказались от обучения, второй попытки больше не будет!
            '; } }else{ echo ''; @@ -135,8 +135,8 @@ if($u->room['file']=='novich')
            src="https://img.new-combats.com/i/images/subimages/map_zal3.gif" width="135" height="29" class="aFilter" id="mo_1.180.0.1" />
            -
            -
            +
            +
            @@ -144,22 +144,22 @@ if($u->room['file']=='novich') - , ( ).
            - ,, ""
            - testHome(); if(!isset($hgo['id'])){ ?> - + Чтобы начать играть,Вам нужно прочесть подсказку ( ниже ).
            + После прочтения,ниже,воспользуйтесь кнопкой"Возврат"
            + testHome(); if(!isset($hgo['id'])){ ?> +
            - +

            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/objaga.php b/modules_data/location/objaga.php index 03ac6fe6..498121a6 100644 --- a/modules_data/location/objaga.php +++ b/modules_data/location/objaga.php @@ -21,7 +21,7 @@ $ar['base']=1; $ar['advanced']=2; $ar['advanced2']=3; if($objaga){$test_arenda=1;$ar_lvl=$ar[$objaga['type']];}else{$test_arenda=0;} -#--- ;) +#---пара проверок ;) if(isset($objaga['id'])) { $sleep = $u->testAction('`vars` = "sleep" AND `uid` = "'.$u->info['id'].'" LIMIT 1',1); if( $sleep[0] > 0 ) { @@ -32,17 +32,17 @@ if(isset($objaga['id'])) { } } if($u->info['clan']=='0'){$u->info['clan']='';} -if(!$objaga){$level=1;$nazv="";}else{$level=2;$nazv=""; +if(!$objaga){$level=1;$nazv="Общежитие";}else{$level=2;$nazv="Общежитие"; if(isset($_GET['obj_add'])){ $u->obj_addItem($_GET['obj_add']); }elseif(isset($_GET['obj_take'])){ $u->obj_takeItem($_GET['obj_take']); } } -if($u->info['room']=='217' /*&& $objaga['type']=='base'*/){$level=3;$nazv=". 1";}//else{$err = '

            ';$nazv=". 1";} -if($u->info['room']=='218' /*&& $objaga['type']!='base'*/){$level=3;$nazv=". 2";} -if($u->info['room']=='219' /*&& $objaga['type']!='base'*/){$level=3;$nazv=". 3";} -#--- +if($u->info['room']=='217' /*&& $objaga['type']=='base'*/){$level=3;$nazv="Общ. Этаж 1";}//else{$err = 'Вы ничего не арендуете на этом этаже

            ';$nazv="Общ. Этаж 1";} +if($u->info['room']=='218' /*&& $objaga['type']!='base'*/){$level=3;$nazv="Общ. Этаж 2";} +if($u->info['room']=='219' /*&& $objaga['type']!='base'*/){$level=3;$nazv="Общ. Этаж 3";} +#---аренда помещений if($_GET['arenda']=="base") { if($u->info['money']>=1) { mysql_query("INSERT INTO `house`(`owner`,`type`,`starttime`,`endtime`,`balance`,`weekcost`) VALUES ('".mysql_real_escape_string($u->info['id'])."','".mysql_real_escape_string($_GET['arenda'])."','".time()."','".(time()+604800)."','1','1')"); @@ -51,10 +51,10 @@ if($_GET['arenda']=="base") { $u->info['money']-=1; $objaga['balance']=1; $objaga['endtime']=time()+604800; - $err = " ' ' 1 .

            "; + $err = "Вы арендовали 'Койку в общежитии' за 1 кр.

            "; $ar_lvl=1; }else{ - $err = '

            '; + $err = 'У вас недостаточно денег

            '; } } if($_GET['arenda']=="advanced") { @@ -65,10 +65,10 @@ if($_GET['arenda']=="advanced") { $u->info['money']-=3; $objaga['balance']=3; $objaga['endtime']=time()+604800; - $err = " ' ' 3 .

            "; + $err = "Вы арендовали 'Койку с тумбочкой' за 3 кр.

            "; $ar_lvl=2; }else{ - $err = '

            '; + $err = 'У вас недостаточно денег

            '; } } if($_GET['arenda']=="advanced2") { @@ -79,13 +79,13 @@ if($_GET['arenda']=="advanced2") { $u->info['money']-=10; $objaga['balance']=10; $objaga['endtime']=time()+604800; - $err = " ' ' 10 .

            "; + $err = "Вы арендовали 'Койку со шкафом' за 10 кр.

            "; $ar_lvl=3; }else{ - $err = '

            '; + $err = 'У вас недостаточно денег

            '; } } -#--- +#---Сменить аренду if($_GET['changelist']==1 && $objaga['id']>0) { $level=4; } @@ -94,12 +94,12 @@ if($_GET['changearenda']=="base" && $objaga['id']>0) { $endtime = time() + (($objaga['balance']-1)/1)*604800; //$endtime = time() + 604800; mysql_query("UPDATE `house` SET `starttime` = ".time().", `endtime` = ".$endtime.", `type` = 'base', `weekcost` = '1' WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); - $err = '

            '; + $err = 'Смена арендуемого помещения произведена успешно

            '; $objaga['type']="base"; $objaga['endtime'] = $endtime; }else{ $cam = 2-$objaga['balance']; - $err = ' '.$cam.' .

            '; + $err = 'На балансе не хватает '.$cam.' кр. для смены арендуемого помещения

            '; } } if($_GET['changearenda']=="advanced" && $objaga['id']>0) { @@ -107,12 +107,12 @@ if($_GET['changearenda']=="advanced" && $objaga['id']>0) { $endtime = time() + (($objaga['balance']-3)/3)*604800; //$endtime = time() + 604800; mysql_query("UPDATE `house` SET `starttime` = ".time().", `endtime` = ".$endtime.", `type` = 'advanced', `weekcost` = '3' WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); - $err = '

            '; + $err = 'Смена арендуемого помещения произведена успешно

            '; $objaga['type']="advanced"; $objaga['endtime'] = $endtime; }else{ $cam = 6-$objaga['balance']; - $err = ' '.$cam.' .

            '; + $err = 'На балансе не хватает '.$cam.' кр. для смены арендуемого помещения

            '; } } if($_GET['changearenda']=="advanced2" && $objaga['id']>0) { @@ -120,27 +120,27 @@ if($_GET['changearenda']=="advanced2" && $objaga['id']>0) { $endtime = time() + (($objaga['balance']-10)/10)*604800; //$endtime = time() + 604800; mysql_query("UPDATE `house` SET `starttime` = ".time().", `endtime` = ".$endtime.", `type` = 'advanced2', `weekcost` = '10' WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); - $err = '

            '; + $err = 'Смена арендуемого помещения произведена успешно

            '; $objaga['type']="advanced2"; $objaga['endtime'] = $endtime; }else{ $cam = 20-$objaga['balance']; - $err = ' '.$cam.' .

            '; + $err = 'На балансе не хватает '.$cam.' кр. для смены арендуемого помещения

            '; } } -#--- +#---возможности комнаты которую арендовали if($objaga['type']=="base"){ - $name = " "; + $name = "Койку в общежитии"; $maxbox = "25"; $max_p_box = "50"; } if($objaga['type']=="advanced"){ - $name = " "; + $name = "Койку с тумбочкой"; $maxbox = "40"; $max_p_box = "150"; } if($objaga['type']=="advanced2"){ - $name = " "; + $name = "Койку со шкафом"; $maxbox = "70"; $max_p_box = "200"; } @@ -148,69 +148,69 @@ if($objaga['type']=="advanced2"){ if(!isset($objaga['type']) && $u->info['room']!='214') { $u->info['room'] = 214; mysql_query('UPDATE `users` SET `room` = "'.$u->info['room'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - die('( )'); + die('(Обновите экран)'); } -#--- +#---Прекращаем аренду if($_GET['closearenda']==1) { mysql_query("UPDATE `items_users` SET `inShop` = '0' WHERE `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `inShop` = '1';"); mysql_query("DELETE FROM `house` WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); - $err = ' "'.$name.'"

            '; + $err = 'Вы отказались арендовать "'.$name.'"

            '; $level=1; } -#--- +#---Продлить аренду if($_POST['payarenda']) { if($_POST['payarenda']>=1) { if($u->info['money']>0 && (int)$_POST['payarenda']>0 && ((int)$_POST['payarenda']<=$u->info['money'])) { $paytime = ($_POST['payarenda']/$objaga['weekcost'])*604800; mysql_query("UPDATE `house`,`users` SET `house`.`endtime` = `house`.`endtime`+'".$paytime."', `house`.`balance` = `house`.`balance`+'".mysql_real_escape_string($_POST['payarenda'])."',`users`.`money`=`users`.`money`-'".mysql_real_escape_string($_POST['payarenda'])."' WHERE `house`.`owner` = `users`.`id` AND `house`.`owner` = '".mysql_real_escape_string($u->info['id'])."';"); - $err = ' '.htmlspecialchars($_POST['payarenda'],NULL,'cp1251').'.00 .

            '; + $err = 'Вы положили на счет '.htmlspecialchars($_POST['payarenda'],NULL).'.00 кр.

            '; $u->info['money'] -=$_POST['payarenda']; $objaga['balance'] +=$_POST['payarenda']; $objaga['endtime'] += $paytime; }else{ - $err = '

            '; + $err = 'У вас недостаточно денег

            '; } }else{ - $err = ' : 1.

            '; + $err = 'Минимальная сумма: 1кр.

            '; } } -#--- +#---обновляем баланс $balance=round(($objaga['weekcost']*(floor(($objaga['endtime']-time())/24/3600)))/7, 2); mysql_query("UPDATE `house` SET `balance` = '".$balance."' WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); $objaga['balance'] = $balance; -#--- +#---Остаток аренды if($objaga['id']>0) { if(time()<$objaga['endtime']) { - $showdate = ''.date("d.m.y H:i",$objaga['endtime']).' ( '.$objaga['balance'].' .)'; + $showdate = ''.date("d.m.y H:i",$objaga['endtime']).' (баланс '.$objaga['balance'].' кр.)'; }else{ - $showdate = ''.date("d.m.y H:i",$objaga['endtime']).' ( '.$objaga['balance'].' .)'; + $showdate = ''.date("d.m.y H:i",$objaga['endtime']).' (баланс '.$objaga['balance'].' кр.)'; $level=2; } } -#--- - if(isset($sleep['id'])) {$_GET['room']=4;$sleep_mod=1;}#--- , - if(!$_GET['room'] and $test_arenda==1) {$_GET['room'] = 1;} #--- ( ) - if($_GET['room']==1 and $test_arenda==1) {$room = 1;} #--- - if($_GET['room']==2 and $test_arenda==1) {$room = 2;} #--- - if($_GET['room']==6 and $test_arenda==1) {$room = 6;} #--- - if($_GET['room']==3 and $test_arenda==1) {$room = 3;} #--- - if($_GET['room']==4 and $test_arenda==1) {$room = 4;} #--- - if($_GET['room']==7 and $test_arenda==1) {$room = 7;} #--- -#--- +#---Переключатель комнат + if(isset($sleep['id'])) {$_GET['room']=4;$sleep_mod=1;}#---Если спим, то никуда не выбратся + if(!$_GET['room'] and $test_arenda==1) {$_GET['room'] = 1;} #---Комната (если ничего не выбрано) + if($_GET['room']==1 and $test_arenda==1) {$room = 1;} #---Комната + if($_GET['room']==2 and $test_arenda==1) {$room = 2;} #---Сундук + if($_GET['room']==6 and $test_arenda==1) {$room = 6;} #---Сувениры + if($_GET['room']==3 and $test_arenda==1) {$room = 3;} #---Животные + if($_GET['room']==4 and $test_arenda==1) {$room = 4;} #---Сон + if($_GET['room']==7 and $test_arenda==1) {$room = 7;} #---Персонажи +#---Записи if($_POST['savenotes']) { $_POST['notes'] = str_replace(" \\n","\n",$_POST['notes']); $simbolcount = strlen($_POST['notes']); if($simbolcount>10000) { - $err = " ... .

            "; + $err = "Слишком много текста... такое не сохранить.

            "; }else{ mysql_query("UPDATE `house` SET `notes` = '".mysql_real_escape_string($_POST['notes'])."' WHERE `owner` = '".mysql_real_escape_string($u->info['id'])."';"); $objaga['notes'] = $_POST['notes']; - $err = " (".$simbolcount.")

            "; + $err = "Сохранено (".$simbolcount.")

            "; } } -#--- +#---Сон if(isset($_GET['to_sleep']) && $sleep['vars'] != 'sleep'){ mysql_query("UPDATE `eff_users` SET `sleeptime`=".time().",`deactiveLast` = ( `deactiveTime` - ".time()." ) WHERE `uid`='".mysql_real_escape_string($u->info['id'])."' AND `no_Ace` = 0 AND `delete` = 0"); mysql_query('UPDATE `items_users` SET `time_sleep` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` < 1001 AND `data` LIKE "%|sleep_moroz=1%"'); @@ -242,7 +242,7 @@ if(isset($_GET['to_sleep']) && $sleep['vars'] != 'sleep'){ $sleep['vars']='unsleep'; $sleep_mod=0; } -#--- +#---Животные /*if($_GET['pet_id']<0) { $id = str_replace("-", "",$_GET['pet_id']); $cageid = mysql_fetch_array(mysql_query("SELECT `pet_in_cage` FROM `users_animal` WHERE `pet_in_cage` = '1' AND `uid` = '".mysql_real_escape_string($u->info['id'])."'")); @@ -258,7 +258,7 @@ if(isset($_GET['to_sleep']) && $sleep['vars'] != 'sleep'){ mysql_query("UPDATE `users_animal` SET `pet_in_cage` = '".$petcage."' WHERE `pet_in_cage` = '0' AND `id` = '".mysql_real_escape_string($id)."'"); mysql_query("UPDATE `users` SET `animal` = '0' WHERE `id` = '".mysql_real_escape_string($u->info['id'])."'"); }else{ - $err = ' !

            '; + $err = 'Все слоты зверя заняты!

            '; } } if($_GET['pet_id']>0) { @@ -270,7 +270,7 @@ if($_GET['pet_id']>0) { mysql_query("UPDATE `users_animal` SET `pet_in_cage` = '".$cageid['pet_in_cage']."' WHERE `pet_in_cage` = '0' AND `id` = '".mysql_real_escape_string($_GET['pet_id'])."'"); mysql_query("UPDATE `users_animal` SET `pet_in_cage` = '0' WHERE (`pet_in_cage` = '1' OR `pet_in_cage` = '2') AND `id` = '".mysql_real_escape_string($_GET['pet_id'])."'"); mysql_query("UPDATE `users` SET `animal` = '".mysql_real_escape_string($_GET['pet_id'])."' WHERE `id` = '".mysql_real_escape_string($u->info['id'])."'"); - //$err = ' ;)

            '; + //$err = 'У Вас уже есть зверь ;)

            '; } }*/ $pet = mysql_fetch_array(mysql_query("SELECT `id`, `sex`, `name`, `level`, `obraz` FROM `users_animal` WHERE `pet_in_cage` = '0' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `delete` = 0 LIMIT 1;")); @@ -282,7 +282,7 @@ if( isset($_GET['pet_id']) ) { $id = (int)$_GET['pet_id']; if( $_GET['pet_id'] < 0 ) { $id = -$id; - // + //Помещаем зверя в общагу $cageid = mysql_fetch_array(mysql_query("SELECT `id`,`name` FROM `users_animal` WHERE `pet_in_cage` = '0' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `id` = '".mysql_real_escape_string($id)."' LIMIT 1")); if( isset($cageid['id']) ) { $cageid1 = mysql_fetch_array(mysql_query("SELECT `id` FROM `users_animal` WHERE `pet_in_cage` = '1' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' LIMIT 1")); @@ -297,12 +297,12 @@ if( isset($_GET['pet_id']) ) { }else{ mysql_query('UPDATE `users_animal` SET `pet_in_cage` = "1" WHERE `id` = "'.$cageid['id'].'" LIMIT 1'); } - $err = ' "'.$cageid['name'].'" !

            '; + $err = 'Вы успешно поместили "'.$cageid['name'].'" в общежитие!

            '; }else{ - $err = ' !

            '; + $err = 'Зверь не найден в инвентаре!

            '; } }else{ - // + //Забираем зверя из общаги $cageid = mysql_fetch_array(mysql_query("SELECT `id`,`name`,`pet_in_cage` FROM `users_animal` WHERE `pet_in_cage` > '0' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `id` = '".mysql_real_escape_string($id)."' LIMIT 1")); if( isset($cageid['id']) ) { if( $u->info['animal'] > 0 ) { @@ -311,9 +311,9 @@ if( isset($_GET['pet_id']) ) { }else{ mysql_query('UPDATE `users_animal` SET `pet_in_cage` = "0" WHERE `id` = "'.$cageid['id'].'" LIMIT 1'); } - $err = ' "'.$cageid['name'].'" !

            '; + $err = 'Вы успешно забрали "'.$cageid['name'].'" из общежитие!

            '; }else{ - $err = ' !

            '; + $err = 'Зверь не найден в общежитии!

            '; } } } @@ -324,21 +324,21 @@ if( $pet['id'] != $u->info['animal'] ) { $cage1 = mysql_fetch_array(mysql_query("SELECT `id`, `sex`, `name`, `level`, `obraz`,`pet_in_cage` FROM `users_animal` WHERE `pet_in_cage` = '1' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `delete` = 0 LIMIT 1;")); $cage2 = mysql_fetch_array(mysql_query("SELECT `id`, `sex`, `name`, `level`, `obraz`,`pet_in_cage` FROM `users_animal` WHERE `pet_in_cage` = '2' AND `uid` = '".mysql_real_escape_string($u->info['id'])."' AND `delete` = 0 LIMIT 1;")); #------------------ -#---/ +#---Спим/бодрствуем if($sleep['vars']=='sleep'){ $div = "
            "; - $status = ""; + $status = "спите"; $link = "awake"; - $button = ""; + $button = "Проснуться"; $div1 = "
            "; }else{ - $status = ""; + $status = "бодрствуете"; $link = "sleep"; - $button = ""; + $button = "Уснуть"; } -#--- +#---Переходы по комнатам if($objaga['type']=="base" && $_GET['loc']=='1.180.0.218') { -$err = " .

            "; +$err = "У вас нет на это прав.

            "; } if( isset($_GET['changearenda']) ) { @@ -364,85 +364,85 @@ var sd4 = "info['id'];?>";        + case 1:#-----Вход?> - -
             : . . . .

            -
            -: 1 . + 1 . .
            + Правила: Нет нападениям. Нет телепортации. Нет передаче предметов. Нет использованию магии и распитию эликсиров. +Комендант
            +Арендовать Койку в общежитии
            +Цена: 1 кр. + 1 кр. в неделю.
            - • : 25
            -• : 50 .
            - •
            - zuby(5,1)?> + • Размер сундука: 25 вещей
            +• Сувениры: 50 шт.
            + • Койка
            +Арендовать Арендовать за zuby(5,1)?>
            -
            -: 3 . + 3 . .
            +Арендовать Койку с тумбочкой
            +Цена: 3 кр. + 3 кр. в неделю.
            - • : 40
            -• : 150 .
            - •
            + • Размер сундука: 40 вещей
            +• Сувениры: 150 шт.
            + • Койка
            - zuby(15,1)?> +Арендовать Арендовать за zuby(15,1)?>
            -
            -: 10 . + 10 . .
            +Арендовать Койку со шкафом
            +Цена: 10 кр. + 10 кр. в неделю.
            - • : 70
            -• : 200 .
            - • : 2
            - •
            + • Размер сундука: 70 вещей
            +• Сувениры: 200 шт.
            + • Мест для животных: 2
            + • Койка
            - zuby(50,1)?> +Арендовать Арендовать за zuby(50,1)?>
            + case 2:#-----Арендованная койка?> - -
            : . . . .

            +Правила: Нет нападениям. Нет телепортации. Нет передаче предметов. Нет использованию магии и распитию эликсиров. +Комендант
            -
            - :
            - :
            - : .
            +Вы арендовали
            +Начало аренды:
            +Оплачено до:
            +Цена в неделю: кр.
            - • :
            - • : .
            -';}?> - •
            + • Размер сундука: вещей
            + • Сувениры: шт.
            +';}?> + • Койка

            -
            +Прекратить аренду
            - , .
            - . , .
            - .
            - , , .
            +При отмене аренды, все вещи из сундука переносятся в ваш инвентарь.
            +Ваши животные передаются вам. Если у вас уже есть другое животное, то выпускаются на волю.
            +Остаток средств не возвращается.
            +Если вы должны оплатить аренду, то ваш долг удваивается и вы не сможете воспользоваться арендой, пока не оплатите долг.
            -
            +Сменить аренду
            - .
            - , .
            - , .
            +Для смены аренды на вашем балансе должна быть необходимая сумма.
            +Смена аренды, оплаченной зубами на кредитную аренду запрещена.
            +Количество вещей, сувениров и животных на вашем складе не должно превышать допустимое значение для выбранного арендуемого помещения.
            - . , - .
            - 10000 . + case 1:#-----Заметки?> +Вы находитесь в своей комнате. Первое, что вы видите - записная книжка.
            +Вы можете оставить нужные вам записи общим объемом не более 10000 символов.
            - + info['admin'] > 0 ) { // +//if( $u->info['admin'] > 0 ) { // для админа $chest = $u->genInv(7,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `im`.`type` != "28" AND `im`.`type` != "38" AND `im`.`type` != "39" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" ORDER BY `lastUPD` DESC'); $invertory = $u->genInv(8,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `im`.`type` != "28" AND `im`.`type` != "38" AND `im`.`type` != "39" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ORDER BY `lastUPD` DESC'); @@ -454,7 +454,7 @@ var sd4 = "info['id'];?>"; function obj_add(id, room, rnd, t){ if( parseInt($('#in_chest22').text()) > 0 ) { - $(t).text(' '); + $(t).text('В рюкзак'); t = $(t).parents('.item').first(); if (rnd=='' || rnd ==undefined || rnd =='undefined') {var rnd = 1;} @@ -466,16 +466,16 @@ var sd4 = "info['id'];?>"; } }); }else{ - alert(' .'); + alert('Лимит передач на сегодня исчерпан.'); } } function obj_take(id, room, rnd, t){ if( parseInt($('#in_chest22').text()) > 0 ) { - $(t).text(' '); + $(t).text('В сундук'); t = $(t).parents('.item').first();if (rnd=='' || rnd ==undefined || rnd =='undefined') {var rnd = 1;}$.ajax({type: "GET",url: "main.php?obj_take="+id+"&room="+room+"&rnd="+rnd,cache: false,success: function () {obj_recount(2);moveAnimate(t, $('#invertory').children('tbody'));}}); }else{ - alert(' .'); + alert('Лимит передач на сегодня исчерпан.'); } } @@ -497,11 +497,11 @@ var sd4 = "info['id'];?>"; }); }); - : / , : info['transfers']?>

            + Сундук: / , передач: info['transfers']?>

            - - + + info['admin'] > 0) { /*?> @@ -509,10 +509,10 @@ var sd4 = "info['id'];?>";
                 В сундуке В рюкзаке
            - + @@ -523,10 +523,10 @@ var sd4 = "info['id'];?>";
            :Поиск по имени:
            - +
            - + @@ -536,32 +536,32 @@ var sd4 = "info['id'];?>"; - - + +
            :Поиск по имени:
            - +
            id="chest_null">
            id="invertory_null">
            id="chest_null"> ПУСТО
            id="invertory_null"> ПУСТО
            genInv(7,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `im`.`type` != "28" AND `im`.`type` != "38" AND `im`.`type` != "39" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" ORDER BY `iu`.`lastUPD` DESC'); //$box_count= count($itmAll); ?> - : / , : info['transfers']?>

            + Сундук: / , передач: info['transfers']?>

            - + -
               В сундукеВ рюкзаке
            + genInv(7,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `im`.`type` != "28" AND `im`.`type` != "38" AND `im`.`type` != "39" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" ORDER BY `iu`.`lastUPD` DESC'); if($itmAll[0]==0) { - echo ''; + echo ''; }else{ echo $itmAll[2]; } @@ -570,7 +570,7 @@ var sd4 = "info['id'];?>";
            ПУСТО
            - + @@ -579,7 +579,7 @@ var sd4 = "info['id'];?>"; $itmAll = $u->genInv(8,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `im`.`type` != "28" AND `im`.`type` != "38" AND `im`.`type` != "39" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ORDER BY `iu`.`lastUPD` DESC'); if($itmAll[0]==0) { - echo ''; + echo ''; }else{ echo $itmAll[2]; } @@ -590,35 +590,35 @@ var sd4 = "info['id'];?>"; genInv(10,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "39") AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" ORDER BY `lastUPD` DESC'); ?> -: / , : info['transfers']?>

            +Сувениры: / , передач: info['transfers']?>

            ПУСТО
            - + - - +=1){?> - +info['room']=='217' and $ar_lvl>=1 and $sleep_mod==0) { ?> - +info['room']=='217' and $ar_lvl>=2 and $sleep_mod==0){ ?> - +info['room']=='218' and $ar_lvl>=2 and $sleep_mod==0){?> - +info['room']=='218' and $ar_lvl>=3 and $sleep_mod==0){ ?> - +info['room']=='219' and $ar_lvl>=3 and !isset($sleep['id'])){ ?> - +
               На сохраненииВ рюкзаке
            + genInv(10,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "39") AND `iu`.`inOdet`="0" AND `iu`.`inShop`="1" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0) { - echo ''; + echo ''; }else{ echo $itmAll[2]; } ?>
            ПУСТО
            -
            + genInv(9,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "39") AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0) { - echo ''; + echo ''; }else{ echo $itmAll[2]; } @@ -627,9 +627,9 @@ if($itmAll[0]==0)
            ПУСТО
            + case 7:#-----Персонажи?> -

            +

            Работа с персонажами

            info['id'].'" AND `twink` = "'.$u->info['twink'].'" LIMIT 1')); if(!isset($p_now['id'])) { @@ -643,7 +643,7 @@ if(!isset($p_now['id'])) { ) '); $p_now = mysql_fetch_array(mysql_query('SELECT * FROM `users_twink` WHERE `uid` = "'.$u->info['id'].'" AND `twink` = "'.$u->info['twink'].'" LIMIT 1')); }else{ - // + //Обновляем текущие данные $p_now['login'] = $u->info['login']; $p_now['level'] = $u->info['level']; $p_now['exp'] = $u->info['exp']; @@ -682,7 +682,7 @@ if(!isset($p_now['id'])) { if(isset($_GET['change_pers'])) { $p_sel = mysql_fetch_array(mysql_query('SELECT * FROM `users_twink` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string($_GET['change_pers']).'" LIMIT 1')); if(isset($p_sel['id']) && $p_sel['id'] != $p_now['id']) { - // + //Заходим на персонажа mysql_query('UPDATE `users` SET `level` = "'.$p_sel['level'].'", `obraz` = "'.$p_sel['obraz'].'", @@ -705,11 +705,11 @@ if(isset($_GET['change_pers'])) { WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); // if( $p_sel['twink'] > 0 ) { - // + //Возвращаем предметы с основного персонажа mysql_query('UPDATE `items_users` SET `uid` = "-91'.$u->info['id'].'" WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `items_users` SET `uid` = "'.$u->info['id'].'" WHERE `uid` = "-92'.$u->info['id'].'" LIMIT 1'); }else{ - // + //Возвращаем вещи с твинка mysql_query('UPDATE `items_users` SET `uid` = "-92'.$u->info['id'].'" WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `items_users` SET `uid` = "'.$u->info['id'].'" WHERE `uid` = "-91'.$u->info['id'].'" LIMIT 1'); } @@ -721,13 +721,13 @@ if(isset($_GET['change_pers'])) { // die(''); }else{ - echo '
            '; + echo 'Персонаж не может быть выбран
            '; } }elseif(isset($_GET['add_new_chars']) && $user_new_pers == true ) { $p_count = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users_twink` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); $p_count = $p_count[0]; if( $p_count > 9 ) { - echo '
            '; + echo 'Вы не можете создавать более десяти персонажей
            '; }else{ mysql_query('INSERT INTO `users_twink` ( `uid`,`twink`,`login`,`level`,`exp`,`upLevel`,`stats`,`time`,`ability`,`skills`,`sskills`,`nskills`,`priems`,`obraz`,`stopexp` @@ -762,14 +762,14 @@ if( $user_new_pers == true ) { $r .= '
            '; - $r .= ''; + $r .= ''; $r .= '
            '; } echo $r; ?> + case 3:#-----Животные?> '.$cage2['name'].' ['.$cage2['level'].'] -'; +'; }else{ -echo' @@ -797,74 +797,74 @@ echo'
            @@ -777,17 +777,17 @@ echo $r; '.$cage1['name'].' ['.$cage1['level'].'] -'; +'; }else{ -echo'
            +echo'
            свободно
            '; } ?>

            +echo'
            свободно
            '; } ?>
            +echo'свободно '; }else{ echo''.$pet['name'].' ['.$pet['level'].'] -'; +'; }?>
            - , .
            - . , , , .
            -

            + case 4:#-----Сон?> +Вы можете заснуть, забыв о внешнем мире.
            +Во время сна все временные эффекты на вас приостанавливаются. Это касается как, например, эликсиров, так и травм.
            +Сон не влияет на состояние предметов с ограниченным сроком существования

            -:
            +Состояние: Вы
            .
            '; +echo 'Во время сна нельзя перемещаться.
            '; } ?>

            - - :

            + case 4:#-----------------------------------------------смена аренды----------------------------------------?> +Вы можете сменить арендуемое помещение:

            - .
            - , .
            - , .
            +Для смены аренды на вашем балансе должна быть необходимая сумма.
            +Смена аренды, оплаченной зубами на кредитную аренду запрещена.
            +Количество вещей, сувениров и животных на вашем складе не должно превышать допустимое значение для выбранного арендуемого помещения.

            -
            -: 1 . + 1 . .
            +Арендовать Койку в общежитии
            +Цена: 1 кр. + 1 кр. в неделю.
            - • : 25
            -• : 50 .
            - •
            + • Размер сундука: 25 вещей
            +• Сувениры: 50 шт.
            + • Койка
            - +Сменить помещение
            -
            -: 3 . + 3 . .
            +Арендовать Койку с тумбочкой
            +Цена: 3 кр. + 3 кр. в неделю.
            - • : 40
            -• : 150 .
            - •
            + • Размер сундука: 40 вещей
            +• Сувениры: 150 шт.
            + • Койка
            - +Сменить помещение
            -
            -: 10 . + 10 . .
            +Арендовать Койку со шкафом
            +Цена: 10 кр. + 10 кр. в неделю.
            - • : 70
            -• : 200 .
            - • : 2
            - •
            + • Размер сундука: 70 вещей
            +• Сувениры: 200 шт.
            + • Мест для животных: 2
            + • Койка
            - +Сменить помещение '; } @@ -888,32 +888,32 @@ echo'
            '; info['room'] == 214 && $sleep_mod == 0) { ?>
            Страшилкина Улица
            . 1Общ. Этаж 1
            Общежитие
            . 2Общ. Этаж 2
            . 1Общ. Этаж 1
            . 3Общ. Этаж 3
            . 2Общ. Этаж 2
            - +
            @@ -944,21 +944,21 @@ if($u->info['room']=='219' and $ar_lvl>=3 and !isset($sleep['id'])){ -: info['money'];?> .

            +Деньги: info['money'];?> кр.

            info['room']=="214"){?> - +Аренда '',2=>'',3=>'',4=>'',5=>''); - if($_GET['room']!=1){echo"";}else{echo"";}?>
            -";}else{echo"";}?>
            -";}else{echo"";}?>
            -";}else{echo"";}?>
            +//Коридор +//$room_array = array (1=>'Комната',2=>'Сундук',3=>'Сувениры',4=>'Животные',5=>'Сон'); + if($_GET['room']!=1){echo"Комната";}else{echo"Комната";}?>
            +Сундук";}else{echo"Сундук";}?>
            +Сувениры";}else{echo"Сувениры";}?>
            +Персонажи";}else{echo"Персонажи";}?>

            ";}else{echo"
            ";} + if($_GET['room']!=3){echo"Животные
            ";}else{echo"Животные
            ";} }?> -";}else{echo"";}?> +Сон";}else{echo"Сон";}?> info['id']."'")); if($_GET['get']=='10' && $is_eff[0]==0){ /* - 'm1'=>'. (%)', - 'm2'=>'. (%)', - 'm3'=>'. . (%)', - 'm4'=>'. (%)', - 'm5'=>'. (%)', - 'm6'=>'. (%)', - 'm7'=>'. (%)', - 'm10'=>'. ', - 'm11'=>'. ', + 'm1'=>'Мф. критического удара (%)', + 'm2'=>'Мф. против критического удара (%)', + 'm3'=>'Мф. мощности крит. удара (%)', + 'm4'=>'Мф. увертывания (%)', + 'm5'=>'Мф. против увертывания (%)', + 'm6'=>'Мф. контрудара (%)', + 'm7'=>'Мф. парирования (%)', + 'm10'=>'Мф. мощности урона', + 'm11'=>'Мф. мощности магии стихий', - 's1'=>'', - 's2'=>'', - 's3'=>'', - 's4'=>'', - 's5'=>'', - 's6'=>'', - 's7'=>'', - 's8'=>'', - 's9'=>' ', - 's10'=>'' + 's1'=>'Сила', + 's2'=>'Ловкость', + 's3'=>'Интуиция', + 's4'=>'Выносливость', + 's5'=>'Интеллект', + 's6'=>'Мудрость', + 's7'=>'Духовность', + 's8'=>'Воля', + 's9'=>'Свобода духа', + 's10'=>'Божественность' $u->info['admin'] */ @@ -37,10 +37,10 @@ if($_GET['get']=='10' && $is_eff[0]==0){ mysql_query('INSERT INTO `eff_users` ( `id_eff`,`uid`,`name`,`data`,`overType`,`timeUse` ) VALUES ( - "396","'.$user['id'].'"," ","add_exp=5'.$datadd.'|nofastfinisheff=1","105","'.time().'" + "396","'.$user['id'].'","Благословление Падальщика","add_exp=5'.$datadd.'|nofastfinisheff=1","105","'.time().'" )')); { - $err = " . 10 ! "; + $err = "Падальщик сегодня в хорошем настроении. Вы получили Благословение Падальщика и 10 кредитов! "; mysql_query('UPDATE `users_achiv` SET `pa`= `pa`+1 WHERE `id` = "'.$user['id'].'" LIMIT 1'); } } @@ -50,12 +50,12 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){ $left_time=$wait_sec-$new_t; $left_min=floor($left_time/3600); $left_sec=floor(($left_time-$left_min*3600)/60); - if($left_min==1){$time_h="";} - if($left_min>1 and $left_min<5){$time_h="";} - if($left_min>4){$time_h="";} - $time_left=$left_min." ".$time_h." ".$left_sec." "; + if($left_min==1){$time_h="час";} + if($left_min>1 and $left_min<5){$time_h="часа";} + if($left_min>4){$time_h="часов";} + $time_left=$left_min." ".$time_h." ".$left_sec." мин"; - $err=" . "; + $err="Вы уже получали благословение Падальщика. Дождитесь окончания текущего Благословления"; } ?> @@ -69,12 +69,12 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){
            - @@ -163,7 +163,7 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){

            " "

            +

            "Памятник Падальщику"

            0){ $take_today = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND `data` LIKE "%musor_art=1%" AND `delete` < 1234567890 LIMIT 1')); $take_today = 0 + $take_today[0]; if( $take_today < 2 ) { - $error .= ' '.$itm['name'].' .'; + $error .= 'Вы взяли у Ангела «'.$itm['name'].'» найти вы его можете у себя в рюкзаке.'; $u->addItem($itm['id'],$u->info['id'],'|sudba='.$u->info['login'].'|nosale=1|frompisher=1|musor_art=1'); }else{ - $error .= ' , , , !'; + $error .= 'Ангел Вам уже выдал предмет, больше вы не получите, если хотите поменять свою вещь, отдайте Ангелу те которые вы уже взяли !'; } }else{ - $error .= ' !'; + $error .= 'Предмет не найден!'; } }elseif(isset($_GET['restart'])) { if(mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `data` LIKE "%musor_art=1%" AND `delete` < 1234567890')) { - $error .= ' , .'; + $error .= 'Вы отдали все вещи полученные в дар Ангелом, выберите себе новые предметы.'; }else{ - $error .= ' .'; + $error .= 'У вас нет предметов от Ангела.'; } } echo ''.$error.'
            '; @@ -104,15 +104,15 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){ while($i < count($arr)) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($arr[$i]).'" LIMIT 1')); if(isset($itm['id'])) { - $items .= '   '; + $items .= '   '; } $i++; } - /*echo '
            :
            '; + /*echo 'Отдать Ангелу вещи
            Возможно взять вещи:
            '; if( $items != '' ) { echo '

            '.$items; }else{ - echo ' '; + echo 'Нет предметов'; }*/ ?>
            @@ -152,7 +152,7 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){ - +
            Площадь поклона
            - + @@ -182,7 +182,7 @@ elseif($_GET['get']=='10' && $is_eff[0]>0){
            - : + Благословление Падальщика: получить diff --git a/modules_data/location/penter.php b/modules_data/location/penter.php index 44f958cd..3af0e6ec 100644 --- a/modules_data/location/penter.php +++ b/modules_data/location/penter.php @@ -7,7 +7,7 @@ if(!defined('GAME')) if($u->room['file']=='penter') { -$dun = 1; // 2-7 +$dun = 1; //для новичков 2-7 лвл $er = ''; @@ -35,24 +35,24 @@ if(isset($g11['id'])) $g111 = 0; if(isset($_GET['start'])) { - $re = ' . : '.$u->timeOut(7200-time()+$g11['time']); + $re = 'Поход в пещеры запрещен. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']); } } if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) { - // - // + //начинаем поход + //начинаем поход $ig = 1; if($ig>0) { - // + //перемещаем игроков в пещеру //$u->addAction(time(),'psh1',''); $ins = mysql_query('INSERT INTO `dungeon_now` (`city`,`uid`,`id2`,`name`,`time_start`) - VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","","'.time().'")'); + VALUES ("'.$zv['city'].'","'.$zv['uid'].'","'.$dun.'","Канализация","'.time().'")'); if($ins) { $zid = mysql_insert_id(); - // + //обновляем пользователей $su = mysql_query('SELECT `u`.`id`,`st`.`dn` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$zv['id'].'" LIMIT '.($zv['team_max']+1).''); $ids = ''; while($pu = mysql_fetch_array($su)) @@ -65,8 +65,8 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) if($upd1) { $upd2 = mysql_query('UPDATE `users` SET `room` = "189" WHERE '.$ids.' LIMIT '.($zv['team_max']+1).''); - // $zid for_dn = $dun - // + //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dun + //Добавляем ботов $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -75,7 +75,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) } $vls = rtrim($vls,','); $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`) VALUES '.$vls.''); - // + //Добавляем обьекты $vls = ''; $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "'.$dun.'"'); while($pl = mysql_fetch_array($sp)) @@ -90,13 +90,13 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); die(''); }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } }else{ - $re = ' ...'; + $re = 'Ошибка перехода в подземелье...'; } } }elseif(isset($_POST['go'],$_POST['goid']) && $g111==1) @@ -114,30 +114,30 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $upd = mysql_query('UPDATE `stats` SET `dn` = "'.$zv['id'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if(!$upd) { - $re = ' '; + $re = 'Не удалось вступить в эту группу'; unset($zv); }else{ $u->info['dn'] = $zv['id']; } }else{ - $re = ' '; + $re = 'В группе нет места'; unset($zv); } }else{ - $re = ' '; + $re = 'Вы не подходите по уровню'; unset($zv); } }else{ - $re = ' '; + $re = 'Заявка не найдена'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } }elseif(isset($_POST['leave']) && isset($zv['id']) && $g111 == 1) { if($zv['uid']==$u->info['id']) { - // + //ставим в группу нового руководителя $ld = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dn` = "'.$zv['id'].'" AND `id` != "'.$u->info['id'].'" LIMIT 1')); if(isset($ld['id'])) { @@ -147,14 +147,14 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $u->info['dn'] = 0; unset($zv); }else{ - // + //удаляем группу целиком mysql_query('UPDATE `dungeon_zv` SET `delete` = "'.time().'" WHERE `id` = "'.$zv['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); } }else{ - // + //просто выходим с группы mysql_query('UPDATE `stats` SET `dn` = "0" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); $u->info['dn'] = 0; unset($zv); @@ -179,7 +179,7 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $tmx = 5; } - // + //только своего уровня $lmn = $u->info['level']; $ins = mysql_query('INSERT INTO `dungeon_zv` @@ -196,16 +196,16 @@ if(isset($_GET['start']) && $zv['uid']==$u->info['id'] && $g111 == 1) $zv['id'] = $u->info['dn']; $zv['uid'] = $u->info['id']; mysql_query('UPDATE `stats` SET `dn` = "'.$u->info['dn'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $re = ' '; + $re = 'Вы успешно создали группу'; }else{ - $re = ' '; + $re = 'Не удалось создать группу'; } }else{ - $re = ' '; + $re = 'Вы уже находитесь в группе'; } } -// +//Генерируем список групп $sp = mysql_query('SELECT * FROM `dungeon_zv` WHERE `city` = "'.$u->info['city'].'" AND `lvlmin` = "'.$u->info['level'].'" AND `delete` = "0" AND `time` > "'.(time()-60*60*2).'"'); while($pl = mysql_fetch_array($sp)) { @@ -216,11 +216,11 @@ while($pl = mysql_fetch_array($sp)) } $dzs .= ''.date('H:i',$pl['time']).' '; - $pus = ''; // + $pus = ''; //группа $su = mysql_query('SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`st`.`dn`,`u`.`city`,`u`.`room` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`dn`="'.$pl['id'].'" LIMIT '.($pl['team_max']+1).''); while($pu = mysql_fetch_array($su)) { - $pus .= ''.$pu['login'].' ['.$pu['level'].']'; + $pus .= ''.$pu['login'].' ['.$pu['level'].']'; $pus .= ', '; } $pus = trim($pus,', '); @@ -232,7 +232,7 @@ while($pl = mysql_fetch_array($sp)) $dl = ''; if(($moder['boi']==1 || $u->info['admin']>0) && $pl['dcom']==0) { - $dl .= ' ( )'; + $dl .= ' (удалить комментарий)'; if(isset($_GET['delcom']) && $_GET['delcom']==$pl['id'] && $u->newAct($_GET['key'])==true) { mysql_query('UPDATE `dungeon_zv` SET `dcom` = "'.$u->info['id'].'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); @@ -240,11 +240,11 @@ while($pl = mysql_fetch_array($sp)) } } - $pl['com'] = htmlspecialchars($pl['com'],NULL,'cp1251'); + $pl['com'] = htmlspecialchars($pl['com'],NULL); if($pl['dcom']>0) { - $dl = ' '; + $dl = ' комментарий удален модератором'; } if($pl['dcom']>0) @@ -298,9 +298,9 @@ body } ?>">info['city']=='fallenearth'){ - echo " "; + echo "Темный Портал"; }else { - echo " "; + echo "Магический Портал"; } ?> @@ -320,7 +320,7 @@ if($re!='') echo ''.$re.'
            '; } -// +//отображаем if($dzs=='') { $dzs = ''; @@ -329,7 +329,7 @@ if($dzs=='') { if($g111==1) { - $pr = ''; + $pr = ''; } $dzs = ''.$pr.'
            '.$dzs.''.$pr.''; } @@ -347,14 +347,14 @@ if($u->info['dn']==0)
            - - + Группа + Комментарий
            - + Пароль
            - +  
            @@ -368,14 +368,14 @@ if($u->info['dn']==0) { if($zv['uid']==$u->info['id']) { - $psh_start = '  '; + $psh_start = '  '; } echo '
            - + Группа '.$psh_start.' - +
            '; } @@ -384,7 +384,7 @@ if($u->info['dn']==0) timeOut(7200-time()+$g11['time']).'
            " " ;)'; + echo 'Поход в пещеры разрешен один раз в два часа. Осталось еще: '.$u->timeOut(7200-time()+$g11['time']).'
            Но Вы всегда можете приобрести ключ от прохода у любого "копателя пещер" в Торговом зале ;)'; } } diff --git a/modules_data/location/perehod.php b/modules_data/location/perehod.php index fcd774cf..6ff20e69 100644 --- a/modules_data/location/perehod.php +++ b/modules_data/location/perehod.php @@ -25,7 +25,7 @@ if($u->room['file']=='perehod')
            src="https://img.new-combats.com/i/images/subimages/map_zal2.gif" id="mo_1.180.0.0" width="175" height="37" />
            src="https://img.new-combats.com/i/images/subimages/map_zal1.gif" width="88" height="15" class="aFilter" id="mo_1.180.0.2" />
            -
            +
            @@ -33,22 +33,22 @@ if($u->room['file']=='perehod') - , ( ).
            - ,, ""
            - testHome(); if(!isset($hgo['id'])){ ?> - + Чтобы начать играть,Вам нужно прочесть подсказку ( ниже ).
            + После прочтения,ниже,воспользуйтесь кнопкой"Возврат"
            + testHome(); if(!isset($hgo['id'])){ ?> +
            - +

            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/poklon.php b/modules_data/location/poklon.php index 05642657..35443adc 100644 --- a/modules_data/location/poklon.php +++ b/modules_data/location/poklon.php @@ -28,15 +28,15 @@ if($u->room['file']=='poklon') { @@ -60,8 +60,8 @@ if($u->room['file']=='poklon') {
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/post.php b/modules_data/location/post.php index c8cdcae4..a5538255 100644 --- a/modules_data/location/post.php +++ b/modules_data/location/post.php @@ -6,7 +6,7 @@ if(!defined('GAME')) if($u->room['file']=='post') { -/* */ +/* Разделы почты */ $r = 1; $otdel = 1; if(isset($_POST['torzer'])) { $_GET['r'] = $_POST['torzer']; @@ -34,16 +34,16 @@ if(isset($_GET['r'])) { } } -$tmgo = 30; // +$tmgo = 30; //минут if(isset($_POST['touser'])) { $pu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['touser']).'" ORDER BY `id` ASC LIMIT 1')); if($u->info['allLock'] > time()) { $pu = false; - echo ''; + echo ''; }elseif( $u->info['transfers'] < 1 ) { $pu = false; - echo ''; + echo ''; } } @@ -55,9 +55,9 @@ if($r == 1) { if(isset($_POST['itm_post']) && (int)$_POST['itm_post'] > 0) { $itm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.*,`iu`.item_id as item_id FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "'.mysql_real_escape_string($_POST['itm_post']).'" LIMIT 1')); if( $u->info['align'] == 2 ) { - $u->error = ' '; + $u->error = 'Хаосники не могут передавать кредиты и предметы'; }elseif($u->info['palpro'] < time()) { - $u->error = ' '; + $u->error = 'Нужна проверка на чистоту для использования телеграфа'; }elseif(isset($itm['id'])) { $itm['id'] = mysql_real_escape_string(round((int)$_POST['itm_post'])); $see1 = 1; @@ -97,43 +97,43 @@ if($r == 1) { } $u->info['money'] -= $mny; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$itm['name'].'" "'.$pu['login'].'" '.$mny.' . '; + $u->error = 'Вы успешно передали "'.$itm['name'].'" к персонажу "'.$pu['login'].'" за '.$mny.' кр. '; $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - $txt = ' '.$u->info['login'].': "'.$itm['name'].'". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + //логи + $txt = 'Предмет от '.$u->info['login'].': "'.$itm['name'].'". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($itm['id']).'","0")'); - $txt = ' '.$pu['login'].': "'.$itm['name'].'". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Отправление предмета к '.$pu['login'].': "'.$itm['name'].'". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($itm['id']).'","0")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $u->error = ' '; + $u->error = 'Не достаточно денежных средств'; } }else{ - $u->error = ' '; + $u->error = 'Подходящий предмет не найден'; } }else{ - $u->error = ' '; + $u->error = 'Предмет не найден'; } } }elseif($r == 3) { if(isset($_GET['itm_take'])) { $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `im`.`id` = `iu`.`item_id` WHERE `iu`.`uid`="-51'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`id` = "'.mysql_real_escape_string($_GET['itm_take']).'" LIMIT 1')); if( $u->info['align'] == 2 ) { - $u->error = ' '; + $u->error = 'Хаосники не могут передавать кредиты и предметы'; }elseif($u->info['palpro'] < time()) { - $u->error = ' '; + $u->error = 'Нужна проверка на чистоту для использования телеграфа'; }elseif(isset($itm['id'])) { if($itm['item_id'] == 1220) { - // + //Прием денег $post = mysql_fetch_array(mysql_query('SELECT * FROM `post` WHERE `item_id` = "0" AND `money` LIKE "'.$itm['1price'].'" AND `uid` = "'.$u->info['id'].'" AND `finish` = "0" ORDER BY `id` DESC LIMIT 1')); if(isset($post['id'])) { if($post['sender_id'] < 0) { @@ -143,11 +143,11 @@ if($r == 1) { $pup = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$post['sender_id'].'" LIMIT 1')); if($post['sender_id'] == 0) { $pup = array( - 'login' => '', + 'login' => 'Администрация', 'id' => 0 ); } - $u->error = ' '.$itm['1price'].' . '.$pup['login']; + $u->error = 'Вы успешно забрали '.$itm['1price'].' кр. от '.$pup['login']; $u->info['money'] += $itm['1price']; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `post` SET `finish` = "'.time().'" WHERE `item_id` = "'.$post['id'].'" ORDER BY `id` DESC LIMIT 1'); @@ -156,17 +156,17 @@ if($r == 1) { $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - // - $txt = ' '.$u->info['login'].': '.$itm['1price'].' . .'; + //логи + $txt = 'Деньги для '.$u->info['login'].': '.$itm['1price'].' кр. Доставлены.'; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2")'); - $txt = ' '.$pup['login'].': '.$itm['1price'].' . .'; + $txt = 'Деньги от '.$pup['login'].': '.$itm['1price'].' кр. Получены.'; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2")'); } }else{ - // + //Прием вещей $post = mysql_fetch_array(mysql_query('SELECT `p`.id,`p`.sender_id, count(`iuu`.id) as inGroupCount, `iu`.id as idItem, `iuu`.item_id, `iuu`.inGroup FROM `post` as `p` LEFT JOIN `items_users` as `iu` ON (`iu`.id = `p`.item_id ) LEFT JOIN `items_users` as `iuu` ON (`iuu`.item_id = `iu`.item_id AND `iu`.`inGroup` = `iu`.`inGroup` AND `iuu`.`uid` = `iu`.`uid`) WHERE (`p`.`sender_id` = "'.$u->info['id'].'" OR `p`.`sender_id` = "-'.$u->info['id'].'") AND `iu`.`id` = "'.mysql_real_escape_string($_GET['itm_take']).'" GROUP BY `iu`.id ORDER BY `iu`.`id` DESC LIMIT 1')); if(isset($post['id'])) { if($post['sender_id'] < 0) { @@ -187,29 +187,29 @@ if($r == 1) { mysql_query('UPDATE `post` SET `finish` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($post['id']).'" ORDER BY `id` DESC LIMIT 1'); $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' "'.$itm['name'].'"'; + $u->error = 'Вы успешно забрали "'.$itm['name'].'"'; $pup = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$post['sender_id'].'" LIMIT 1')); if($post['sender_id'] == 0) { $pup = array( - 'login' => '', + 'login' => 'Администрация', 'id' => 0 ); } - // - $txt = ' '.$u->info['login'].': "'.$itm['name'].'". .'; + //логи + $txt = 'Предмет для '.$u->info['login'].': "'.$itm['name'].'". Доставлен.'; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`,`finish`) VALUES ("'.mysql_real_escape_string($txt).'","'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2", "'.time().'")'); - $txt = ' '.$pup['login'].': "'.$itm['name'].'". .'; + $txt = 'Предмет от '.$pup['login'].': "'.$itm['name'].'". Получен.'; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`,`finish`) VALUES ("'.mysql_real_escape_string($txt).'","-'.$pup['id'].'","'.time().'","'.$u->info['id'].'","'.mysql_real_escape_string($_GET['itm_take']).'","2", "'.time().'")'); } else { - $u->error = ' ('.$itm['id'].')'; + $u->error = 'Не удалось забрать предмет ('.$itm['id'].')'; } }else{ - $u->error = ' '; + $u->error = 'Не удалось найти предмет'; } } }else{ - $u->error = ' '; + $u->error = 'Предмет не найден'; } if($u->error != '') { echo '
            '.$u->error.'
            '; @@ -225,15 +225,15 @@ if($r == 1) {
            -
            Почтовое отделение
            microLogin($u->info['id'],1)?>
            @@ -251,43 +251,43 @@ if($r == 1) { if(isset($pu['id'])) { ?>
            - : microLogin($pu,2)?>  
            + К кому передавать: microLogin($pu,2)?>  
            info['city']) { - echo ' .
            '; + echo 'Находится в этом городе.
            '; }else{ - echo ' '.$u->city[$pu['city']].'.
            '; + echo 'Находится в '.$u->city[$pu['city']].'.
            '; } - echo ' : 0 . 30 .'; + echo 'Примерное время доставки: 0 ч. 30 мин.'; ?>
            genInv(67,'`iu`.`uid` = "'.$u->info['id'].'" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" AND `im`.`inRazdel`="'.mysql_real_escape_string($otdel).'" AND `iu`.`data` NOT LIKE "%zazuby=%" ORDER BY `lastUPD` DESC'); if($itmAll[0]==0){ - $itmAllSee = ''; + $itmAllSee = 'ПУСТО'; }else{ $itmAllSee = $itmAll[2]; } ?> - - - - - + + + + +
            ">">">">">">Обмундирование">Заклятия">Эликсиры">Руны">Прочее
            -
            (: aves['now']?>/aves['max']?>, : aves['items']?>)
            +
            Рюкзак (масса: aves['now']?>/aves['max']?>, предметов: aves['items']?>)
            -info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            .
            :
            '; } ?> +info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            Рюкзак закрыт.
            Введите пароль:
            '; } ?>
            0) { if($u->info['money'] >= round($m+$cm,2) && $u->info['palpro'] > time()) { - $e1 = ' '.$m.' . (: '.$cm.' .) '.$pu['login'].''; + $e1 = 'Вы успешно перевели '.$m.' кр. (Комиссия: '.$cm.' кр.) к персонажу '.$pu['login'].''; $u->info['money'] -= round($m+$cm,2); mysql_query('UPDATE `users` SET `money` = "'.mysql_real_escape_string($u->info['money']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -308,36 +308,36 @@ if(isset($pu['id'])) { mysql_query("INSERT INTO `items_users`(`item_id`,`1price`,`uid`,`delete`,`lastUPD`)VALUES('1220','".mysql_real_escape_string($m)."','-51".$pu['id']."','0','".(time()+$tmgo*60)."');"); - $txt = ' '.$u->info['login'].': '.round($m,2).' . : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Деньги от '.$u->info['login'].': '.round($m,2).' кр. Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES("'.$pu['id'].'","-'.$u->info['id'].'","'.time().'", "'.mysql_real_escape_string(round($m,2)).'","'.mysql_real_escape_string($txt).'")'); - $txt = ' '.$pu['login'].': '.round($m,2).' . : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Деньги к '.$pu['login'].': '.round($m,2).' кр. Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`uid`,`sender_id`,`time`,`money`,`text`) VALUES("'.$u->info['id'].'","'.$pu['id'].'","'.time().'", "0","'.mysql_real_escape_string($txt).'")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e1 = ' '; + $e1 = 'У вас недостаточно средств или нет проверки на чистоту'; } } }elseif(isset($_POST['send2'])) { if($u->info['money'] >= 0.1 && $u->info['palpro'] > time()) { - $ttest = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `chat` WHERE `text` LIKE "% '.$u->info['login'].'%" ORDER BY `id` DESC LIMIT 1')); + $ttest = mysql_fetch_array(mysql_query('SELECT `id`,`time` FROM `chat` WHERE `text` LIKE "%Телеграмма от '.$u->info['login'].'%" ORDER BY `id` DESC LIMIT 1')); if( $ttest['time'] < 0 ) { $ttest['time'] = -$ttest['time']; } if( !isset($ttest['id']) || ( $ttest['time']-$tmgo*60-time()+10 ) <= 0 ) { - $_POST['snd_telegraf'] = htmlspecialchars($_POST['snd_telegraf'],NULL,'cp1251'); + $_POST['snd_telegraf'] = htmlspecialchars($_POST['snd_telegraf'],NULL); $_POST['snd_telegraf'] = substr($_POST['snd_telegraf'],0,100); $_POST['snd_telegraf'] = str_replace('<','<',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace('\x3e','<',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace(']:[','] : [',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace('>','>',$_POST['snd_telegraf']); $_POST['snd_telegraf'] = str_replace("'", "",$_POST['snd_telegraf']); - $e2 = ' '; + $e2 = 'Ваше сообщение успешно доставлено'; $u->info['transfers']--; mysql_query('UPDATE `stats` SET `transfers` = "'.$u->info['transfers'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); @@ -345,12 +345,12 @@ if(isset($pu['id'])) { $u->info['money'] -= 0.1; mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! ".date("d.m.y H:i")." ".$u->info['login'].": \'".mysql_real_escape_string($_POST['snd_telegraf'])."\' .','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! ".date("d.m.y H:i")." Телеграмма от ".$u->info['login'].": \'".mysql_real_escape_string($_POST['snd_telegraf'])."\' .','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e2 = ' . '.( $ttest['time']-$tmgo*60-time()+10 ).' .'; + $e2 = 'Вы не можете отправлять сообщения так часто. Осталось '.( $ttest['time']-$tmgo*60-time()+10 ).' сек.'; } }else{ - $e2 = ' (0.1 .) '; + $e2 = 'У вас недостаточно средств (0.1 кр.) или нет проверки на чистоту'; } }elseif(isset($_POST['send3'])) { @@ -360,7 +360,7 @@ if(isset($pu['id'])) { if($u->info['money'] >= 1 && $u->info['palpro'] > time()) { //max_text - $_POST['snd_post'] = htmlspecialchars($_POST['snd_post'],NULL,'cp1251'); + $_POST['snd_post'] = htmlspecialchars($_POST['snd_post'],NULL); $_POST['snd_post'] = substr($_POST['snd_post'],0,500); $_POST['snd_post'] = str_replace('<','<',$_POST['snd_post']); $_POST['snd_post'] = str_replace('\x3e','<',$_POST['snd_post']); @@ -368,7 +368,7 @@ if(isset($pu['id'])) { $_POST['snd_post'] = str_replace('>','>',$_POST['snd_post']); $_POST['snd_post'] = str_replace("'", "",$_POST['snd_post']); $_POST['snd_post'] = str_replace("\n", "
            ",$_POST['snd_post']); - $e3 = ' '; + $e3 = 'Ваше письмо успешно доставлено'; $u->info['money'] -= 1; $u->info['transfers']--; @@ -378,75 +378,75 @@ if(isset($pu['id'])) { mysql_query("INSERT INTO `items_users` (`item_id`,`1price`,`uid`,`delete`,`lastUPD`) VALUES ('2131','0','-51".$pu['id']."','0','".(time()+$tmgo*0)."')"); $id = mysql_insert_id(); mysql_query("INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`x`) VALUES ('".$id."','".time()."','".$u->info['login']."','
            ".mysql_real_escape_string($_POST['snd_post'])."','1')"); - // - $txt = ' '.$u->info['login'].': "". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + //логи + $txt = 'Предмет от '.$u->info['login'].': "Письмо". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`uid`,`time`,`sender_id`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.$id.'","0")'); - $txt = ' '.$pu['login'].': "". : '.date('d.m.Y H:i',(time()+$tmgo*60)).''; + $txt = 'Отправление предмета к '.$pu['login'].': "Письмо". Прибытие: '.date('d.m.Y H:i',(time()+$tmgo*60)).''; mysql_query('INSERT INTO `post` (`text`,`sender_id`,`time`,`uid`,`item_id`,`money`) VALUES ("'.mysql_real_escape_string($txt).'", "-'.$pu['id'].'","'.time().'","'.$u->info['id'].'","'.$id.'","0")'); - // + //чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ( - '1','".$pu['city']."','0','','".$pu['login']."','! "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); + '1','".$pu['city']."','0','','".$pu['login']."','Внимание! Получена новая почта от "".$u->info['login'].""','-".(time()+$tmgo*60)."','5','0')"); }else{ - $e3 = ' (1 .) '; + $e3 = 'У вас недостаточно средств (1 кр.) или нет проверки на чистоту'; } } ?>
            -

            +

            Передать кредиты


            - : info['money']?> .
            - , 1 . 5%
            - : +У вас на счету: info['money']?> кр.
            +Передать кредиты, минимально 1 кр. Комиссия составит 5%
            +Укажите передаваемую сумму:
            genInv(68,'`iu`.`uid` = "-51'.$u->info['id'].'" AND `iu`.`delete` = 0 AND `iu`.`inOdet` = 0 AND `iu`.`inShop` = 0 AND `iu`.`lastUPD` < '.time().' ORDER BY `lastUPD` DESC'); if($itmAll[0]==0) { - $itmAllSee = ' - , '; + $itmAllSee = 'Для Вас пока-что нет посылок, проверьте раздел Отчеты'; }else{ $itmAllSee = $itmAll[2]; } ?> -info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            .
            :
            '; } ?> +info['invBlock']==0){ echo $itmAllSee; }else{ echo '
            Рюкзак закрыт.
            Введите пароль:
            '; } ?>


            - . +В данном разделе отображаются все почтовые операции Вашего персонажа.
            '.date('d.m.Y H:i',$pl['time']).'   '.$pl['text'].'
            '; } if($r == '') { - $r = '
            '; + $r = '
            Отчеты отсутствуют
            '; }else{ $ap = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `post` WHERE `uid` = "'.$u->info['id'].'"')); $ap = ceil($ap[0]/50); if($ap > 1) { $r .= '
            '; - $r .= ': '; + $r .= 'Страницы: '; $i = 1; while($i <= $ap) { if($i == $pg) { @@ -489,22 +489,22 @@ if($r == '') { } echo $r; }else{ - // + //общий раздел ?>

            -•
            - , . .
            +• Передать предмет
            +Вы можете отправить предмет любому персонажу, даже если он находится в другом городе. Цена и время доставки зависят от расстояния.

            -•
            - - .
            +• Кредиты и Телеграф
            + +Вы можете отправить некоторую сумму денег персонажу.

            -•
            - , .
            - 7 , . - , . +• Получить вещи
            +Вы можете получить вещи, которые были отправлены вам другими игроками.
            +Посылка хранится на почте 7 дней, но не более одного дня с момента как вы увидели ее в списке вещей для получения. +По истечению этого срока, посылка отправляется обратно или удаляется.
            -
            , // 100% . - , // .
            +
            Администрация почты заявляет, что не несет ответственности за хранимый или пересылаемый товар/кредиты/сообщения и не гарантирует 100% его доставку. В случае форс-мажорных обстоятельств, товар/кредиты/сообщения могут быть утеряны.
            @@ -532,7 +532,7 @@ echo $r; - + - +

             

            -

            : info['money']?> . +

            Деньги: info['money']?> кр.
            - : info['transfers']?> + Передач: info['transfers']?>

            -
            -
            + Передать предметы
            + Кредиты и Телеграф
            info['id'].'"')); $ot = $ot[0]; if($ot > 0) { - echo ' '; + echo 'Получить вещи'; }else{ - echo ' '; + echo 'Получить вещи'; } ?>

            - + Отчеты

            Центральная площадь
            Возврат
            @@ -132,10 +132,10 @@ function ruin_exit() { $tmn = array( 1 => array( - '','red' + 'Красные','red' ), 2 => array( - '','blue' + 'Синие','blue' ) ); $tm1 = $ru['team']; @@ -144,8 +144,8 @@ function ruin_exit() { }else{ $tm2 = 1; } - echo ': '.$rn['t1w'].' - '.$rn['t2w'].'

            '; - echo '
            : '.$tmn[$tm1][0].'
            '; + echo 'Счет: '.$rn['t1w'].' - '.$rn['t2w'].'

            '; + echo '
            Ваша команда: '.$tmn[$tm1][0].'
            '; $i = 0; $ph = 100; $sp = mysql_query('SELECT * FROM `ruine_users` WHERE `tid` = "'.$rn['id'].'" AND `team` = "'.$tm1.'"'); @@ -156,17 +156,17 @@ function ruin_exit() { $hppx = -4; } $hpmp = ' -
            '.floor($plst['hpNow']).'/'.$plst['hpAll'].'
            -
            +
            '.floor($plst['hpNow']).'/'.$plst['hpAll'].'
            +
            -
            +
            '; if( $plst['mpAll'] >= 1 ) { $hpmp .= ' -
            '.floor($plst['mpNow']).'/'.$plst['mpAll'].'
            -
            +
            '.floor($plst['mpNow']).'/'.$plst['mpAll'].'
            +
            -
            +
            '; } echo '
            -

            +

            Тестовая локация

            @@ -176,10 +176,10 @@ function ruin_exit() { unset($plst,$sp,$pl); if( $i == 0 ) { - echo '
            '.$tmn[$tm1][0].' .'; + echo '
            '.$tmn[$tm1][0].' покинули турнир.'; } - echo '

            : '.$tmn[$tm2][0].'
            '; + echo '

            Команда противника: '.$tmn[$tm2][0].'
            '; $i = 0; $sp = mysql_query('SELECT * FROM `ruine_users` WHERE `tid` = "'.$rn['id'].'" AND `team` = "'.$tm2.'"'); while( $pl = mysql_fetch_array($sp) ) { @@ -189,17 +189,17 @@ function ruin_exit() { $hppx = -4; } $hpmp = ' -
            '.floor($plst['hpNow']).'/'.$plst['hpAll'].'
            -
            +
            '.floor($plst['hpNow']).'/'.$plst['hpAll'].'
            +
            -
            +
            '; if( $plst['mpAll'] >= 1 ) { $hpmp .= ' -
            '.floor($plst['mpNow']).'/'.$plst['mpAll'].'
            -
            +
            '.floor($plst['mpNow']).'/'.$plst['mpAll'].'
            +
            -
            +
            '; } echo '
            @@ -207,15 +207,15 @@ function ruin_exit() { $i++; } if( $i == 0 ) { - echo '
            '.$tmn[$tm2][0].' .'; + echo '
            '.$tmn[$tm2][0].' покинули турнир.'; } ?>
            - - - - + + + Логи турнира +
            diff --git a/modules_data/location/ruine_enter.php b/modules_data/location/ruine_enter.php index 73315f44..100c48ca 100644 --- a/modules_data/location/ruine_enter.php +++ b/modules_data/location/ruine_enter.php @@ -3,22 +3,22 @@ if(!defined('GAME')) { die(); } if($u->room['file']=='ruine_enter') { $loc_c = array( - 'users' => 2, // - 'money' => '0.00', // . + 'users' => 2, // сколько человек нужно для старта + 'money' => '0.00', // сколько кр. нужно для входа 'free' => 125 ); if(isset($_GET['join'])) { $rz = mysql_fetch_array(mysql_query('SELECT * FROM `ruine_zv` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); if(isset($rz['id'])) { - $u->error = ' '; + $u->error = 'Вы уже принимаете участие в турнире'; }else{ $rc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `ruine_zv` LIMIT 1')); if( $rc[0] >= $loc_c['users'] ) { - $u->error = ' , . ...'; + $u->error = 'Вы опоздали, эта группа уже начала турнир. Попробуйте еще раз...'; }else{ if( $u->info['money'] < (int)$loc_c['money'] ) { - $u->error = ' '.$loc_c['money'].' .'; + $u->error = 'Для участия в турнире необходимо заплатить '.$loc_c['money'].' кр.'; }else{ mysql_query('INSERT INTO `ruine_zv` ( `city`,`time`,`uid`,`money` @@ -26,7 +26,7 @@ if($u->room['file']=='ruine_enter') { "'.$u->info['city'].'","'.time().'","'.$u->info['id'].'","'.((int)$loc_c['money']).'" )'); mysql_query('UPDATE `users` SET `money` = "'.($u->info['money'] - (int)$loc_c['money']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $u->error = ' '.$loc_c['money'].' . .'; + $u->error = 'Вы заплатили '.$loc_c['money'].' кр. за участие в турнире.'; } } unset($rc); @@ -34,15 +34,15 @@ if($u->room['file']=='ruine_enter') { }elseif(isset($_GET['cancel'])) { $rz = mysql_fetch_array(mysql_query('SELECT * FROM `ruine_zv` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); if(!isset($rz['id'])) { - $u->error = ' '; + $u->error = 'Вы не участвуете в турнире'; }else{ $rc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `ruine_zv` LIMIT 1')); if( $rc[0] >= $loc_c['users'] ) { - $u->error = ' ...'; + $u->error = 'Турнир уже начался...'; }else{ mysql_query('DELETE FROM `ruine_zv` WHERE `id` = "'.$rz['id'].'" LIMIT 1'); mysql_query('UPDATE `users` SET `money` = "'.($u->info['money'] + $rz['money']).'" WHERE `id` = "'.$rz['uid'].'" LIMIT 1'); - $u->error = ' '.$loc_c['money'].' . .'; + $u->error = 'Вы вернули '.$loc_c['money'].' кр. и покинули турнирную заявку.'; } unset($rc); } @@ -71,7 +71,7 @@ if($u->room['file']=='ruine_enter') { - +
            Большая парковая улица
            @@ -93,7 +93,7 @@ if($u->room['file']=='ruine_enter') { echo '
            '.$u->error.'

            '; } ?> - : 0

            + Всего одержано побед в руинах: 0

            room['file']=='ruine_enter') { // $bus = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$pl['uid'].'" LIMIT 1')); if(isset($bus['id'])) { - // + //Создаем бота $text_user[$team] .= $u->microLogin($bus['id'],1).', '; // mysql_query('INSERT INTO `users` (`obraz`,`chatColor`,`align`,`inTurnir`,`molch1`,`molch2`,`login`,`room`,`name`,`sex`,`level`,`bithday`) VALUES ( "'.$bus['obraz'].'","'.$bus['chatColor'].'","'.$bus['align'].'","'.$rid.'","'.$bus['molch1'].'","'.$bus['molch2'].'","'.$bus['login'].'","413","'.$bus['name'].'","'.$bus['sex'].'","10","'.date('d.m.Y').'")'); // - $inbot = mysql_insert_id(); // + $inbot = mysql_insert_id(); //айди бота if( $inbot > 0 ) { - // + //Создаем данные в руинах $rx = 0; $ry = 0; // @@ -181,7 +181,7 @@ if($u->room['file']=='ruine_enter') { // $text_user[1] = rtrim($text_user[1],', '); $text_user[2] = rtrim($text_user[2],', '); - $text = ' '.$text_user[1].' '.$text_user[2].' .'; + $text = 'Турнир между '.$text_user[1].' и '.$text_user[2].' начался.'; // mysql_query('INSERT INTO `ruine_logs` ( `tid`,`time`,`text` @@ -192,18 +192,18 @@ if($u->room['file']=='ruine_enter') { } // $rz = mysql_fetch_array(mysql_query('SELECT * FROM `ruine_zv` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1')); - echo ' . '.$i.'/'.$loc_c['users'].' . '; + echo 'Группа с хаотичным распределением. Набрано '.$i.'/'.$loc_c['users'].' чел. '; if( isset($rz['id']) ) { - echo ''; + echo ''; }else{ - echo ''; + echo ''; } ?> - - - + + + diff --git a/modules_data/location/ruletka.php.bac b/modules_data/location/ruletka.php.bac deleted file mode 100644 index e0e34568..00000000 --- a/modules_data/location/ruletka.php.bac +++ /dev/null @@ -1,139 +0,0 @@ -room['file']=='ruletka') -{ -?> - - - - -
            -
            -
            -

            . ., .

            -

            - - - - - - - - - - - - - - - - - - -
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            -
            - -
            - -
            -

            -
            -
            -
              - - -
            - - - - - - - -
            - - - - - -
            -
            -
            -
            - -

            : testAction('`city` = "'.$u->info['city'].'" AND `vars` = "casino_balance" LIMIT 1',1); - if(!isset($sm['id'])) { - $u->addAction(time(),'casino_balance',0); - }else{ - $mn += $sm['vals']; - } - - $sp = mysql_query('SELECT `money`,`end` FROM `ruletka_coin` WHERE `money` > 0 AND `end` > 0'); - while($pl = mysql_fetch_array($sp)) - { - if($pl['end']>0) - { - $mz += $pl['money']; - } - } - echo ($mn); - ?> .

            -
            - - - diff --git a/modules_data/location/ruletka.php1 b/modules_data/location/ruletka.php1 index e0e34568..a5ce5e2f 100644 --- a/modules_data/location/ruletka.php1 +++ b/modules_data/location/ruletka.php1 @@ -51,20 +51,20 @@ if($u->room['file']=='ruletka') - @@ -107,7 +107,7 @@ if($u->room['file']=='ruletka')
            +
            Рулетка

            -

            . ., .

            +

            Рулетка работает в тестовом режиме. Вы можете потерять кр., возмещаться потери не будут.

            - + - + @@ -73,10 +73,10 @@ if($u->room['file']=='ruletka') - +
            -

            Adobe Flash Player.

            -

              Adobe Flash Player

            +

            Для содержимого этой страницы требуется более новая версия Adobe Flash Player.

            +

            Получить проигрыватель Adobe Flash Player

            @@ -98,7 +98,7 @@ if($u->room['file']=='ruletka') - +
            Бойцовский клуб

            -

            : Банк казино: room['file']=='ruletka') } } echo ($mn); - ?> .

            + ?> кр.


            diff --git a/modules_data/location/secret.php b/modules_data/location/secret.php index b0a9a26a..17a8a627 100644 --- a/modules_data/location/secret.php +++ b/modules_data/location/secret.php @@ -12,7 +12,7 @@ if($u->room['file']=='secret') -
            +
            Секретная комната

            @@ -27,7 +27,7 @@ if($u->room['file']=='secret') diff --git a/modules_data/location/shop2_.php b/modules_data/location/shop2_.php index 7a07098a..b9ac89f2 100644 --- a/modules_data/location/shop2_.php +++ b/modules_data/location/shop2_.php @@ -25,7 +25,7 @@ if($u->room['file']=='shop2_') { $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['sale']) && isset($_GET['item']) && $u->newAct($_GET['sd4'])) { @@ -37,13 +37,13 @@ if($u->room['file']=='shop2_') } if(isset($po['nosale'])) { - $error = ' , ...'; + $error = 'Не удалось продать предмет, запрет продажи данного предмета ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0)) { - $error = ' , ...'; + $error = 'Не удалось продать предмет, вышел срок годности ...'; }elseif(isset($po['frompisher'])) //{ - //$error = ' , ...'; + //$error = 'Не удалось продать предмет, предмет из подземелья ...'; //}elseif(isset($itm['id'])) { if($itm['1price']>0) @@ -93,18 +93,18 @@ if($u->room['file']=='shop2_') $upd = mysql_query('UPDATE `rep` SET `rep3` = "'.$u->rep['rep3'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - $error = ' "'.$itm['name'].' [x'.$col.']" '.$shpCena.' .'; + $error = 'Вы успешно продали предмет "'.$itm['name'].' [x'.$col.']" за '.$shpCena.' Воинственности.'; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' Воинственности..',time(),$u->info['city'],'System.shop',0,0); }else{ - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' Воинственности. (Воинственность не переведена).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось продать предмет...'; } }else{ - $error = ' ...'; + $error = 'Не удалось продать предмет...'; } }else{ - $error = ' .'; + $error = 'Предмет не найден в инвентаре.'; } } @@ -112,9 +112,9 @@ if($u->room['file']=='shop2_') - -
            - +
            Бойцовский клуб
            - -
            '.$error.''; - ?> -
            - - - - - - -
            - - - - - - -
            -  ": ,"', - ' ": "', - ' ": ,"', - ' ": "', - ' ": "', - - '  :  ', - - ' ": "', - - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' ""', - ' " : "', - ' " : "', - ' " : "', - - ' ": "', - ' ": "' - ,' ": "' - ,' ": "' - ,' ": "' - ,' ": "' - ,' ": "' - ,' ": "' - - ,' ""', - ' ""', - ' ""', - ' ": "', - ' ": "', - ' ": "', - ' ": "', - ' " : "', - ' ": "'); - if(isset($otdels_small_array[$_GET['otdel']])) - { - echo $otdels_small_array[$_GET['otdel']]; - } - - } elseif (isset($_GET['sale']) && $_GET['sale']) - { - echo ' -  ""
            - , ...
            - : - '; - } - ?> -
            - - - genInv(3,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "63" OR `im`.`type` = "64") AND `iu`.`gift` = "" ORDER BY `lastUPD` DESC'); - if($itmAll[0]==0) - { - $itmAllSee = ''; - }else{ - $itmAllSee = $itmAll[2]; - } - echo $itmAllSee; - }elseif(!isset($_GET['sale'])) - { - // - $u->shopItems($sid); - }else{ - // - $itmAll = $u->genInv(2,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ORDER BY `iu`.`lastUPD` DESC'); - if($itmAll[0]==0) - { - $itmAllSee = ''; - }else{ - $itmAllSee = $itmAll[2]; - } - echo $itmAllSee; - } - ?> -
            -
            -
            -
            -
              - - -
            - - - - - - - -
            - - - - - -
            -
            -
            -
            -

            -
            - - : aves['now']?>/aves['max']?>  
            - : rep['rep3']-$u->rep['rep3_buy']); ?>
              - -
            -
            -   - '; - } else {*/ - //echo ' - //  - //'; - //} - ?> -
            -
            -
            -
            -
            - '.$otdels_array[$i].' -
            - '; - } else { - $i = -2; - } - $i++; - } - ?> -
            -
            -
            - - \ No newline at end of file diff --git a/modules_data/location/shop_.php b/modules_data/location/shop_.php index e2d82cd6..1b674f1f 100644 --- a/modules_data/location/shop_.php +++ b/modules_data/location/shop_.php @@ -13,18 +13,18 @@ if($u->room['file']=='shop_') if(isset($to['id'])) { if($u->info['align'] == 2 || $u->info['haos'] > time()) { - $re = '
            '; + $re = '
            Хаосникам запрещается делать подарки другим игрокам
            '; }elseif($to['id']==$u->info['id']) { - $re = '
            - ;)
            '; + $re = '
            Очень щедро дарить что-то самому себе ;)
            '; }elseif($u->info['level']<4) { - $re = '
            4-
            '; + $re = '
            Дарить подарки можно начиная с 4-го уровня
            '; }else{ if( $_POST['itemgift'] > 1000000000000 ) { $itm_l = mysql_fetch_array(mysql_query('SELECT * FROM `users_gifts` WHERE `uid` = "'.$u->info['id'].'" AND `id` = "'.mysql_real_escape_string((int)$_POST['itemgift']-1000000000000).'" LIMIT 1')); if( isset($itm_l['id']) && $itm_l['money'] > $u->info['money'] ) { - $re = '
            '; + $re = '
            Недостаточно денег
            '; }elseif( isset($itm_l['id']) ) { $itm = $u->addItem(4533,1,'|gift_id='.$itm_l['id'].''); if( $itm > 0 ) { @@ -38,62 +38,62 @@ if($u->room['file']=='shop_') $itm['gtxt1'] = str_replace('\x3C','<',$itm['gtxt1']); $itm['gtxt1'] = str_replace('\x3','>',$itm['gtxt1']); - $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL,'cp1251'); + $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL); $itm['gtxt2'] = str_replace('\x3C','<',$itm['gtxt2']); $itm['gtxt2'] = str_replace('\x3','>',$itm['gtxt2']); - $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL,'cp1251'); + $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL); $giftlogin = $u->info['login']; if( $_POST['from'] == 1 ) { - // - $giftlogin = ''; + //Анонимно + $giftlogin = 'Анонима'; }elseif( $_POST['from'] == 2 && $u->info['clan'] > 0 ) { - // + //От клана $cln = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$u->info['clan'].'" LIMIT 1')); if(isset($cln['id'])) { - $giftlogin = ' '.$cln['name'].''; + $giftlogin = 'клана '.$cln['name'].''; } } - $fspam = $filter->spamFiltr(str_replace('','.',str_replace('','ru',$itm['gtxt1']))); + $fspam = $filter->spamFiltr(str_replace('точка','.',str_replace('ру','ru',$itm['gtxt1']))); if( $fspam != '0' ) { - $itm['gtxt1'] = '<>'; - $itm['gtxt2'] = '<>'; + $itm['gtxt1'] = '<РВС>'; + $itm['gtxt2'] = '<РВС>'; } $upd = mysql_query('UPDATE `items_users` SET `data` = "'.$itm['data'].'",`gtxt1` = "'.mysql_real_escape_string($itm['gtxt1']).'",`gtxt2` = "'.mysql_real_escape_string($itm['gtxt2']).'", `uid` = "'.$to['id'].'", `gift` = "'.$giftlogin.'",`time_create` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); $whos = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "'.$to['id'].'" LIMIT 1')); - $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": [id="'.$u->info['id'].'"/ : "'.$u->info['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"] : "'.$itm['data'].'"',time(),$u->info['city'],'Shop.gift',0,0); - $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": [id="'.$to['id'].'"/ : "'.$whos['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"] : "'.$itm['data'].'"',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": Получен подарок от [id="'.$u->info['id'].'"/ Логин : "'.$u->info['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"] содержыит: "'.$itm['data'].'"',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": Сделал подарок персонажу [id="'.$to['id'].'"/ Логин : "'.$whos['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"] содержыит: "'.$itm['data'].'"',time(),$u->info['city'],'Shop.gift',0,0); if($upd) { - $re = '
            "'.$to['login'].'" '.$itm_l['money'].' .
            '; + $re = '
            Подарок был успешно отправлен к "'.$to['login'].'" за '.$itm_l['money'].' кр.
            '; if( $giftlogin == $u->info['login'] ) { - $text = ' '.$itm_l['name'].'. [login:'.$u->info['login'].'] .'; + $text = ' Получен подарок '.$itm_l['name'].'. От персонажа [login:'.$u->info['login'].'] .'; }else{ - $text = ' '.$itm_l['name'].'. '.$giftlogin.' .'; + $text = ' Получен подарок '.$itm_l['name'].'. От персонажа '.$giftlogin.' .'; } mysql_query("INSERT INTO `chat` (`new`, `city`, `room`, `login`, `to`, `text`, `time`, `type`, `toChat`) VALUES ('1','".$u->info['city']."', '', '', '".$to['login']."', '".$text."', '".time()."', '6', '0')"); }else{ - $re = '
            '; + $re = '
            Не удалось сделать подарок
            '; } }else{ - $re = '
            , ...
            '; + $re = '
            Не удалось сделать подарок, он испортился...
            '; } }else{ - $re = '
            , ...
            '; + $re = '
            Не удалось сделать подарок, курьер случайно сломал его...
            '; } }else{ - $re = '
            '; + $re = '
            Предмет не найден
            '; } }else{ $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE (`im`.`type` = "28" OR `im`.`type` = "38" OR `im`.`type` = "63" OR `im`.`type` = "64" OR `im`.`type` = "37") AND `iu`.`id` = "'.mysql_real_escape_string($_POST['itemgift']).'" AND `iu`.`uid` = "'.$u->info['id'].'" AND (`iu`.`gift` = "" OR (`iu`.`data` LIKE "%|zazuby=%" AND `iu`.`gift` = 1)) AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" LIMIT 1')); $po = $u->lookStats($itm['data']); if(isset($itm['id']) && $itm['type'] != 37) { - $re = '
            !
            '; + $re = '
            Дарить подарки возможно только в упаковке!
            '; }elseif(!isset($po['item_inbox'])) { - $re = '
            !
            '; + $re = '
            Вы ничего не запоковали в упаковку!
            '; }elseif(isset($itm['id'])) { //$itm['data'] = ''; @@ -103,29 +103,29 @@ if($u->room['file']=='shop_') $itm['gtxt1'] = str_replace('\x3C','<',$itm['gtxt1']); $itm['gtxt1'] = str_replace('\x3','>',$itm['gtxt1']); - $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL,'cp1251'); + $itm['gtxt1'] = htmlspecialchars($itm['gtxt1'],NULL); $itm['gtxt2'] = str_replace('\x3C','<',$itm['gtxt2']); $itm['gtxt2'] = str_replace('\x3','>',$itm['gtxt2']); - $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL,'cp1251'); + $itm['gtxt2'] = htmlspecialchars($itm['gtxt2'],NULL); - $fspam = $filter->spamFiltr(str_replace('','.',str_replace('','ru',$itm['gtxt1']))); + $fspam = $filter->spamFiltr(str_replace('точка','.',str_replace('ру','ru',$itm['gtxt1']))); if( $fspam != '0' ) { - $itm['gtxt1'] = '<>'; - $itm['gtxt2'] = '<>'; + $itm['gtxt1'] = '<РВС>'; + $itm['gtxt2'] = '<РВС>'; } $giftlogin = $u->info['login']; if( $fspam != '0' ) { - // ! + //Если спам то хуй анонимно! }elseif( $_POST['from'] == 1 ) { - // - $giftlogin = ''; + //Анонимно + $giftlogin = 'Анонима'; }elseif( $_POST['from'] == 2 && $u->info['clan'] > 0 ) { - // + //От клана $cln = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = "'.$u->info['clan'].'" LIMIT 1')); if(isset($cln['id'])) { - $giftlogin = ' '.$cln['name'].''; + $giftlogin = 'клана '.$cln['name'].''; } } $items = $u->lookStats($itm['data']); @@ -137,27 +137,27 @@ if($u->room['file']=='shop_') $upd = mysql_query('UPDATE `items_users` SET `data` = "'.$itm['data'].'",`gtxt1` = "'.mysql_real_escape_string($itm['gtxt1']).'",`gtxt2` = "'.mysql_real_escape_string($itm['gtxt2']).'", `uid` = "'.$to['id'].'", `gift` = "'.$giftlogin.'",`time_create` = "'.time().'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); $whos = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "'.$to['id'].'" LIMIT 1')); - $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": [id="'.$u->info['id'].'"/ : "'.$u->info['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'"] ('.$giftlogin.') : ["'.$iteminc['item_id'].'" / "'.$iteminctru['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); - $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": [id="'.$to['id'].'"/ : "'.$whos['login'].'"]. [id="'.$itm['id'].'"/ : "'.$itm['name'].'" ('.$giftlogin.')] : ["'.$iteminc['item_id'].'" / "'.$iteminctru['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $to['id'],'"Shop.'.$u->info['city'].'": Получен подарок от [id="'.$u->info['id'].'"/ Логин : "'.$u->info['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'"] ('.$giftlogin.') содержит: ["'.$iteminc['item_id'].'" / "'.$iteminctru['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); + $ld = $u->addDelo(1, $u->info['id'],'"Shop.'.$u->info['city'].'": Сделал подарок персонажу [id="'.$to['id'].'"/ Логин : "'.$whos['login'].'"]. Предмет [id="'.$itm['id'].'"/ Название : "'.$itm['name'].'" ('.$giftlogin.')] содержит: ["'.$iteminc['item_id'].'" / "'.$iteminctru['name'].'"]',time(),$u->info['city'],'Shop.gift',0,0); if($upd) { - $re = '
            "'.$to['login'].'"
            '; + $re = '
            Подарок был успешно отправлен к "'.$to['login'].'"
            '; if( $giftlogin == $u->info['login'] ) { - $text = ' '.$itm['name'].'. [login:'.$u->info['login'].'] .'; + $text = ' Получен подарок '.$itm['name'].'. От персонажа [login:'.$u->info['login'].'] .'; }else{ - $text = ' '.$itm['name'].'. '.$giftlogin.' .'; + $text = ' Получен подарок '.$itm['name'].'. От персонажа '.$giftlogin.' .'; } mysql_query("INSERT INTO `chat` (`new`, `city`, `room`, `login`, `to`, `text`, `time`, `type`, `toChat`) VALUES ('1','".$u->info['city']."', '', '', '".$to['login']."', '".$text."', '".time()."', '6', '0')"); }else{ - $re = '
            '; + $re = '
            Не удалось сделать подарок
            '; } }else{ - $re = '
            '; + $re = '
            Предмет не найден
            '; } } } }else{ - $re = '
            '; + $re = '
            Персонаж с таким логином не найден
            '; } } @@ -171,7 +171,7 @@ if($u->room['file']=='shop_') $shopProcent -= $bns; if($shopProcent>99){ $shopProcent = 99; } if($shopProcent<1){ $shopProcent = 1; } - echo '
            : '.$bns.'%
            '.$shopProcent.'%
            '; + echo '
            У Вас действует бонус при продаже: '.$bns.'%
            Вы сможете продавать предметы за '.$shopProcent.'% от их стоимости
            '; } } if(!isset($_GET['otdel'])) { @@ -183,7 +183,7 @@ if($u->room['file']=='shop_') if($u->newAct($_GET['sd4'])==true){ $re = $u->buyItem($sid,(int)$_GET['buy'],(int)$_GET['x']); }else{ - $re = ' ?'; + $re = 'Вы уверены что хотите купить этот предмет?'; } }elseif(isset($_GET['sale']) && isset($_GET['item']) && $u->newAct($_GET['sd4'])){ $id = (int)$_GET['item']; @@ -197,15 +197,15 @@ if($u->room['file']=='shop_') $po['nosale'] = 1; } if( ($itm['gift'] != '' && $itm['gift'] != '0') && ( $itm['type'] == 37 || $itm['type'] == 38 || $itm['type'] == 39 || $itm['type'] == 63 ) ) { - $error = ' , ! :)'; + $error = 'Нельзя продавать подарки, они должны оставаться на память! :)'; }elseif(isset($po['nosale'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, запрет продажи данного предмета ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0) && $pl['type'] != 28){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, вышел срок годности ...'; //}elseif(isset($po['frompisher'])){ - //$error = ' , ...'; + //$error = 'Не удалось продать предмет, предмет из подземелья ...'; }elseif(isset($po['fromlaba'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, предмет из лабиринта продается за воинственность ...'; }elseif(isset($itm['id'])){ if($itm['1price']>0){ $itm['price1'] = $itm['1price']; @@ -248,18 +248,18 @@ if($u->room['file']=='shop_') $u->info['money'] += $shpCena; $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - $error = ' "'.$itm['name'].' (x'.$col.')" '.$shpCena.' .'; + $error = 'Вы успешно продали предмет "'.$itm['name'].' (x'.$col.')" за '.$shpCena.' кр.'; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр..',time(),$u->info['city'],'System.shop',0,0); } else { - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' кр. (кредиты не переведены).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось продать предмет...'; } } else { - $error = ' ...'; + $error = 'Не удалось продать предмет...'; } } else { - $error = ' .'; + $error = 'Предмет не найден в инвентаре.'; } } elseif(isset($_GET['sale']) && isset($_GET['item_rep']) && $u->newAct($_GET['sd4']) ) { $id = (int)$_GET['item_rep']; @@ -269,11 +269,11 @@ if($u->room['file']=='shop_') $po['nosale'] = 1; } if(isset($po['nosale'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, запрет продажи данного предмета ...'; }elseif($pl['type']<29 && ($po['srok'] > 0 || $pl['srok'] > 0)){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, вышел срок годности ...'; }elseif(isset($po['frompisher'])){ - $error = ' , ...'; + $error = 'Не удалось продать предмет, предмет из подземелья ...'; }elseif(isset($itm['id'])){ $shpCena = $itm['pricerep']; @@ -311,19 +311,19 @@ if($u->room['file']=='shop_') $u->rep['rep3'] += $shpCena; $upd = mysql_query('UPDATE `rep` SET `rep3` = "'.$u->rep['rep3'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd){ - $error = ' "'.$itm['name'].' (x'.$col.')" +'.$shpCena.' .
            - : '.($u->rep['rep3']-$u->rep['rep3_buy']).''; + $error = 'Вы успешно обменяли предмет "'.$itm['name'].' (x'.$col.')" на +'.$shpCena.' воинственности.
            + Ваша воинственность: '.($u->rep['rep3']-$u->rep['rep3_buy']).''; mysql_query('UPDATE `items_users` SET `inGroup` = "0",`delete` = "'.time().'" WHERE `inGroup` = "'.$itm['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT '.$itm['group_max'].''); - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' ..',time(),$u->info['city'],'System.shop',0,0); + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' воинственность..',time(),$u->info['city'],'System.shop',0,0); }else{ - $u->addDelo(2,$u->info['id'],'"System.shop": "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] '.$shpCena.' . ( ).',time(),$u->info['city'],'System.shop',0,0); - $error = ' ...'; + $u->addDelo(2,$u->info['id'],'"System.shop": Предмет "'.$itm['name'].' (x'.$col.')" [itm:'.$itm['id'].'] был продан в магазин за '.$shpCena.' воинственность. (Репутация не переведена).',time(),$u->info['city'],'System.shop',0,0); + $error = 'Не удалось обменять предмет...'; } }else{ - $error = ' ...'; + $error = 'Не удалось обменять предмет...'; } }else{ - $error = ' .'; + $error = 'Подходящий предмет не найден в инвентаре.'; } } @@ -331,9 +331,9 @@ if($u->room['file']=='shop_') +
            />
            />
            @@ -70,22 +70,22 @@ if($u->room['file']=='nc/cp')
            -
            «» , info['login']; ?>.
            +
            «» приветствует Вас, info['login']; ?>.
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - + testHome(); if(!isset($hgo['id'])){ ?> + + +
            - ! . , " ", "", ", ". , , , .
            - .

            + Внимание! Никогда и никому не говорите пароль от своего персонажа. Не вводите пароль на других сайтах, типа "новый город", "лотерея", "там, где все дают на халяву". Пароль не нужен ни паладинам, ни кланам, ни администрации, только взломщикам для кражи вашего героя.
            + Администрация.


            diff --git a/modules_data/location/torg.php b/modules_data/location/torg.php index 6cb53bbd..b6b95f10 100644 --- a/modules_data/location/torg.php +++ b/modules_data/location/torg.php @@ -29,7 +29,7 @@ if($u->room['file']=='torg')
            onclick="location='main.php?loc=1.180.0.222';" onmouseover="this.className='aFilterhover';" onmouseout="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_sec3.gif" width="101" height="37" class="aFilter" />
            -
            +
            onclick="location='main.php?loc=1.180.0.220';" onmouseover="this.className='aFilterhover';" onmouseout="this.className='aFilter';" src="https://img.new-combats.com/i/images/300x225/map_2stair.gif" width="120" height="35" class="aFilter" />
            @@ -50,26 +50,26 @@ if($u->room['file']=='torg') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - - testHome(); if(!isset($hgo['id'])){ ?> - + + + testHome(); if(!isset($hgo['id'])){ ?> +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/tournaments_lobby.php b/modules_data/location/tournaments_lobby.php index 6d925ca3..1d20fc69 100644 --- a/modules_data/location/tournaments_lobby.php +++ b/modules_data/location/tournaments_lobby.php @@ -12,22 +12,22 @@ foreach (TournamentModel::getFreeFighters($user['level']) as $member) { ?> - .
            +Турнир для уровней.
            - - . - . ? -, ! + Турнира - нет. Участников - нет. Как вы сюда забрели? Не-ет, своим ходом вы отсюда не выберетесь! - ! + Турнир начался! - : + Время подачи заявки: - ( !) + (не сегодня!)

            -: +Участники: diff --git a/modules_data/location/trade_zv.php b/modules_data/location/trade_zv.php index f4de8b15..65121887 100644 --- a/modules_data/location/trade_zv.php +++ b/modules_data/location/trade_zv.php @@ -27,18 +27,18 @@ if($u->room['file']=='trade_zv') error; ?>
            - - - - - - - - + + + + + + + + room['id']==221) { - ?>
            + ?>
            @@ -51,26 +51,26 @@ if($u->room['file']=='trade_zv') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - - - testHome(); if(!isset($hgo['id'])){ ?> - + + + testHome(); if(!isset($hgo['id'])){ ?> +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/usedeletinfo.php b/modules_data/location/usedeletinfo.php index fe92a714..ecb8eca3 100644 --- a/modules_data/location/usedeletinfo.php +++ b/modules_data/location/usedeletinfo.php @@ -8,7 +8,7 @@ if($p['deletInfo']==1) $tm = (int)$_POST['time']; if($tm!=1 && $tm!=7 && $tm!=14 && $tm!=30 && $tm!=60) { - $uer = ' '; + $uer = 'Неверно указаны данные'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) @@ -16,11 +16,11 @@ if($p['deletInfo']==1) if($uu['info_delete']!=1 && $uu['info_delete']'', - 7=>'', - 14=>' ', - 30=>'', - 60=>' ' + 1=>'бессрочно', + 7=>'неделя', + 14=>'две недели', + 30=>'месяц', + 60=>'два месяца' ); $srok = $srok[$tm]; if($tm==1) @@ -45,24 +45,24 @@ if($p['deletInfo']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cui.gif]] '.$rang.' "'.$u->info['login'].'" '.$sx.' "'.$uu['login'].'" '.$srok; + $rtxt = '[img[items/cui.gif]] '.$rang.' "'.$u->info['login'].'" использовал'.$sx.' заклятие обезличивание на "'.$uu['login'].'" сроком '.$srok; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "", '.$srok.'.'; + $rtxt = $rang.' "'.$u->info['login'].'" использовал'.$sx.' заклятие "обезличивание", сроком '.$srok.'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно использовали заклятие обезличивания на персонажа "'.$uu['login'].'".
            '; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж уже обезличен'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/location/usehaos.php b/modules_data/location/usehaos.php index 0b99bac8..9c18d944 100644 --- a/modules_data/location/usehaos.php +++ b/modules_data/location/usehaos.php @@ -6,33 +6,33 @@ if(!defined('GAME')) if($p['haos']==1) { $tm = (int)$_POST['time']; - $tmban = array(7=>' ',14=>' ',30=>' ',60=>' ',1=>''); + $tmban = array(7=>'одна неделя',14=>'две недели',30=>'один месяц',60=>'два месяца',1=>'бессрочно'); if($tm!=7 && $tm!=14 && $tm!=30 && $tm!=60 && ($tm!=1 || ($p['haosInf']==0 && $tm==1))) { - $uer = ' '; + $uer = 'Неверно указано время наказания'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Паладина в хаос'; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Тармана в хаос'; }elseif($uu['align']==2) { - $uer = ' '; + $uer = 'Персонаж был ранее отправлен в хаос'; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Ангелов в хаос'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на самого себя'; }else{ $th = time()+($tm*24*60*60); if($tm==1) @@ -45,23 +45,23 @@ if($p['haos']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } mysql_query('UPDATE `users_delo` SET `hb` = "0" WHERE `uid` = "'.$uu['id'].'" AND `hb`!="0"'); - $rtxt = '[img[items/pal_button4.gif]] '.$rang.' "'.$u->info['login'].'" '.$sx.' "'.$uu['login'].'" : '.$tmban[$tm].''; + $rtxt = '[img[items/pal_button4.gif]] '.$rang.' "'.$u->info['login'].'" отправил'.$sx.' персонажа "'.$uu['login'].'" в хаос на срок: '.$tmban[$tm].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "" : '.$tmban[$tm].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" отправил'.$sx.' в "хаос" на срок: '.$tmban[$tm].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" : '.$tmban[$tm].'.'; + $uer = 'Вы успешно отправили персонажа "'.$uu['login'].'" в хаос на срок: '.$tmban[$tm].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/location/vokzal.php b/modules_data/location/vokzal.php index 0bc465d7..aeba4e39 100644 --- a/modules_data/location/vokzal.php +++ b/modules_data/location/vokzal.php @@ -10,13 +10,13 @@ if($u->room['file']=='vokzal') $sp = mysql_query('SELECT * FROM `vokzal` WHERE `city` = "'.$u->info['city'].'" OR `tocity` = "'.$u->info['city'].'"'); while($pl = mysql_fetch_array($sp)) { - $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['city'].'" LIMIT 1')); - $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); + $vz1 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['city'].'" LIMIT 1')); + $vz2 = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$pl['tocity'].'" LIMIT 1')); $crm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "'.$pl['name'].'" LIMIT 1')); - //period 0 - (), 1 - , 3 - (), 4 - ( tocity) + //period 0 - прибытие в город (стоянка), 1 - движение, 3 - прибытие в другой город (стоянка), 4 - движение (из tocity) if($pl['time_start_go']==0) { - // + //Это новая карета обновляем данные mysql_query('UPDATE `vokzal` SET `time_start_go` = "'.(time()+$pl['timeStop']*60).'",`time_finish_go` = "'.(time()+$pl['timeStop']*60+$pl['time_go']*60).'" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['time_start_go'] = time()+$pl['timeStop']*60; $pl['time_finish_go'] = $pl['time_start_go']+$pl['time_go']*60; @@ -24,12 +24,12 @@ if($u->room['file']=='vokzal') $see = 1; $plc = $pl['tocity']; $col = 'e6e6e6" style="color:#B7B7B7;"'; - $tmgo = '( '.date('H:i',$pl['time_finish_go']).')'; + $tmgo = '(Прибудет в '.date('H:i',$pl['time_finish_go']).')'; $bl = '--'; - $bb = ' '; + $bb = 'билетов нет'; if($pl['time_start_go']-600time()) { - // + //можно знанимать места в карете if(isset($crm['id'])) { $sr = mysql_query('SELECT `uid`,`id` FROM `items_users` WHERE `secret_id` = "'.$pl['time_start_go'].'_b'.$pl['id'].'" AND `delete` = "0" LIMIT 100'); @@ -46,27 +46,27 @@ if($u->room['file']=='vokzal') if((($pl['period']==0 && $u->info['city']==$pl['city']) || ($pl['period']==3 && $u->info['city']==$pl['tocity'])) && $pl['time_start_go']>time() && $pl['citygo']!=$u->info['city']) { $see = 1; - $tmgo = date('d.m.Y H:i',$pl['time_start_go']); + $tmgo = date('d.m.Y в H:i',$pl['time_start_go']); $col = 'c9c9c9'; $bl = $pl['bilets']; - $bb = ''; + $bb = ''; if($pl['bilets']<=0) { - $bb = ' '; + $bb = 'билетов нет'; } }else{ - // + //отправляем карету в другой город if($pl['time_finish_go']room['file']=='vokzal') $pl['period'] = 3; }elseif($pl['period']==3) { - // , , + //Прибыли в город, время стоянки закончилось, и поехали mysql_query('UPDATE `vokzal` SET `period` = "4" WHERE `id` = "'.$pl['id'].'" LIMIT 1'); $pl['period'] = 4; }elseif($pl['period']==4) { - // , + //приехалис в другой город, делаем там стоянку if(isset($crm['id'])) { mysql_query('UPDATE `users` SET `city` = "'.$pl['city'].'",`room` = "'.$vz1['id'].'" WHERE `room` = "'.$crm['id'].'" LIMIT '.$pl['bilets_default'].''); @@ -104,9 +104,9 @@ if($u->room['file']=='vokzal') $cs .= ' '.$tmgo.' '.$u->city_name[$plc].' - '.$pl['time_go'].' . - '.$pl['price1'].' . - + '.$pl['time_go'].' мин. + '.$pl['price1'].' кр. + нет '.$bl.' '.$bb.' '; @@ -128,33 +128,33 @@ if($u->room['file']=='vokzal') { if($buy['bilets']<=0) { - $error = ' , '; + $error = 'Билетов больше нет, загляните позже'; }elseif($u->info['money']>=$buy['price1']) { $u->info['money'] -= $buy['price1']; $upd = mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); if($upd) { - // - $error = ' '.$buy['price1'].' . '.$u->city_name[$buy['tocity']].'
            '.date('d.m.Y H:i',$buy['time_start_go']).' '; - $ib = ' '.$u->city_name[$buy['tocity']].': '.date('d.m.Y H:i',$buy['time_start_go']).'
            : '.$u->info['login'].''; + //передаем Билет персонажу + $error = 'Вы заплатили '.$buy['price1'].' кр. за билет в '.$u->city_name[$buy['tocity']].'
            Отправка в '.date('d.m.Y H:i',$buy['time_start_go']).' по серверу'; + $ib = 'Дата отправления кареты в '.$u->city_name[$buy['tocity']].': '.date('d.m.Y в H:i',$buy['time_start_go']).'
            Билет на имя: '.$u->info['login'].''; $ins = mysql_query('INSERT INTO `items_users` (`1price`,`maidin`,`data`,`uid`,`item_id`,`iznosMAX`,`lastUPD`,`secret_id`,`time_create`) VALUES ("'.$buy['price1'].'","'.$u->info['city'].'","info='.$ib.'|noodet=1","'.$u->info['id'].'","866","1","'.time().'","'.$buy['time_start_go'].'_b'.$buy['id'].'","'.time().'")'); if($ins) { - $error .= '
            "" , "".'; + $error .= '
            Предмет "Билет" был перемещен к Вам в инвентарь, в раздел "прочее".'; mysql_query('UPDATE `vokzal` SET `bilets` = "'.($buy['bilets']-1).'" WHERE `id` = "'.$buy['id'].'" LIMIT 1'); }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ $u->info['money'] += $buy['price1']; - $error = ' '; + $error = 'Не удалось приобрести билет'; } }else{ - $error = ' '; + $error = 'У Вас недостаточно денег'; } }else{ - $error = ' '; + $error = 'Не удалось приобрести билет'; } } @@ -167,7 +167,7 @@ if($u->room['file']=='vokzal') { if($u->info['money']>=$tp['price1']) { - $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); + $rm = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.$tp['toCity'].'" LIMIT 1')); if(isset($rm['id'])) { $u->info['money'] -= $tp['price1']; @@ -179,13 +179,13 @@ if($u->room['file']=='vokzal') $u->addAction((time()+$tp['time']*60),'teleport',$tp['toCity']); die(''); }else{ - $error = ' , ...'; + $error = 'Нельзя телепортироваться, возможно вокзал в этом городе был разрушен...'; } }else{ - $error = ' '; + $error = 'У вас недостаточно средсв'; } }else{ - $error = ' ...'; + $error = 'Нельзя телепортироваться...'; } } @@ -201,12 +201,12 @@ if($u->room['file']=='vokzal') $cst .= ' '.$pl['toCity'].' '.$u->timeOut($pl['time']*60).' - '.$pl['price1'].' .'; + '.$pl['price1'].' кр.'; if(isset($zd['id'])) { - $cst .= ' '.$u->timeOut($zd['time']-time()).''; + $cst .= 'Задержка еще '.$u->timeOut($zd['time']-time()).''; }else{ - $cst .= '!'; + $cst .= 'Поехали!'; } $cst .= ''; } @@ -258,40 +258,40 @@ if($u->room['file']=='vokzal') { ?>
            - ( '.$u->timeOut($zd['time']-time()).')'; } ?> + Телепортация в другие города(Возможна через '.$u->timeOut($zd['time']-time()).')'; } ?>

            - - - - + + + +
            пункт назначения
            время задержки телепортации
            цена телепортации
            Телепортироваться

            - - 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            '; } ?> + 600 && $tmref>0){ echo ''; } if($cs==''){ echo '

            Сегодня нет свободных карет для перемещения в другие города
            '; } ?>

            @@ -319,8 +319,8 @@ if($u->room['file']=='vokzal')
            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            diff --git a/modules_data/location/zalu.php b/modules_data/location/zalu.php index 5188d9c3..04e952de 100644 --- a/modules_data/location/zalu.php +++ b/modules_data/location/zalu.php @@ -23,15 +23,15 @@ if($u->room['file']=='zalu')
              @@ -307,7 +307,7 @@ if($u->room['file']=='vokzal') - +
            Центральная Площадь
            -
            +
            onClick="location='main.php?loc=1.180.0.16';" src="https://img.new-combats.com/i/images/300x225/map_klub5-1.gif" width="123" height="30" class="aFilter" />
            onClick="location='main.php?loc=1.180.0.376';" src="https://img.new-combats.com/i/images/300x225/map_zalu2.gif" width="122" height="31" class="aFilter" />
            onClick="location='main.php?loc=1.180.0.375';" src="https://img.new-combats.com/i/images/300x225/map_zalu1.gif" width="122" height="31" class="aFilter" />
            -
            -
            +
            +
            onClick="location='main.php?loc=1.180.0.3';" src="https://img.new-combats.com/i/images/300x225/map_zalu7.gif" width="100" height="35" class="aFilter" />
            @@ -44,27 +44,27 @@ if($u->room['file']=='zalu') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +

            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zalu_pal.php b/modules_data/location/zalu_pal.php index 52d83bf4..f763c3e4 100644 --- a/modules_data/location/zalu_pal.php +++ b/modules_data/location/zalu_pal.php @@ -23,7 +23,7 @@ if($u->room['file']=='zalu_pal')
            -
            +
            onClick="location='main.php?loc=1.180.0.16';" class="aFilter" width="120" height="35" />
            @@ -31,7 +31,7 @@ if($u->room['file']=='zalu_pal')
            onClick="location='main.php?loc=1.180.0.16';" src="https://img.new-combats.com/i/images/300x225/map_zalu1.gif" width="122" height="31" class="aFilter" />
            onClick="location='main.php?loc=1.180.0.0';" width="76" height="18" class="aFilter" />
            -
            +
            onClick="location='main.php?loc=1.180.0.3';" src="https://img.new-combats.com/i/images/300x225/map_zalu7.gif" width="100" height="35" class="aFilter" />
            @@ -44,27 +44,27 @@ if($u->room['file']=='zalu_pal') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zalu_pal2.php b/modules_data/location/zalu_pal2.php index 895eeda7..5526b25a 100644 --- a/modules_data/location/zalu_pal2.php +++ b/modules_data/location/zalu_pal2.php @@ -25,10 +25,10 @@ if($u->room['file']=='zalu_pal2')
            onClick="location='main.php?loc=1.180.0.16';" src="https://img.new-combats.com/i/images/300x225/map_demon3.gif" width="123" height="32" class="aFilter" />
            -
            +
            -
            +
            @@ -40,27 +40,27 @@ if($u->room['file']=='zalu_pal2') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?> - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zalu_pal3.php b/modules_data/location/zalu_pal3.php index 6dd5f17a..fbfb793d 100644 --- a/modules_data/location/zalu_pal3.php +++ b/modules_data/location/zalu_pal3.php @@ -23,15 +23,15 @@ if($u->room['file']=='zalu_pal3')
            -
            +
            onClick="location='main.php?loc=1.180.0.16';" class="aFilter" width="120" height="35" />
            -
            -
            +
            +
            onClick="location='main.php?loc=1.180.0.3';" src="https://img.new-combats.com/i/images/300x225/map_zalu7.gif" width="100" height="35" class="aFilter" />
            @@ -44,27 +44,27 @@ if($u->room['file']=='zalu_pal3') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zalu_pal4.php b/modules_data/location/zalu_pal4.php index bcffa849..2b7d3e6c 100644 --- a/modules_data/location/zalu_pal4.php +++ b/modules_data/location/zalu_pal4.php @@ -23,15 +23,15 @@ if($u->room['file']=='zalu_pal4')
            -
            +
            onClick="location='main.php?loc=1.180.0.16';" class="aFilter" width="120" height="35" />
            -
            -
            +
            +
            onClick="location='main.php?loc=1.180.0.3';" src="https://img.new-combats.com/i/images/300x225/map_zalu7.gif" width="100" height="35" class="aFilter" />
            @@ -44,27 +44,27 @@ if($u->room['file']=='zalu_pal4') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; }else{ - echo ', - .'; + echo 'Возможно, вы ошиблись этажом - настоящие сражения проходят этажом выше.'; } ?>
            - +
            - testHome(); if(!isset($hgo['id'])){ ?> - - - - + testHome(); if(!isset($hgo['id'])){ ?> + + + +
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/znahar.php b/modules_data/location/znahar.php index b42f8a62..68982d27 100644 --- a/modules_data/location/znahar.php +++ b/modules_data/location/znahar.php @@ -6,7 +6,7 @@ if(!defined('GAME')) if($u->room['file']=='znahar'){ if($c['znahar']==true){$raspst=99999;$kr=0;$price = 1;}else{$raspst=0;$kr=0;$price = 0;} -// +//Платно или бесплатно if(date('w') == 6 || date('w') == 0) { @@ -20,22 +20,22 @@ function add_narkoz($tm,$name) { $name = ': '.$name; } //mysql_query('INSERT INTO `eff_users` (`uid`,`id_eff`,`name`,`data`,`overType`,`timeUse`) VALUES ( - // "'.$u->info['id'].'","50","'.mysql_real_escape_string($name).'","" + // "'.$u->info['id'].'","50","Наркоз'.mysql_real_escape_string($name).'","" //)'); - $name = ''.$name; - $stat=rand(1, 3); // + $name = 'Наркоз'.$name; + $stat=rand(1, 3); // пока без духовности if($tm == 3) { - $timeEnd=rand(2,5);// 12 6 + $timeEnd=rand(2,5);// время травмы от 12 до 6 часов $timeEnd = $timeEnd * 3600; }elseif($tm == 1 || $tm == 2) { - $timeEnd=rand(1,2);// 5 10 + $timeEnd=rand(1,2);// время травмы от 5 до 10 мин $timeEnd = $timeEnd * (60*5); }else{ $tm = round($tm*60); } - $timeEnd = rand(1,3);// 5 15 + $timeEnd = rand(1,3);// время травмы от 5 до 15 мин $timeEnd = $timeEnd * (60*5); //$timeEnd = 0; @@ -101,20 +101,20 @@ function test_s7() { global $u; $r = 0; /* - 1. levels `duh` + 1. сделать запрос в levels и получить количество`duh` на текущем аппе SELECT SUM(`duh`) FROM `levels` ... - 2. $r + 2. вывод суммы в переменную $r */ $r = mysql_fetch_array(mysql_query('SELECT SUM(`duh`) FROM `levels` WHERE `upLevel` <= "'.$u->info['upLevel'].'" LIMIT 1')); $r = $r[0]; return $r; } -$c['znahar1'] = 1; // -$c['znahar2'] = 1; // -$c['znahar3'] = 1; // -$c['znahar4'] = 1; // -$c['znahar5'] = 1; // +$c['znahar1'] = 1; //сброс навыков +$c['znahar2'] = 1; //сброс особенностей +$c['znahar3'] = 1; //сброс статов +$c['znahar4'] = 1; //сброс пристрастия +$c['znahar5'] = 1; //перераспределение статов if($price == 0) { @@ -168,11 +168,11 @@ function zact($i,$x = 1) { $bad = 0; if( $price == 1 ) { - // + //бесплатно $point = 0; $price1 = 0; }else{ - // + //платно $point = $pr_free[$i]*$x; if($point > $u->info['znahar']) { $price1 = $pr[$i]*$x; @@ -201,12 +201,12 @@ function zact($i,$x = 1) { $i++; } }else{ - $r = array(0,' .'); + $r = array(0,'У вас недостаточно денег для этого действия.'); } return $r; } -#------------------ +#------------------Запросы и прочее $st = $u->lookStats($u->info['stats']); $vinos = array( /* level,summvinos*/ @@ -225,7 +225,7 @@ $vinos = array( "12" => 41, "21" => 41 ); -// +//минимальный уровень для статов $minlvl = array( 1=>0, 2=>0, @@ -242,28 +242,28 @@ $minlvl = array( $tst_trvm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 4 OR `id_eff` = 5) AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" LIMIT 1')); if(isset($tst_trvm['id'])) { - $err = ' "'.$tst_trvm['name'].'". !'; + $err = 'У вас травма "'.$tst_trvm['name'].'". Вы не можете пользоваться услугами знахаря!'; }elseif(isset($_GET['unprist'])) { $epr = mysql_fetch_array(mysql_query('SELECT `a`.`id`,`b`.`mname` FROM `eff_users` AS `a` LEFT JOIN `eff_main` AS `b` ON `b`.`id2` = `a`.`id_eff` WHERE ((`a`.`id_eff` >= 301 AND `a`.`id_eff` <= 304) OR (`a`.`id_eff` >= 321 AND `a`.`id_eff` <= 332)) AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`id` = "'.mysql_real_escape_string((int)$_GET['unprist']).'" LIMIT 1')); if(isset($epr['id'])) { $z_na = zact(4); if($z_na[0] == 1) { - // + //сброс пристрастия mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($epr['id']).'" LIMIT 1'); $st = $u->lookStats($u->info['stats']); - add_narkoz(2,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(2,'Сброс пристрастий'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } }else{ - $err = ' ...'; + $err = 'Пристрастие не найдено...'; } }elseif(isset($_POST['dropstats'])) { $z_na = zact(3); if($z_na[0] == 1) { - // + //сброс статов $st = $u->lookStats($u->info['stats']); $st['s1'] = 3; $st['s2'] = 3; @@ -289,8 +289,8 @@ if(isset($tst_trvm['id'])) { //$u->info['wipe'] = 2; //$u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(1,'Сброс характеристик'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } @@ -298,7 +298,7 @@ if(isset($tst_trvm['id'])) { { $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс статов $st = $u->lookStats($u->info['stats']); $st['a1'] = 0; $st['a2'] = 0; @@ -322,21 +322,21 @@ if(isset($tst_trvm['id'])) { //$u->info['wipe'] = 2; //$u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' '.$kr.' . , ...'; + add_narkoz(1,'Сброс умений'); + $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...'; }else{ $err = ''.$z_na[1].''; } }elseif(isset($_POST['dropmastery'])) { - // + //Старая версия $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс характеристик $u->info['wipe'] = 3; $u->wipe(); $st = $u->lookStats($u->info['stats']); - $err = ' ... ...'; + $err = 'Умения покину вас... вам плохо...'; }else{ $err = ''.$z_na[1].''; } @@ -344,17 +344,17 @@ if(isset($tst_trvm['id'])) { { $z_na = zact(1); if($z_na[0] == 1) { - // + //сброс особенностей $u->info['wipe'] = 3.5; $u->wipe(); $st = $u->lookStats($u->info['stats']); - add_narkoz(1,' '); - $err = ' ... ...'; + add_narkoz(1,'Сброс навыков'); + $err = 'Особенности покинули вас... вам плохо...'; }else{ $err = ''.$z_na[1].''; } }elseif(isset($_GET['movestat'])){ - // - + //общее кол-во статов $allStats = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10']; $allStatsTesto = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10']; $no = 0; $st_l = 0; @@ -377,7 +377,7 @@ if(isset($tst_trvm['id'])) { if( $allStatsTesto != $allStats ) { $no++; } - //echo ":
            ".$st['s1']."=3
            ".$st['s2']."=3
            ".$st['s3']."=3
            ".$st['s4']."=3
            ".$st['s5']."=0
            ".$st['s6']."=0
            ".$st['s7']."=0
            ".$st['s8']."=0
            ".$st['s9']."=0
            ".$st['s10']."=0
            "; + //echo "Статы:
            ".$st['s1']."=3
            ".$st['s2']."=3
            ".$st['s3']."=3
            ".$st['s4']."=3
            ".$st['s5']."=0
            ".$st['s6']."=0
            ".$st['s7']."=0
            ".$st['s8']."=0
            ".$st['s9']."=0
            ".$st['s10']."=0
            "; if($no==0){ $z_na = zact(5,(int)$st_l); @@ -385,12 +385,12 @@ if(isset($tst_trvm['id'])) { if( ($st['s5'] > 0 && $u->info['level'] < 4) || ($st['s6'] > 0 && $u->info['level'] < 7) || ($st['s7'] > 0 && $u->info['level'] < 9) || ($st['s8'] > 0 && $u->info['level'] < 11) || ($st['s9'] > 0 && $u->info['level'] < 12) || ($st['s10'] > 0 && $u->info['level'] < 13) ) { }elseif($st['s1']>=3 && $st['s2']>=3 && $st['s3']>=3 && $st['s4']>=test_s5() && $st['s5']>=0 && $st['s6']>=0 && $st['s7']>=test_s7() && $st['s8']>=0 && $st['s9']>=0 && $st['s10']>=0){ - // ( ) + //Желательно проверку на статы по уровню (можно ли этот стат поднимать на текущем уровне перса) $u->info['stats'] = $u->impStats($st); if(mysql_query('UPDATE `stats` SET `stats` = "'.mysql_real_escape_string($u->info['stats']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1')) { - add_narkoz(2,' '); - // UPDATE + add_narkoz(2,'Переброс характеристик'); + //Надо добавить UPDATE в базе свободных статов $u->stats = $u->getStats($u->info['id'],0,1); $u->testItems($u->info['id'],$u->stats,0); $st = $u->lookStats($u->info['stats']); @@ -401,7 +401,7 @@ if(isset($tst_trvm['id'])) { } } } -#------------------ +#------------------Запросы и прочее ?> - diff --git a/modules_data/location/zv2.php b/modules_data/location/zv2.php index 247015b3..16d06899 100644 --- a/modules_data/location/zv2.php +++ b/modules_data/location/zv2.php @@ -22,15 +22,15 @@ if($u->room['file']=='zv2')
            +
            Зоомагазин
            '.$error.''; ?> @@ -95,16 +95,16 @@ if($u->room['file'] == 'zooshop')
            - + @@ -152,18 +152,18 @@ if($u->room['file'] == 'zooshop')

            - : aves['now']?>/aves['max']?>  
            - : info['money'],2); ?> .   + Масса: aves['now']?>/aves['max']?>  
            + У вас в наличии: info['money'],2); ?> кр.  

            -
            +
            -
            +
            Отделы магазина
            '  ',2=>'  '); + /*названия разделов (справа)*/ + $otdels_array = array (1=>'  Нейтральные',2=>'  Еда'); $i=1; while ($i!=-1) { @@ -176,9 +176,9 @@ if($u->room['file'] == 'zooshop') $color = 'e2e0e0'; } if($i == 1) { - echo '
            :
            '; + echo '
            Заклинания:
            '; } elseif($i == 2) { - echo '
            :
            '; + echo '
            Амуниция:
            '; } echo '
            diff --git a/modules_data/location/zv1.php b/modules_data/location/zv1.php index ec0437b9..15faa8a5 100644 --- a/modules_data/location/zv1.php +++ b/modules_data/location/zv1.php @@ -22,15 +22,15 @@ if($u->room['file']=='zv1')
            ': ',2=>': '); + $otdels_small_array = array (1=>'Заклинания: нейтральные',2=>'Амуниция: Еда'); if(isset($otdels_small_array[$_GET['otdel']])) { echo $otdels_small_array[$_GET['otdel']]; @@ -114,10 +114,10 @@ if($u->room['file'] == 'zooshop') ?>
            - + shopItems($sid); ?>
            @@ -141,7 +141,7 @@ if($u->room['file'] == 'zooshop') - +
            Большая торговая улица
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -42,22 +42,22 @@ if($u->room['file']=='zv1') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; } ?>
            - +

            - - + +
            - ! "", .
            - .

            + Внимание!Установите второй пароль во вкладке "Безопасность",это обезопасит вашего персонажа от взлома.
            + Администрация.


            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            +
            +
            -
            -
            -
            -
            +
            +
            +
            +
            @@ -42,23 +42,23 @@ if($u->room['file']=='zv2') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; } ?>
            - +

            - - - testHome(); if(!isset($hgo['id'])){ ?> + + + testHome(); if(!isset($hgo['id'])){ ?>
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zv3.php b/modules_data/location/zv3.php index bf3cf115..a6e7b31e 100644 --- a/modules_data/location/zv3.php +++ b/modules_data/location/zv3.php @@ -26,15 +26,15 @@ if($u->room['file']=='zv3')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -46,23 +46,23 @@ if($u->room['file']=='zv3') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; } ?> - +
            - - - testHome(); if(!isset($hgo['id'])){ ?> + + + testHome(); if(!isset($hgo['id'])){ ?>
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zv4.php b/modules_data/location/zv4.php index 0d9e80d5..c83673c5 100644 --- a/modules_data/location/zv4.php +++ b/modules_data/location/zv4.php @@ -22,15 +22,15 @@ if($u->room['file']=='zv4')
            -
            +
            src="https://img.new-combats.com/i/images/300x225/map_bk.gif" width="120" height="35" title="" class="aFilter" />
            -
            -
            -
            -
            -
            -
            -
            +
            +
            +
            +
            +
            +
            +
            @@ -42,22 +42,22 @@ if($u->room['file']=='zv4') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; } ?> - +
            - - testHome(); if(!isset($hgo['id'])){ ?> + + testHome(); if(!isset($hgo['id'])){ ?>
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/location/zv_svet.php b/modules_data/location/zv_svet.php index 9ec4ec3d..3efe5725 100644 --- a/modules_data/location/zv_svet.php +++ b/modules_data/location/zv_svet.php @@ -30,18 +30,18 @@ if($u->room['file']=='zv_svet') error; ?>
            - - - - - - - - + + + + + + + + room['id']==220) { - ?>
            + ?>
            @@ -54,23 +54,23 @@ if($u->room['file']=='zv_svet') if($u->info['level']<6) { echo ' - ? , ? . , ? , ? , . Capital city. . + Вам все время кажется что за вами следят? Чудится, что случайный попутчик мечтает всадить вам топор в спину? При совершении очередной покупки в гос. магазине мучает ощущение, что вас обманули? Кажется, что симпатичная девушка напротив смотрит на вас как на пищу? Успокойтесь, это не паранойя. Это реалии Capital city. Города Тьмы. '; } ?>
            - +
            - - - testHome(); if(!isset($hgo['id'])){ ?> + + + testHome(); if(!isset($hgo['id'])){ ?>
            - ! , , .
            - .

            + Внимание!Смените пароль на уникальный,который не использовался ранее в подобных проектах,это обезопасит вашего персонажа от взлома.
            + Администрация.


            diff --git a/modules_data/moder/100kexp.php b/modules_data/moder/100kexp.php index 4c436d57..c36b6be4 100644 --- a/modules_data/moder/100kexp.php +++ b/modules_data/moder/100kexp.php @@ -14,14 +14,14 @@ if($u->info['admin'] > 0) } $upd = mysql_query('UPDATE `stats` SET `exp` = `exp` + "'.mysql_real_escape_string((int)$_POST['logingo2']).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) { - $uer = ' "'.$uu['login'].'" +'.((int)$_POST['logingo2']).' .'; + $uer = 'Вы рисанули опыт персонажу "'.$uu['login'].'" +'.((int)$_POST['logingo2']).' ед.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/moder.php b/modules_data/moder/moder.php index 4cd4cdb5..01a889e7 100644 --- a/modules_data/moder/moder.php +++ b/modules_data/moder/moder.php @@ -10,7 +10,7 @@ if($p['priemIskl']==1) { if(($uu['align']!=0 && ($uu['align']<=1 || $uu['align']>=2)) || $uu['clan']>0) { - $uer = ' '; + $uer = 'Персонаж находится в клане или у него уже есть склонность'; }else{ if( $a == 1 ) { $nalign = 1.1; @@ -69,39 +69,39 @@ if($p['priemIskl']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } mysql_query('UPDATE `users_delo` SET `hb` = "0" WHERE `uid` = "'.$uu['id'].'" AND `hb`!="0"'); if( $a == 1 ) { - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' (align'.$nalign.').'; + $rtxt = $rang.' "'.$u->info['login'].'" принял'.$sx.' персонажа в Орден Света (align'.$nalign.').'; }elseif( $a == 3 ) { - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' (align'.$nalign.').'; + $rtxt = $rang.' "'.$u->info['login'].'" принял'.$sx.' персонажа в Армаду (align'.$nalign.').'; } mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); if($uu['align']>$nalign) { - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно понизили звание персонажа "'.$uu['login'].'".
            '; }elseif($uu['align']<$nalign && $uu['align']>0) { - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно повысили звание персонажа "'.$uu['login'].'".
            '; }else{ if( $a == 1 ) { - $uer = ' "'.$uu['login'].'" .
            '; + $uer = 'Вы успешно приняли персонажа "'.$uu['login'].'" в Орден Света.
            '; }elseif( $a == 3 ) { - $uer = ' "'.$uu['login'].'" .
            '; + $uer = 'Вы успешно приняли персонажа "'.$uu['login'].'" в Армаду.
            '; } } }else{ - $uer = ' '; + $uer = 'Не удалось приняли персонажа в ОС'; } }else{ - $uer = ' ...'; + $uer = 'Склонность не существует...'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/new/editalign.php b/modules_data/moder/new/editalign.php index b5b65f2b..3df114cb 100644 --- a/modules_data/moder/new/editalign.php +++ b/modules_data/moder/new/editalign.php @@ -1,5 +1,5 @@ 'm1', 1=>'mm1', @@ -42,53 +42,53 @@ $vz_id = array( 38=>'proverka', 39=>'marry', 40=>'ban0'); -// +//названия возможностей $vz = array( -'m1'=>' ', -'mm1'=>' (3 .)', -'m2'=>' ', -'mm2'=>' (3 .)', -'sm1'=>' ', -'sm2'=>' ', -'citym1'=>' ()', -'citym2'=>' ()', -'citysm1'=>' ()', -'citysm2'=>' ()', -'addld'=>' ', -'cityaddld'=>' ()', -'seeld'=>' ', -'telegraf'=>'', -'f1'=>'. ', -'f2'=>'. ', -'f3'=>'. ', -'f4'=>'. ', -'f5'=>'. ', -'f6'=>'. / ', -'f7'=>'. ', -'f8'=>'. ', -'boi'=>' ', -'elka'=>' ', -'haos'=>'', -'haosInf'=>' ()', -'deletInfo'=>' / ', -'zatoch'=>' ', -'banned'=>' ', -'unbanned'=>' ', -'readPerevod'=>' ', -'provItm'=>' ', -'provMsg'=>' ', -'trPass'=>' ', -'shaos'=>' ', -'szatoch'=>' ', -'editAlign'=>' ', -'priemIskl'=>' / ', -'proverka'=>' ', -'marry'=>' / ', -'ban0'=>' [0] '); +'m1'=>'Заклятие молчания', +'mm1'=>'Заклятие молчания (3 дн.)', +'m2'=>'Заклятие форумного молчания', +'mm2'=>'Заклятие форумного молчания (3 дн.)', +'sm1'=>'Снять молчанку', +'sm2'=>'Снять форумную молчанку', +'citym1'=>'Заклятие молчания (междугородняя)', +'citym2'=>'Заклятие форумного молчания (междугородняя)', +'citysm1'=>'Снять молчанку (междугородняя)', +'citysm2'=>'Снять форумную молчанку (междугородняя)', +'addld'=>'Добавить запись в личное дело', +'cityaddld'=>'Добавить запись в личное дело (междугородняя)', +'seeld'=>'Просмотр личного дела', +'telegraf'=>'Телеграф', +'f1'=>'Форум. Ответ в ответе', +'f2'=>'Форум. Удаление ответа', +'f3'=>'Форум. Восстановление темы', +'f4'=>'Форум. Удаление темы', +'f5'=>'Форум. Перемещение темы', +'f6'=>'Форум. Прикрепление / Открепление темы', +'f7'=>'Форум. Возобновление обсуждения', +'f8'=>'Форум. Закрытие обсуждения', +'boi'=>'Модерация боев', +'elka'=>'Модерация ёлки', +'haos'=>'Хаос', +'haosInf'=>'Хаос (бессрочно)', +'deletInfo'=>'Снять / Наложить Обезличивание', +'zatoch'=>'Заточение персонажа', +'banned'=>'Блокировка персонажа', +'unbanned'=>'Разблокировка персонажа', +'readPerevod'=>'Просмотр переводов', +'provItm'=>'Проверка инвентаря', +'provMsg'=>'Проверка сообщений', +'trPass'=>'Требует пароль', +'shaos'=>'Снять хаос', +'szatoch'=>'Выпустить из заточения', +'editAlign'=>'Функции управленца', +'priemIskl'=>'Прием / Исключение', +'proverka'=>'Проверка на чистоту', +'marry'=>'Обвенчать / Развести', +'ban0'=>'Блокировка [0] уровней'); if(isset($_GET['save'],$_POST['alignSave'])) { - // + //сохраняем данные $sv = mysql_fetch_array(mysql_query('SELECT * FROM `moder` WHERE `id` = "'.mysql_real_escape_string($_POST['alignSave']).'" LIMIT 1')); if(isset($sv['id']) && ($sv['align'] < $u->info['align'] || $u->info['admin']>0)) { @@ -104,7 +104,7 @@ if(isset($_GET['save'],$_POST['alignSave'])) { if($i==33) { - // + //пароль на модераторскую панель if($_POST['trPassText']!='') { $ud .= '`'.$vz_id[$i].'`="'.mysql_real_escape_string(md5($_POST['trPassText'])).'",'; @@ -115,7 +115,7 @@ if(isset($_GET['save'],$_POST['alignSave'])) }else{ if($i==33) { - // + //пароль на модераторскую панель $ud .= '`'.$vz_id[$i].'`="",'; }else{ $ud .= '`'.$vz_id[$i].'`="0",'; @@ -129,21 +129,21 @@ if(isset($_GET['save'],$_POST['alignSave'])) $upd = mysql_query('UPDATE `moder` SET '.$ud.' WHERE `id` = "'.$sv['id'].'" LIMIT 1'); if($upd) { - $merror = ' '; + $merror = 'Изменения были сохранены'; }else{ - $merror = ' '; + $merror = 'Ошибка сохранения'; } }else{ - $merror = '. '; + $merror = 'Ошибка. У Вас нет доступа'; } } ?> - + + - - + - + '; - }else{ - $itmAllSee = $itmAll[2]; - } - $itmAllSee = str_replace("'","",$itmAllSee); - $itmAllSee = str_replace('"','"',$itmAllSee); - $itmAllSee = str_replace("\n",'',$itmAllSee); - $itmAllSee = str_replace("\r",'',$itmAllSee); - $js .= '$(\'#inv'.$i.'\').html(\''.$itmAllSee.'\');'; - $i++; - } - unset($itmAll,$itmAllSee); - } - if($_POST['id']=='minireflesh' || $_POST['id']=='reflesh') - { - // - if(($u->tfer['start2']>0 && $u->info['id']==$u->tfer['uid1']) || ($u->tfer['start1']>0 && $u->info['id']==$u->tfer['uid2'])) - { - $js .= 's2g();'; - } - // - $f = 1; - if($u->info['id']==$u->tfer['uid2']) - { - $f = 2; - } - if($u->tfer['r'.$f]!=$u->tfer['r0']) - { - function itmInfotf($pl,$cl) - { - global $u,$c,$code; - $x = $u->itemsX($pl['id'],$pl['uid']); - if($x>1) - { - $x = ' (x'.$x.')'; - }else{ - $x = ''; - } - $r = ''; - if($pl['uid']==$u->info['id']) - { - $r .= ''; - } - $r .= ''.$pl['name'].''.$x.'
            '; - if($pl['inTransfer']==1) - { - $r .= ''; - }else{ - $r .= '(: 1.)'; - } - $r = '

            Функции управления

            info['admin']>0){ ?> -
            @@ -161,8 +161,8 @@ if(isset($_GET['save'],$_POST['alignSave'])) ?>
            '.$u->mod_nm[$a][$pl['align']].'' ?>
            info['align']>$pl['align'] || $u->info['admin']>0){ ?>..'; } ?>
            :
            info['align']>$pl['align'] || $u->info['admin']>0){ ?>ред.ред.'; } ?>
            Возможности: '.$voz.''; @@ -184,7 +184,7 @@ if(isset($_GET['save'],$_POST['alignSave']))
            :

            Изменение возможностей:
            Сохранить изменения
            Скрыть панель
            diff --git a/modules_data/moder/new/editor.php b/modules_data/moder/new/editor.php index 3f86aca1..1b3a6932 100644 --- a/modules_data/moder/new/editor.php +++ b/modules_data/moder/new/editor.php @@ -2,7 +2,7 @@ { $qd = array(); /* Array ([q_act_atr_1] => 0 [q_act_val_1] => [q_tr_atr_1] => 0 [q_tr_val_1] => [q_ng_atr_1] => 0 [q_ng_val_1] => [q_nk_atr_NaN] => 0 - [q_nk_val_NaN] => [q_info] => test [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_fast_city] => capitalcity [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */ + [q_nk_val_NaN] => [q_info] => test описание [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_fast_city] => capitalcity [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */ $qd['name'] = $_POST['q_name']; $qd['lvl'] = explode('-',$_POST['q_lvl']); $qd['info'] = $_POST['q_info']; @@ -102,87 +102,87 @@ function addqact() { var dd = document.getElementById('qact'); adds[0]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqtr() { var dd = document.getElementById('qtr'); adds[1]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqng() { var dd = document.getElementById('qng'); adds[2]++; - dd.innerHTML = ': '+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ +', значение:
            '+dd.innerHTML; } function addqnk() { var dd = document.getElementById('qnk'); adds[3]++; - dd.innerHTML = ': '+ ''+ - ''+ -', :
            '+dd.innerHTML; + ''+ +', значение:
            '+dd.innerHTML; } - +Текстовое поле - + @@ -192,68 +192,68 @@ function addqnk() - @@ -274,8 +274,8 @@ function addqnk() - - + + diff --git a/modules_data/moder/teleport-cometome.php b/modules_data/moder/teleport-cometome.php index ea8fc69d..01cc795e 100644 --- a/modules_data/moder/teleport-cometome.php +++ b/modules_data/moder/teleport-cometome.php @@ -7,27 +7,27 @@ $action = $_POST['cometome']; $toUser = mysql_real_escape_string($_POST['logingo']); if (!isset($u->info['room']) OR !isset($u->info['id']) OR $toUser == '') { if($toUser == '') { - $uer = ' "' . $toUser . '" .'; - } else $uer = ' "' . $action . '" .'; + $uer = 'Персонаж "' . $toUser . '" не найден.'; + } else $uer = 'Режим "' . $action . '" не найден.'; } else { if ($u->info['admin'] > 0) { $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.$toUser.'" LIMIT 1')); $uus = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.$uu['id'].'" LIMIT 1')); if (isset($uu['id'])) { if ($uu['id'] == $u->info['id']) { - $uer = ' , ! - ! ! '; + $uer = 'Вы не можете телепортировать себя к себе, у вас нет раздвоения личности! Если не согласы - обратитесь к психиатру! СРОЧНО! '; } elseif ($uu['admin'] > 0 && $u->info['admin'] == 0) { - $uer = ' .'; + $uer = 'Вы не можете телепортировать Ангелов к себе.'; } elseif (floor($uu['align']) == $a && $uu['align'] > $u->info['align'] && $u->info['admin'] == 0) { - $uer = ' '; + $uer = 'Вы не можете телепортировать старших по званию'; } elseif ($u->info['battle'] == 0 && $action == 'to-fight') { - $uer = ' , .'; + $uer = 'Вы не можете переместить игрока, поединка не существует.'; } elseif ($u->info['dnow'] == 0 && $action == 'to-dungeon') { - $uer = ' , .'; + $uer = 'Вы не можете переместить игрока, вы не в подземелье.'; } elseif ($uu['city'] != $u->info['city'] && $u->info['admin'] == 0) { - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; } else { - /* - \ . */ + /* Если перемещаем в комнату - выбрасываем с поединка и\или подземелья. */ if($action =='to-room' && $uus['dnow']){ mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $uu['id'] . '" LIMIT 1'); } @@ -35,7 +35,7 @@ if (!isset($u->info['room']) OR !isset($u->info['id']) OR $toUser == '') { mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $uu['id'] .'" LIMIT 1'); } - /* : , , */ + /* Переносим игрока по действию: В комнату, В комнату и поединок, В комнату подземелья*/ if ($action == 'to-room') { $upd = mysql_query('UPDATE `users` SET `city` = "'.$u->info['city'].'", `room` = "'.$u->info['room'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); } elseif ($action == 'to-fight') { @@ -48,27 +48,27 @@ if (!isset($u->info['room']) OR !isset($u->info['id']) OR $toUser == '') { $upd = mysql_query('UPDATE `users` SET `city` = "' . $u->info['city'] . '",`room` = "' . $u->info['room'] . '" WHERE `id` = "' . $uu['id'] . '" LIMIT 1'); $upd_d = mysql_query('UPDATE `stats` SET `x` = "' . $u->info['x'] . '",`y` = "' . $u->info['y'] . '",`s` = "' . $u->info['s'] . '",`dnow` = "' . $u->info['dnow'] . '" WHERE `id` = "' . $uu['id'] . '" LIMIT 1'); } else { - $uer = ', .'; + $uer = 'Ошибка, действие не выбрано.'; $upd = false; } if ($upd) { if ($upd_d) $dngo = true; - if ($u->info['sex'] == 1) $sx = ''; else $sx = ''; - $rtxt = '[img[items/teleport-cometome.gif]] ' . $rang . ' "' . $u->info['cast_login'] . '" ' . $sx . ' "' . $uu['login'] . '" ' . ($action == 'to-fight' ? "" . ($dngo == true ? " ." : "") : ($action == 'to-dungeon' ? "" : "")) . '.'; + if ($u->info['sex'] == 1) $sx = 'а'; else $sx = ''; + $rtxt = '[img[items/teleport-cometome.gif]] ' . $rang . ' "' . $u->info['cast_login'] . '" телепортировал' . $sx . ' персонажа "' . $uu['login'] . '" к себе в ' . ($action == 'to-fight' ? "поединок" . ($dngo == true ? " и пещеру." : "") : ($action == 'to-dungeon' ? "подземелье" : "комнату")) . '.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'" . $u->info['city'] . "','" . $u->info['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1')"); - $uer = ' "' . $uu['login'] . '" ' . ($action == 'to-fight' ? "" : ($action == 'to-dungeon' ? "" : "")) . '.'; + $uer = 'Вы успешно телепортировали к себе персонажа "' . $uu['login'] . '" в ' . ($action == 'to-fight' ? "поединок" : ($action == 'to-dungeon' ? "подземелье" : "комнату")) . '.'; } else { - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } } else { - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } else { - $uer = ', '; + $uer = 'Заклинание, только для администрации'; } } diff --git a/modules_data/moder/teleport.php b/modules_data/moder/teleport.php index 3d321ce4..dcf158b3 100644 --- a/modules_data/moder/teleport.php +++ b/modules_data/moder/teleport.php @@ -7,30 +7,30 @@ if(!defined('GAME')) $cgo = $_POST['city']; if(!isset($u->city_name[$cgo])) { - $uer = ' "'.$cgo.'" .'; + $uer = 'Город "'.$cgo.'" не найден.'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { if($uu['id']!=$u->info['id'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы можете телепортировать только себя'; }elseif($uu['battle']>0) { - $uer = ' '; + $uer = 'Персонаж находится в бою'; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете телепортировать Ангелов в другой город'; }elseif($uu['city']!=$u->info['city'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете телепортировать старших по званию'; }else{ - $rid = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "" AND `city` = "'.mysql_real_escape_string($cgo).'" LIMIT 1')); + $rid = mysql_fetch_array(mysql_query('SELECT * FROM `room` WHERE `name` = "Вокзал" AND `city` = "'.mysql_real_escape_string($cgo).'" LIMIT 1')); if(!isset($rid['id'])) { - $uer = ' "'.$u->city_name[$cgo].'" !'; + $uer = 'Телепортация в "'.$u->city_name[$cgo].'" запрещена!'; }else{ $upd = mysql_query('UPDATE `users` SET `city` = "'.mysql_real_escape_string($cgo).'",`room` = "'.$rid['id'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -38,20 +38,20 @@ if(!defined('GAME')) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/teleport.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" [img[city_ico/'.$cgo.'.gif]] '.$u->city_name[$cgo].'.'; + $rtxt = '[img[items/teleport.gif]] '.$rang.' "'.$u->info['cast_login'].'" телепортировал'.$sx.' персонажа "'.$uu['login'].'" в [img[city_ico/'.$cgo.'.gif]] '.$u->city_name[$cgo].'.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "'.$u->city_name[$cgo].'".'; + $rtxt = $rang.' "'.$u->info['login'].'" телепортировал'.$sx.' в "'.$u->city_name[$cgo].'".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',5)"); - $uer = ' "'.$uu['login'].'" '.$u->city_name[$cgo].'.'; + $uer = 'Вы успешно телепортировали персонажа "'.$uu['login'].'" в '.$u->city_name[$cgo].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } diff --git a/modules_data/moder/unmoder.php b/modules_data/moder/unmoder.php index a4f34d19..1b0b442b 100644 --- a/modules_data/moder/unmoder.php +++ b/modules_data/moder/unmoder.php @@ -10,10 +10,10 @@ if($p['priemIskl']==1) { if( ( $uu['align']<=1 || $uu['align']>=2 ) && $a == 1 ) { - $uer = ' '; + $uer = 'Персонаж не является сотрудником Ордена Света'; }elseif( ( $uu['align']<=3 || $uu['align']>=4 ) && $a == 3 ) { - $uer = ' '; + $uer = 'Персонаж не является сотрудником Армады'; }else{ $upd = mysql_query('UPDATE `users` SET `align` = "0" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -21,33 +21,33 @@ if($p['priemIskl']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } if($a == 1) { - $zvna = ''; - $zvna2 = ''; + $zvna = 'паладина'; + $zvna2 = 'Паладина'; $zvimg = ''; }elseif($a == 3) { - $zvna = ''; - $zvna2 = ''; + $zvna = 'тармана'; + $zvna2 = 'Тармана'; $zvimg = 't'; } mysql_query('UPDATE `users_delo` SET `hb` = "0" WHERE `uid` = "'.$uu['id'].'" AND `hb`!="0"'); - $rtxt = '[img[items/unpal'.$zvimg.'.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" "'.$zvna2.'"'; + $rtxt = '[img[items/unpal'.$zvimg.'.gif]] '.$rang.' "'.$u->info['cast_login'].'" лишил'.$sx.' "'.$uu['login'].'" звания "'.$zvna2.'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "'.$zvna2.'".'; + $rtxt = $rang.' "'.$u->info['login'].'" лишил'.$sx.' звания "'.$zvna2.'".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' '.$zvna.' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно сняли знак '.$zvna.' с персонажа "'.$uu['login'].'".
            '; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/unusedeletinfo.php b/modules_data/moder/unusedeletinfo.php index 5a7b321e..e17db242 100644 --- a/modules_data/moder/unusedeletinfo.php +++ b/modules_data/moder/unusedeletinfo.php @@ -16,23 +16,23 @@ if($p['deletInfo']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/uncui.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/uncui.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' заклятие обезличивание с персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' заклятие "обезличивание".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно сняли заклятие обезличивания с персонажа "'.$uu['login'].'".
            '; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж не обезличен'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/use_carcer.php b/modules_data/moder/use_carcer.php index b24e6f38..10680a4d 100644 --- a/modules_data/moder/use_carcer.php +++ b/modules_data/moder/use_carcer.php @@ -8,14 +8,14 @@ if($p['zatoch']==1 || $p['citym1']==1) $tm = (int)$_POST['time']; if($tm!=1 && $tm!=3 && $tm!=7 && $tm!=14 && $tm!=30 && $tm!=60 && $tm!=365 && $tm!=24 && $tm!=6) { - $uer = ' '; + $uer = 'Неверно указано время наказания'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { $uuss = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "'.mysql_real_escape_string($uu['id']).'" LIMIT 1')); if($tm==6){ - // - + //часик - экскурсия $time=time()+60*60; }elseif($tm==24){ $time=time()+(60*60*24*30*90); @@ -24,17 +24,17 @@ if($p['zatoch']==1 || $p['citym1']==1) } if($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' .'; + $uer = 'Вы не можете посадить Ангела.'; } if($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uuss['dnow'] > 0){ - $uer = ' '; + $uer = 'Персонаж находится в подземелье'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете посадить старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете посадить самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `jail` = "'.mysql_real_escape_string($time).'", `room`="274", `city`="capitalcity" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -42,23 +42,23 @@ if($p['zatoch']==1 || $p['citym1']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } mysql_query('UPDATE `items_users` SET `delete` = "1357908642" WHERE `uid` = '.$uu['id'].' AND `delete` = 0'); - $rtxt = '[img[items/jail.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'", '.$srokt[$tm].''; + $rtxt = '[img[items/jail.gif]] '.$rang.' "'.$u->info['cast_login'].'" отправил'.$sx.' в заточение "'.$uu['login'].'", сроком '.$srokt[$tm].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "" '.$srokt[$tm].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" отправил'.$sx.' в "заточение" сроком '.$srokt[$tm].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',6)"); - $uer = ' "'.$uu['login'].'", '.$srok[$tm].'.'; + $uer = 'Вы успешно посадили в тюрьму персонажа "'.$uu['login'].'", сроком '.$srok[$tm].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usealign1.php b/modules_data/moder/usealign1.php index 9062197e..36530b9c 100644 --- a/modules_data/moder/usealign1.php +++ b/modules_data/moder/usealign1.php @@ -10,12 +10,12 @@ if($p['usealign1']==1 && $u->info['admin'] > 0) if(isset($uu['id'])) { if($u->testAlign( 1 , $uu['id'] ) == 0 ) { - $uer = ' . !
            '; + $uer = 'У персонажа стоит ограничение на смену склонности. Вы не можете выдать данную склонность!
            '; }elseif($uu['clan'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей с кланом.
            '; }elseif($uu['align'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей со склонностью.
            '; }else{ $upd = mysql_query('UPDATE `users` SET `align` = "1" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -24,21 +24,21 @@ if($p['usealign1']==1 && $u->info['admin'] > 0) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/pal_button1.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_button1.gif]] '.$rang.' "'.$u->info['cast_login'].'" присвоил'.$sx.' светлую склонность персонажу "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' .'; + $rtxt = $rang.' "'.$u->info['login'].'" приствоил'.$sx.' светлую склонность персонажу.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно присвоили светлую склонность персонажу "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usealign3.php b/modules_data/moder/usealign3.php index 38ac2110..7448477a 100644 --- a/modules_data/moder/usealign3.php +++ b/modules_data/moder/usealign3.php @@ -10,12 +10,12 @@ if($p['usealign3']==1 && $u->info['admin'] > 0) if(isset($uu['id'])) { if($u->testAlign( 3 , $uu['id'] ) == 0 ) { - $uer = ' . !
            '; + $uer = 'У персонажа стоит ограничение на смену склонности. Вы не можете выдать данную склонность!
            '; }elseif($uu['clan'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей с кланом.
            '; }elseif($uu['align'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей со склонностью.
            '; }else{ $upd = mysql_query('UPDATE `users` SET `align` = "3" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -24,21 +24,21 @@ if($p['usealign3']==1 && $u->info['admin'] > 0) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/pal_button[dark].gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_button[dark].gif]] '.$rang.' "'.$u->info['cast_login'].'" присвоил'.$sx.' темную склонность персонажу "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' .'; + $rtxt = $rang.' "'.$u->info['login'].'" приствоил'.$sx.' темную склонность персонажу.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно присвоили темную склонность персонажу "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usealign7.php b/modules_data/moder/usealign7.php index c2f70908..7b2f3ac2 100644 --- a/modules_data/moder/usealign7.php +++ b/modules_data/moder/usealign7.php @@ -10,12 +10,12 @@ if($p['usealign7']==1 && $u->info['admin'] > 0) if(isset($uu['id'])) { if($u->testAlign( 7 , $uu['id'] ) == 0 ) { - $uer = ' . !
            '; + $uer = 'У персонажа стоит ограничение на смену склонности. Вы не можете выдать данную склонность!
            '; }elseif($uu['clan'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей с кланом.
            '; }elseif($uu['align'] > 0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на персонажей со склонностью.
            '; }else{ $upd = mysql_query('UPDATE `users` SET `align` = "7" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -24,21 +24,21 @@ if($p['usealign7']==1 && $u->info['admin'] > 0) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/palbuttonneutralsv3.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/palbuttonneutralsv3.gif]] '.$rang.' "'.$u->info['cast_login'].'" присвоил'.$sx.' нейтральную склонность персонажу "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' .'; + $rtxt = $rang.' "'.$u->info['login'].'" приствоил'.$sx.' нейтральную склонность персонажу.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно присвоили нейтральную склонность персонажу "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useatack.php b/modules_data/moder/useatack.php index 696c4b53..3ccef7ed 100644 --- a/modules_data/moder/useatack.php +++ b/modules_data/moder/useatack.php @@ -10,18 +10,18 @@ if($p['attack']==1) if(isset($uu['id'])) { if($u->room['noatack'] == 1) { - $uer = ' !'; + $uer = 'В данной комнате запрещены нападения!'; }elseif($uu['id'] == $u->info['id']) { - $uer = ' ! :)'; + $uer = 'Нападать на себя НЕЛЬЗЯ! :)'; }elseif($uu['room'] != $u->info['room']) { - $uer = '
            '; + $uer = 'ВЫ находитесь в разных комнатах
            '; }else{ $ua = mysql_fetch_array(mysql_query('SELECT `s`.*,`u`.* FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `s`.`id` = `u`.`id` WHERE `s`.`id` = "'.mysql_real_escape_string($uu['id']).'" LIMIT 1')); if(isset($ua['id']) && $ua['online'] > time()-520) { - $usta = $u->getStats($ua['id'],0); // - $minHp = floor($usta['hpAll']/100*33); // + $usta = $u->getStats($ua['id'],0); // статы цели + $minHp = floor($usta['hpAll']/100*33); // минимальный запас здоровья цели при котором можно напасть if( $ua['battle'] > 0 ) { $uabt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "'.$ua['battle'].'" AND `team_win` = "-1" LIMIT 1')); @@ -31,15 +31,15 @@ if($p['attack']==1) } if( $ua['battle'] == 0 && $minHp > $usta['hpNow'] ) { - $uer = ' , '; + $uer = 'Нельзя напасть, у противника не восстановилось здоровье'; }elseif( isset($uabt['id']) && $uabt['type'] == 500 && $ua['team'] == 1 ) { - $uer = ' !'; + $uer = 'Нельзя сражаться на стороне монстров!'; }elseif( isset($uabt['id']) && $uabt['invis'] > 0 ) { - $uer = ' !'; + $uer = 'Нельзя вмешиваться в невидимый бой!'; }elseif( $magic->testTravma( $ua['id'] , 3 ) == true ) { - $uer = ' , !'; + $uer = 'Противник тяжело травмирован, нельзя напасть!'; }elseif( $magic->testTravma( $u->info['id'] , 2 ) == true ) { - $uer = ' , !'; + $uer = 'Вы травмированы, нельзя напасть!'; }elseif($ua['room']==$u->info['room'] && ($minHp <= $usta['hpNow'] || $ua['battle'] > 0)) { @@ -50,9 +50,9 @@ if($p['attack']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/pal_button8.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'".'; + $rtxt = '[img[items/pal_button8.gif]] '.$rang.' "'.$u->info['cast_login'].'" совершил'.$sx.' нападение на персонажа "'.$uu['login'].'".'; if ($goodt>0) { mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); @@ -61,30 +61,30 @@ if($p['attack']==1) header('location: main.php'); } }else{ - $uer = ' '; + $uer = 'Персонаж должен находиться в онлайне'; } - /*$upd = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$uu['id'].'" AND `name` LIKE "%"'); + /*$upd = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$uu['id'].'" AND `name` LIKE "%травма"'); if($upd) { $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cure3.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" .'; + $rtxt = '[img[items/cure3.gif]] '.$rang.' "'.$u->info['cast_login'].'" излечил'.$sx.' персонажа "'.$uu['login'].'" от травм.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '; + $rtxt = $rang.' "'.$u->info['login'].'" излечил'.$sx.' от травм'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" .'; + $uer = 'Вы успешно излечили персонажу "'.$uu['login'].'" от травм.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; }*/ } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useban.php b/modules_data/moder/useban.php index b1782d72..abc15c3f 100644 --- a/modules_data/moder/useban.php +++ b/modules_data/moder/useban.php @@ -10,25 +10,25 @@ if($p['banned']==1 || $p['ban0']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['banned']>0) { - $uer = ' '; + $uer = 'Персонаж был заблокирован ранее'; }elseif($p['banned']==0 && $uu['level']>0) { - $uer = ' 0- '; + $uer = 'Вы не можете накладывать заклятие смерти на персонажей старше 0-го уровня'; }elseif($uu['admin']>0 && $u->info['admin']==0) - {$uer = ' '; + {$uer = 'Вы не можете накладывать заклятие смерти на Ангелов'; //}elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - // $uer = ' '; + // $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие смерти на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие смерти на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `banned` = "'.time().'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -36,17 +36,17 @@ if($p['banned']==1 || $p['ban0']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/pal_button6.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_button6.gif]] '.$rang.' "'.$u->info['cast_login'].'" наложил'.$sx.' заклятие смерти на "'.$uu['login'].'"'; mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" наложил'.$sx.' заклятие "смерти".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно наложили заклятие смерти на персонажа "'.$uu['login'].'".'; mysql_query("INSERT INTO `ban_email`(`email`, `uid`, `nick_name`) VALUES ('".$uu['mail']."','".$uu['id']."','".$uu['login']."')"); - // + //‚ытаскиваем из боЯ если в бою if($uu['battle']!=0) { $uu['battle'] = 0; @@ -62,23 +62,23 @@ if($p['banned']==1 || $p['ban0']==1) } } //========================== - // + //“далЯем завки в Ѓой // mysql_query("DELETE FROM `zayvki` WHERE `creator` = '".$uu['id']."'"); //========================== - // + //“далЯем завки Џещеры // mysql_query("UPDATE `dungeon_zv` SET `delete` = '".time()."' WHERE `uid` = '".$uu['id']."'"); //========================== }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usedeletinfo.php b/modules_data/moder/usedeletinfo.php index a89a89a6..d187e441 100644 --- a/modules_data/moder/usedeletinfo.php +++ b/modules_data/moder/usedeletinfo.php @@ -8,7 +8,7 @@ if($p['deletInfo']==1) $tm = (int)$_POST['time']; if($tm!=1 && $tm!=7 && $tm!=14 && $tm!=30 && $tm!=60) { - $uer = ' '; + $uer = 'Неверно указаны данные'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) @@ -16,11 +16,11 @@ if($p['deletInfo']==1) if($uu['info_delete']!=1 && $uu['info_delete']'', - 7=>'', - 14=>' ', - 30=>'', - 60=>' ' + 1=>'бессрочно', + 7=>'неделя', + 14=>'две недели', + 30=>'месяц', + 60=>'два месяца' ); $srok = $srok[$tm]; if($tm==1) @@ -45,24 +45,24 @@ if($p['deletInfo']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cui.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" '.$srok; + $rtxt = '[img[items/cui.gif]] '.$rang.' "'.$u->info['cast_login'].'" использовал'.$sx.' заклятие обезличивание на "'.$uu['login'].'" сроком '.$srok; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES ('".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "", '.$srok.'.'; + $rtxt = $rang.' "'.$u->info['login'].'" использовал'.$sx.' заклятие "обезличивание", сроком '.$srok.'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно использовали заклятие обезличивания на персонажа "'.$uu['login'].'".
            '; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж уже обезличен'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usehaos.php b/modules_data/moder/usehaos.php index 07f3e533..12a83db8 100644 --- a/modules_data/moder/usehaos.php +++ b/modules_data/moder/usehaos.php @@ -6,33 +6,33 @@ if(!defined('GAME')) if($p['haos']==1) { $tm = (int)$_POST['time']; - $tmban = array(7=>' ',14=>' ',30=>' ',60=>' ',1=>''); + $tmban = array(7=>'одна неделя',14=>'две недели',30=>'один месяц',60=>'два месяца',1=>'бессрочно'); if($tm!=7 && $tm!=14 && $tm!=30 && $tm!=60 && ($tm!=1 || ($p['haosInf']==0 && $tm==1))) { - $uer = ' '; + $uer = 'Неверно указано время наказания'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Паладина в хаос'; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Тармана в хаос'; }elseif($uu['align']==2) { - $uer = ' '; + $uer = 'Персонаж был ранее отправлен в хаос'; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете отправлять Ангелов в хаос'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на самого себя'; }else{ $th = time()+($tm*24*60*60); if($tm==1) @@ -46,23 +46,23 @@ if($p['haos']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } mysql_query('UPDATE `users_delo` SET `hb` = "0" WHERE `uid` = "'.$uu['id'].'" AND `hb`!="0"'); - $rtxt = '[img[items/pal_button4.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" : '.$tmban[$tm].''; + $rtxt = '[img[items/pal_button4.gif]] '.$rang.' "'.$u->info['cast_login'].'" отправил'.$sx.' персонажа "'.$uu['login'].'" в хаос на срок: '.$tmban[$tm].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "" : '.$tmban[$tm].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" отправил'.$sx.' в "хаос" на срок: '.$tmban[$tm].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" : '.$tmban[$tm].'.'; + $uer = 'Вы успешно отправили персонажа "'.$uu['login'].'" в хаос на срок: '.$tmban[$tm].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usehpa.php b/modules_data/moder/usehpa.php index 03920095..7dc15c3f 100644 --- a/modules_data/moder/usehpa.php +++ b/modules_data/moder/usehpa.php @@ -10,9 +10,9 @@ if($p['heal'] == 1) if(isset($uu['id'])) { if($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['battle']>0){ - $uer = ' '; + $uer = 'Персонаж находится в поединке'; }else{ $upd = mysql_query('UPDATE `stats` SET `hpNow` = `hpNow` + "1200" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -20,19 +20,19 @@ if($p['heal'] == 1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cureHP120.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/cureHP120.gif]] '.$rang.' "'.$u->info['cast_login'].'" восстановил'.$sx.' здоровье персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно восстановили здоровье персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/uselogin.php b/modules_data/moder/uselogin.php index 6ca7ca5f..19dd9a9c 100644 --- a/modules_data/moder/uselogin.php +++ b/modules_data/moder/uselogin.php @@ -11,26 +11,26 @@ if($p['nick']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['battle']>0) { - $uer = ' .
            '; + $uer = 'Персонаж находится в поединке.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете сменить логин самому себе'; }else{ function en_ru($txt) { $g = false; $en = preg_match("/^(([a-zA-Z _-])+)$/i", $txt); - $ru = preg_match("/^(([-- _-])+)$/i", $txt); + $ru = preg_match("/^(([а-яА-Я _-])+)$/i", $txt); if(($ru && $en) || (!$ru && !$en)) { $g = true; @@ -39,49 +39,49 @@ if($p['nick']==1) } function test_login($login,$test) { $r = false; - $blacklist = "!@#$%^&*()\+|/'`\""; - $sr = '_-1234567890'; + $blacklist = "!@#$%^&*()\+Ёё|/'`\""; + $sr = '_-йцукенгшщзхъфывапролджэячсмитьбюё1234567890'; $i = 0; while($imystr($login))) { - $error = ', , .'; $_POST['step'] = 1; $i = count($nologin); + $error = 'Выберите, пожалуйста, другой ник.'; $_POST['step'] = 1; $i = count($nologin); } $i++; } $login = str_replace(' ',' ',$login); - // 2 20 + //Логин от 2 до 20 символов if(strlen($login)>20) { - $error = ' 20 .'; $_POST['step'] = 1; + $error = 'Логин должен содержать не более 20 символов.'; $_POST['step'] = 1; } if(strlen($login)<2) { - $error = ' 2 .'; $_POST['step'] = 1; + $error = 'Логин должен содержать не менее 2 символов.'; $_POST['step'] = 1; } - // + //Один алфавит $er = en_ru($login); if($er==true) { - $error = ' . .'; $_POST['step'] = 1; + $error = 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.'; $_POST['step'] = 1; } - // + //Запрещенный символы if(strpos($sr,$login)) { - $error = ' .'; $_POST['step'] = 1; + $error = 'Логин содержит запрещенные символы.'; $_POST['step'] = 1; } - // + //Персонажи в базе $log = mysql_fetch_array(mysql_query('SELECT `id` from `users` where `login`="'.mysql_real_escape_string($login).'" LIMIT 1')); $log2 = mysql_fetch_array(mysql_query('SELECT `id` from `lastNames` where `login`="'.mysql_real_escape_string($login).'" LIMIT 1')); if(isset($log['id']) || isset($log2['id'])) { - $error = ' '.$login.' , .'; $_POST['step'] = 1; + $error = 'Логин '.$login.' уже занят, выберите другой.'; $_POST['step'] = 1; } - // + //Разделители if(substr_count($login,' ')+substr_count($login,'-')+substr_count($login,'_')>2) { - $error = ' (, , ).'; $_POST['step'] = 1; + $error = 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).'; $_POST['step'] = 1; } $login = trim($login,' '); if($error != '') { @@ -98,7 +98,7 @@ if($p['nick']==1) } $uu['login_new'] = $_POST['logingo2']; if(test_login($uu['login_new'],true) == 'good') { - $uer = ' '; + $uer = 'Вы успешно сменили логин'; $uu['login_last'] = $uu['login']; $uu['login'] = test_login($uu['login_new'],false); $upd = mysql_query('UPDATE `users` SET `login` = "'.$uu['login'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -112,27 +112,27 @@ if($p['nick']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/nick.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login_last'].'" "'.$uu['login'].'"'; + $rtxt = '[img[items/nick.gif]] '.$rang.' "'.$u->info['cast_login'].'" сменил'.$sx.' логин персонажа "'.$uu['login_last'].'" на "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "'.$uu['login_last'].'" "'.$uu['login'].'".'; + $rtxt = $rang.' "'.$u->info['login'].'" сменил'.$sx.' логин сперсонажа с "'.$uu['login_last'].'" на "'.$uu['login'].'".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login_last'].'" '.$uu['login'].'.'; + $uer = 'Вы успешно сменили логин персонажа "'.$uu['login_last'].'" на '.$uu['login'].'.'; mysql_query('INSERT INTO `lastnames` (`uid`,`login`,`newlogin`,`time`) VALUES ( "'.$uu['id'].'","'.$uu['login_last'].'","'.$uu['login'].'","'.time().'" )'); }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' : '.test_login($uu['login_new']); + $uer = 'Не удалось сменить логин: '.test_login($uu['login_new']); } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usem1.php b/modules_data/moder/usem1.php index 78645af3..2e107f12 100644 --- a/modules_data/moder/usem1.php +++ b/modules_data/moder/usem1.php @@ -8,52 +8,52 @@ if($p['m1']==1 || $p['citym1']==1) $tm = (int)$_POST['time']; if($tm!=5 && $tm!=15 && $tm!=30 && $tm!=60 && $tm!=180 && $tm!=360 && $tm!=720 && $tm!=1440 && $tm!=4320) { - $uer = ' '; + $uer = 'Неверно указано время наказания'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { if($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие молчания на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие молчания на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие молчания на самого себя'; }else{ - // , 5 , . + //Проверка на Активную молчанку, если молчанка больше чем на 5 минут, она не обновится. $lastTime = mysql_fetch_array(mysql_query('SELECT `molch1` FROM `users` WHERE `id` = "'.$uu['id'].'" LIMIT 1')); if(isset($lastTime[0]) && $lastTime[0]>(time()+300)){ $ltm = round(($lastTime[0]-time())/60); - $uer = ' .
            '.$ltm.' ..
            '; + $uer = 'Не удалось использовать данное заклятие.
            Персонаж будет молчать еще '.$ltm.' минут..
            '; } else { - // + // Наложение молчания $upd = mysql_query('UPDATE `users` SET `molch1` = "'.mysql_real_escape_string(time()+round($tm)*60).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) { $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/silence'.round($tm).'.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'", '.$srok[$tm].''; + $rtxt = '[img[items/silence'.round($tm).'.gif]] '.$rang.' "'.$u->info['cast_login'].'" наложил'.$sx.' заклятие молчания на "'.$uu['login'].'", сроком '.$srok[$tm].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "" '.$srok[$tm].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" наложил'.$sx.' заклятие "молчания" сроком '.$srok[$tm].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' '.$uu['login'].'", '.$srok[$tm].'.'; + $uer = 'Вы успешно наложили заклятие молчания на персонажа '.$uu['login'].'", сроком '.$srok[$tm].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usem2.php b/modules_data/moder/usem2.php index a7395ff7..0097cdfb 100644 --- a/modules_data/moder/usem2.php +++ b/modules_data/moder/usem2.php @@ -8,21 +8,21 @@ if($p['m2']==1 || $p['citym2']==1) $tm = (int)$_POST['time']; if($tm!=30 && $tm!=60 && $tm!=180 && $tm!=360 && $tm!=720 && $tm!=1440 && $tm!=4320) { - $uer = ' '; + $uer = 'Неверно указано время наказания'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) { if($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие форумного молчания на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие форумного молчания на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие форумного молчания на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `molch2` = "'.mysql_real_escape_string(time()+round($tm)*60).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -30,22 +30,22 @@ if($p['m2']==1 || $p['citym2']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/sleepf.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'", '.$srok[$tm].''; + $rtxt = '[img[items/sleepf.gif]] '.$rang.' "'.$u->info['cast_login'].'" наложил'.$sx.' заклятие форумного молчания на "'.$uu['login'].'", сроком '.$srok[$tm].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' " " '.$srok[$tm].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" наложил'.$sx.' заклятие "форумного молчания" сроком '.$srok[$tm].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'", '.$srok[$tm].'.'; + $uer = 'Вы успешно наложили заклятие форумного молчания на персонажа "'.$uu['login'].'", сроком '.$srok[$tm].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usemarry.php b/modules_data/moder/usemarry.php index 9cb888cb..a47e3d8c 100644 --- a/modules_data/moder/usemarry.php +++ b/modules_data/moder/usemarry.php @@ -11,27 +11,27 @@ if($p['marry']==1) { if($uu['sex'] == $uu2['sex']) { - $uer = ' , ;)'; + $uer = 'Невозможно заключить однополый брак, только через Администрацию и только за деньги ;)'; }elseif($uu['marry']>0) { - $uer = '
            '; + $uer = 'Персонаж уже находится в браке
            '; }elseif($uu['marry']>0) { - $uer = '
            '; + $uer = 'Персонаж уже находится в браке
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }elseif($uu2['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu2['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu2['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }else{ $uu['palpro'] = time()+60*60*24*7; $upd = mysql_query('UPDATE `users` SET `marry` = "'.$uu2['id'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -41,29 +41,29 @@ if($p['marry']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/marry.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $rtxt = '[img[items/marry.gif]] '.$rang.' "'.$u->info['cast_login'].'" подтвердил'.$sx.' законность брака между "'.$uu['login'].'" и "'.$uu2['login'].'".'; mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu2['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" подтвердил'.$sx.' законность брака с '.$uu2['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" подтвердил'.$sx.' законность брака с '.$uu['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu2['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); $u->addItem(76,$uu['id'],'sudba='.$uu['login'].'|noremont=1|notransfer=1'); $u->addItem(76,$uu2['id'],'sudba='.$uu2['login'].'|noremont=1|notransfer=1'); - $uer = ' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $uer = 'Вы успешно зафиксировали брак "'.$uu['login'].'" и "'.$uu2['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usempa.php b/modules_data/moder/usempa.php index 8f3bd534..bd2600e3 100644 --- a/modules_data/moder/usempa.php +++ b/modules_data/moder/usempa.php @@ -10,9 +10,9 @@ if($p['heal'] == 1) if(isset($uu['id'])) { if($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['battle']>0){ - $uer = ' '; + $uer = 'Персонаж находится в поединке'; }else{ $upd = mysql_query('UPDATE `stats` SET `mpNow` = `mpNow` + "1200" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -20,19 +20,19 @@ if($p['heal'] == 1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cureMana1000.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/cureMana1000.gif]] '.$rang.' "'.$u->info['cast_login'].'" восстановил'.$sx.' ману персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно восстановили ману персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usenevid.php b/modules_data/moder/usenevid.php index d4c8c1c1..9027db6f 100644 --- a/modules_data/moder/usenevid.php +++ b/modules_data/moder/usenevid.php @@ -7,14 +7,14 @@ if(!defined('GAME')) if($p['invis'] == 1) { if($u->info['invis']!=1 && $u->info['invis']info['invis'] = 1; }else{ - $uer = ' '; + $uer = 'Вы успешно выключили невидимку'; $u->info['invis'] = 0; } mysql_query('UPDATE `users` SET `invis` = "'.$u->info['invis'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usenoper.php b/modules_data/moder/usenoper.php index 240970f7..16c85ec0 100644 --- a/modules_data/moder/usenoper.php +++ b/modules_data/moder/usenoper.php @@ -10,20 +10,20 @@ if($p['usenoper']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `allLock` = "'.(time()+31536000).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -31,21 +31,21 @@ if($p['usenoper']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/mod/magic2.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/mod/magic2.gif]] '.$rang.' "'.$u->info['cast_login'].'" наложил'.$sx.' запрет на передачи с "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" наложил'.$sx.' запрет на "передачи".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно наложили запрет на передачи с персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usenoper2.php b/modules_data/moder/usenoper2.php index 01778192..9d0469ff 100644 --- a/modules_data/moder/usenoper2.php +++ b/modules_data/moder/usenoper2.php @@ -10,20 +10,20 @@ if($p['usenoper']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать запрет передач на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `invBlock` = "'.rand(5,10000000).'",`allLock` = "'.(time()+31536000).'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -31,21 +31,21 @@ if($p['usenoper']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/mod/magic2.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/mod/magic2.gif]] '.$rang.' "'.$u->info['cast_login'].'" наложил'.$sx.' полный запрет на передачи с "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" наложил'.$sx.' полный запрет на "передачи".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно наложили полный запрет на передачи с персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usepro.php b/modules_data/moder/usepro.php index 616831b7..81473514 100644 --- a/modules_data/moder/usepro.php +++ b/modules_data/moder/usepro.php @@ -10,20 +10,20 @@ if($p['proverka']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['palpro']>time()) { - $uer = ' '.date('d.m.Y H:i',$uu['palpro']); + $uer = 'Персонаж уже имеет проверку на чистоту до '.date('d.m.Y H:i',$uu['palpro']); }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете ставить проверку самому себе'; }else{ $uu['palpro'] = time()+60*60*24*14; $upd = mysql_query('UPDATE `users` SET `palpro` = "'.$uu['palpro'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -32,22 +32,22 @@ if($p['proverka']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/check.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" . ( '.date('d.m.Y H:i',$uu['palpro']).').'; + $rtxt = '[img[items/check.gif]] '.$rang.' "'.$u->info['cast_login'].'" подтвердил'.$sx.' что персонаж "'.$uu['login'].'" чист перед законом. (До '.date('d.m.Y H:i',$uu['palpro']).').'; //mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.date('d.m.Y H:i',$uu['palpro']).'.'; + $rtxt = $rang.' "'.$u->info['login'].'" подтвердил'.$sx.' проверку на чистоту до '.date('d.m.Y H:i',$uu['palpro']).'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно поставили пометку о чистоте персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usepro2.php b/modules_data/moder/usepro2.php index f147a395..596db1e8 100644 --- a/modules_data/moder/usepro2.php +++ b/modules_data/moder/usepro2.php @@ -10,20 +10,20 @@ if($p['proverka']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['palpro']0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете снимать проверку самому себе'; }else{ $uu['palpro'] = time()-1; $upd = mysql_query('UPDATE `users` SET `palpro` = "'.$uu['palpro'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -32,22 +32,22 @@ if($p['proverka']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/pal_buttont.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_buttont.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' проверку на чистоту персонажу "'.$uu['login'].'"'; //mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' проверку на чистоту'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно сняли пометку о чистоте персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usesex.php b/modules_data/moder/usesex.php index 7c29cd29..4a07ac66 100644 --- a/modules_data/moder/usesex.php +++ b/modules_data/moder/usesex.php @@ -11,19 +11,19 @@ if($p['sex']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете сменить пол самому себе'; }else{ - $usx = array(0=>1,1=>0,'0-0'=>'','0-1'=>''); + $usx = array(0=>1,1=>0,'0-0'=>'мужской','0-1'=>'женский'); $uu['sex'] = $usx[$uu['sex']]; $upd = mysql_query('UPDATE `users` SET `obraz` = "0.gif",`sex` = "'.$uu['sex'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -31,21 +31,21 @@ if($p['sex']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/male.png]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" '.$usx['0-'.$uu['sex']].''; + $rtxt = '[img[items/male.png]] '.$rang.' "'.$u->info['cast_login'].'" сменил'.$sx.' пол персонажа "'.$uu['login'].'" на '.$usx['0-'.$uu['sex']].''; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$usx['0-'.$uu['sex']].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" сменил'.$sx.' пол сперсонажа на '.$usx['0-'.$uu['sex']].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" '.$usx['0-'.$uu['sex']].'.'; + $uer = 'Вы успешно сменили пол персонажа "'.$uu['login'].'" на '.$usx['0-'.$uu['sex']].'.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useshaos.php b/modules_data/moder/useshaos.php index f60d5c54..1402812f 100644 --- a/modules_data/moder/useshaos.php +++ b/modules_data/moder/useshaos.php @@ -14,34 +14,34 @@ if($p['shaos']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } if($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Ангелов.
            '; }elseif($uu['align']>1 && $uu['align']<2 && $u->info['align']>3 && $u->info['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['align']>1 && $u->info['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['align']==2 || $uu['haos']>0) { - $rtxt = '[img[items/pal_button5.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" '; + $rtxt = '[img[items/pal_button5.gif]] '.$rang.' "'.$u->info['cast_login'].'" выпустил'.$sx.' персонажа "'.$uu['login'].'" из хаоса'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" выпустил'.$sx.' из "хаоса".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" .
            '; + $uer = 'Вы успешно выпустили персонажа "'.$uu['login'].'" из хаоса.
            '; }else{ - $uer = ' '; + $uer = 'Персонаж не в хаосе'; } }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usesm.php b/modules_data/moder/usesm.php index 75c2e9cc..2729e148 100644 --- a/modules_data/moder/usesm.php +++ b/modules_data/moder/usesm.php @@ -8,7 +8,7 @@ if($p['sm2']==1 || $p['citysm2']==1 || $p['citysm1']==1 || $p['sm1']==1) $tm = (int)$_POST['time']; if($tm!=1 && $tm!=2 && $tm!=3) { - $uer = ' '; + $uer = 'Неверно указаны данные'; }else{ $uu = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.mysql_real_escape_string($_POST['logingo']).'" LIMIT 1')); if(isset($uu['id'])) @@ -30,32 +30,32 @@ if($p['sm2']==1 || $p['citysm2']==1 || $p['citysm1']==1 || $p['sm1']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } if($x!=2 && $uu['molch1']>=time()) { - $rtxt = '[img[items/pal_button3.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_button3.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' заклятие молчания с "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' заклятие "молчания".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно сняли заклятие молчания с персонажа "'.$uu['login'].'".
            '; } if($x!=1 && $uu['molch2']>=time()) { - $rtxt = '[img[items/fsleep_off.gif]] '.$rang.' "'.$u->info['login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/fsleep_off.gif]] '.$rang.' "'.$u->info['login'].'" снял'.$sx.' заклятие форумного молчания с "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' " ".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' заклятие "форумного молчания".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer .= ' "'.$uu['login'].'".'; + $uer .= 'Вы успешно сняли заклятие форумного молчания с персонажа "'.$uu['login'].'".'; } }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunalign.php b/modules_data/moder/useunalign.php index f682e56b..0fd89424 100644 --- a/modules_data/moder/useunalign.php +++ b/modules_data/moder/useunalign.php @@ -11,17 +11,17 @@ if($p['useunalign']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете снять склонность с самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `align` = "0",`clan` = "0" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -30,21 +30,21 @@ if($p['useunalign']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/palbuttondarkhc1.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' ⁄ "'.$uu['login'].'"'; + $rtxt = '[img[items/palbuttondarkhc1.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' склонность⁄клан с персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' .'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' склонность с персонажа.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно сняли склонность с персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunban.php b/modules_data/moder/useunban.php index a1eb96f1..7eba35f1 100644 --- a/modules_data/moder/useunban.php +++ b/modules_data/moder/useunban.php @@ -14,27 +14,27 @@ if($p['unbanned']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } if($uu['banned']>0) { mysql_query('UPDATE `users_delo` SET `hb` = "0" WHERE `uid` = "'.$uu['id'].'" AND `hb`!="0"'); - $rtxt = '[img[items/pal_button7.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/pal_button7.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' заклятие смерти с "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' заклятие "смерти".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно сняли заклятие смерти с персонажа "'.$uu['login'].'".
            '; mysql_query("DELETE FROM `ban_email` WHERE `email`='".$uu['mail']."'"); }else{ - $uer = ' '; + $uer = 'Персонаж не заблокирован'; } }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunfight.php b/modules_data/moder/useunfight.php index fd35460c..ba13dae1 100644 --- a/modules_data/moder/useunfight.php +++ b/modules_data/moder/useunfight.php @@ -23,7 +23,7 @@ if($p['unbtl']==1) { if($uu['battle']==0) { - $uer = '
            '; + $uer = 'Персонаж не находится в поединке
            '; }else{ $uu['battle222'] = $uu['battle']; $uu['battle'] = 0; @@ -39,23 +39,23 @@ if($p['unbtl']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - inBattleLog('{tm1} '.$rang.' "'.$u->info['cast_login'].'" "'.$uu['login'].'" .'); - $rtxt = '[img[items/pal_buttonn.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" '; + inBattleLog('{tm1} '.$rang.' "'.$u->info['cast_login'].'" выпустил персонажа "'.$uu['login'].'" из поединка.'); + $rtxt = '[img[items/pal_buttonn.gif]] '.$rang.' "'.$u->info['cast_login'].'" выпустил'.$sx.' персонажа "'.$uu['login'].'" из поединка'; //mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu['battle222'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" выпустил'.$sx.' персонажа из поединка №'.$uu['battle222'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" .'; + $uer = 'Вы успешно выпустили персонажа "'.$uu['login'].'" из поединка.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunmarry.php b/modules_data/moder/useunmarry.php index ffb141ec..73b351e8 100644 --- a/modules_data/moder/useunmarry.php +++ b/modules_data/moder/useunmarry.php @@ -12,24 +12,24 @@ if($p['marry']==1) if($uu['marry'] == 0) { - $uer = '
            '; + $uer = 'Персонаж не находится в браке
            '; }elseif($uu2['marry'] == 0) { - $uer = '
            '; + $uer = 'Персонаж не находится в браке
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }elseif($uu2['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu2['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu2['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }else{ $uu['palpro'] = time()+60*60*24*7; $upd = mysql_query('UPDATE `users` SET `marry` = "0" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -39,15 +39,15 @@ if($p['marry']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/unmarry.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $rtxt = '[img[items/unmarry.gif]] '.$rang.' "'.$u->info['cast_login'].'" расторгнул'.$sx.' законность брака между "'.$uu['login'].'" и "'.$uu2['login'].'".'; mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu2['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" расторгнул'.$sx.' законность брака с '.$uu2['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" расторгнул'.$sx.' законность брака с '.$uu['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu2['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); $u->addItem(76,$uu['id'],'sudba='.$uu['login'].'|noremont=1|notransfer=1'); @@ -55,15 +55,15 @@ if($p['marry']==1) mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `item_id` = 76 AND (`uid` = "'.$uu['id'].'" OR `uid` = "'.$uu2['id'].'")'); - $uer = ' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $uer = 'Вы успешно расторгли брак "'.$uu['login'].'" и "'.$uu2['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunnoper.php b/modules_data/moder/useunnoper.php index d7af7ada..834db56c 100644 --- a/modules_data/moder/useunnoper.php +++ b/modules_data/moder/useunnoper.php @@ -10,20 +10,20 @@ if($p['useunnoper']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `allLock` = "0" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -31,21 +31,21 @@ if($p['useunnoper']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/mod/magic9.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/mod/magic9.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' запрет на передачи персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' запрет на "передачи".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно сняли запрет на передачи с персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useunnoper2.php b/modules_data/moder/useunnoper2.php index 59de60c0..626a08a4 100644 --- a/modules_data/moder/useunnoper2.php +++ b/modules_data/moder/useunnoper2.php @@ -10,20 +10,20 @@ if($p['useunnoper']==1) { if($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете накладывать снятие запрета передач на самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `invBlock` = "0",`allLock` = "0" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -31,21 +31,21 @@ if($p['useunnoper']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/mod/magic9.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'"'; + $rtxt = '[img[items/mod/magic9.gif]] '.$rang.' "'.$u->info['cast_login'].'" снял'.$sx.' полный запрет на передачи персонажа "'.$uu['login'].'"'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "".'; + $rtxt = $rang.' "'.$u->info['login'].'" снял'.$sx.' полный запрет на "передачи".'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'".'; + $uer = 'Вы успешно сняли полный запрет на передачи с персонажа "'.$uu['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/useuntravm.php b/modules_data/moder/useuntravm.php index 4f7ccb51..73ef9f63 100644 --- a/modules_data/moder/useuntravm.php +++ b/modules_data/moder/useuntravm.php @@ -11,9 +11,9 @@ if($p['useuntravm']==1) { $trvm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = "4" OR `id_eff` = "5") AND `uid` = "'.$uu['id'].'" AND `delete` = "0" LIMIT 1')); if($uu['battle'] > 0) { - $uer = ' .
            '; + $uer = 'Персонаж находится в поединке.
            '; }elseif(!isset($trvm['id']) || $trvm['v1'] == 4) { - $uer = ' .
            '; + $uer = 'У персонажа нет травмы либо она не излечима.
            '; }else{ $upd = mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE (`id_eff` = "4" OR `id_eff` = "5") AND `uid` = "'.$uu['id'].'" AND `delete` = "0"'); if($upd) @@ -21,21 +21,21 @@ if($p['useuntravm']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/cure3.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" .'; + $rtxt = '[img[items/cure3.gif]] '.$rang.' "'.$u->info['cast_login'].'" излечил'.$sx.' персонажа "'.$uu['login'].'" от травм.'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '; + $rtxt = $rang.' "'.$u->info['login'].'" излечил'.$sx.' от травм'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $uer = ' "'.$uu['login'].'" .'; + $uer = 'Вы успешно излечили персонажу "'.$uu['login'].'" от травм.'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/moder/usevampir.php b/modules_data/moder/usevampir.php index 9ac60660..550f4076 100644 --- a/modules_data/moder/usevampir.php +++ b/modules_data/moder/usevampir.php @@ -11,60 +11,60 @@ if($u->info['admin']>0 || ($u->info['align']>=3 && $u->info['align']<4)) { if($uu['id'] == $u->info['id']) { - $uer = ' '; + $uer = 'Вы не можете кусать самого себя'; }elseif($u->info['battle']>0) { - $uer = ' '; + $uer = 'Вы не можете кусать в бою'; }elseif($ust['hpNow']<($ust['hpAll']/100*15)) { - $uer = ' , '; + $uer = 'Вы не можете укусить этого персонажа, жертва слишком слаба'; }elseif($uu['level']>$u->info['level']) { - $uer = ' '; + $uer = 'Вы не можете кусать персонажей старше вас по уровню'; }elseif(date('H',time())>6 && date('H',time())<21 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вампиры не могут кусаться днем'; }elseif($u->stats['hpNow'] >= ($u->stats['hpAll']/100*67) && $u->info['admin']==0) { - $uer = ' , ...'; + $uer = 'Вы не нужнаетесь в этом, ваше здоровье восстановится само ...'; }elseif(floor($uu['align'])==3 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете кусать темных'; }elseif($uu['online']info['room']) { - $uer = ' '; + $uer = 'Вы должны находится в одной локации с жертвой'; }elseif($uu['battle']>0) { - $uer = ' '; + $uer = 'Персонаж находится в бою'; }else{ - $sx = ''; $sx2 = ''; + $sx = ''; $sx2 = 'ий'; if($u->info['sex']==1) { - $sx = ''; $sx2 = ''; + $sx = 'а'; $sx2 = 'ая'; } $itm1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$uu['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `iznosNOW` <= `iznosMAX` AND `item_id` = 1164 LIMIT 1')); if(isset($itm1['id'])) { - $uer = ' "'.$uu['login'].'", . !
            '; + $uer = 'Не удалось выпить энергию "'.$uu['login'].'", у персонажа был при себе кол против вампиров. Начался бой с жертвой!
            '; mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+1 WHERE `id` = "'.$itm2['id'].'" LIMIT 1'); }else{ $itm2 = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$uu['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `iznosNOW` <= `iznosMAX` AND `item_id` = 1163 LIMIT 1')); if(isset($itm2['id'])) { - $sx = ''; $sx2 = ''; + $sx = 'него'; $sx2 = 'ий'; if($uu['sex']==1) { - $sx = ''; $sx2 = ''; + $sx = 'неё'; $sx2 = 'ая'; } - $uer = ' "'.$uu['login'].'", . .
            '; + $uer = 'Не удалось выпить энергию "'.$uu['login'].'", у персонажа был при себе чеснок против вампиров. Вы утратили все здоровье.
            '; mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+1 WHERE `id` = "'.$itm2['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `hpNow` = "1",`regHP` = "'.time().'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - $rtxt = '[img[items/chesnok2.gif]] "'.$u->info['cast_login'].'" '.$sx.' .. "'.$uu['login'].'" '; + $rtxt = '[img[items/chesnok2.gif]] Вампир "'.$u->info['cast_login'].'" неудачно укусил'.$sx.' т.к. у "'.$uu['login'].'" был при себе чеснок'; }else{ - $rtxt = '[img[items/vampir.gif]] '.$sx2.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'" '.$sx.' .'; + $rtxt = '[img[items/vampir.gif]] Оголодавш'.$sx2.' "'.$u->info['cast_login'].'" напал'.$sx.' на персонажа "'.$uu['login'].'" и выпил'.$sx.' всю энергию.'; $u->stats['hpNow'] += $ust['hpNow']; if($u->stats['hpNow']>$u->stats['hpAll']) { @@ -73,15 +73,15 @@ if($u->info['admin']>0 || ($u->info['align']>=3 && $u->info['align']<4)) mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpAll'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); mysql_query('UPDATE `stats` SET `hpNow` = "1",`regHP` = "'.time().'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $uer = ' "'.$uu['login'].'".
            '; + $uer = 'Вы успешно выпили всю кровь у персонажа "'.$uu['login'].'".
            '; } } unset($itm1,$itm2); } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного навыка'; } ?> \ No newline at end of file diff --git a/modules_data/moder/v_carcer.php b/modules_data/moder/v_carcer.php index c34c8e66..e213865d 100644 --- a/modules_data/moder/v_carcer.php +++ b/modules_data/moder/v_carcer.php @@ -13,15 +13,15 @@ if($p['szatoch']==1 || $p['citym1']==1) if($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' .'; + $uer = 'Вы не можете посадить Ангела.'; } if($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif(floor($uu['align'])==$a && $uu['align']>$u->info['align'] && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете посадить старших по званию'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете посадить самого себя'; }else{ $upd = mysql_query('UPDATE `users` SET `jail` = "0", `room`="9", `city`="capitalcity" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); if($upd) @@ -29,23 +29,23 @@ if($p['szatoch']==1 || $p['citym1']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } mysql_query('UPDATE `items_users` SET `delete` = "0" WHERE `uid` = '.$uu['id'].' AND `delete` = "1357908642"'); - $rtxt = '[img[items/jail_off.gif]] '.$rang.' "'.$u->info['cast_login'].'" '.$sx.' "'.$uu['login'].'".'; + $rtxt = '[img[items/jail_off.gif]] '.$rang.' "'.$u->info['cast_login'].'" выпустил'.$sx.' из заточение "'.$uu['login'].'".'; mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' "" .'; + $rtxt = $rang.' "'.$u->info['login'].'" выпустил'.$sx.' из "заточение" .'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',6)"); - $uer = ' "'.$uu['login'].'" .'; + $uer = 'Вы успешно выпустили из тюрьмы персонажа "'.$uu['login'].'" .'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/notepad.php b/modules_data/notepad.php index 2e5d9616..c3b8b61e 100644 --- a/modules_data/notepad.php +++ b/modules_data/notepad.php @@ -20,23 +20,23 @@ if(isset($_POST['notepad'])) {
            @@ -48,14 +48,14 @@ $('#notepad').keyup( function(){ if($this.val().length >= maxLen) { $this.val($this.val().substr(0, maxLen)); } - $('#informtxt').html('( : ' + (maxLen - $this.val().length) + ')'); + $('#informtxt').html('(Осталось символов: ' + (maxLen - $this.val().length) + ')'); }); $('#notepad').keydown( function(){ var $this = $(this); if($this.val().length >= maxLen) { $this.val($this.val().substr(0, maxLen)); } - $('#informtxt').html('( : ' + (maxLen - $this.val().length) + ')'); + $('#informtxt').html('(Осталось символов: ' + (maxLen - $this.val().length) + ')'); }); -$('#informtxt').html('( : ' + (maxLen - $('#notepad').val().length) + ')'); +$('#informtxt').html('(Осталось символов: ' + (maxLen - $('#notepad').val().length) + ')'); \ No newline at end of file diff --git a/modules_data/stats_2.php b/modules_data/stats_2.php index 18689c6e..e88c3683 100644 --- a/modules_data/stats_2.php +++ b/modules_data/stats_2.php @@ -10,36 +10,36 @@ if(!defined('GAME'))

            Редактор заданий

            info['admin']>0){ ?> - +
            : Описание:
            -

            "info['login']?>"


            +

            Блокнот персонажа "info['login']?>"



            - +
            0) { ?> -
            : +
            Дата последнего изменения:
            - +
            -   +  
            -: stats['s1']; ?>
            -: stats['s2']; ?>
            -: stats['s3']; ?>
            -: stats['s4']; ?>
            -info['level'] > 3){ ?>: stats['s5']; ?>
            -info['level'] > 6){ ?>: stats['s6']; ?>
            +Сила: stats['s1']; ?>
            +Ловкость: stats['s2']; ?>
            +Интуиция: stats['s3']; ?>
            +Выносливость: stats['s4']; ?>
            +info['level'] > 3){ ?>Интеллект: stats['s5']; ?>
            +info['level'] > 6){ ?>Мудрость: stats['s6']; ?>
            info['ability'] > 0) { -echo '+
            '; +echo '+ Способности
            '; } if($u->info['skills'] > 0 && $u->info['level'] > 0) { -echo '• 
            '; +echo '• Обучение
            '; } ?>  
            -: info['exp']; ?> (0)
            -: info['level']; ?>
            -: info['win']; ?>
            -: info['lose']; ?>
            -: info['nich']; ?>
            -: info['money']; ?> .
            +Опыт: info['exp']; ?> (0)
            +Уровень: info['level']; ?>
            +Побед: info['win']; ?>
            +Поражений: info['lose']; ?>
            +Ничьих: info['nich']; ?>
            +Деньги: info['money']; ?> кр.
            info['money3'] > 0) {*/ ?> -: info['money3']; ?> $ +Валюта: info['money3']; ?> $ rep['rep3'] >= 0) { ?> -: rep['rep3']-$u->rep['rep3_buy']; ?>
            -
            diff --git a/modules_data/stats_2.php.bac b/modules_data/stats_2.php.bac deleted file mode 100644 index 054920bc..00000000 --- a/modules_data/stats_2.php.bac +++ /dev/null @@ -1,42 +0,0 @@ - -
            - - - - - -
             
            - -: stats['s1']; ?>
            -: stats['s2']; ?>
            -: stats['s3']; ?>
            -: stats['s4']; ?>
            -info['level'] > 3){ ?>: stats['s5']; ?>
            -info['level'] > 6){ ?>: stats['s6']; ?>
            -info['ability'] > 0) -{ -echo '+
            '; -} -if($u->info['skills'] > 0 && $u->info['level'] > 0) -{ -echo '• 
            '; -} -?> - 
            -: info['exp']; ?> (0)
            -: info['level']; ?>
            -: info['win']; ?>
            -: info['lose']; ?>
            -: info['nich']; ?>
            -: info['money']; ?> .
            -info['money3'] > 0) {*/ ?> -: info['money3']; ?> $ -rep['rep3'] >= 0) { ?> -: rep['rep3']; ?>
            -
            diff --git a/modules_data/stats_inv.php b/modules_data/stats_inv.php index c2051832..dc2ccb9b 100644 --- a/modules_data/stats_inv.php +++ b/modules_data/stats_inv.php @@ -49,9 +49,9 @@ if (isset($_GET['showmenu'])) { '); } else { - $er8 = ' !!!'; + $er8 = 'Недостаточно средств!!!'; } } -// +//Получение уровня задания if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == true && !isset($u->info['noreal']) && $c['bonussocial'] == true) { /* -[1] 1 . -[2]-[3]-[4] e-mail 2 4 . -[5]-[6] 5 6 . -[7] 1 . -[8] 3 3 . -[9] 5 50 . -[10] 7 100 . +[1] Нужно докачаться на клоне до 1 уровня. +[2]-[3]-[4] Нужно подтвердить e-mail чтобы получить со 2 по 4 уровень на выбор. +[5]-[6] Нужно подтвердить страницу ВКонтакте чтобы получить 5 или 6 уровень на выбор. +[7] Нужно привести 1 друга. +[8] Нужно привести 3 друзей и провести 3 хаота. +[9] Нужно привести 5 друзей и провести 50 хаотов. +[10] Нужно привести 7 друзей и провести 100 хаотов. */ $mxlvl = mysql_fetch_array( mysql_query( @@ -302,7 +302,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t $er8 = ''; // if ($ml <= 1) { - $er8 = ' 1 .'; + $er8 = 'Качайтесь на клоне до 1 уровня.'; } elseif ($ml <= 4) { $mcf = mysql_fetch_array( mysql_query( @@ -310,7 +310,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t ) ); if (!isset($mcf['id'])) { - $er8 = ' E-mail.'; + $er8 = 'Вы не подтвердили E-mail.'; } else { if ($ml == 2) { mysql_query('UPDATE `stats` SET `exp` = 420 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); @@ -319,7 +319,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t } elseif ($ml == 4) { mysql_query('UPDATE `stats` SET `exp` = 2500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } - $er8 = ' ' . $ml . ' !'; + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; $u->info['level']++; $ml++; } @@ -330,7 +330,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t ) ); if (!isset($mcf['id'])) { - $er8 = ' .'; + $er8 = 'Вы не подтвердили страницу в социальной сети.'; } else { $itmsv = mysql_fetch_array( mysql_query( @@ -343,7 +343,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t mysql_query('UPDATE `stats` SET `exp` = 12500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } if ($ml == 6 && !isset($itmsv['id']) && $c['infinity5level'] == true) { - $er8 = ' !'; + $er8 = 'Требуется Кристалл Вечности!'; } else { if ($ml == 6) { mysql_query( @@ -354,7 +354,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t )' ); } - $er8 = ' ' . $ml . ' !'; + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; $u->info['level']++; $ml++; } @@ -377,11 +377,11 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t "' . $u->info['id'] . '","' . time() . '","mbtnlvl7","0" )' ); - $er8 = ' ' . $ml . ' !'; + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; $u->info['level']++; $ml++; } else { - $er8 = ' ( ' . (50 - $btls[0]) . ' ).'; + $er8 = 'Вы не провели несколько боев (Осталось ' . (50 - $btls[0]) . ' побед).'; } } elseif ($ml <= 8) { $tstlvl = mysql_fetch_array( @@ -401,7 +401,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t ); // if ($refs[0] < 3 || $btls[0] < 3) { - $er8 = ' ' . (0 + $refs[0]) . '/3 ' . (0 + $btls[0]) . '/3 .'; + $er8 = 'Вы не пригласили ' . (0 + $refs[0]) . '/3 друзей или не провели ' . (0 + $btls[0]) . '/3 хаота.'; } else { // mysql_query('UPDATE `stats` SET `exp` = 300000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); @@ -413,19 +413,19 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t "' . $u->info['id'] . '","' . time() . '","mbtnlvl8","0" )' ); - $er8 = ' ' . $ml . ' !'; + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; $u->info['level']++; $ml++; } } elseif ($ml <= 9) { - $er8 = ' 5 50 .'; - $er8 = ' !'; + $er8 = 'Вы не пригласили 5 друзей или не провели 50 хаотов.'; + $er8 = 'Доступ закрыт!'; } elseif ($ml <= 10) { - $er8 = ' 7 100 .'; - $er8 = ' !'; + $er8 = 'Вы не пригласили 7 друзей или не провели 100 хаотов.'; + $er8 = 'Доступ закрыт!'; } else { - $er8 = '- ...'; - $er8 = ' !'; + $er8 = 'Что-то тут не так...'; + $er8 = 'Доступ закрыт!'; } // if ($sl != $u->info['level']) { @@ -442,25 +442,25 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t } // if ($ml <= 1) { - $zd = ' 1 .'; + $zd = 'Нужно докачаться на клоне до 1 уровня.'; $gb = 1; } elseif ($ml <= 4) { - $zd = ' E-mail, 2-4 .'; + $zd = 'Нужно подтвердить E-mail, чтобы получить 2-4 уровень.'; $gb = 1; } elseif ($ml <= 6) { - $zd = ' , 5-6 .'; + $zd = 'Нужно подтвердить страницу в социальной сети, чтобы получить 5-6 уровень.'; $gb = 1; } elseif ($ml <= 7) { - $zd = ' 50 , 7 .'; + $zd = 'Нужно выиграть 50 боев, чтобы получить 7 уровень.'; $gb = 1; } elseif ($ml <= 8) { - $zd = ' 3 3 , 8 .'; + $zd = 'Нужно привести 3 друзей по реферальной ссылке и провести 3 хаотичных поединка, чтобы получить 8 уровень.'; $gb = 1; } elseif ($ml <= 9) { - $zd = ' 5 50 , 9 .'; + $zd = 'Нужно привести 5 друзей по реферальной ссылке и провести 50 хаотичных поединков, чтобы получить 9 уровень.'; $gb = 1; } elseif ($ml <= 10) { - $zd = ' 7 100 , 10 .'; + $zd = 'Нужно привести 7 друзей по реферальной ссылке и провести 100 хаотичных поединков, чтобы получить 10 уровень.'; $gb = 1; } else { $zd = ''; @@ -470,7 +470,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t if ($gd == 1) { // if ($zd != '') { - echo '
            :
            ' . $zd . '
            '; + echo '
            Необходимо выполнить задание:
            ' . $zd . '
            '; } else { echo '
            '; } @@ -479,15 +479,15 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] == t } // if ($gb == 1 && $ml > 1) { - // - echo ''; + //Получаем + echo ''; } // } } } -// , +//Бонус за мыло, контакт if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { $mcf = mysql_fetch_array( mysql_query( @@ -498,16 +498,16 @@ if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { if (isset($_GET['confmail'])) { // $gd = 0; - $zdml = 3600; // + $zdml = 3600; //час if (isset($mcf['id']) && $mcf['time'] > time() - $zdml) { - echo '
            . . ' . $u->timeOut( + echo '
            Нельзя подтверждать эл.почту так часто. Осталось ' . $u->timeOut( $mcf['time'] + $zdml - time() ) . '
            '; $gd = 1; } elseif (!preg_match( '#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $_GET['confmail'] )) { - echo '
            E-mail.
            '; + echo '
            Вы указали явно ошибочный E-mail.
            '; $gd = 1; } @@ -533,17 +533,17 @@ if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { // $md5mail = md5($keymd5 . '+' . $mail); // - $msgtxt = ' E-mail ' . $u->info['login'] . ' :'; - $msgtxt .= ' (https://new-combats.com/mail/key=' . $md5mail . '&mail=' . $mail . ')'; - $msgtxt .= '
            , .'; - $msgtxt .= '
            , : (https://new-combats.com/mail/key=' . $md5mail . '&mail=' . $mail . '&cancel)

            - - - - - - -

            ,
            '; + $msgtxt = 'Для подтверждения вашего E-mail у персонажа ' . $u->info['login'] . ' перейдите по ссылке:'; + $msgtxt .= ' Нажмите тут (https://new-combats.com/mail/key=' . $md5mail . '&mail=' . $mail . ')'; + $msgtxt .= '
            Переходя по ссылке, вы подтверждаете свое желание получать игровые новости.'; + $msgtxt .= '
            Если вы не имеете отношения к нашей игре и не хотите получать письма, тогда перейдите по этой ссылке: Нажмите тут (https://new-combats.com/mail/key=' . $md5mail . '&mail=' . $mail . '&cancel)

            - - - - - - -

            С уважением,
            Администрация Легендарного Бойцовского Клуба'; // $headers = "MIME-Version: 1.0\r\n"; - $headers .= "Content-type: text/html; charset=windows-1251\r\n"; - $headers .= "From: \r\n"; + $headers .= "Content-type: text/html; charset=utf-8\r\n"; + $headers .= "From: Старый Бойцовский Клуб \r\n"; $to = $mail; // - $subject = ' : ' . $u->info['login'] . ' - .'; + $subject = 'Бойцовский Клуб: ' . $u->info['login'] . ' - Подтверждение вашей эл.почты'; // if (mail($to, $subject, $msgtxt, $headers) == true) { return true; @@ -561,13 +561,13 @@ if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { // sendmail('', 'mailconf*15', $mcf['var']); // - echo '
            E-mail .
            '; + echo '
            На ваш E-mail отправлено письмо.
            '; // } } - $mcff = ' E-mail 1 .'; + $mcff = 'Подтвердить E-mail за 1 екр.'; if (isset($mcf['id'])) { - $mcff = '' . $mcf['var'] . '
            ( )'; + $mcff = '' . $mcf['var'] . '
            (На этот адрес отправлено письмо)'; } echo '
            '; } @@ -624,13 +624,13 @@ if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { echo '

            '; - echo ' 1 . 150 .

            '; + echo 'Подтвердите одну из страничек в социальных сетях за 1 екр. и 150 кр.

            '; - echo ''; + echo ''; - echo '

            '; + echo '
            или
            '; - echo ''; + echo ''; echo '
            '; } @@ -683,7 +683,7 @@ function intSpan($val) return $val; } -$rz0 = ''; +$rz0 = ''; $rz0 .= ''; if ($uShow[0] == 1) { $i = 1; @@ -692,102 +692,102 @@ if ($uShow[0] == 1) { $i++; } $rz0 .= ''; -$rz1 = ''; +$rz1 = ''; if ($uShow[1] == 1) { //if( $u->info['admin'] > 0 ) { $rz1 .= ''; } -$rz2 = ''; +$rz2 = ''; if ($uShow[2] == 1) { $rz2 .= ''; + Броня головы: ' . $u->stats['mib1'] . '-' . $u->stats['mab1'] . ' (' . ($u->stats['mib1']) . '+d' . ($u->stats['mab1'] - ($u->stats['mib1']) + 1) . ')
            + Броня груди: ' . $u->stats['mib2'] . '-' . $u->stats['mab2'] . ' (' . ($u->stats['mib2']) . '+d' . ($u->stats['mab2'] - ($u->stats['mib2']) + 1) . ')
            + Броня живота: ' . $u->stats['mib2'] . '-' . $u->stats['mab2'] . ' (' . ($u->stats['mib2']) . '+d' . ($u->stats['mab2'] - ($u->stats['mib2']) + 1) . ')
            + Броня пояса: ' . $u->stats['mib3'] . '-' . $u->stats['mab3'] . ' (' . ($u->stats['mib3']) . '+d' . ($u->stats['mab3'] - ($u->stats['mib3']) + 1) . ')
            + Броня ног: ' . $u->stats['mib4'] . '-' . $u->stats['mab4'] . ' (' . ($u->stats['mib4']) . '+d' . ($u->stats['mab4'] - ($u->stats['mib4']) + 1) . ')
            '; } -$rz3 = ''; +$rz3 = ''; if ($uShow[3] == 1) { $rz3 .= ''; } -$zi = [ // +$zi = [ //Предметы влияющие на зоны 'n' => [ - '', '', '', '', '', '', + '', 'голова', 'грудь', 'живот', 'пояс', 'ноги', ], - 1 => [1, 8, 9, 52], // - 2 => [4, 5, 6], // - 3 => [2, 4, 5, 6, 13], // - 4 => [7, 16, 10, 11, 12], // - 5 => [17], // + 1 => [1, 8, 9, 52], //голова + 2 => [4, 5, 6], //грудь + 3 => [2, 4, 5, 6, 13], //живот + 4 => [7, 16, 10, 11, 12], //пояс + 5 => [17], //ноги ]; -$rz4 = ''; +$rz4 = ''; if ($uShow[4] == 1) { $rz4 .= ''; } -$rz5 = ''; +$rz5 = ''; if ($uShow[5] == 1) { $rz5 .= ''; } -$rz6 = ''; +$rz6 = ''; if ($uShow[6] == 1) { - $rz6 .= ''; //возможно 5 } $i = 0; diff --git a/modules_data/stats_inv2.php b/modules_data/stats_inv2.php index a6b88ace..593ca8fc 100644 --- a/modules_data/stats_inv2.php +++ b/modules_data/stats_inv2.php @@ -6,12 +6,12 @@ if(!defined('GAME')) ?>

            -: info['exp']?> (stats['levels']['exp']?>)
            -: info['level']?>
            -: info['win']?>
            -: info['lose']?>
            -: info['nich']?>
            -: info['money']?> . +Опыт: info['exp']?> (stats['levels']['exp']?>)
            +Уровень: info['level']?>
            +Побед: info['win']?>
            +Поражений: info['lose']?>
            +Ничьих: info['nich']?>
            +Деньги: info['money']?> кр.
            info['skills'] > 0 ) { $skls = ' '; } ?> -: stats['s1'].$aba?>
            -: stats['s2'].$aba?>
            -: stats['s3'].$aba?>
            -: stats['s4'].$aba?>
            -info['level'] > 3 || $u->stats['s5'] != 0 ) { ?>: stats['s5'].$aba?>
            -info['level'] > 6 || $u->stats['s6'] != 0 ) { ?>: stats['s6'].$aba?>
            - : info['ability']?> +Сила: stats['s1'].$aba?>
            +Ловкость: stats['s2'].$aba?>
            +Интуиция: stats['s3'].$aba?>
            +Выносливость: stats['s4'].$aba?>
            +info['level'] > 3 || $u->stats['s5'] != 0 ) { ?>Интелект: stats['s5'].$aba?>
            +info['level'] > 6 || $u->stats['s6'] != 0 ) { ?>Мудрость: stats['s6'].$aba?>
            +Возможных увеличений: info['ability']?>
            -: inform('yron'))?>
            -
            -   : inform('m4')?>%
            -   : inform('m5')?>%
            -   : inform('m1')?>%
            -   : inform('m2')?>%
            -
            -   : stats['mab1']?>
            -   : stats['mab2']?>
            -   : stats['mab3']?>
            -   : stats['mab4']?>
            +Урон: inform('yron'))?>
            +Модификаторы
            +   уворот: inform('m4')?>%
            +   антиуворот: inform('m5')?>%
            +   крит: inform('m1')?>%
            +   антикрит: inform('m2')?>%
            +Броня
            +   головы: stats['mab1']?>
            +   корпуса: stats['mab2']?>
            +   пояса: stats['mab3']?>
            +   ног: stats['mab4']?>

            - :
            -    : stats['a1'])?>
            -   : stats['a4'])?>
            -   , : stats['a3'])?>
            -    : stats['a2'])?>
            - : info['skills']?> \ No newline at end of file +Мастерство владения:
            +   ножами и кастетами: stats['a1'])?>
            +   мечами: stats['a4'])?>
            +   дубинами, булавами: stats['a3'])?>
            +   топорами и секирами: stats['a2'])?>
            +Возможных увеличений: info['skills']?> \ No newline at end of file diff --git a/modules_data/stats_loc.php b/modules_data/stats_loc.php index 7c6e5c0f..e8f1f7c7 100644 --- a/modules_data/stats_loc.php +++ b/modules_data/stats_loc.php @@ -28,23 +28,23 @@ if (isset($_GET['getq'])) { $zadID = 0; } if ($zadID == 1) { - $txt .= ' Capital City . , '; + $txt .= 'Говорят в Capital City завелись всякие Трупожоры. Пойди да убей их дважды, порадуй бабушку'; } elseif ($zadID == 2) { - $txt .= ' ! 10 !'; + $txt .= 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!'; } elseif ($zadID == 3) { - $txt .= ' , ! , !'; + $txt .= 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!'; } elseif ($zadID == 4) { - $txt .= ' 100 000 !'; + $txt .= 'Сразись в хаотических поединках и получи 100 000 опыта!'; } elseif ($zadID == 5) { - $txt .= ' , !'; + $txt .= 'Открой сундук Трупожора, порадуй бабушку!'; } elseif ($zadID == 6) { - $txt .= ' !'; + $txt .= 'Посети Излом Хаоса!'; } elseif ($zadID == 7) { - $txt .= ' 3 ! !'; + $txt .= 'Выполни 3 любых задания в подземелиях!Бабушка будет очень довольна!'; } elseif ($zadID == 8) { - $txt .= ' ! .'; + $txt .= 'Сходи ка милок в Башню Смерти! Да попробуй как там свои силенки.'; } else { - $txt .= ' , ! , !'; + $txt .= 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!'; } if ($zadID > 0) { @@ -67,7 +67,7 @@ function giveDailyQuestPrize() } else { $u->addItem(6470, $u->info['id'], '|sudba=' . $u->info['login']); } - $u->repexp_add($u->info['id'], 50); // +20 + $u->repexp_add($u->info['id'], 50); //Репутация +20 } if (isset($_GET['putq'])) { @@ -75,7 +75,7 @@ if (isset($_GET['putq'])) { mysql_query('SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'day_quest\'') ); if (!isset($test['id'])) { - $txt .= ' , ! .'; + $txt .= 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.'; } else { $zadID = $test['vals']; @@ -88,10 +88,10 @@ if (isset($_GET['putq'])) { $i++; } if ($i > 1) { - $txt .= ' ! ! ? - , !'; + $txt .= 'Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' ' . $i . '/2'; + $txt .= 'Победи в боях с Трупожором ' . $i . '/2'; } } elseif ($zadID == 2) { @@ -104,10 +104,10 @@ if (isset($_GET['putq'])) { } if ($i > 9) { - $txt .= ' ! ! ? - , !'; + $txt .= 'Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' ' . $i . '/10'; + $txt .= 'Участия в хаотах ' . $i . '/10'; } } elseif ($zadID == 3) { $check = mysql_query( @@ -118,19 +118,19 @@ if (isset($_GET['putq'])) { $i++; } if ($i > 1) { - $txt .= ' ! ! ? - , !'; + $txt .= 'Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' ' . $i . '/2'; + $txt .= 'Посещение Подземелий ' . $i . '/2'; } } elseif ($zadID == 4) { if (($u->info['exp'] - $test['val']) > 100000) { - $txt .= ' ! ,! !'; + $txt .= 'Порадовал бабушку! Подрос,Подрос! держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' ' . ($u->info['exp'] - $test['val']) . '/100 000 '; + $txt .= 'Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта'; } } elseif ($zadID == 5) { @@ -142,10 +142,10 @@ if (isset($_GET['putq'])) { $i++; } if ($i > 0) { - $txt .= ' ! ? ? !'; + $txt .= 'Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' 0/1'; + $txt .= 'Открытие сундуков Трупожора 0/1'; } } elseif ($zadID == 6) { @@ -157,10 +157,10 @@ if (isset($_GET['putq'])) { $i++; } if ($i > 0) { - $txt .= ' ! ... !'; + $txt .= 'Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!'; giveDailyQuestPrize(); } else { - $txt .= ' 0/1'; + $txt .= 'Посещение Излома Хаоса 0/1'; } } elseif ($zadID == 7) { @@ -172,15 +172,15 @@ if (isset($_GET['putq'])) { $i++; } if ($i > 2) { - $txt .= ' ! , ...
            !
            '; + $txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась...
            Чуть не забыла жетончик!
            '; giveDailyQuestPrize(); } else { - $txt .= ' 3 . ' . $i . '/3 '; + $txt .= 'Выполни 3 задания в подземелиях. ' . $i . '/3 '; } } elseif ($zadID == 8) { - $txt .= ' 0.1'; + $txt .= 'Участие в башне смерти 0.1'; } else { - $txt .= ' , ! !'; + $txt .= 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи накормлю чем нибудь вкусным ну и задание дам!'; } mysql_query( "INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $txt . "','-1','6','0')" @@ -189,62 +189,62 @@ if (isset($_GET['putq'])) { } ?> - : stats['s1']; ?>
            - : stats['s2']; ?>
            - : stats['s3']; ?>
            - : stats['s4']; ?>
            - : stats['s5']; ?>
            - : stats['s6']; ?>
            -info['level'] > 9 || $u->stats['s7'] != 0) { ?>: stats['s7']; ?> + Сила: stats['s1']; ?>
            + Ловкость: stats['s2']; ?>
            + Интуиция: stats['s3']; ?>
            + Выносливость: stats['s4']; ?>
            + Интеллект: stats['s5']; ?>
            + Мудрость: stats['s6']; ?>
            +info['level'] > 9 || $u->stats['s7'] != 0) { ?>Духовность: stats['s7']; ?>
            -info['level'] > 14 || $u->stats['s8'] != 0) { ?>: stats['s8']; ?>
            -info['level'] > 15 || $u->stats['s9'] != 0) { ?> : stats['s9']; ?> +info['level'] > 14 || $u->stats['s8'] != 0) { ?>Воля: stats['s8']; ?>
            +info['level'] > 15 || $u->stats['s9'] != 0) { ?>Свобода духа: stats['s9']; ?>
            -info['level'] > 16 || $u->stats['s10'] != 0) { ?>: stats['s10']; ?> +info['level'] > 16 || $u->stats['s10'] != 0) { ?>Божественный: stats['s10']; ?>
            info['ability'] > 0 || $u->info['skills'] > 0) { - echo '+
            '; + echo '+ Способности
            '; } ?>  
            - : info['exp'], 0, ",", " " ); ?>
            - : info['level']; ?>
            - : info['win'], 0, ",", " "); ?>
            - : info['lose'], 0, ",", " "); ?>
            - : info['nich'], 0, ",", " "); ?>
            - : info['swin'] ?>
            - : info['slose'] ?>
            - : info['money']; ?> . 
            - : info['money2']; ?> . 
            + Уровень: info['level']; ?>
            + Побед: info['win'], 0, ",", " "); ?>
            + Поражений: info['lose'], 0, ",", " "); ?>
            + Ничьих: info['nich'], 0, ",", " "); ?>
            + Серия побед: info['swin'] ?>
            + Серия поражений: info['slose'] ?>
            + Деньги: info['money']; ?> кр. 
            + Деньги: info['money2']; ?> екр. 
            stats['pbe'] > 0) { - echo ' : ' . $u->stats['pbe'] . ' '; + echo 'Бонус покупателя: ' . $u->stats['pbe'] . ' уровень'; $nowby = mysql_fetch_array( mysql_query( 'SELECT `good` FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 ORDER BY `good` DESC LIMIT 1' ) ); if ($u->stats['pbe'] > 0 && date('d.m.Y') != date('d.m.Y', $nowby['good'])) { - echo '
            ( )
            '; + echo '
            (Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)
            '; } echo '
            '; } ?> rep['rep3'] >= 0) { $repovo = $u->rep['rep3'] - $u->rep['rep3_buy']; ?> - :  .
            - : info['relik']['relik']; ?> .
            - : dayquest($u->info['id']) ?>
            + Воинственность:  ед.
            + Реликвий: info['relik']['relik']; ?> шт.
            + Взятие Ежедневного задания: dayquest($u->info['id']) ?>
            info['exp'] <= 499999998) { ?> - pensia(false) ?>
            + Ваш Бонус pensia(false) ?>
            stats['pbe'] > 0) { if (isset($bns['id'])) { - echo ''; + ) . '\');" class="btn btn-danger"> Через ' . $u->timeOut($bns['time'] - time()) . ' '; } else { - // + //Страница родителя ?>
            - - +
            -

            +

            Достижения

            getList(); ?> diff --git a/modules_data/transfer.php.bac b/modules_data/transfer.php.bac deleted file mode 100644 index 0f596f95..00000000 --- a/modules_data/transfer.php.bac +++ /dev/null @@ -1,368 +0,0 @@ -tfer['id']) && $u->info['align'] != 2) - { - if($u->tfer['finish1']==0 && $u->tfer['finish2']==0) - { - $js = ''; $mn = 0; - if(isset($_POST['cancel2'])) - { - $u->tfer['r0'] = time(); - $u->tfer['good1'] = 0; - $u->tfer['good2'] = 0; - $_POST['id'] = 'reflesh'; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good1` = "0",`good2` = "0" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - }elseif(isset($_POST['start2'])) - { - // - if( $u->info['admin'] == 0 || 1 == 1) { - echo ' .'; - }elseif($u->tfer['good1']>0 && $u->tfer['good2']>0) - { - // - $u->tfer['cancel1'] = time(); - $u->tfer['cancel2'] = time(); - $u->tfer['finish1'] = time(); - $u->tfer['finish2'] = time(); - // + , - $upd2 = mysql_query('UPDATE `transfers` SET `cancel1` = "'.$u->tfer['cancel1'].'",`cancel2` = "'.$u->tfer['cancel2'].'",`finish1` = "'.$u->tfer['finish1'].'",`finish2` = "'.$u->tfer['finish2'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - // - $mn1 = 0; - $mn2 = 0; - $inf = array(); - $inf[$u->tfer['uid1']] = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$u->tfer['uid1'].'" LIMIT 1')); - $inf[$u->tfer['uid2']] = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$u->tfer['uid2'].'" LIMIT 1')); - if($inf[$u->tfer['uid1']]['money']<$u->tfer['money1']) - { - $u->tfer['money1'] = $inf[$u->tfer['uid1']]['money']; - } - if($inf[$u->tfer['uid2']]['money']<$u->tfer['money2']) - { - $u->tfer['money2'] = $inf[$u->tfer['uid2']]['money']; - } - - $mn1 = $u->tfer['money1']; - $mn2 = $u->tfer['money2']; - if($mn1<0){ $mn1 = 0; } - if($mn2<0){ $mn2 = 0; } - - if($mn1>0) - { - // 1 2 - $upd = mysql_query('UPDATE `users` SET `money` = `money` - "'.$mn1.'" WHERE `id` = "'.$inf[$u->tfer['uid1']]['id'].'" LIMIT 1'); - if($upd) - { - $upd = mysql_query('UPDATE `users` SET `money` = `money` + "'.$mn1.'" WHERE `id` = "'.$inf[$u->tfer['uid2']]['id'].'" LIMIT 1'); - if($upd) - { - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": '.$mn1.' . "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": '.$mn1.' . "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - }else{ - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": '.$mn1.' . "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].'), .',time(),$u->info['city'],'System.transfer',0,0); - } - } - } - - if($mn2>0) - { - // 2 1 - $upd = mysql_query('UPDATE `users` SET `money` = `money` - "'.$mn2.'" WHERE `id` = "'.$inf[$u->tfer['uid2']]['id'].'" LIMIT 1'); - if($upd) - { - $upd = mysql_query('UPDATE `users` SET `money` = `money` + "'.$mn2.'" WHERE `id` = "'.$inf[$u->tfer['uid1']]['id'].'" LIMIT 1'); - if($upd) - { - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": '.$mn2.' . "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$inf[$u->tfer['uid1']]['id'],'"System.transfer.MONEY": '.$mn2.' . "'.$inf[$u->tfer['uid2']]['login'].'" ('.$inf[$u->tfer['uid2']]['id'].').',time(),$u->info['city'],'System.transfer',0,0); - }else{ - $u->addDelo(2,$inf[$u->tfer['uid2']]['id'],'"System.transfer.MONEY": '.$mn2.' . "'.$inf[$u->tfer['uid1']]['login'].'" ('.$inf[$u->tfer['uid1']]['id'].'), .',time(),$u->info['city'],'System.transfer',0,0); - } - } - } - - // - $sp = mysql_query('SELECT * FROM `items_users` WHERE (`uid`="'.$u->tfer['uid1'].'" OR `uid`="'.$u->tfer['uid2'].'") AND `delete`="0" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0"'); - $nalog = 0; $fu = 0; $x = 0; $uus = array(); - while($pl = mysql_fetch_array($sp)) - { - $x = $u->itemsX($pl['id'],$pl['uid']); - $fu = $pl['uid']; - if($pl['uid']==$u->tfer['uid1']) - { - $pl['uid'] = $u->tfer['uid2']; - }elseif($pl['uid']==$u->tfer['uid2']) - { - $pl['uid'] = $u->tfer['uid1']; - } - $us = $inf[$pl['uid']]; - $uus = $inf[$fu]; - if($pl['inTransfer']==1) - { - // - $pl['gift'] = $uus['login']; - }else{ - // - $nalog += 1; - } - $upd = mysql_query('UPDATE `items_users` SET `uid` = "'.$pl['uid'].'",`gift` = "'.$pl['gift'].'" WHERE `id` = "'.$pl['id'].'" AND `inShop` = "0" AND `delete` = "1000" AND `inOdet` = "0" LIMIT '.$x.''); - if($upd) - { - mysql_query('UPDATE `items_users` SET `uid` = "'.$pl['uid'].'",`gift` = "'.$pl['gift'].'" WHERE `inGroup` = "'.$pl['id'].'"'); - // - $u->addDelo(2,$fu,'"System.transfer": "'.$pl['name'].' (x'.$x.')" [itm:'.$pl['id'].'] "'.$us['login'].'"('.$pl['uid'].'), : '.$pl['inTransfer'].'.',time(),$u->info['city'],'System.transfer',0,0); - $u->addDelo(2,$pl['uid'],'"System.transfer": "'.$uus['login'].'"('.$uus['id'].') "'.$pl['name'].' (x'.$x.')" [itm:'.$pl['id'].'], : '.$pl['inTransfer'].'.',time(),$u->info['city'],'System.transfer',0,0); - } - } - $upd1 = mysql_query('UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid`="'.$u->tfer['uid1'].'" OR `uid`="'.$u->tfer['uid2'].'") AND `delete`="0" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0"'); - if($upd1 && $upd2) - { - $js .= 'location = location;'; - } - unset($upd1,$upd2,$fu,$nalog,$x,$us,$uus,$inf); - }else{ - // - $u->tfer['r0'] = time(); - if($u->tfer['uid1']==$u->info['id']) - { - $u->tfer['good1'] = time(); $mn = 1; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good1` = "'.$u->tfer['good1'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - }else{ - $u->tfer['good2'] = time(); $mn = 1; - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'",`r1` = "0",`r2` = "0",`good2` = "'.$u->tfer['good2'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - $_POST['id'] = 'reflesh'; - } - }elseif($_POST['id']=='sale' && isset($_POST['cancelid']) && $u->tfer['good1']==0 && $u->tfer['good2']==0) - { - $upd = mysql_query('UPDATE `items_users` SET `inTransfer` = "0" WHERE `id` = "'.mysql_real_escape_string($_POST['cancelid']).'" AND `uid`="'.$u->info['id'].'" AND `delete`="0" AND `inOdet`="0" AND `inShop`="0" AND `inTransfer` > "0" LIMIT 1'); - if($upd) - { - $u->tfer['r0'] = time(); - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - $_POST['id'] = 'reflesh'; - } - }elseif($_POST['id']=='sale' && isset($_POST['itemid']) && $u->tfer['good1']==0 && $u->tfer['good2']==0) - { - $g = 1; - $itm = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`id` = "'.mysql_real_escape_string($_POST['itemid']).'" AND `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` = "0" LIMIT 1')); - if(isset($itm['id'])) - { - $po = $u->lookStats($itm['data']); - if(isset($po['sudba']) && $po['sudba']!='0') - { - $g = 0; - } - if($itm['inTransfer']>0) - { - $g = 0; - } - }else{ - $g = 0; - } - if($g==1) - { - if($_POST['saletype']==2) - { - $g = 2; - }else{ - $g = 1; - } - mysql_query('UPDATE `items_users` SET `inTransfer` = "'.((int)$g).'" WHERE `id` = "'.$itm['id'].'" LIMIT 1'); - $u->tfer['r0'] = time(); - mysql_query('UPDATE `transfers` SET `r0` = "'.$u->tfer['r0'].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - $_POST['id'] = 'reflesh'; - } - } - - if($_POST['id']=='reflesh') - { - // - $i = 1; - while($i<=6) - { - $itmAll = ''; $itmAllSee = ''; - $itmAll = $u->genInv(5,'`iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `im`.`inRazdel`="'.$i.'" AND `iu`.`inTransfer` = "0" ORDER BY `lastUPD` DESC'); - if($itmAll[0]==0) - { - $itmAllSee = '
            '.$r.'
            '; - $r = '
            '.$r.'
            '; - unset($x); - return $r; - } - // :) - $itm = array(1=>'',2=>''); - // 1 - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="'.$u->tfer['uid1'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" ORDER BY `iu`.`lastUPD` DESC'); - $cl = 2; - while($pl = mysql_fetch_array($sp)) - { - if($cl==2) - { - $cl = 1; - }else{ - $cl = 2; - } - $itm[1] .= itmInfotf($pl,$cl); - } - // 2 - $sp = mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="'.$u->tfer['uid2'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`inTransfer` > "0" ORDER BY `iu`.`lastUPD` DESC'); - $cl = 2; - while($pl = mysql_fetch_array($sp)) - { - if($cl==2) - { - $cl = 1; - }else{ - $cl = 2; - } - $itm[2] .= itmInfotf($pl,$cl); - } - unset($cl); - if($itm[1]=='') - { - $itm[1] = ' '; - } - if($itm[2]=='') - { - $itm[2] = ' '; - } - - if($u->info['id']==$u->tfer['uid1']) - { - $js .= '$("#s2g3").html(\''.$itm[1].'\');$("#s2g2").html(\''.$itm[2].'\');'; - }else{ - $js .= '$("#s2g3").html(\''.$itm[2].'\');$("#s2g2").html(\''.$itm[1].'\');'; - } - $u->tfer['r'.$f] = $u->tfer['r0']; - mysql_query('UPDATE `transfers` SET `r'.$f.'` = "'.$u->tfer['r'.$f].'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - if(($u->tfer['good1']>0 && $u->info['id']==$u->tfer['uid1']) || ($u->tfer['good2']>0 && $u->info['id']==$u->tfer['uid2'])) - { - $js .= '$(\'#btn1\').html(\'\');'; - if($u->tfer['good1']>0 && $u->tfer['good2']>0) - { - $js .= '$(\'#btn1\').attr(\'disabled\',\'\');'; - }else{ - $js .= '$(\'#btn1\').attr(\'disabled\',\'disabled\');'; - } - }else{ - $js .= '$(\'#btn1\').html(\' \');$(\'#btn1\').attr(\'disabled\',\'\');'; - } - - // :) - if($u->tfer['uid1']==$u->info['id']) - { - if($u->tfer['good1']>0){ $js .= '$(\'#gd2\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd2\').css(\'display\',\'none\');'; } // - if($u->tfer['good2']>0){ $js .= '$(\'#gd1\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd1\').css(\'display\',\'none\');'; } - - if(($u->tfer['good1']==0 && $u->tfer['good2']==0) || $mn == 1) - { - $u->tfer['money1'] = round($_POST['money'],2); - if($u->tfer['money1']>$u->info['money']) - { - $u->tfer['money1'] = $u->info['money']; - } - if($u->tfer['money1']<0) - { - $u->tfer['money1'] = 0; - } - mysql_query('UPDATE `transfers` SET `money1` = "'.mysql_real_escape_string($u->tfer['money1']).'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - }else{ - if($u->tfer['good2']>0){ $js .= '$(\'#gd2\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd2\').css(\'display\',\'none\');'; } // - if($u->tfer['good1']>0){ $js .= '$(\'#gd1\').css(\'display\',\'\');'; }else{ $js .= '$(\'#gd1\').css(\'display\',\'none\');'; } - - if(($u->tfer['good1']==0 && $u->tfer['good2']==0) || $mn == 1) - { - $u->tfer['money2'] = round($_POST['money'],2); - if($u->tfer['money2']>$u->info['money']) - { - $u->tfer['money2'] = $u->info['money']; - } - if($u->tfer['money1']<0) - { - $u->tfer['money1'] = 0; - } - mysql_query('UPDATE `transfers` SET `money2` = "'.mysql_real_escape_string($u->tfer['money2']).'" WHERE `id` = "'.$u->tfer['id'].'" LIMIT 1'); - } - } - if($u->info['id']==$u->tfer['uid1']) - { - $js .= 'refmoney('.$u->round2($u->tfer['money2']).','.$u->round2($u->tfer['money1']).');'; - }else{ - $js .= 'refmoney('.$u->round2($u->tfer['money1']).','.$u->round2($u->tfer['money2']).');'; - } - } - if($js!='') - { - echo ''; - } - }else{ - echo ''; - } - }else{ - echo ''; - } -} -?> \ No newline at end of file diff --git a/modules_data/usemarry.php b/modules_data/usemarry.php index 97ba1ea0..21b498f9 100644 --- a/modules_data/usemarry.php +++ b/modules_data/usemarry.php @@ -12,36 +12,36 @@ if($p['banned']==1 || $p['proverka']==1) if($uu['marry']>0) { - $uer = '
            '; + $uer = 'Персонаж уже находится в браке
            '; }elseif($uu['marry']>0) { - $uer = '
            '; + $uer = 'Персонаж уже находится в браке
            '; }elseif($uu['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }elseif($uu2['align']>1 && $uu['align']<2 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Паладинов.
            '; }elseif($uu2['align']>3 && $uu['align']<4 && $u->info['admin']==0) { - $uer = ' .
            '; + $uer = 'Вы не можете использовать данное заклятие на Тарманов.
            '; }elseif($uu2['admin']>0 && $u->info['admin']==0) { - $uer = ' '; + $uer = 'Вы не можете накладывать заклятие на Ангелов'; }elseif($uu2['city']!=$u->info['city'] && $p['citym1']==0){ - $uer = ' '; + $uer = 'Персонаж находится в другом городе'; }elseif($uu2['id']==$u->info['id'] && $u->info['admin']==0){ - $uer = ' '; + $uer = 'Вы не можете использовать на самого себя'; }else{ $uu['palpro'] = time()+60*60*24*7; $upd = mysql_query('UPDATE `users` SET `marry` = "'.$uu2['id'].'" WHERE `id` = "'.$uu['id'].'" LIMIT 1'); @@ -51,29 +51,29 @@ if($p['banned']==1 || $p['proverka']==1) $sx = ''; if($u->info['sex']==1) { - $sx = ''; + $sx = 'а'; } - $rtxt = '[img[items/marry.gif]] '.$rang.' "'.$u->info['login'].'" '.$sx.' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $rtxt = '[img[items/marry.gif]] '.$rang.' "'.$u->info['login'].'" подтвердил'.$sx.' законность брака между "'.$uu['login'].'" и "'.$uu2['login'].'".'; mysql_query("UPDATE `chat` SET `delete` = 1 WHERE `login` = '".$uu['login']."' LIMIT 1000"); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`) VALUES (1,'".$u->info['city']."','".$u->info['room']."','','','".$rtxt."','".time()."','6','0','1')"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu2['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" подтвердил'.$sx.' законность брака с '.$uu2['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); - $rtxt = $rang.' "'.$u->info['login'].'" '.$sx.' '.$uu['id'].'.'; + $rtxt = $rang.' "'.$u->info['login'].'" подтвердил'.$sx.' законность брака с '.$uu['id'].'.'; mysql_query("INSERT INTO `users_delo` (`uid`,`ip`,`city`,`time`,`text`,`login`,`type`) VALUES ('".$uu2['id']."','".$_SERVER['REMOTE_ADDR']."','".$u->info['city']."','".time()."','".$rtxt."','".$u->info['login']."',0)"); $this->addItem(76,$uu['id'],'sudba='.$uu['login'].'|noremont=1|notransfer=1'); $this->addItem(76,$uu2['id'],'sudba='.$uu2['login'].'|noremont=1|notransfer=1'); - $uer = ' "'.$uu['login'].'" "'.$uu2['login'].'".'; + $uer = 'Вы успешно зафиксировали брак "'.$uu['login'].'" и "'.$uu2['login'].'".'; }else{ - $uer = ' '; + $uer = 'Не удалось использовать данное заклятие'; } } }else{ - $uer = ' '; + $uer = 'Персонаж не найден в этом городе'; } }else{ - $uer = ' '; + $uer = 'У Вас нет прав на использование данного заклятия'; } ?> \ No newline at end of file diff --git a/modules_data/vip.php b/modules_data/vip.php index 462256d1..3641e009 100644 --- a/modules_data/vip.php +++ b/modules_data/vip.php @@ -19,10 +19,10 @@ if($u->stats['bronze']>0) $account = 'bronze'; //Bronze Premium Account elseif($u->stats['silvers']>0) $account = 'silvers'; //Silver Premium Account elseif($u->stats['gold']>0) $account = 'gold'; //Gold Premium Account $vu = array(0,0,0,0,0,0,0); -// $ability +//Абилки $ability $ability = array( "bronze" => array( - // Bronze + //Свитки Bronze array(1463,1,0,0,0,'tr_lvl=4|nohaos=1|onlyOne=1|oneType=24|musor=2|noremont=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',5), array(3101,1,0,0,0,'useOnLogin=1|onlyOne=1|oneType=33|tr_lvl=4|noremont=1|musor=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',5), array(4371,1,0,0,0,'onlyOne=1|oneType=36|tr_lvl=4|noremont=1|musor=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',5), @@ -33,7 +33,7 @@ $ability = array( array(1462,1,0,0,0,'tr_lvl=2|nohaos=1|onlyOne=1|oneType=24|musor=2|noremont=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',5), ), "silvers" => array( - // Silver + //Свитки Silver array(5239,1,0,0,0,'tr_lvl=4|nohaos=1|onlyOne=1|oneType=24|musor=2|noremont=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',1), //array(3101,1,0,0,0,'useOnLogin=1|onlyOne=1|oneType=33|tr_lvl=4|noremont=1|musor=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',5), //array(4371,1,0,0,0,'onlyOne=1|oneType=36|tr_lvl=4|noremont=1|musor=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',1), @@ -48,7 +48,7 @@ $ability = array( array(4930,1,0,0,0,'tr_lvl=7|onlyOne=1|musor=2|noremont=1|oneType=53|sudba='.$u->info['login'].'|srok=86400|nosale=1',5),*/ ), "gold" => array( - // Gold + //Свитки Gold array(2412,3,0,0,0,'tr_lvl=4|nohaos=1|oneType=24|musor=2|noremont=1|sudba='.$u->info['login'].'|srok=43200|nosale=1',1), array(6455,2,0,0,0,'tr_lvl=4|nohaos=1|oneType=0|musor=2|noremont=1|sudba='.$u->info['login'].'|srok=43200|nosale=1',1), //array(4758,1,0,0,0,'useOnLogin=1|onlyOne=1|oneType=33|tr_lvl=10|noremont=1|musor=1|sudba='.$u->info['login'].'|srok=86400|nosale=1',1), @@ -77,104 +77,104 @@ $vi = array( +
            - +   -
            - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
            • +5% .• Восстановление жизни и манны +5%ВечноЗдроровье и мана восстанавливаются быстрее.
            • +5% .• Получаемый опыт в бою +5%ВечноПовышение уровня персонажа станет быстрее.
            • +5% 5% .• Скидка на ремонт +5%ВечноВы чините свои вещи на 5% дешевле.
            • +10 10+ .• Увеличение рюкзака +10 ВечноУвеличивает рюкзак на 10+ единиц.
            • +1 1 = 1 • Бонус Жизни +1 Вечно1 Выносливость = 1 ХП
            - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
            • +10% .• Восстановление жизни и манны +10%ВечноЗдроровье и мана восстанавливаются быстрее.
            • +10% .• Получаемый опыт в бою +10%ВечноПовышение уровня персонажа станет быстрее.
            • +10% 10% .• Скидка на ремонт +10%ВечноВы чините свои вещи на 10% дешевле.
            • +20 20+ .• Увеличение рюкзака +20 ВечноУвеличивает рюкзак на 20+ единиц.
            • +5% • Скорость передвижения +5% ВечноПо подземельям вы двигаетесь быстрее
            • +2 1 = 2 • Бонус Жизни +2 Вечно1 Выносливость = 2 ХП
            - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
            • +50% .• Восстановление жизни и манны +50%На время действия БлагодатиЗдроровье и мана восстанавливаются быстрее в два раза.
            • +50% 50% .• Скидка на ремонт +50%На время действия БлагодатиВы чините свои вещи на 50% дешевле.
            • +25% • Скорость передвижения +25% На время действия БлагодатиПо подземельям вы двигаетесь быстрее
            • +250 .• Бонус Жизни +250На время действия БлагодатиУвеличивает ваш уровень жизни.
            • +15 15 .• Мощность урона и магии +15На время действия БлагодатиУвеличивает мощность урона и магии на 15 едениц.
            • +50 50 .• Защита от урона и магии +50На время действия БлагодатиУвеличивает защиту от урона и магии на 50 едениц.
            -

            :
            ( )

            +

            Доступные предметы:
            (Чтобы забрать предмет просто кликните на его изображение)

            ' ',1 => ' '); + $vnr = array(0 => 'на сегодня',1 => ' всего'); while($i < count($ability[$account])) { if($ability[$account][$i][1]>0) { @@ -184,12 +184,12 @@ $vi = array( $vix = 0; if($ability[$account][$i][4] == 0) { - // + //за сегодня $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.strtotime('now 00:00:00').' AND `vars` = "vitm_'.$itm['id'].'"',2); $vix = $vix[0]; }else{ - // + //всего за действие премиума $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.$vt['timeUse'].' AND `vars` = "vitm_'.$itm['id'].'" ',2); $vix = $vix[0]; } @@ -201,15 +201,15 @@ $vi = array( if($ability[$account][6]>0) { } $u->addAction(time(),'vitm_'.$itm['id'],''); - echo ' "'.$itm['name'].'" !

            '; + echo 'Предмет "'.$itm['name'].'" перемещен к Вам в инвентарь!

            '; } } $seet0 = ''; - // + //Вывод предметов вип $seet0 .= ' '; +(Осталось '.$vnr[$ability[$i][4]].': '.($ability[$account][$i][1]-$vix).' шт.)" src="https://'.$c['img'].'/i/items/'.$itm['img'].'"> '; if($ability[$account][$i][1]-$vix > 0) { $seet0 = ''.$seet0.''; }else{ diff --git a/modules_data/vip1.php b/modules_data/vip1.php index f24ae629..fae977d0 100644 --- a/modules_data/vip1.php +++ b/modules_data/vip1.php @@ -12,33 +12,33 @@ if($u->error!='') $vt = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `data` LIKE "%add_silver=%" LIMIT 1')); $vu = array(0,0,0,0,0,0,0); $vi = array( - // + //лечение травм array(4412,array( 0 , 5 , 5 , 5 , 10 , 10 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=600',1), array(4413,array( 0 , 5 , 5 , 5 , 10 , 10 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=600',1), array(4414,array( 0 , 5 , 5 , 5 , 10 , 10 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=600',1), - // + //нападалки array(865, array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=43200',1), array(2391,array( 0 , 0 , 0 , 0 , 10 , 20 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=43200',2), - // + //хилки array(2543,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=21600|magic_hpNow=45',2), array(2544,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=21600|magic_hpNow=60',2), array(2545,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'useOnLogin=1|musor=1|noremont=1|sudba='.$u->info['login'].'|srok=21600|magic_hpNow=600',2), - // + //обкасты array(994, array( 0 , 0 , 0 , 0 , 5 , 10 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=6|sudba='.$u->info['login'].'|srok=600',1), array(1001,array( 0 , 0 , 0 , 0 , 5 , 10 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=7|sudba='.$u->info['login'].'|srok=600',1), array(1460,array( 0 , 0 , 0 , 0 , 5 , 10 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=25|sudba='.$u->info['login'].'|srok=600',1), array(3102,array( 0 , 0 , 0 , 0 , 5 , 10 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=33|sudba='.$u->info['login'].'|srok=600',1), array(4371,array( 5 , 5 , 5 , 5 , 5 , 5 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=36|sudba='.$u->info['login'].'|srok=600',1), - // + //Сундуки array(2144,array( 0 , 0 , 0 , 0 , 0 , 3 ),0,0,1,'nohaos=1|onlyOne=1|oneType=12|musor=2|noremont=1|srok=600',1), array(2143,array( 0 , 0 , 0 , 0 , 0 , 3 ),0,0,1,'nohaos=1|onlyOne=1|oneType=7|musor=2|noremont=1|srok=600',1), //array(3101,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'onlyOne=1|oneType=33|noremont=1|musor=1|srok=600',1), - //. + //Екр. array(1461,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=24|sudba='.$u->info['login'].'|srok=600',1), array(1462,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=24|sudba='.$u->info['login'].'|srok=600',1), array(1463,array( 0 , 0 , 0 , 0 , 0 , 0 ),0,0,1,'musor=1|noremont=1|onlyOne=1|oneType=24|sudba='.$u->info['login'].'|srok=600',1) @@ -49,28 +49,28 @@ $vi = array( ?> - - + + - + Внимание! Срок годности выдаваемых предметов 10 мин.

            , info['login']?>!

            stats['silver']?> .

            Добро пожаловать, info['login']?>!

            У вас действует Благословления Ангелов stats['silver']?> уровня.

            :

            -

            :
            - ( )

            +

            Доступные возможности: Посмотреть возможности

            +

            Доступные предметы:
            + (Чтобы забрать предмет просто нажмите на его изображение)

            ' ',1 => ' '); + $vnr = array(0 => 'на сегодня',1 => ' всего'); while($i < count($vi)) { if($vi[$i][1][$u->stats['silver']]>0) { $itm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vi[$i][0].'" LIMIT 1')); if(isset($itm['id'])) { $vix = 0; if($vi[$i][4] == 0) { - // + //за сегодня $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.strtotime('now 00:00:00').' AND `vars` = "vitm_'.$itm['id'].'" LIMIT '.$vi[$i][1][$u->stats['silver']],2); $vix = $vix[0]; }else{ - // + //всего за действие премиума $vix = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time`>='.$vt['timeUse'].' AND `vars` = "vitm_'.$itm['id'].'" LIMIT '.$vi[$i][1][$u->stats['silver']],2); $vix = $vix[0]; } @@ -83,13 +83,13 @@ $vi = array( mysql_query('UPDATE `items_users` SET `data`="'.$vi[$i][5].'",`iznosMAX` = "'.$vi[$i][6].'",`1price` = "0.01" WHERE `id` = "'.$nitm.'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); } $u->addAction(time(),'vitm_'.$itm['id'],''); - echo ' "'.$itm['name'].'" ( '.$vnr[$vi[$i][4]].': '.($vi[$i][1][$u->stats['silver']]-$vix).' .).

            '; + echo 'Предмет "'.$itm['name'].'" перемещен к Вам в инвентарь (Осталось '.$vnr[$vi[$i][4]].': '.($vi[$i][1][$u->stats['silver']]-$vix).' шт.).

            '; } } $seet0 = ''; $seet0 .= ' '; +(Осталось '.$vnr[$vi[$i][4]].': '.($vi[$i][1][$u->stats['silver']]-$vix).' шт.)" style="height:25px;" src="https://img.new-combats.com/i/items/'.$itm['img'].'"> '; if($vi[$i][1][$u->stats['silver']]-$vix > 0) { $seet0 = ''.$seet0.''; }else{ @@ -103,6 +103,6 @@ $vi = array( echo $seet; ?>

            - ! 10 .
            diff --git a/mp3.php b/mp3.php index c3dc670d..25feda2b 100644 --- a/mp3.php +++ b/mp3.php @@ -1,4 +1,4 @@ - @@ -180,7 +180,7 @@ if ($u['admin'] > 0 || in_array($u['align'], $pal_al) || in_array($u['align'], $ var data = ''; if (login === 'invisible') { - return ""; + return "невидимка"; } if (orden !== '' && orden !== 0) { @@ -242,11 +242,11 @@ if ($u['admin'] > 0) {

            '; + echo '


            Для просмотра раздела необходимо авторизироваться с Главной страницы

            '; } ?> diff --git a/pay/main.css b/pay/main.css index f06feaf8..a40eeb00 100644 --- a/pay/main.css +++ b/pay/main.css @@ -210,7 +210,7 @@ img { border:0; } display: inline-block; position: relative; } -/* , */ +/*Стиль для кнопки, если она есть*/ .tip em, .linktip em { background:#FD6E00; @@ -223,14 +223,14 @@ img { border:0; } cursor:pointer; padding: 0 4px; } -/* */ +/*Стиль для изображения в подсказке*/ .tip>span>img { max-width: 50%; max-height: auto; margin: 3px; float: left; } -/* ()*/ +/*Стиль для кнопки закрытия подсказки(кристик)*/ .answer>b, .answer-left>b { position:absolute; @@ -248,44 +248,44 @@ img { border:0; } left:0; } .answer>b:hover, -.answer-left>b:hover {color:#000;} /* */ +.answer-left>b:hover {color:#000;} /*при наведении*/ -/* */ +/*Стиль для блока подсказки*/ .answer, .answer-left { - display:none; /**/ - position:absolute; /* */ - z-index:9999; /* */ - background: #EDEDED; /* */ + display:none; /*скрываем*/ + position:absolute; /*позиционируем абсолютно*/ + z-index:9999; /*отображаем поверх всех элементов на странице*/ + background: #EDEDED; /*цвет фона*/ border-radius: 3px; border: 1px solid #ccc; - color: #000; /* */ + color: #000; /*цвет текста*/ font: normal 500 14px Trebuchet MS; text-align:left; - text-shadow: 0 1px 2px #fff, 0 0 10px #E0F1FF; /* */ + text-shadow: 0 1px 2px #fff, 0 0 10px #E0F1FF; /*тень текста*/ text-decoration: none; - opacity: 1; /**/ + opacity: 1; /*прозрачность*/ cursor:default; - margin-top:-30px; /* */ - width: 200px; /* !*/ - min-height: 50px; /* ( )*/ - max-height: auto; /* */ - white-space: normal; /* */ + margin-top:-30px; /*смещение вверх*/ + width: 200px; /*ширина !значение*/ + min-height: 50px; /*минимальная высота (если текста мало)*/ + max-height: auto; /*высота в зависимости от количества текста*/ + white-space: normal; /*переносы слов*/ } .answer { - box-shadow: 5px 5px 0.5em -0.1em rgba(0,0,6,0.5); /* */ - right: -240px; /*! = + */ - padding: 5px 20px 7px 7px; /* */ + box-shadow: 5px 5px 0.5em -0.1em rgba(0,0,6,0.5); /*тень справа*/ + right: -240px; /*!смещение = ширина + отступы*/ + padding: 5px 20px 7px 7px; /*отступы внутри*/ } .answer-left { - box-shadow: -5px 5px 0.5em -0.1em rgba(0,0,6,0.5); /* */ - left: -240px; /*!*/ + box-shadow: -5px 5px 0.5em -0.1em rgba(0,0,6,0.5); /*тень слева*/ + left: -240px; /*!смещение*/ padding: 5px 7px 7px 20px; } .a-top { - bottom: -10px; /*!, */ + bottom: -10px; /*!смещение, положение подсказки вверх */ } -/* */ +/*Стили для уголка*/ .a-top:before, .answer:before, .answer-left:before { @@ -308,7 +308,7 @@ img { border:0; } .a-top:before { bottom: 10px; } -/* - , CSS*/ +/*Для отображения клик-подсказки без скрипта, только на CSS*/ .tip>a:focus~span.answer, .tip>a:focus~span.answer-left { display:block; diff --git a/pay/main.php b/pay/main.php index 3643fab3..d7dbaf38 100644 --- a/pay/main.php +++ b/pay/main.php @@ -1,61 +1,61 @@
            - : + Коммерский отдел предлагает следующие услуги: info['id']>0){ echo $u->microLogin($u->info['id'],1); } ?>
            - , e-mail:
            - support@new-combats.com, " ". + Если вы не нашли подходящий раздел или услугу, вы можете обратиться к Администрации через e-mail:
            + support@new-combats.com, в теме письма напишите "Коммерческий отдел".

            - +
            - +
            - +
            - +
            - +
            - +
            - +
            - +
            - +
            - +
            - +
            - +
            \ No newline at end of file diff --git a/payy.txt b/payy.txt deleted file mode 100644 index 6217ece1..00000000 --- a/payy.txt +++ /dev/null @@ -1 +0,0 @@ -kulazadrot \ No newline at end of file diff --git a/php-errors.log b/php-errors.log deleted file mode 100644 index 42d0e1b7..00000000 --- a/php-errors.log +++ /dev/null @@ -1,4 +0,0 @@ -[04-Jul-2022 18:46:13 Europe/Moscow] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/newcom1/public_html/lotowork.php on line 26 -[04-Jul-2022 18:46:13 Europe/Moscow] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/newcom1/public_html/lotowork.php on line 27 -[14-Jul-2022 23:29:20 Europe/Moscow] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/newcom1/public_html/lotowork.php on line 26 -[14-Jul-2022 23:29:20 Europe/Moscow] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/newcom1/public_html/lotowork.php on line 27 diff --git a/pma12111211/.coveralls.yml b/pma12111211/.coveralls.yml deleted file mode 100644 index 8f323ea9..00000000 --- a/pma12111211/.coveralls.yml +++ /dev/null @@ -1,3 +0,0 @@ -src_dir: libraries -coverage_clover: build/logs/clover.xml -json_path: build/logs/coveralls-upload.json diff --git a/pma12111211/.editorconfig b/pma12111211/.editorconfig deleted file mode 100644 index c1f1fab9..00000000 --- a/pma12111211/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -# EditorConfig.org - -root = true - -[*] -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -charset = utf-8 - -[*.{js,php,twig,phtml,json,css}] -indent_style = space -indent_size = 4 - -[{*.sql,package.json,.travis.yml}] -indent_style = space -indent_size = 2 diff --git a/pma12111211/.eslintignore b/pma12111211/.eslintignore deleted file mode 100644 index 76a3c055..00000000 --- a/pma12111211/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -js/vendor/ -tmp/ -vendor/ diff --git a/pma12111211/.eslintrc.json b/pma12111211/.eslintrc.json deleted file mode 100644 index 0202573c..00000000 --- a/pma12111211/.eslintrc.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "env": { - "browser": true, - "jquery": true - }, - "rules": { - "array-bracket-spacing": "error", - "brace-style": "error", - "camelcase": "warn", - "comma-style": ["error", "last"], - "curly": "error", - "dot-notation": "error", - "eol-last": "error", - "eqeqeq": "error", - "indent": ["error", 4], - "keyword-spacing": "error", - "new-cap": "warn", - "no-array-constructor": "warn", - "no-eval": "warn", - "no-loop-func": "warn", - "no-mixed-spaces-and-tabs": "error", - "no-multiple-empty-lines": "error", - "no-new-func": "error", - "no-new-object": "error", - "no-param-reassign": "warn", - "no-trailing-spaces": "error", - "no-underscore-dangle": "warn", - "no-unneeded-ternary": "error", - "no-useless-escape": "warn", - "object-curly-spacing": ["error", "always"], - "one-var": ["error", "never"], - "padded-blocks": ["error", "never"], - "quotes": ["error", "single"], - "semi": "error", - "space-before-blocks": "error", - "space-before-function-paren": "error", - "space-in-parens": "error", - "space-infix-ops": "error", - "spaced-comment": ["error", "always"], - "wrap-iife": "error" - } -} diff --git a/pma12111211/.scrutinizer.yml b/pma12111211/.scrutinizer.yml deleted file mode 100644 index f25f35d7..00000000 --- a/pma12111211/.scrutinizer.yml +++ /dev/null @@ -1,10 +0,0 @@ -# scrutinizer-ci.com configuration -imports: - - javascript - - php -filter: - excluded_paths: [libraries/php-gettext/*, libraries/tcpdf/*, libraries/bfShapeFiles/*, PMAStandard/*, libraries/phpseclib/*, libraries/plugins/auth/recaptchalib.php, libraries/plugins/auth/swekey/swekey.php, libraries/sql-formatter/*, js/jquery/*, js/jqplot/*, js/openlayers/*, js/codemirror/*, js/canvg/*, js/tracekit/*, js/OpenStreetMap.js, js/sprintf.js, test/libraries/php-gettext/*, test/libraries/sql-formatter/*] -tools: - php_code_sniffer: - config: - standard: "PMAStandard" diff --git a/pma12111211/CONTRIBUTING.md b/pma12111211/CONTRIBUTING.md deleted file mode 100644 index 62c97980..00000000 --- a/pma12111211/CONTRIBUTING.md +++ /dev/null @@ -1,21 +0,0 @@ -# Contributing to phpMyAdmin - -As an open source project, phpMyAdmin welcomes contributions of many forms. - -## Bug reporting - -Please report [bugs on SourceForge.net][1]. - -[1]: https://sourceforge.net/p/phpmyadmin/bugs/new/ - -## Patches submission - -Patches are welcome either as [pull requests on GitHub][2]. - -[2]: https://github.com/phpmyadmin/phpmyadmin/pulls - -## More information - -You can find more information on our website: - -http://www.phpmyadmin.net/home_page/improve.php diff --git a/pma12111211/ChangeLog b/pma12111211/ChangeLog deleted file mode 100644 index 3b59263a..00000000 --- a/pma12111211/ChangeLog +++ /dev/null @@ -1,170 +0,0 @@ -phpMyAdmin - ChangeLog -====================== - -4.1.14.8 (2014-12-03) -- bug #4611 [security] DOS attack with long passwords - -4.1.14.7 (2014-11-20) -- bug #4596 [security] XSS through exception stack -- bug #4595 [security] Path traversal can lead to leakage of line count -- bug #4578 [security] XSS vulnerability in table print view -- bug #4579 [security] XSS vulnerability in zoom search page -- bug #4594 [security] Path traversal in file inclusion of GIS factory -- bug #4598 [security] XSS in multi submit -- bug #4597 [security] XSS through pma_fontsize cookie - -4.1.14.6 (2014-10-21) -- bug #4562 [security] XSS in debug SQL output -- bug #4563 [security] XSS in monitor query analyzer - -4.1.14.5 (2014-10-01) -- bug #4544 [security] XSS vulnerabilities in table search and table structure pages - -4.1.14.4 (2014-09-13) -- bug #4530 [security] DOM based XSS that results to a CSRF that creates a - ROOT account in certain conditions - -4.1.14.3 (2014-08-17) -- bug #4501 [security] XSS in table browse page -- bug #4502 [security] Self-XSS in enum value editor -- bug #4503 [security] Self-XSSes in monitor -- bug #4505 [security] XSS in view operations page -- bug #4504 [security] Self-XSS in query charts -- bug #4517 [security] XSS in relation view - -4.1.14.2 (2014-07-17) -- bug #4488 [security] XSS injection due to unescaped table name (triggers) -- bug #4492 [security] XSS in AJAX confirmation messages -- bug #4491 [security] Missing validation for accessing User groups feature - -4.1.14.1 (2014-06-21) -- bug #4464 [security] XSS injection due to unescaped db/table name in navigation hiding - -4.1.14.0 (2014-04-26) -- bug #4365 Creating bookmark with multiple queries not working -- bug #4372 Changing browser transformation results in unnecessary table rebuild -- bug #4375 Group two DB, one's name is the prefix of the other one -- bug #4376 [interface] Login fields show in separate line - -4.1.13.0 (2014-04-13) -- bug #4279 CTRL + up or down moves 2 fields -- bug #4336 List server css style wrong -- bug Missing value on the Status > Server page -- bug #4347 Fixed PHP Parse error in Advisor -- bug #4350 Deleting the DB if it is renamed by the same name -- bug #4353 makeProfilingChart is not defined -- bug #4355 Precision specifier for DOUBLE type is truncated -- bug #4346 Incorrect "Export incomplete" message -- bug #4359 Notices on create table page -- bug #4356 GROUPed selects show number of rows as if not grouped -- bug #4357 JS Form submitted on "enter" even if focus is inside a select field - -4.1.12.0 (2014-03-27) -- bug #4334 Add event : datepicker won't open -- bug #4338 Fix missing value error while executing SQL query -- TCPDF library is now optional dependency -- bug #4326 Cannot find the import plugins which start with uppercase 'I' - -4.1.11.0 (2014-03-23) -- bug #4335 reCaptcha problem (4.1.10 regression) - -4.1.10.0 (2014-03-22) -- bug #4301 Grid edit: "SELECT" query is replaced by "UPDATE" query after edit -- bug #4278 reCaptcha re-login requires double effort -- bug #4324 Datepicker not showing up on insert page -- bug #3991 Problem selecting item in select boxes with the ENTER keystroke in some browsers -- bug #4323 QueryWindow ignores CodeMirror -- bug None of the live charts shown on "Status -> Monitor" (Chrome) - -4.1.9.0 (2014-03-06) -- bug #4279 CTRL + up or down moves two fields (part one) -- bug #4294 output as text radio clickable for "OpenDocument Text" export -- bug #4297 DROP DATABASE tick box in export no longer works -- bug #4291 Unable to export comments in OpenDocument text format -- bug #4299 Deletion even when the user says "No" to the confirmation message -- bug #4303 "New" link in navi panel is shown even if no privileges -- bug #4302 Some params are being omitted from microhistory -- bug #4298 Missing validation on Import CSV: "Columns enclosed with" and "Columns escaped with" -- bug #4040 Fatal error while resetting settings -- bug #4305 JS error when editing procedure from nav panel -- bug #4308 Edit routine form submitting when pressing enter -- bug #4307 Nav: "Columns" won't expand with specific schema - -4.1.8.0 (2014-02-22) -- bug #4276 Login loop on session expiry -- bug #4249 Incorrect number of result rows for SQL with subqueries -- bug #4275 Broken Link to php extension manual -- bug #4053 List of procedures is not displayed after executing with Enter -- bug #4081 Setup page content shifted to the right edge of its tabs -- bug #4284 Reordering a column erases comments for other columns -- bug #4286 Open "Browse" in a new tab -- bug #4287 Printview - Always one column too much -- bug #4288 Expand database (+ icon) after timeout doesn't do anything -- bug #4285 Fixed CSS for setup -- Fixed altering table to DOUBLE/FLOAT field -- bug #4292 Success message and failure message being shown together -- bug #4293 opening new tab (using selflink) for import.php based actions - results in error and logout - -4.1.7.0 (2014-02-09) -- bug #4245 initial Browse query does not match sorting order -- bug #4250 Notice on export page -- bug #4253 "New" text in navigation frame acts like a database -- bug #4262 Cannot define a column with fractional seconds -- bug #4265 Missing datepicker icon for DATETIME(length) -- bug #4257 Hide fractional seconds when applicable -- bug #4264 Uncheck "Ignore" while inserting, upon leaving a textarea -- bug #4260 reCaptcha is ignoring language settings -- bug #4259 reCaptcha sound session expired problem -- bug #4263 Japanese character encoding not working properly when exporting -- bug #4269 Notice on table relation page -- bug #4270 Bad text-color for table comments -- bug #4272 Incorrect tabindex -- bug #4271 Query by example and the second criteria line -- bug #4242 Wildcard-containing only_db failure in sidebar - -4.1.6.0 (2014-01-26) -- bug #4232 User not found after creating the user -- bug #4241 Confusing dialog when trying to create an already existing user -- bug #4239 Missing LIMIT clause for some queries -- rfe #1489 Do not show create icon when user has no privileges -- bug #4218 Chrome behavior with date fields -- bug #3579 NOW() function incorrectly selected (regression) -- bug #4244 Advisor complaints about MariaDB 10.x is version less than 5.1 -- bug #3889 When login fails and error display is active, login data is -displayed (regression) -- bug #4247 open_basedir warnings on export page -- bug #4013 AJAX request waiting until version info is retrieved -- bug #4248 js error when changing number of columns in status monitor - -4.1.5.0 (2014-01-17) -- bug #3780 Allow aborting loading pages -- bug #4223 Database list: Create database misses collation column -- bug #4224 Empty table names when a table is "inuse" -- bug #4225 Partition maintenance broken -- bug #4219 Table list (left panel) does not reload when table renamed -- bug #4230 "in use" displayed for all views in database print view -- bug #4226 Notice: Undefined index: pma_config_loading -- bug #4221 Bzip2 export cannot be directly imported (so withdraw bz2 export) -- bug #4204 Reloading user privileges hides user groups submenu -- bug #4231 DATE columns quick edit decrement by one day - -4.1.4.0 (2014-01-07) -- bug #3840 (additional fix) When exporting to gzip format, the data is compressed 2 times -- bug #4209 Missing compression in one case -- bug #4208 Can't browse tables after sorting on columns with fieldnames that have a '-' -- bug #4184 Switch to wrong page after adding an index -- bug #3885 Additional fix for this bug -- bug #4212 Table "disappears" if it has the same name as its tablegroup -- bug #4213 Datetime Quick Edit decrements by one day -- bug #4217 Current value not highlighted when browsing foreign values -- bug #4220 Incorrect key values in foreign key browser -- bug #4215 MariaDB 5.5: error in Drizzle detection - - --- Older ChangeLogs can be found on our project website --- - http://www.phpmyadmin.net/old-stuff/ChangeLogs/ - -# vim: et ts=4 sw=4 sts=4 -# vim: ft=changelog fenc=utf-8 -# vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#' -# vim: fdn=1 fdm=expr diff --git a/pma12111211/LICENSE b/pma12111211/LICENSE deleted file mode 100644 index 3912109b..00000000 --- a/pma12111211/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/pma12111211/README b/pma12111211/README deleted file mode 100644 index 848a21d6..00000000 --- a/pma12111211/README +++ /dev/null @@ -1,104 +0,0 @@ -phpMyAdmin - Readme -=================== - -Version 4.1.14.8 - -A set of PHP-scripts to manage MySQL over the web. - -http://www.phpmyadmin.net/ - -Copyright ---------- - -Copyright (C) 1998-2000 - Tobias Ratschiller - -Copyright (C) 2001-2014 - Marc Delisle - Olivier Müller - Robin Johnson - Alexander M. Turek - Michal Čihař - Garvin Hicking - Michael Keck - Sebastian Mendel - [check documentation for more details] - -License -------- - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License version 2, as published by the -Free Software Foundation. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Third party licenses --------------------- - -phpMyAdmin includes several third party libraries which come under their -respective licenses. - -jQuery's license, which is where we got the files under js/jquery/ is -(MIT|GPL), a copy of each license is available in this repository (GPL -is available as LICENSE, MIT as js/jquery/MIT-LICENSE.txt). - -TCPDF which is located under libraries/tcpdf is released under GPL -version 3 and the license is available as libraries/tcpdf/LICENSE.TXT. - -DejaVu fonts which are located under libraries/tcpdf/fonts/ and their -license is documented in -libraries/tcpdf/fonts/dejavu-fonts-ttf-2.33/LICENSE. - -PHP-gettext which is located under libraries/php-gettext/ is released -under GPL version 2 license which is available in the LICENSE file. - -Requirements ------------- - -* PHP 5.3 or later -* MySQL 5.0 or later -* a web-browser (doh!) - -Summary -------- - -phpMyAdmin is intended to handle the administration of MySQL over the web. -For a summary of features, please see the documentation in the doc folder. - -Download --------- - -You can get the newest version at http://www.phpmyadmin.net/. - -More Information ----------------- - -Please see the documentation in the doc folder. - -Support -------- - -See reference about support forums under http://www.phpmyadmin.net/ - - -Enjoy! ------- - -The phpMyAdmin Devel team - - -PS: - -Please, don't send us emails with question like "How do I compile PHP with -MySQL-support". We just don't have the time to be your free help desk. - -Please send your questions to the appropriate mailing lists / forums. Before -contacting us, please read the documentation (especially the FAQ part). - diff --git a/pma12111211/RELEASE-DATE-4.1.14.8 b/pma12111211/RELEASE-DATE-4.1.14.8 deleted file mode 100644 index 20ae54b6..00000000 --- a/pma12111211/RELEASE-DATE-4.1.14.8 +++ /dev/null @@ -1 +0,0 @@ -Wed Dec 3 13:06:25 UTC 2014 diff --git a/pma12111211/browse_foreigners.php b/pma12111211/browse_foreigners.php deleted file mode 100644 index 03843503..00000000 --- a/pma12111211/browse_foreigners.php +++ /dev/null @@ -1,66 +0,0 @@ -getFooter()->setMinimal(); -$header = $response->getHeader(); -$header->disableMenu(); -$header->setBodyId('body_browse_foreigners'); - -/** - * Displays the frame - */ - -$cfgRelation = PMA_getRelationsParam(); -$foreigners = ($cfgRelation['relwork'] ? PMA_getForeigners($db, $table) : false); -$foreign_limit = PMA_getForeignLimit( - isset($foreign_navig) ? $foreign_navig : null -); - -$foreignData = PMA_getForeignData( - $foreigners, $_REQUEST['field'], true, - isset($_REQUEST['foreign_filter']) - ? $_REQUEST['foreign_filter'] - : '', - isset($foreign_limit) ? $foreign_limit : null -); - - -$code = PMA_getJsScriptToHandleSelectRelationalFields(); - -$header->getScripts()->addCode($code); - -// HTML output -$html = PMA_getHtmlForRelationalFieldSelection( - $db, $table, $_REQUEST['field'], $foreignData, - isset($fieldkey) ? $fieldkey : null, - isset($data) ? $data : null -); - -$response->addHtml($html); -?> diff --git a/pma12111211/changelog.php b/pma12111211/changelog.php deleted file mode 100644 index 5066ffe0..00000000 --- a/pma12111211/changelog.php +++ /dev/null @@ -1,153 +0,0 @@ -disable(); - -$filename = CHANGELOG_FILE; - -/** - * Read changelog. - */ -// Check if the file is available, some distributions remove these. -if (is_readable($filename)) { - - // Test if the if is in a compressed format - if (substr($filename, -3) == '.gz') { - ob_start(); - readgzfile($filename); - $changelog = ob_get_contents(); - ob_end_clean(); - } else { - $changelog = file_get_contents($filename); - } -} else { - printf( - __('The %s file is not available on this system, please visit www.phpmyadmin.net for more information.'), - $filename - ); - exit; -} - -/** - * Whole changelog in variable. - */ -$changelog = htmlspecialchars($changelog); - -$tracker_url = 'https://sourceforge.net/support/tracker.php?aid=\\1'; -$tracker_url_bug = 'https://sourceforge.net/p/phpmyadmin/bugs/\\1/'; -$tracker_url_rfe = 'https://sourceforge.net/p/phpmyadmin/feature-requests/\\1/'; -$tracker_url_patch = 'https://sourceforge.net/p/phpmyadmin/patches/\\1/'; -$github_url = 'https://github.com/phpmyadmin/phpmyadmin/'; -$faq_url = 'http://docs.phpmyadmin.net/en/latest/faq.html'; - -$replaces = array( - '@(http://[./a-zA-Z0-9.-_-]*[/a-zA-Z0-9_])@' - => '\\1', - - // sourceforge users - '/([0-9]{4}-[0-9]{2}-[0-9]{2}) (.+[^ ]) +<(.*)@users.sourceforge.net>/i' - => '\\1 \\2', - '/thanks to ([^\(\r\n]+) \(([-\w]+)\)/i' - => 'thanks to \\1', - '/thanks to ([^\(\r\n]+) -\s+([-\w]+)/i' - => 'thanks to \\1', - - // mail address - '/([0-9]{4}-[0-9]{2}-[0-9]{2}) (.+[^ ]) +<(.*@.*)>/i' - => '\\1 \\2', - - // linking patches - '/patch\s*#?([0-9]{6,})/i' - => 'patch #\\1', - - // linking RFE - '/(?:rfe|feature)\s*#?([0-9]{6,})/i' - => 'RFE #\\1', - - // linking files - '/(\s+)([\\/a-z_0-9\.]+\.(?:php3?|html|pl|js|sh))/i' - => '\\1\\2', - - // FAQ entries - '/FAQ ([0-9]+)\.([0-9a-z]+)/i' - => 'FAQ \\1.\\2', - - // linking bugs - '/bug\s*#?([0-9]{6,})/i' - => 'bug #\\1', - - // all other 6+ digit numbers are treated as bugs - '/(? 'bug #\\1', - - // transitioned SF.net project bug/rfe/patch links - // by the time we reach 6-digit numbers, we can probably retire the above links - '/patch\s*#?([0-9]{4,5}) /i' - => 'patch #\\1 ', - '/(?:rfe|feature)\s*#?([0-9]{4,5}) /i' - => 'RFE #\\1 ', - '/bug\s*#?([0-9]{4,5}) /i' - => 'bug #\\1 ', - '/(? 'bug #\\1 ', - - // CVE/CAN entries - '/((CAN|CVE)-[0-9]+-[0-9]+)/' - => '\\1', - - // PMASAentries - '/(PMASA-[0-9]+-[0-9]+)/' - => '\\1', - - // Highlight releases (with links) - '/([0-9]+)\.([0-9]+)\.([0-9]+)\.0 (\([0-9-]+\))/' - => '' - . '' - . '\\1.\\2.\\3.0 \\4', - '/([0-9]+)\.([0-9]+)\.([0-9]+)\.([1-9][0-9]*) (\([0-9-]+\))/' - => '' - . '' - . '\\1.\\2.\\3.\\4 \\5', - - // Highlight releases (not linkable) - '/( ### )(.*)/' - => '\\1\\2', - -); - -header('Content-type: text/html; charset=utf-8'); -?> - - - - - - phpMyAdmin - ChangeLog - - - -

            phpMyAdmin - ChangeLog

            -'; -echo preg_replace(array_keys($replaces), $replaces, $changelog); -echo ''; -?> - - - diff --git a/pma12111211/chk_rel.php b/pma12111211/chk_rel.php deleted file mode 100644 index 915e8b24..00000000 --- a/pma12111211/chk_rel.php +++ /dev/null @@ -1,15 +0,0 @@ -addHTML( - PMA_getRelationsParamDiagnostic(PMA_getRelationsParam()) -); - -?> diff --git a/pma12111211/composer.json b/pma12111211/composer.json deleted file mode 100644 index 15a9555a..00000000 --- a/pma12111211/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "phpmyadmin/phpmyadmin", - "type": "application", - "description": "MySQL web administration tool", - "keywords": ["phpmyadmin","mysql","web"], - "homepage": "http://www.phpmyadmin.net/", - "license": "GPL-2.0+", - "authors": [ - { - "name": "The phpMyAdmin Team", - "email": "phpmyadmin-devel@lists.sourceforge.net", - "homepage": "http://www.phpmyadmin.net/home_page/team.php" - } - ], - "support": { - "forum": "https://sourceforge.net/p/phpmyadmin/discussion/Help", - "issues": "https://sourceforge.net/p/phpmyadmin/bugs/", - "wiki": "http://wiki.phpmyadmin.net/", - "source": "https://github.com/phpmyadmin/phpmyadmin" - }, - "require": { - "php": ">=5.3.0", - "ext-openssl": "*", - "ext-mbstring": "*" - }, - "require-dev": { - "satooshi/php-coveralls": "dev-master" - } -} diff --git a/pma12111211/config.sample.inc.php b/pma12111211/config.sample.inc.php deleted file mode 100644 index 07047acb..00000000 --- a/pma12111211/config.sample.inc.php +++ /dev/null @@ -1,152 +0,0 @@ -. - * - * @package PhpMyAdmin - */ - -/* - * This is needed for cookie based authentication to encrypt password in - * cookie - */ -$cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ - -/* - * Servers configuration - */ -$i = 0; - -/* - * First server - */ -$i++; -/* Authentication type */ -$cfg['Servers'][$i]['auth_type'] = 'cookie'; -/* Server parameters */ -$cfg['Servers'][$i]['host'] = 'localhost'; -$cfg['Servers'][$i]['connect_type'] = 'tcp'; -$cfg['Servers'][$i]['compress'] = false; -/* Select mysql if your server does not have mysqli */ -$cfg['Servers'][$i]['extension'] = 'mysqli'; -$cfg['Servers'][$i]['AllowNoPassword'] = false; - -/* - * phpMyAdmin configuration storage settings. - */ - -/* User used to manipulate with storage */ -// $cfg['Servers'][$i]['controlhost'] = ''; -// $cfg['Servers'][$i]['controlport'] = ''; -// $cfg['Servers'][$i]['controluser'] = 'pma'; -// $cfg['Servers'][$i]['controlpass'] = 'pmapass'; - -/* Storage database and tables */ -// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; -// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; -// $cfg['Servers'][$i]['relation'] = 'pma__relation'; -// $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; -// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; -// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; -// $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; -// $cfg['Servers'][$i]['history'] = 'pma__history'; -// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; -// $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; -// $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; -// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; -// $cfg['Servers'][$i]['recent'] = 'pma__recent'; -// $cfg['Servers'][$i]['users'] = 'pma__users'; -// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; -// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; -/* Contrib / Swekey authentication */ -// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf'; - -/* - * End of servers configuration - */ - -/* - * Directories for saving/loading files from server - */ -$cfg['UploadDir'] = ''; -$cfg['SaveDir'] = ''; - -/** - * Defines whether a user should be displayed a "show all (records)" - * button in browse mode or not. - * default = false - */ -//$cfg['ShowAll'] = true; - -/** - * Number of rows displayed when browsing a result set. If the result - * set contains more rows, "Previous" and "Next". - * default = 30 - */ -//$cfg['MaxRows'] = 50; - -/** - * disallow editing of binary fields - * valid values are: - * false allow editing - * 'blob' allow editing except for BLOB fields - * 'noblob' disallow editing except for BLOB fields - * 'all' disallow editing - * default = blob - */ -//$cfg['ProtectBinary'] = 'false'; - -/** - * Default language to use, if not browser-defined or user-defined - * (you find all languages in the locale folder) - * uncomment the desired line: - * default = 'en' - */ -//$cfg['DefaultLang'] = 'en'; -//$cfg['DefaultLang'] = 'de'; - -/** - * default display direction (horizontal|vertical|horizontalflipped) - */ -//$cfg['DefaultDisplay'] = 'vertical'; - - -/** - * How many columns should be used for table display of a database? - * (a value larger than 1 results in some information being hidden) - * default = 1 - */ -//$cfg['PropertiesNumColumns'] = 2; - -/** - * Set to true if you want DB-based query history.If false, this utilizes - * JS-routines to display query history (lost by window close) - * - * This requires configuration storage enabled, see above. - * default = false - */ -//$cfg['QueryHistoryDB'] = true; - -/** - * When using DB-based query history, how many entries should be kept? - * - * default = 25 - */ -//$cfg['QueryHistoryMax'] = 100; - -/** - * Should error reporting be enabled for JavaScript errors - * - * default = 'ask' - */ -//$cfg['SendErrorReports'] = 'ask'; - -/* - * You can find more configuration options in the documentation - * in the doc/ folder or at . - */ -?> diff --git a/pma12111211/db_create.php b/pma12111211/db_create.php deleted file mode 100644 index 85443a46..00000000 --- a/pma12111211/db_create.php +++ /dev/null @@ -1,136 +0,0 @@ -tryQuery($sql_query); - -if (! $result) { - $message = PMA_Message::rawError($GLOBALS['dbi']->getError()); - // avoid displaying the not-created db name in header or navi panel - $GLOBALS['db'] = ''; - $GLOBALS['table'] = ''; - - /** - * If in an Ajax request, just display the message with {@link PMA_Response} - */ - if ($GLOBALS['is_ajax_request'] == true) { - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - } else { - include_once 'index.php'; - } -} else { - $message = PMA_Message::success(__('Database %1$s has been created.')); - $message->addParam($_POST['new_db']); - $GLOBALS['db'] = $_POST['new_db']; - - /** - * If in an Ajax request, build the output and send it - */ - if ($GLOBALS['is_ajax_request'] == true) { - //Construct the html for the new database, so that it can be appended to - // the list of databases on server_databases.php - - /** - * Build the array to be passed to {@link PMA_URL_getCommon} - * to generate the links - * - * @global array $GLOBALS['db_url_params'] - * @name $db_url_params - */ - $db_url_params['db'] = $_POST['new_db']; - - $is_superuser = $GLOBALS['dbi']->isSuperuser(); - $column_order = PMA_getColumnOrder(); - $url_query = PMA_URL_getCommon($_POST['new_db']); - - /** - * String that will contain the output HTML - * @name $new_db_string - */ - $new_db_string = ''; - - if (empty($db_collation_for_ajax)) { - $db_collation_for_ajax = PMA_getServerCollation(); - } - - // $dbstats comes from the create table dialog - if (! empty($dbstats)) { - $current = array( - 'SCHEMA_NAME' => $_POST['new_db'], - 'DEFAULT_COLLATION_NAME' => $db_collation_for_ajax, - 'SCHEMA_TABLES' => '0', - 'SCHEMA_TABLE_ROWS' => '0', - 'SCHEMA_DATA_LENGTH' => '0', - 'SCHEMA_MAX_DATA_LENGTH' => '0', - 'SCHEMA_INDEX_LENGTH' => '0', - 'SCHEMA_LENGTH' => '0', - 'SCHEMA_DATA_FREE' => '0' - ); - } else { - $current = array( - 'SCHEMA_NAME' => $_POST['new_db'], - 'DEFAULT_COLLATION_NAME' => $db_collation_for_ajax - ); - } - - list($column_order, $generated_html) = PMA_buildHtmlForDb( - $current, $is_superuser, $url_query, - $column_order, $replication_types, $replication_info - ); - $new_db_string .= $generated_html; - - $new_db_string .= ''; - - $response = PMA_Response::getInstance(); - $response->addJSON('message', $message); - $response->addJSON('new_db_string', $new_db_string); - $response->addJSON( - 'sql_query', - PMA_Util::getMessage( - null, $sql_query, 'success' - ) - ); - } else { - include_once '' . $cfg['DefaultTabDatabase']; - } -} -?> diff --git a/pma12111211/db_datadict.php b/pma12111211/db_datadict.php deleted file mode 100644 index f08a5c47..00000000 --- a/pma12111211/db_datadict.php +++ /dev/null @@ -1,291 +0,0 @@ -getHeader(); -$header->enablePrintView(); - -/** - * Gets the relations settings - */ -$cfgRelation = PMA_getRelationsParam(); - -require_once 'libraries/transformations.lib.php'; -require_once 'libraries/Index.class.php'; - -/** - * Check parameters - */ -PMA_Util::checkParameters(array('db')); - -/** - * Defines the url to return to in case of error in a sql statement - */ -if (strlen($table)) { - $err_url = 'tbl_sql.php?' . PMA_URL_getCommon($db, $table); -} else { - $err_url = 'db_sql.php?' . PMA_URL_getCommon($db); -} - -if ($cfgRelation['commwork']) { - $comment = PMA_getDbComment($db); - - /** - * Displays DB comment - */ - if ($comment) { - echo '

            ' . __('Database comment: ') - . '' . htmlspecialchars($comment) . '

            '; - } // end if -} - -/** - * Selects the database and gets tables names - */ -$GLOBALS['dbi']->selectDb($db); -$tables = $GLOBALS['dbi']->getTables($db); - -$count = 0; -foreach ($tables as $table) { - $comments = PMA_getComments($db, $table); - - echo '
            ' . "\n"; - - echo '

            ' . htmlspecialchars($table) . '

            ' . "\n"; - - /** - * Gets table informations - */ - $show_comment = PMA_Table::sGetStatusInfo($db, $table, 'TABLE_COMMENT'); - - /** - * Gets table keys and retains them - */ - - $GLOBALS['dbi']->selectDb($db); - $indexes = $GLOBALS['dbi']->getTableIndexes($db, $table); - $primary = ''; - $indexes = array(); - $lastIndex = ''; - $indexes_info = array(); - $indexes_data = array(); - $pk_array = array(); // will be use to emphasis prim. keys in the table - // view - foreach ($indexes as $row) { - // Backups the list of primary keys - if ($row['Key_name'] == 'PRIMARY') { - $primary .= $row['Column_name'] . ', '; - $pk_array[$row['Column_name']] = 1; - } - // Retains keys informations - if ($row['Key_name'] != $lastIndex) { - $indexes[] = $row['Key_name']; - $lastIndex = $row['Key_name']; - } - $indexes_info[$row['Key_name']]['Sequences'][] = $row['Seq_in_index']; - $indexes_info[$row['Key_name']]['Non_unique'] = $row['Non_unique']; - if (isset($row['Cardinality'])) { - $indexes_info[$row['Key_name']]['Cardinality'] = $row['Cardinality']; - } - // I don't know what does following column mean.... - // $indexes_info[$row['Key_name']]['Packed'] = $row['Packed']; - - $indexes_info[$row['Key_name']]['Comment'] = $row['Comment']; - - $indexes_data[$row['Key_name']][$row['Seq_in_index']]['Column_name'] - = $row['Column_name']; - if (isset($row['Sub_part'])) { - $indexes_data[$row['Key_name']][$row['Seq_in_index']]['Sub_part'] - = $row['Sub_part']; - } - - } // end while - - /** - * Gets columns properties - */ - $columns = $GLOBALS['dbi']->getColumns($db, $table); - - if (PMA_MYSQL_INT_VERSION < 50025) { - // We need this to correctly learn if a TIMESTAMP is NOT NULL, since - // SHOW FULL COLUMNS or INFORMATION_SCHEMA incorrectly says NULL - // and SHOW CREATE TABLE says NOT NULL - // http://bugs.mysql.com/20910. - - $show_create_table_query = 'SHOW CREATE TABLE ' - . PMA_Util::backquote($db) . '.' - . PMA_Util::backquote($table); - $show_create_table = $GLOBALS['dbi']->fetchValue( - $show_create_table_query, 0, 1 - ); - $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); - } - - // Check if we can use Relations - if (!empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if (count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - - /** - * Displays the comments of the table if MySQL >= 3.23 - */ - if (!empty($show_comment)) { - echo __('Table comments:') . ' '; - echo htmlspecialchars($show_comment) . '

            '; - } - - /** - * Displays the table structure - */ - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if ($have_rel) { - echo ' ' . "\n"; - } - echo ' ' . "\n"; - if ($cfgRelation['mimework']) { - echo ' ' . "\n"; - } - echo ''; - $odd_row = true; - foreach ($columns as $row) { - - if ($row['Null'] == '') { - $row['Null'] = 'NO'; - } - $extracted_columnspec - = PMA_Util::extractColumnSpec($row['Type']); - - // reformat mysql query output - // set or enum types: slashes single quotes inside options - if ('set' == $extracted_columnspec['type'] - || 'enum' == $extracted_columnspec['type'] - ) { - $type_nowrap = ''; - - } else { - $type_nowrap = ' class="nowrap"'; - } - $type = htmlspecialchars($extracted_columnspec['print_type']); - $attribute = $extracted_columnspec['attribute']; - if (! isset($row['Default'])) { - if ($row['Null'] != 'NO') { - $row['Default'] = 'NULL'; - } - } else { - $row['Default'] = htmlspecialchars($row['Default']); - } - $column_name = $row['Field']; - - $tmp_column = $analyzed_sql[0]['create_table_fields'][$column_name]; - if (PMA_MYSQL_INT_VERSION < 50025 - && ! empty($tmp_column['type']) - && $tmp_column['type'] == 'TIMESTAMP' - && $tmp_column['timestamp_not_null'] - ) { - // here, we have a TIMESTAMP that SHOW FULL COLUMNS reports as - // having the NULL attribute, but SHOW CREATE TABLE says the - // contrary. Believe the latter. - /** - * @todo merge this logic with the one in tbl_structure.php - * or move it in a function similar to $GLOBALS['dbi']->getColumnsFull() - * but based on SHOW CREATE TABLE because information_schema - * cannot be trusted in this case (MySQL bug) - */ - $row['Null'] = 'NO'; - } - echo ''; - echo ''; - echo '' . $type . ''; - echo ''; - echo ''; - - if ($have_rel) { - echo ' ' . "\n"; - } - echo ' ' . "\n"; - if ($cfgRelation['mimework']) { - $mime_map = PMA_getMIME($db, $table, true); - - echo ' ' . "\n"; - } - echo ''; - } // end foreach - $count++; - echo '
            ' . __('Column') . '' . __('Type') . '' . __('Null') . '' . __('Default') . '' . __('Links to') . '' . __('Comments') . 'MIME
            '; - - if (isset($pk_array[$row['Field']])) { - echo '' . htmlspecialchars($column_name) . ''; - } else { - echo htmlspecialchars($column_name); - } - echo ''; - echo (($row['Null'] == 'NO') ? __('No') : __('Yes')); - echo ''; - if (isset($row['Default'])) { - echo $row['Default']; - } - echo ''; - if (isset($res_rel[$column_name])) { - echo htmlspecialchars( - $res_rel[$column_name]['foreign_table'] - . ' -> ' - . $res_rel[$column_name]['foreign_field'] - ); - } - echo ''; - if (isset($comments[$column_name])) { - echo htmlspecialchars($comments[$column_name]); - } - echo ''; - if (isset($mime_map[$column_name])) { - echo htmlspecialchars( - str_replace('_', '/', $mime_map[$column_name]['mimetype']) - ); - } - echo '
            '; - // display indexes information - if (count(PMA_Index::getFromTable($table, $db)) > 0) { - echo PMA_Index::getView($table, $db, true); - } - echo '
            '; -} //ends main while - -/** - * Displays the footer - */ -echo PMA_Util::getButton(); - -?> diff --git a/pma12111211/db_events.php b/pma12111211/db_events.php deleted file mode 100644 index 917778bc..00000000 --- a/pma12111211/db_events.php +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/pma12111211/db_export.php b/pma12111211/db_export.php deleted file mode 100644 index 5313e0e0..00000000 --- a/pma12111211/db_export.php +++ /dev/null @@ -1,94 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('export.js'); - -// $sub_part is also used in db_info.inc.php to see if we are coming from -// db_export.php, in which case we don't obey $cfg['MaxTableList'] -$sub_part = '_export'; -require_once 'libraries/db_common.inc.php'; -$url_query .= '&goto=db_export.php'; -require_once 'libraries/db_info.inc.php'; - -/** - * Displays the form - */ -$export_page_title = __('View dump (schema) of database'); - -// exit if no tables in db found -if ($num_tables < 1) { - PMA_Message::error(__('No tables found in database.'))->display(); - exit; -} // end if - -$multi_values = '
            '; -$multi_values .= ''; -$multi_values .= __('Select All'); -$multi_values .= ''; -$multi_values .= ' / '; -$multi_values .= ''; -$multi_values .= __('Unselect All'); -$multi_values .= '
            '; - -$multi_values .= '
            '; - -$export_type = 'database'; -require_once 'libraries/display_export.inc.php'; - -?> diff --git a/pma12111211/db_import.php b/pma12111211/db_import.php deleted file mode 100644 index 70425b21..00000000 --- a/pma12111211/db_import.php +++ /dev/null @@ -1,25 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('import.js'); - -/** - * Gets tables informations and displays top links - */ -require 'libraries/db_common.inc.php'; -require 'libraries/db_info.inc.php'; - -$import_type = 'database'; -require 'libraries/display_import.inc.php'; - -?> diff --git a/pma12111211/db_operations.php b/pma12111211/db_operations.php deleted file mode 100644 index 6d0db198..00000000 --- a/pma12111211/db_operations.php +++ /dev/null @@ -1,300 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('db_operations.js'); - -/** - * Rename/move or copy database - */ -if (strlen($db) - && (! empty($_REQUEST['db_rename']) || ! empty($_REQUEST['db_copy'])) -) { - if (! empty($_REQUEST['db_rename'])) { - $move = true; - } else { - $move = false; - } - - if (! isset($_REQUEST['newname']) || ! strlen($_REQUEST['newname'])) { - $message = PMA_Message::error(__('The database name is empty!')); - } else { - $sql_query = ''; // in case target db exists - $_error = false; - if ($move - || (isset($_REQUEST['create_database_before_copying']) - && $_REQUEST['create_database_before_copying']) - ) { - $sql_query = PMA_getSqlQueryAndCreateDbBeforeCopy(); - } - - // here I don't use DELIMITER because it's not part of the - // language; I have to send each statement one by one - - // to avoid selecting alternatively the current and new db - // we would need to modify the CREATE definitions to qualify - // the db name - PMA_runProcedureAndFunctionDefinitions($db); - - // go back to current db, just in case - $GLOBALS['dbi']->selectDb($db); - - $tables_full = $GLOBALS['dbi']->getTablesFull($db); - - include_once "libraries/plugin_interface.lib.php"; - // remove all foreign key constraints, otherwise we can get errors - $export_sql_plugin = PMA_getPlugin( - "export", - "sql", - 'libraries/plugins/export/', - array( - 'single_table' => isset($single_table), - 'export_type' => 'database' - ) - ); - $GLOBALS['sql_constraints_query_full_db'] - = PMA_getSqlConstraintsQueryForFullDb( - $tables_full, $export_sql_plugin, $move, $db - ); - - $views = PMA_getViewsAndCreateSqlViewStandIn( - $tables_full, $export_sql_plugin, $db - ); - - list($sql_query, $_error) = PMA_getSqlQueryForCopyTable( - $tables_full, $sql_query, $move, $db - ); - - // handle the views - if (! $_error) { - $_error = PMA_handleTheViews($views, $move, $db); - } - unset($views); - - // now that all tables exist, create all the accumulated constraints - if (! $_error && count($GLOBALS['sql_constraints_query_full_db']) > 0) { - PMA_createAllAccumulatedConstraints(); - } - - if (! PMA_DRIZZLE && PMA_MYSQL_INT_VERSION >= 50100) { - // here DELIMITER is not used because it's not part of the - // language; each statement is sent one by one - - PMA_runEventDefinitionsForDb($db); - } - - // go back to current db, just in case - $GLOBALS['dbi']->selectDb($db); - - // Duplicate the bookmarks for this db (done once for each db) - PMA_duplicateBookmarks($_error, $db); - - if (! $_error && $move) { - /** - * cleanup pmadb stuff for this db - */ - include_once 'libraries/relation_cleanup.lib.php'; - PMA_relationsCleanupDatabase($db); - - // if someday the RENAME DATABASE reappears, do not DROP - $local_query = 'DROP DATABASE ' . PMA_Util::backquote($db) . ';'; - $sql_query .= "\n" . $local_query; - $GLOBALS['dbi']->query($local_query); - - $message = PMA_Message::success( - __('Database %1$s has been renamed to %2$s') - ); - $message->addParam($db); - $message->addParam($_REQUEST['newname']); - } elseif (! $_error) { - $message = PMA_Message::success( - __('Database %1$s has been copied to %2$s') - ); - $message->addParam($db); - $message->addParam($_REQUEST['newname']); - } - $reload = true; - - /* Change database to be used */ - if (! $_error && $move) { - $db = $_REQUEST['newname']; - } elseif (! $_error) { - if (isset($_REQUEST['switch_to_new']) - && $_REQUEST['switch_to_new'] == 'true' - ) { - $GLOBALS['PMA_Config']->setCookie('pma_switch_to_new', 'true'); - $db = $_REQUEST['newname']; - } else { - $GLOBALS['PMA_Config']->setCookie('pma_switch_to_new', ''); - } - } - - if ($_error && ! isset($message)) { - $message = PMA_Message::error(); - } - } - - /** - * Database has been successfully renamed/moved. If in an Ajax request, - * generate the output with {@link PMA_Response} and exit - */ - if ($GLOBALS['is_ajax_request'] == true) { - $response = PMA_Response::getInstance(); - $response->isSuccess($message->isSuccess()); - $response->addJSON('message', $message); - $response->addJSON('newname', $_REQUEST['newname']); - $response->addJSON( - 'sql_query', - PMA_Util::getMessage(null, $sql_query) - ); - $response->addJSON('db', $db); - exit; - } -} - -/** - * Settings for relations stuff - */ - -$cfgRelation = PMA_getRelationsParam(); - -/** - * Check if comments were updated - * (must be done before displaying the menu tabs) - */ -if (isset($_REQUEST['comment'])) { - PMA_setDbComment($db, $_REQUEST['comment']); -} - -require 'libraries/db_common.inc.php'; -$url_query .= '&goto=db_operations.php'; - -// Gets the database structure -$sub_part = '_structure'; -require 'libraries/db_info.inc.php'; -echo "\n"; - -if (isset($message)) { - echo PMA_Util::getMessage($message, $sql_query); - unset($message); -} - -$_REQUEST['db_collation'] = PMA_getDbCollation($db); -$is_information_schema = $GLOBALS['dbi']->isSystemSchema($db); - -$response->addHTML('
            '); - -if (!$is_information_schema) { - if ($cfgRelation['commwork']) { - /** - * database comment - */ - $response->addHTML(PMA_getHtmlForDatabaseComment($db)); - } - - $response->addHTML('
            '); - ob_start(); - include 'libraries/display_create_table.lib.php'; - $content = ob_get_contents(); - ob_end_clean(); - $response->addHTML($content); - $response->addHTML('
            '); - - /** - * rename database - */ - if ($db != 'mysql') { - $response->addHTML(PMA_getHtmlForRenameDatabase($db)); - } - - // Drop link if allowed - // Don't even try to drop information_schema. - // You won't be able to. Believe me. You won't. - // Don't allow to easily drop mysql database, RFE #1327514. - if (($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase']) - && ! $db_is_information_schema - && (PMA_DRIZZLE || $db != 'mysql') - ) { - $response->addHTML(PMA_getHtmlForDropDatabaseLink($db)); - } - /** - * Copy database - */ - $response->addHTML(PMA_getHtmlForCopyDatabase($db)); - - /** - * Change database charset - */ - $response->addHTML(PMA_getHtmlForChangeDatabaseCharset($db, $table)); - - if ($num_tables > 0 - && ! $cfgRelation['allworks'] - && $cfg['PmaNoRelation_DisableWarning'] == false - ) { - $message = PMA_Message::notice( - __('The phpMyAdmin configuration storage has been deactivated. To find out why click %shere%s.') - ); - $message->addParam( - '', - false - ); - $message->addParam('', false); - /* Show error if user has configured something, notice elsewhere */ - if (!empty($cfg['Servers'][$server]['pmadb'])) { - $message->isError(true); - } - $response->addHTML('
            '); - $response->addHTML($message->getDisplay()); - $response->addHTML('
            '); - } // end if -} // end if (!$is_information_schema) - -$response->addHTML('
            '); - -// not sure about displaying the PDF dialog in case db is information_schema -if ($cfgRelation['pdfwork'] && $num_tables > 0) { - // We only show this if we find something in the new pdf_pages table - $test_query = ' - SELECT * - FROM ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' . PMA_Util::backquote($cfgRelation['pdf_pages']) . ' - WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\''; - $test_rs = PMA_queryAsControlUser( - $test_query, - null, - PMA_DatabaseInterface::QUERY_STORE - ); - - /* - * Export Relational Schema View - */ - $response->addHTML(PMA_getHtmlForExportRelationalSchemaView($url_query)); -} // end if - -?> diff --git a/pma12111211/db_printview.php b/pma12111211/db_printview.php deleted file mode 100644 index 137bdaaf..00000000 --- a/pma12111211/db_printview.php +++ /dev/null @@ -1,180 +0,0 @@ -getHeader(); -$header->enablePrintView(); - -PMA_Util::checkParameters(array('db')); - -/** - * Defines the url to return to in case of error in a sql statement - */ -$err_url = 'db_sql.php?' . PMA_URL_getCommon($db); - -/** - * Settings for relations stuff - */ -$cfgRelation = PMA_getRelationsParam(); - -/** - * If there is at least one table, displays the printer friendly view, else - * an error message - */ -$tables = $GLOBALS['dbi']->getTablesFull($db); -$num_tables = count($tables); - -echo '
            '; - -// 1. No table -if ($num_tables == 0) { - echo __('No tables found in database.'); -} else { - // 2. Shows table information - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if ($cfg['ShowStats']) { - echo ''; - } - echo ''; - echo ''; - echo ''; - echo ''; - $sum_entries = $sum_size = 0; - $odd_row = true; - foreach ($tables as $sts_data) { - if (PMA_Table::isMerge($db, $sts_data['TABLE_NAME']) - || strtoupper($sts_data['ENGINE']) == 'FEDERATED' - ) { - $merged_size = true; - } else { - $merged_size = false; - } - $sum_entries += $sts_data['TABLE_ROWS']; - echo ''; - echo ''; - - if (isset($sts_data['TABLE_ROWS'])) { - echo ''; - echo ''; - if ($cfg['ShowStats']) { - $tblsize = $sts_data['Data_length'] + $sts_data['Index_length']; - $sum_size += $tblsize; - list($formated_size, $unit) - = PMA_Util::formatByteDown($tblsize, 3, 1); - echo ''; - } // end if - } else { - echo ''; - } - echo ''; - echo ''; - } - echo ''; - echo ''; - echo ''; - echo ''; - if ($cfg['ShowStats']) { - list($sum_formated, $unit) - = PMA_Util::formatByteDown($sum_size, 3, 1); - echo ''; - } - echo ''; - echo ''; - echo ''; - echo '
            ' . __('Table') . '' . __('Rows') . '' . __('Type') . '' . __('Size') . '' . __('Comments') . '
            '; - echo htmlspecialchars($sts_data['TABLE_NAME']); - echo ''; - if ($merged_size) { - echo ''; - echo PMA_Util::formatNumber($sts_data['TABLE_ROWS'], 0); - echo ''; - } else { - echo PMA_Util::formatNumber($sts_data['TABLE_ROWS'], 0); - } - echo ''; - echo $sts_data['ENGINE']; - echo ''; - echo $formated_size . ' ' . $unit; - echo ''; - if (! PMA_Table::isView($db, $sts_data['TABLE_NAME'])) { - echo __('in use'); - } - echo ''; - if (! empty($sts_data['Comment'])) { - echo htmlspecialchars($sts_data['Comment']); - $needs_break = '
            '; - } else { - $needs_break = ''; - } - - if (! empty($sts_data['Create_time']) - || ! empty($sts_data['Update_time']) - || ! empty($sts_data['Check_time']) - ) { - echo $needs_break; - echo ''; - - if (! empty($sts_data['Create_time'])) { - echo ''; - echo ''; - echo ''; - echo ''; - } - - if (! empty($sts_data['Update_time'])) { - echo ''; - echo ''; - echo ''; - echo ''; - } - - if (! empty($sts_data['Check_time'])) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
            ' . __('Creation:') . ''; - echo PMA_Util::localisedDate(strtotime($sts_data['Create_time'])); - echo '
            ' . __('Last update:') . ''; - echo PMA_Util::localisedDate(strtotime($sts_data['Update_time'])); - echo '
            ' . __('Last check:') . ''; - echo PMA_Util::localisedDate(strtotime($sts_data['Check_time'])); - echo '
            '; - } - echo '
            '; - printf( - _ngettext('%s table', '%s tables', $num_tables), - PMA_Util::formatNumber($num_tables, 0) - ); - echo ''; - echo PMA_Util::formatNumber($sum_entries, 0); - echo ''; - echo '--'; - echo ''; - echo $sum_formated . ' ' . $unit; - echo '
            '; -} - -/** - * Displays the footer - */ -echo PMA_Util::getButton(); - -echo "
            \n"; -?> diff --git a/pma12111211/db_qbe.php b/pma12111211/db_qbe.php deleted file mode 100644 index 7fad34d7..00000000 --- a/pma12111211/db_qbe.php +++ /dev/null @@ -1,78 +0,0 @@ - (maybe) execute it - */ -$message_to_display = false; -if (isset($_REQUEST['submit_sql']) && ! empty($sql_query)) { - if (! preg_match('@^SELECT@i', $sql_query)) { - $message_to_display = true; - } else { - $goto = 'db_sql.php'; - - // Parse and analyze the query - include_once 'libraries/parse_analyze.inc.php'; - - PMA_executeQueryAndSendQueryResponse( - $analyzed_sql_results, false, $_REQUEST['db'], null, null, null, null, - false, null, null, null, null, $goto, $pmaThemeImage, null, null, null, - $sql_query, null, null - ); - } -} - -$sub_part = '_qbe'; -require 'libraries/db_common.inc.php'; -$url_query .= '&goto=db_qbe.php'; -$url_params['goto'] = 'db_qbe.php'; -require 'libraries/db_info.inc.php'; - -if ($message_to_display) { - PMA_Message::error(__('You have to choose at least one column to display'))->display(); -} -unset($message_to_display); - -// create new qbe search instance -$db_qbe = new PMA_DBQbe($GLOBALS['db']); - -/** - * Displays the Query by example form - */ -if ($cfgRelation['designerwork']) { - $url = 'pmd_general.php' . PMA_URL_getCommon( - array_merge( - $url_params, - array('query' => 1) - ) - ); - $response->addHTML( - PMA_Message::notice( - sprintf( - __('Switch to %svisual builder%s'), - '', - '' - ) - ) - ); -} -$response->addHTML($db_qbe->getSelectionForm($cfgRelation)); -?> diff --git a/pma12111211/db_routines.php b/pma12111211/db_routines.php deleted file mode 100644 index a58d4c0a..00000000 --- a/pma12111211/db_routines.php +++ /dev/null @@ -1,27 +0,0 @@ - diff --git a/pma12111211/db_search.php b/pma12111211/db_search.php deleted file mode 100644 index 793fe91e..00000000 --- a/pma12111211/db_search.php +++ /dev/null @@ -1,62 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('db_search.js'); -$scripts->addFile('sql.js'); -$scripts->addFile('makegrid.js'); -$scripts->addFile('jquery/jquery-ui-timepicker-addon.js'); - -require 'libraries/db_common.inc.php'; - -// If config variable $GLOBALS['cfg']['Usedbsearch'] is on false : exit. -if (! $GLOBALS['cfg']['UseDbSearch']) { - PMA_Util::mysqlDie( - __('Access denied'), '', false, $err_url - ); -} // end if -$url_query .= '&goto=db_search.php'; -$url_params['goto'] = 'db_search.php'; - -// Create a database search instance -$db_search = new PMA_DbSearch($GLOBALS['db']); - -// Display top links if we are not in an Ajax request -if ( $GLOBALS['is_ajax_request'] != true) { - include 'libraries/db_info.inc.php'; -} - -// Main search form has been submitted, get results -if (isset($_REQUEST['submit_search'])) { - $response->addHTML($db_search->getSearchResults()); -} else { - $response->addHTML('
            '); -} - -// If we are in an Ajax request, we need to exit after displaying all the HTML -if ($GLOBALS['is_ajax_request'] == true && empty($_REQUEST['ajax_page_request'])) { - exit; -} - -// Display the search form -$response->addHTML('
            ' - . '
            ' - . '
            '); -$response->addHTML($db_search->getSelectionForm($url_params)); -$response->addHTML($db_search->_getResultDivs()); -?> diff --git a/pma12111211/db_sql.php b/pma12111211/db_sql.php deleted file mode 100644 index 67bbbb59..00000000 --- a/pma12111211/db_sql.php +++ /dev/null @@ -1,44 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('functions.js'); -$scripts->addFile('makegrid.js'); -$scripts->addFile('sql.js'); - -require 'libraries/db_common.inc.php'; -require_once 'libraries/sql_query_form.lib.php'; - -// After a syntax error, we return to this script -// with the typed query in the textarea. -$goto = 'db_sql.php'; -$back = 'db_sql.php'; - -/** - * Query box, bookmark, insert data from textfile - */ -$response->addHTML( - PMA_getHtmlForSqlQueryForm( - true, false, - isset($_REQUEST['delimiter']) - ? htmlspecialchars($_REQUEST['delimiter']) - : ';' - ) -); - -?> diff --git a/pma12111211/db_structure.php b/pma12111211/db_structure.php deleted file mode 100644 index 0eed9ad9..00000000 --- a/pma12111211/db_structure.php +++ /dev/null @@ -1,317 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('db_structure.js'); -$scripts->addFile('tbl_change.js'); -$scripts->addFile('jquery/jquery-ui-timepicker-addon.js'); - -// Drops/deletes/etc. multiple tables if required -if ((!empty($_POST['submit_mult']) && isset($_POST['selected_tbl'])) - || isset($_POST['mult_btn']) -) { - $action = 'db_structure.php'; - $err_url = 'db_structure.php?'. PMA_URL_getCommon($db); - - // see bug #2794840; in this case, code path is: - // db_structure.php -> libraries/mult_submits.inc.php -> sql.php - // -> db_structure.php and if we got an error on the multi submit, - // we must display it here and not call again mult_submits.inc.php - if (! isset($_POST['error']) || false === $_POST['error']) { - include 'libraries/mult_submits.inc.php'; - } - if (empty($_POST['message'])) { - $_POST['message'] = PMA_Message::success(); - } -} -require 'libraries/db_common.inc.php'; -$url_query .= '&goto=db_structure.php'; - -// Gets the database structure -$sub_part = '_structure'; -require 'libraries/db_info.inc.php'; - -if (!PMA_DRIZZLE) { - include_once 'libraries/replication.inc.php'; -} else { - $server_slave_status = false; -} - -require_once 'libraries/bookmark.lib.php'; - -require_once 'libraries/mysql_charsets.inc.php'; -$db_collation = PMA_getDbCollation($db); - -$titles = PMA_Util::buildActionTitles(); - -// 1. No tables - -if ($num_tables == 0) { - $response->addHTML( - '

            ' . __('No tables found in database.') . '

            ' . "\n" - ); - if (empty($db_is_information_schema)) { - ob_start(); - include 'libraries/display_create_table.lib.php'; - $content = ob_get_contents(); - ob_end_clean(); - $response->addHTML($content); - unset($content); - } // end if (Create Table dialog) - exit; -} - -// else -// 2. Shows table informations - -/** - * Displays the tables list - */ -$response->addHTML('
            '); -$_url_params = array( - 'pos' => $pos, - 'db' => $db); - -// Add the sort options if they exists -if (isset($_REQUEST['sort'])) { - $_url_params['sort'] = $_REQUEST['sort']; -} - -if (isset($_REQUEST['sort_order'])) { - $_url_params['sort_order'] = $_REQUEST['sort_order']; -} - -$response->addHTML( - PMA_Util::getListNavigator( - $total_num_tables, $pos, $_url_params, 'db_structure.php', - 'frame_content', $GLOBALS['cfg']['MaxTableList'] - ) -); - -// tables form -$response->addHTML( - '
            ' -); - -$response->addHTML(PMA_URL_getHiddenInputs($db)); - -$response->addHTML( - PMA_tableHeader($db_is_information_schema, $server_slave_status) -); - -$i = $sum_entries = 0; -$overhead_check = ''; -$create_time_all = ''; -$update_time_all = ''; -$check_time_all = ''; -$num_columns = $cfg['PropertiesNumColumns'] > 1 - ? ceil($num_tables / $cfg['PropertiesNumColumns']) + 1 - : 0; -$row_count = 0; -$sum_size = (double) 0; -$overhead_size = (double) 0; - -$hidden_fields = array(); -$odd_row = true; -$sum_row_count_pre = ''; - -foreach ($tables as $keyname => $current_table) { - // Get valid statistics whatever is the table type - - $drop_query = ''; - $drop_message = ''; - $overhead = ''; - - $table_is_view = false; - $table_encoded = urlencode($current_table['TABLE_NAME']); - // Sets parameters for links - $tbl_url_query = $url_query . '&table=' . $table_encoded; - // do not list the previous table's size info for a view - - list($current_table, $formatted_size, $unit, $formatted_overhead, - $overhead_unit, $overhead_size, $table_is_view, $sum_size) - = PMA_getStuffForEngineTypeTable( - $current_table, $db_is_information_schema, - $is_show_stats, $table_is_view, $sum_size, $overhead_size - ); - - if (! PMA_Table::isMerge($db, $current_table['TABLE_NAME'])) { - $sum_entries += $current_table['TABLE_ROWS']; - } - - if (isset($current_table['Collation'])) { - $collation = '' - . $current_table['Collation'] . ''; - } else { - $collation = '---'; - } - - if ($is_show_stats) { - if ($formatted_overhead != '') { - $overhead = '' - . '' . $formatted_overhead . '' - . '' . $overhead_unit . '' - . '' . "\n"; - $overhead_check .= - "markAllRows('row_tbl_" . ($i + 1) . "');"; - } else { - $overhead = '-'; - } - } // end if - - unset($showtable); - - if ($GLOBALS['cfg']['ShowDbStructureCreation']) { - list($create_time, $create_time_all) = PMA_getTimeForCreateUpdateCheck( - $current_table, 'Create_time', $create_time_all - ); - } - - if ($GLOBALS['cfg']['ShowDbStructureLastUpdate']) { - // $showtable might already be set from ShowDbStructureCreation, see above - list($update_time, $update_time_all) = PMA_getTimeForCreateUpdateCheck( - $current_table, 'Update_time', $update_time_all - ); - } - - if ($GLOBALS['cfg']['ShowDbStructureLastCheck']) { - // $showtable might already be set from ShowDbStructureCreation, see above - list($check_time, $check_time_all) = PMA_getTimeForCreateUpdateCheck( - $current_table, 'Check_time', $check_time_all - ); - } - - list($alias, $truename) = PMA_getAliasAndTrueName( - $tooltip_aliasname, $current_table, $tooltip_truename - ); - - $i++; - - $row_count++; - if ($table_is_view) { - $hidden_fields[] = ''; - } - - /* - * Always activate links for Browse, Search and Empty, even if - * the icons are greyed, because - * 1. for views, we don't know the number of rows at this point - * 2. for tables, another source could have populated them since the - * page was generated - * - * I could have used the PHP ternary conditional operator but I find - * the code easier to read without this operator. - */ - list($browse_table, $search_table, $browse_table_label, $empty_table, - $tracking_icon) = PMA_getHtmlForActionLinks( - $current_table, $table_is_view, $tbl_url_query, - $titles, $truename, $db_is_information_schema, $url_query - ); - - if (! $db_is_information_schema) { - list($drop_query, $drop_message) - = PMA_getTableDropQueryAndMessage($table_is_view, $current_table); - } - - if ($num_columns > 0 - && $num_tables > $num_columns - && ($row_count % $num_columns) == 0 - ) { - $row_count = 1; - $odd_row = true; - - $response->addHTML( - '' - ); - - $response->addHTML(PMA_tableHeader(false, $server_slave_status)); - } - - list($do, $ignored) = PMA_getServerSlaveStatus( - $server_slave_status, $truename - ); - - list($html_output, $odd_row) = PMA_getHtmlForStructureTableRow( - $i, $odd_row, $table_is_view, $current_table, - $browse_table_label, $tracking_icon, $server_slave_status, - $browse_table, $tbl_url_query, $search_table, $db_is_information_schema, - $titles, $empty_table, $drop_query, $drop_message, $collation, - $formatted_size, $unit, $overhead, - (isset ($create_time) ? $create_time : ''), - (isset ($update_time) ? $update_time : ''), - (isset ($check_time) ? $check_time : ''), - $is_show_stats, $ignored, $do, $colspan_for_structure - ); - $response->addHTML($html_output); - -} // end foreach - -// Show Summary -$response->addHTML(''); -$response->addHTML( - PMA_getHtmlBodyForTableSummary( - $num_tables, $server_slave_status, $db_is_information_schema, $sum_entries, - $db_collation, $is_show_stats, $sum_size, $overhead_size, $create_time_all, - $update_time_all, $check_time_all, $sum_row_count_pre - ) -); -$response->addHTML(''); -//check all -$response->addHTML( - PMA_getHtmlForCheckAllTables( - $pmaThemeImage, $text_dir, $overhead_check, - $db_is_information_schema, $hidden_fields - ) -); -$response->addHTML('
            '); //end of form - -// display again the table list navigator -$response->addHTML( - PMA_Util::getListNavigator( - $total_num_tables, $pos, $_url_params, 'db_structure.php', - 'frame_content', $GLOBALS['cfg']['MaxTableList'] - ) -); - -$response->addHTML('

            '); - -/** - * Work on the database - */ -/* DATABASE WORK */ -/* Printable view of a table */ -$response->addHTML( - PMA_getHtmlForTablePrintViewLink($url_query) - . PMA_getHtmlForDataDictionaryLink($url_query) -); - -if (empty($db_is_information_schema)) { - ob_start(); - include 'libraries/display_create_table.lib.php'; - $content = ob_get_contents(); - ob_end_clean(); - $response->addHTML($content); -} // end if (Create Table dialog) - -?> diff --git a/pma12111211/db_tracking.php b/pma12111211/db_tracking.php deleted file mode 100644 index bcd552c1..00000000 --- a/pma12111211/db_tracking.php +++ /dev/null @@ -1,252 +0,0 @@ -getHeader(); -$scripts = $header->getScripts(); -$scripts->addFile('db_structure.js'); - -/** - * If we are not in an Ajax request, then do the common work and show the links etc. - */ -require 'libraries/db_common.inc.php'; -$url_query .= '&goto=tbl_tracking.php&back=db_tracking.php'; - -// Get the database structure -$sub_part = '_structure'; -require 'libraries/db_info.inc.php'; - -// Work to do? -// (here, do not use $_REQUEST['db] as it can be crafted) -if (isset($_REQUEST['delete_tracking']) && isset($_REQUEST['table'])) { - PMA_Tracker::deleteTracking($GLOBALS['db'], $_REQUEST['table']); - - /** - * If in an Ajax request, generate the success message and use - * {@link PMA_Response()} to send the output - */ - if ($GLOBALS['is_ajax_request'] == true) { - $response = PMA_Response::getInstance(); - $response->addJSON('message', PMA_Message::success()); - exit; - } -} - -// Get tracked data about the database -$data = PMA_Tracker::getTrackedData($_REQUEST['db'], '', '1'); - -// No tables present and no log exist -if ($num_tables == 0 && count($data['ddlog']) == 0) { - echo '

            ' . __('No tables found in database.') . '

            ' . "\n"; - - if (empty($db_is_information_schema)) { - include 'libraries/display_create_table.lib.php'; - } - exit; -} - -// --------------------------------------------------------------------------- - -// Prepare statement to get HEAD version -$all_tables_query = ' SELECT table_name, MAX(version) as version FROM ' . - PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . '.' . - PMA_Util::backquote($GLOBALS['cfg']['Server']['tracking']) . - ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($_REQUEST['db']) . '\' ' . - ' GROUP BY table_name' . - ' ORDER BY table_name ASC'; - -$all_tables_result = PMA_queryAsControlUser($all_tables_query); - -// If a HEAD version exists -if ($GLOBALS['dbi']->numRows($all_tables_result) > 0) { - ?> -
            -

            - - - - - - - - - - - - - - - - fetchArray($all_tables_result)) { - list($table_name, $version_number) = $one_result; - $table_query = ' SELECT * FROM ' . - PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . '.' . - PMA_Util::backquote($GLOBALS['cfg']['Server']['tracking']) . - ' WHERE `db_name` = \'' . PMA_Util::sqlAddSlashes($_REQUEST['db']) - . '\' AND `table_name` = \'' . PMA_Util::sqlAddSlashes($table_name) - . '\' AND `version` = \'' . $version_number . '\''; - - $table_result = PMA_queryAsControlUser($table_query); - $version_data = $GLOBALS['dbi']->fetchArray($table_result); - - if ($version_data['tracking_active'] == 1) { - $version_status = __('active'); - } else { - $version_status = __('not active'); - } - $tmp_link = 'tbl_tracking.php?' . $url_query . '&table=' - . htmlspecialchars($version_data['table_name']); - $delete_link = 'db_tracking.php?' . $url_query . '&table=' - . htmlspecialchars($version_data['table_name']) - . '&delete_tracking=true&'; - ?> - - - - - - - - ' - . ''; - if ($style == 'even') { - $style = 'odd'; - } else { - $style = 'even'; - } - } - unset($tmp_link); - ?> - -
            - - - ' - . '' - . '' . __('Versions') . '' - . ' | ' - . '' . __('Tracking report') . '' - . ' | ' - . '' . __('Structure snapshot') - . '' - . '
            -
            - $value) { - // If $value is a table group. - if (array_key_exists(('is' . $sep . 'group'), $value) - && $value['is' . $sep . 'group'] - ) { - foreach ($value as $temp_table) { - // If $temp_table is a table with the value for 'Name' is set, - // rather than a propery of the table group. - if (is_array($temp_table) - && array_key_exists('Name', $temp_table) - ) { - $tracking_version = PMA_Tracker::getVersion( - $GLOBALS['db'], - $temp_table['Name'] - ); - if ($tracking_version == -1) { - $my_tables[] = $temp_table['Name']; - } - } - } - } else { // If $value is a table. - if (PMA_Tracker::getVersion($GLOBALS['db'], $value['Name']) == -1) { - $my_tables[] = $value['Name']; - } - } -} - -// If untracked tables exist -if (isset($my_tables)) { - ?> -

            - - - - - - - - - - $tablename) { - if (PMA_Tracker::getVersion($GLOBALS['db'], $tablename) == -1) { - $my_link = ''; - $my_link .= PMA_Util::getIcon('eye.png', __('Track table')); - $my_link .= ''; - ?> - - - - - - -
            - 0) { - $log = ''; - foreach ($data['ddlog'] as $entry) { - $log .= '# ' . $entry['date'] . ' ' . $entry['username'] . "\n" - . $entry['statement'] . "\n"; - } - echo PMA_Util::getMessage(__('Database Log'), $log); -} - -?> diff --git a/pma12111211/db_triggers.php b/pma12111211/db_triggers.php deleted file mode 100644 index d1a2a8c6..00000000 --- a/pma12111211/db_triggers.php +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/pma12111211/doc/Makefile b/pma12111211/doc/Makefile deleted file mode 100644 index 1ee62c86..00000000 --- a/pma12111211/doc/Makefile +++ /dev/null @@ -1,153 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = . - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/phpMyAdmin.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/phpMyAdmin.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/phpMyAdmin" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/phpMyAdmin" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/pma12111211/doc/_ext/configext.py b/pma12111211/doc/_ext/configext.py deleted file mode 100644 index fdf33149..00000000 --- a/pma12111211/doc/_ext/configext.py +++ /dev/null @@ -1,189 +0,0 @@ -from sphinx.locale import l_, _ -from sphinx.domains import Domain, ObjType -from sphinx.roles import XRefRole -from sphinx.domains.std import GenericObject, StandardDomain -from sphinx.directives import ObjectDescription -from sphinx.util.nodes import clean_astext, make_refnode -from sphinx.util import ws_re -from sphinx import addnodes -from sphinx.util.docfields import Field -from docutils import nodes - -def get_id_from_cfg(text): - ''' - Formats anchor ID from config option. - ''' - if text[:6] == '$cfg[\'': - text = text[6:] - if text[-2:] == '\']': - text = text[:-2] - text = text.replace('[$i]', '') - parts = text.split("']['") - return parts - - -class ConfigOption(ObjectDescription): - indextemplate = l_('configuration option; %s') - parse_node = None - - has_arguments = True - - doc_field_types = [ - Field('default', label=l_('Default value'), has_arg=False, - names=('default', )), - Field('type', label=l_('Type'), has_arg=False, - names=('type',)), - ] - - - def handle_signature(self, sig, signode): - signode.clear() - signode += addnodes.desc_name(sig, sig) - # normalize whitespace like XRefRole does - name = ws_re.sub('', sig) - return name - - def add_target_and_index(self, name, sig, signode): - targetparts = get_id_from_cfg(name) - targetname = 'cfg_%s' % '_'.join(targetparts) - signode['ids'].append(targetname) - self.state.document.note_explicit_target(signode) - indextype = 'single' - - # Generic index entries - indexentry = self.indextemplate % (name,) - self.indexnode['entries'].append((indextype, indexentry, - targetname, targetname)) - self.indexnode['entries'].append((indextype, name, - targetname, targetname)) - - # Server section - if targetparts[0] == 'Servers' and len(targetparts) > 1: - indexname = ', '.join(targetparts[1:]) - self.indexnode['entries'].append((indextype, l_('server configuration; %s') % indexname, - targetname, targetname)) - self.indexnode['entries'].append((indextype, indexname, - targetname, targetname)) - else: - indexname = ', '.join(targetparts) - self.indexnode['entries'].append((indextype, indexname, - targetname, targetname)) - - self.env.domaindata['config']['objects'][self.objtype, name] = \ - self.env.docname, targetname - - -class ConfigSectionXRefRole(XRefRole): - """ - Cross-referencing role for configuration sections (adds an index entry). - """ - - def result_nodes(self, document, env, node, is_ref): - if not is_ref: - return [node], [] - varname = node['reftarget'] - tgtid = 'index-%s' % env.new_serialno('index') - indexnode = addnodes.index() - indexnode['entries'] = [ - ('single', varname, tgtid, varname), - ('single', _('configuration section; %s') % varname, tgtid, varname) - ] - targetnode = nodes.target('', '', ids=[tgtid]) - document.note_explicit_target(targetnode) - return [indexnode, targetnode, node], [] - -class ConfigSection(ObjectDescription): - indextemplate = l_('configuration section; %s') - parse_node = None - - def handle_signature(self, sig, signode): - if self.parse_node: - name = self.parse_node(self.env, sig, signode) - else: - signode.clear() - signode += addnodes.desc_name(sig, sig) - # normalize whitespace like XRefRole does - name = ws_re.sub('', sig) - return name - - def add_target_and_index(self, name, sig, signode): - targetname = '%s-%s' % (self.objtype, name) - signode['ids'].append(targetname) - self.state.document.note_explicit_target(signode) - if self.indextemplate: - colon = self.indextemplate.find(':') - if colon != -1: - indextype = self.indextemplate[:colon].strip() - indexentry = self.indextemplate[colon+1:].strip() % (name,) - else: - indextype = 'single' - indexentry = self.indextemplate % (name,) - self.indexnode['entries'].append((indextype, indexentry, - targetname, targetname)) - self.env.domaindata['config']['objects'][self.objtype, name] = \ - self.env.docname, targetname - - -class ConfigOptionXRefRole(XRefRole): - """ - Cross-referencing role for configuration options (adds an index entry). - """ - - def result_nodes(self, document, env, node, is_ref): - if not is_ref: - return [node], [] - varname = node['reftarget'] - tgtid = 'index-%s' % env.new_serialno('index') - indexnode = addnodes.index() - indexnode['entries'] = [ - ('single', varname, tgtid, varname), - ('single', _('configuration option; %s') % varname, tgtid, varname) - ] - targetnode = nodes.target('', '', ids=[tgtid]) - document.note_explicit_target(targetnode) - return [indexnode, targetnode, node], [] - - -class ConfigFileDomain(Domain): - name = 'config' - label = 'Config' - - object_types = { - 'option': ObjType(l_('config option'), 'option'), - 'section': ObjType(l_('config section'), 'section'), - } - directives = { - 'option': ConfigOption, - 'section': ConfigSection, - } - roles = { - 'option': ConfigOptionXRefRole(), - 'section': ConfigSectionXRefRole(), - } - - initial_data = { - 'objects': {}, # (type, name) -> docname, labelid - } - - def clear_doc(self, docname): - for key, (fn, _) in self.data['objects'].items(): - if fn == docname: - del self.data['objects'][key] - - def resolve_xref(self, env, fromdocname, builder, - typ, target, node, contnode): - docname, labelid = self.data['objects'].get((typ, target), ('', '')) - if not docname: - return None - else: - return make_refnode(builder, fromdocname, docname, - labelid, contnode) - - def get_objects(self): - for (type, name), info in self.data['objects'].iteritems(): - yield (name, name, type, info[0], info[1], - self.object_types[type].attrs['searchprio']) - -def setup(app): - app.add_domain(ConfigFileDomain) - diff --git a/pma12111211/doc/conf.py b/pma12111211/doc/conf.py deleted file mode 100644 index 39eb2c94..00000000 --- a/pma12111211/doc/conf.py +++ /dev/null @@ -1,292 +0,0 @@ -# -*- coding: utf-8 -*- -# -# phpMyAdmin documentation build configuration file, created by -# sphinx-quickstart on Wed Sep 26 14:04:48 2012. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext"))) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['configext'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'phpMyAdmin' -copyright = u'2012 - 2014, The phpMyAdmin devel team' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '4.1.14.8' -# The full version, including alpha/beta/rc tags. -release = version - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build', 'html', 'doctrees'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'phpMyAdmindoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'phpMyAdmin.tex', u'phpMyAdmin Documentation', - u'The phpMyAdmin devel team', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'phpmyadmin', u'phpMyAdmin Documentation', - [u'The phpMyAdmin devel team'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'phpMyAdmin', u'phpMyAdmin Documentation', - u'The phpMyAdmin devel team', 'phpMyAdmin', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# -- Options for Epub output --------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = u'phpMyAdmin' -epub_author = u'The phpMyAdmin devel team' -epub_publisher = u'The phpMyAdmin devel team' -epub_copyright = copyright - -# The language of the text. It defaults to the language option -# or en if the language is not set. -#epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -#epub_identifier = '' - -# A unique identification for the text. -#epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -#epub_cover = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_pre_files = [] - -# HTML files shat should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_post_files = [] - -# A list of files that should not be packed into the epub file. -#epub_exclude_files = [] - -# The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 - -# Allow duplicate toc entries. -#epub_tocdup = True - -# Highlight PHP without starting `_). - - A good test is to browse a table, edit a row and save it. There should be - an error message if phpMyAdmin is having trouble auto–detecting the correct - value. If you get an error that this must be set or if the autodetect code - fails to detect your path, please post a bug report on our bug tracker so - we can improve the code. - - .. seealso:: :ref:`faq1_40` - -.. config:option:: $cfg['PmaNoRelation_DisableWarning'] - - :type: boolean - :default: false - - Starting with version 2.3.0 phpMyAdmin offers a lot of features to - work with master / foreign – tables (see :config:option:`$cfg['Servers'][$i]['pmadb']`). - - If you tried to set this - up and it does not work for you, have a look on the :guilabel:`Structure` page - of one database where you would like to use it. You will find a link - that will analyze why those features have been disabled. - - If you do not want to use those features set this variable to ``true`` to - stop this message from appearing. - -.. config:option:: $cfg['SuhosinDisableWarning'] - - :type: boolean - :default: false - - A warning is displayed on the main page if Suhosin is detected. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['McryptDisableWarning'] - - :type: boolean - :default: false - - Disable the default warning that is displayed if mcrypt is missing for - cookie authentication. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['ServerLibraryDifference_DisableWarning'] - - :type: boolean - :default: false - - A warning is displayed on the main page if there is a difference - between the MySQL library and server version. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['ReservedWordDisableWarning'] - - :type: boolean - :default: false - - This warning is displayed on the Structure page of a table if one or more - column names match with words which are MySQL reserved. - - If you want to turn off this warning, you can set it to ``true`` and - warning will no longer be displayed. - -.. config:option:: $cfg['TranslationWarningThreshold'] - - :type: integer - :default: 80 - - Show warning about incomplete translations on certain threshold. - -.. config:option:: $cfg['SendErrorReports'] - - :type: string - :default: ``'ask'`` - - Sets the default behavior for JavaScript error reporting. - - Whenever an error is detected in the JavaScript execution, an error report - may be sent to the phpMyAdmin team if the user agrees. - - The default setting of ``'ask'`` will ask the user everytime there is a new - error report. However you can set this parameter to ``'always'`` to send error - reports without asking for confirmation or you can set it to ``'never'`` to - never send error reports. - - This directive is available both in the configuration file and in users - preferences. If the person in charge of a multi-user installation prefers - to disable this feature for all users, a value of ``'never'`` should be - set, and the :config:option:`$cfg['UserprefsDisallow']` directive should - contain ``'SendErrorReports'`` in one of its array values. - -.. config:option:: $cfg['AllowThirdPartyFraming'] - - :type: boolean - :default: false - - Setting this to ``true`` allows phpMyAdmin to be included inside a frame, - and is a potential security hole allowing cross-frame scripting attacks or - clickjacking. - -Server connection settings --------------------------- - -.. config:option:: $cfg['Servers'] - - :type: array - :default: one server array with settings listed bellow - - Since version 1.4.2, phpMyAdmin supports the administration of multiple - MySQL servers. Therefore, a :config:option:`$cfg['Servers']`-array has been - added which contains the login information for the different servers. The - first :config:option:`$cfg['Servers'][$i]['host']` contains the hostname of - the first server, the second :config:option:`$cfg['Servers'][$i]['host']` - the hostname of the second server, etc. In - :file:`libraries/config.default.php`, there is only one section for server - definition, however you can put as many as you need in - :file:`config.inc.php`, copy that block or needed parts (you don't have to - define all settings, just those you need to change). - - .. note:: - - The :config:option:`$cfg['Servers']` array starts with - $cfg['Servers'][1]. Do not use $cfg['Servers'][0]. If you want more - than one server, just copy following section (including $i - incrementation) serveral times. There is no need to define full server - array, just define values you need to change. - - -.. config:option:: $cfg['Servers'][$i]['host'] - - :type: string - :default: ``'localhost'`` - - The hostname or :term:`IP` address of your $i-th MySQL-server. E.g. - ``localhost``. - - Possible values are: - - * hostname, e.g., ``'localhost'`` or ``'mydb.example.org'`` - * IP address, e.g., ``'127.0.0.1'`` or ``'192.168.10.1'`` - * dot - ``'.'``, i.e., use named pipes on windows systems - * empty - ``''``, disables this server - - .. note:: - - phpMyAdmin supports connecting to MySQL servers reachable via IPv6 only. - To connect to an IPv6 MySQL server, enter its IPv6 address in this field. - -.. config:option:: $cfg['Servers'][$i]['port'] - - :type: string - :default: ``''`` - - The port-number of your $i-th MySQL-server. Default is 3306 (leave - blank). - - .. note:: - - If you use ``localhost`` as the hostname, MySQL ignores this port number - and connects with the socket, so if you want to connect to a port - different from the default port, use ``127.0.0.1`` or the real hostname - in :config:option:`$cfg['Servers'][$i]['host']`. - -.. config:option:: $cfg['Servers'][$i]['socket'] - - :type: string - :default: ``''`` - - The path to the socket to use. Leave blank for default. To determine - the correct socket, check your MySQL configuration or, using the - :command:`mysql` command–line client, issue the ``status`` command. Among the - resulting information displayed will be the socket used. - -.. config:option:: $cfg['Servers'][$i]['ssl'] - - :type: boolean - :default: false - - Whether to enable SSL for the connection between phpMyAdmin and the MySQL server. - - When using :config:option:`$cfg['Servers'][$i]['extension']` = ``'mysql'``, - none of the remaining ``'ssl...'`` configuration options apply. - - We strongly recommend using :config:option:`$cfg['Servers'][$i]['extension']` = ``'mysqli'`` - when using this option. - -.. config:option:: $cfg['Servers'][$i]['ssl_key'] - - :type: string - :default: NULL - - Path to the key file when using SSL for connecting to the MySQL server. - - For example: - - .. code-block:: php - - $cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/server-key.pem'; - -.. config:option:: $cfg['Servers'][$i]['ssl_cert'] - - :type: string - :default: NULL - - Path to the cert file when using SSL for connecting to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['ssl_ca'] - - :type: string - :default: NULL - - Path to the CA file when using SSL for connecting to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['ssl_ca_path'] - - :type: string - :default: NULL - - Directory containing trusted SSL CA certificates in PEM format. - -.. config:option:: $cfg['Servers'][$i]['ssl_ciphers'] - - :type: string - :default: NULL - - List of allowable ciphers for SSL connections to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['connect_type'] - - :type: string - :default: ``'tcp'`` - - What type connection to use with the MySQL server. Your options are - ``'socket'`` and ``'tcp'``. It defaults to tcp as that is nearly guaranteed - to be available on all MySQL servers, while sockets are not supported on - some platforms. To use the socket mode, your MySQL server must be on the - same machine as the Web server. - -.. config:option:: $cfg['Servers'][$i]['extension'] - - :type: string - :default: ``'mysqli'`` - - What php MySQL extension to use for the connection. Valid options are: - - ``mysql`` - The classic MySQL extension. - - ``mysqli`` - The improved MySQL extension. This extension became available with PHP - 5.0.0 and is the recommended way to connect to a server running MySQL - 4.1.x or newer. - -.. config:option:: $cfg['Servers'][$i]['compress'] - - :type: boolean - :default: false - - Whether to use a compressed protocol for the MySQL server connection - or not (experimental). - -.. _controlhost: -.. config:option:: $cfg['Servers'][$i]['controlhost'] - - :type: string - :default: ``''`` - - Permits to use an alternate host to hold the configuration storage - data. - -.. _controlport: -.. config:option:: $cfg['Servers'][$i]['controlport'] - - :type: string - :default: ``''`` - - Permits to use an alternate port to connect to the host that - holds the configuration storage. - -.. _controluser: -.. config:option:: $cfg['Servers'][$i]['controluser'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['controlpass'] - - :type: string - :default: ``''`` - - This special account is used for 2 distinct purposes: to make possible all - relational features (see :config:option:`$cfg['Servers'][$i]['pmadb']`) and, - for a MySQL server running with ``--skip-show-database``, to enable a - multi-user installation (:term:`HTTP` or cookie - authentication mode). - - When using :term:`HTTP` or - cookie authentication modes (or 'config' authentication mode since phpMyAdmin - 2.2.1), you need to supply the details of a MySQL account that has ``SELECT`` - privilege on the *mysql.user (all columns except "Password")*, *mysql.db (all - columns)* and *mysql.tables\_priv (all columns except "Grantor" and - "Timestamp")* tables. This account is used to check what databases the user - will see at login. - - .. versionchanged:: 2.2.5 - those were called ``stduser`` and ``stdpass`` - - .. seealso:: :ref:`setup`, :ref:`authentication_modes` - -.. config:option:: $cfg['Servers'][$i]['auth_type'] - - :type: string - :default: ``'cookie'`` - - Whether config or cookie or :term:`HTTP` or signon authentication should be - used for this server. - - * 'config' authentication (``$auth_type = 'config'``) is the plain old - way: username and password are stored in :file:`config.inc.php`. - * 'cookie' authentication mode (``$auth_type = 'cookie'``) as - introduced in 2.2.3 allows you to log in as any valid MySQL user with - the help of cookies. Username and password are stored in cookies - during the session and password is deleted when it ends. This can also - allow you to log in in arbitrary server if :config:option:`$cfg['AllowArbitraryServer']` enabled. - * 'http' authentication (was - called 'advanced' in previous versions and can be written also as - 'http') (``$auth_type = 'http';'``) as introduced in 1.3.0 allows you to log in as any - valid MySQL user via HTTP-Auth. - * 'signon' authentication mode (``$auth_type = 'signon'``) as - introduced in 2.10.0 allows you to log in from prepared PHP session - data or using supplied PHP script. This is useful for implementing - single signon from another application. Sample way how to seed session - is in signon example: :file:`examples/signon.php`. There is also - alternative example using OpenID - :file:`examples/openid.php` and example - for scripts based solution - :file:`examples/signon-script.php`. You need - to configure :config:option:`$cfg['Servers'][$i]['SignonSession']` or - :config:option:`$cfg['Servers'][$i]['SignonScript']` and - :config:option:`$cfg['Servers'][$i]['SignonURL']` to use this authentication - method. - - .. seealso:: :ref:`authentication_modes` - -.. _servers_auth_http_realm: -.. config:option:: $cfg['Servers'][$i]['auth_http_realm'] - - :type: string - :default: ``''`` - - When using auth\_type = ``http``, this field allows to define a custom - :term:`HTTP` Basic Auth Realm which will be displayed to the user. If not - explicitly specified in your configuration, a string combined of - "phpMyAdmin " and either :config:option:`$cfg['Servers'][$i]['verbose']` or - :config:option:`$cfg['Servers'][$i]['host']` will be used. - -.. _servers_auth_swekey_config: -.. config:option:: $cfg['Servers'][$i]['auth_swekey_config'] - - :type: string - :default: ``''`` - - The name of the file containing :ref:`swekey` ids and login names for hardware - authentication. Leave empty to deactivate this feature. - -.. _servers_user: -.. config:option:: $cfg['Servers'][$i]['user'] - - :type: string - :default: ``'root'`` - -.. config:option:: $cfg['Servers'][$i]['password'] - - :type: string - :default: ``''`` - - When using :config:option:`$cfg['Servers'][$i]['auth_type']` set to - 'config', this is the user/password-pair which phpMyAdmin will use to - connect to the MySQL server. This user/password pair is not needed when - :term:`HTTP` or cookie authentication is used - and should be empty. - -.. _servers_nopassword: -.. config:option:: $cfg['Servers'][$i]['nopassword'] - - :type: boolean - :default: false - - Allow attempt to log in without password when a login with password - fails. This can be used together with http authentication, when - authentication is done some other way and phpMyAdmin gets user name - from auth and uses empty password for connecting to MySQL. Password - login is still tried first, but as fallback, no password method is - tried. - -.. _servers_only_db: -.. config:option:: $cfg['Servers'][$i]['only_db'] - - :type: string or array - :default: ``''`` - - If set to a (an array of) database name(s), only this (these) - database(s) will be shown to the user. Since phpMyAdmin 2.2.1, - this/these database(s) name(s) may contain MySQL wildcards characters - ("\_" and "%"): if you want to use literal instances of these - characters, escape them (I.E. use ``'my\_db'`` and not ``'my_db'``). - - This setting is an efficient way to lower the server load since the - latter does not need to send MySQL requests to build the available - database list. But **it does not replace the privileges rules of the - MySQL database server**. If set, it just means only these databases - will be displayed but **not that all other databases can't be used.** - - An example of using more that one database: - - .. code-block:: php - - $cfg['Servers'][$i]['only_db'] = array('db1', 'db2'); - - .. versionchanged:: 4.0.0 - Previous versions permitted to specify the display order of - the database names via this directive. - -.. config:option:: $cfg['Servers'][$i]['hide_db'] - - :type: string - :default: ``''`` - - Regular expression for hiding some databases from unprivileged users. - This only hides them from listing, but a user is still able to access - them (using, for example, the SQL query area). To limit access, use - the MySQL privilege system. For example, to hide all databases - starting with the letter "a", use - - .. code-block:: php - - $cfg['Servers'][$i]['hide_db'] = '^a'; - - and to hide both "db1" and "db2" use - - .. code-block:: php - - $cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$'; - - More information on regular expressions can be found in the `PCRE - pattern syntax - `_ portion - of the PHP reference manual. - -.. config:option:: $cfg['Servers'][$i]['verbose'] - - :type: string - :default: ``''`` - - Only useful when using phpMyAdmin with multiple server entries. If - set, this string will be displayed instead of the hostname in the - pull-down menu on the main page. This can be useful if you want to - show only certain databases on your system, for example. For HTTP - auth, all non-US-ASCII characters will be stripped. - -.. config:option:: $cfg['Servers'][$i]['pmadb'] - - :type: string - :default: ``''`` - - The name of the database containing the phpMyAdmin configuration - storage. - - See the :ref:`linked-tables` section in this document to see the benefits of - this feature, and for a quick way of creating this database and the needed - tables. - - If you are the only user of this phpMyAdmin installation, you can use your - current database to store those special tables; in this case, just put your - current database name in :config:option:`$cfg['Servers'][$i]['pmadb']`. For a - multi-user installation, set this parameter to the name of your central - database containing the phpMyAdmin configuration storage. - -.. _bookmark: -.. config:option:: $cfg['Servers'][$i]['bookmarktable'] - - :type: string - :default: ``''`` - - Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This - can be useful for queries you often run. To allow the usage of this - functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * enter the table name in :config:option:`$cfg['Servers'][$i]['bookmarktable']` - - -.. _relation: -.. config:option:: $cfg['Servers'][$i]['relation'] - - :type: string - :default: ``''`` - - Since release 2.2.4 you can describe, in a special 'relation' table, - which column is a key in another table (a foreign key). phpMyAdmin - currently uses this to: - - * make clickable, when you browse the master table, the data values that - point to the foreign table; - * display in an optional tool-tip the "display column" when browsing the - master table, if you move the mouse to a column containing a foreign - key (use also the 'table\_info' table); (see :ref:`faqdisplay`) - * in edit/insert mode, display a drop-down list of possible foreign keys - (key value and "display column" are shown) (see :ref:`faq6_21`) - * display links on the table properties page, to check referential - integrity (display missing foreign keys) for each described key; - * in query-by-example, create automatic joins (see :ref:`faq6_6`) - * enable you to get a :term:`PDF` schema of - your database (also uses the table\_coords table). - - The keys can be numeric or character. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the relation table name in :config:option:`$cfg['Servers'][$i]['relation']` - * now as normal user open phpMyAdmin and for each one of your tables - where you want to use this feature, click :guilabel:`Structure/Relation view/` - and choose foreign columns. - - .. note:: - - In the current version, ``master_db`` must be the same as ``foreign_db``. - Those columns have been put in future development of the cross-db - relations. - -.. _table_info: -.. config:option:: $cfg['Servers'][$i]['table_info'] - - :type: string - :default: ``''`` - - Since release 2.3.0 you can describe, in a special 'table\_info' - table, which column is to be displayed as a tool-tip when moving the - cursor over the corresponding key. This configuration variable will - hold the name of this special table. To allow the usage of this - functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['table\_info']` (e.g. - ``pma__table_info``) - * then for each table where you want to use this feature, click - "Structure/Relation view/Choose column to display" to choose the - column. - - .. seealso:: :ref:`faqdisplay` - -.. _table_coords: -.. config:option:: $cfg['Servers'][$i]['table_coords'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['pdf_pages'] - - :type: string - :default: ``''`` - - Since release 2.3.0 you can have phpMyAdmin create :term:`PDF` pages - showing the relations between your tables. To do this it needs two tables - "pdf\_pages" (storing information about the available :term:`PDF` pages) - and "table\_coords" (storing coordinates where each table will be placed on - a :term:`PDF` schema output). You must be using the "relation" feature. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the correct table names in - :config:option:`$cfg['Servers'][$i]['table\_coords']` and - :config:option:`$cfg['Servers'][$i]['pdf\_pages']` - - .. seealso:: :ref:`faqpdf`. - -.. _col_com: -.. config:option:: $cfg['Servers'][$i]['column_info'] - - :type: string - :default: ``''`` - - This part requires a content update! Since release 2.3.0 you can - store comments to describe each column for each table. These will then - be shown on the "printview". - - Starting with release 2.5.0, comments are consequently used on the table - property pages and table browse view, showing up as tool-tips above the - column name (properties page) or embedded within the header of table in - browse view. They can also be shown in a table dump. Please see the - relevant configuration directives later on. - - Also new in release 2.5.0 is a MIME- transformation system which is also - based on the following table structure. See :ref:`transformations` for - further information. To use the MIME- transformation system, your - column\_info table has to have the three new columns 'mimetype', - 'transformation', 'transformation\_options'. - - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['column\_info']` (e.g. - ``pma__column_info``) - * to update your PRE-2.5.0 Column\_comments Table use this: and - remember that the Variable in :file:`config.inc.php` has been renamed from - :config:option:`$cfg['Servers'][$i]['column\_comments']` to - :config:option:`$cfg['Servers'][$i]['column\_info']` - - .. code-block:: mysql - - ALTER TABLE `pma__column_comments` - ADD `mimetype` VARCHAR( 255 ) NOT NULL, - ADD `transformation` VARCHAR( 255 ) NOT NULL, - ADD `transformation_options` VARCHAR( 255 ) NOT NULL; - -.. _history: -.. config:option:: $cfg['Servers'][$i]['history'] - - :type: string - :default: ``''`` - - Since release 2.5.0 you can store your :term:`SQL` history, which means all - queries you entered manually into the phpMyAdmin interface. If you don't - want to use a table-based history, you can use the JavaScript-based - history. - - Using that, all your history items are deleted when closing the window. - Using :config:option:`$cfg['QueryHistoryMax']` you can specify an amount of - history items you want to have on hold. On every login, this list gets cut - to the maximum amount. - - The query history is only available if JavaScript is enabled in - your browser. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['history']` (e.g. - ``pma__history``) - -.. _recent: -.. config:option:: $cfg['Servers'][$i]['recent'] - - :type: string - :default: ``''`` - - Since release 3.5.0 you can show recently used tables in the - navigation panel. It helps you to jump across table directly, without - the need to select the database, and then select the table. Using - :config:option:`$cfg['NumRecentTables']` you can configure the maximum number - of recent tables shown. When you select a table from the list, it will jump to - the page specified in :config:option:`$cfg['NavigationTreeDefaultTabTable']`. - - - Without configuring the storage, you can still access the recently used tables, - but it will disappear after you logout. - - To allow the usage of this functionality persistently: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['recent']` (e.g. - ``pma__recent``) - -.. _table_uiprefs: -.. config:option:: $cfg['Servers'][$i]['table_uiprefs'] - - :type: string - :default: ``''`` - - Since release 3.5.0 phpMyAdmin can be configured to remember several - things (sorted column :config:option:`$cfg['RememberSorting']`, column order, - and column visibility from a database table) for browsing tables. Without - configuring the storage, these features still can be used, but the values will - disappear after you logout. - - To allow the usage of these functionality persistently: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['table\_uiprefs']` (e.g. - ``pma__table_uiprefs``) - -.. _configurablemenus: -.. config:option:: $cfg['Servers'][$i]['users'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['usergroups'] - - :type: string - :default: ``''`` - - Since release 4.1.0 you can create different user groups with menu items - attached to them. Users can be assigned to these groups and the logged in - user would only see menu items configured to the usergroup he is assigned to. - To do this it needs two tables "usergroups" (storing allowed menu items for each - user group) and "users" (storing users and their assignments to user groups). - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the correct table names in - :config:option:`$cfg['Servers'][$i]['users']` (e.g. ``pma__users``) and - :config:option:`$cfg['Servers'][$i]['usergroups']` (e.g. ``pma__usergroups``) - -.. _navigationhiding: -.. config:option:: $cfg['Servers'][$i]['navigationhiding'] - - :type: string - :default: ``''`` - - Since release 4.1.0 you can hide/show items in the navigation tree. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['navigationhiding']` (e.g. - ``pma__navigationhiding``) - -.. _tracking: -.. config:option:: $cfg['Servers'][$i]['tracking'] - - :type: string - :default: ``''`` - - Since release 3.3.x a tracking mechanism is available. It helps you to - track every :term:`SQL` command which is - executed by phpMyAdmin. The mechanism supports logging of data - manipulation and data definition statements. After enabling it you can - create versions of tables. - - The creation of a version has two effects: - - * phpMyAdmin saves a snapshot of the table, including structure and - indexes. - * phpMyAdmin logs all commands which change the structure and/or data of - the table and links these commands with the version number. - - Of course you can view the tracked changes. On the :guilabel:`Tracking` - page a complete report is available for every version. For the report you - can use filters, for example you can get a list of statements within a date - range. When you want to filter usernames you can enter \* for all names or - you enter a list of names separated by ','. In addition you can export the - (filtered) report to a file or to a temporary database. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['tracking']` (e.g. - ``pma__tracking``) - - -.. _tracking2: -.. config:option:: $cfg['Servers'][$i]['tracking_version_auto_create'] - - :type: boolean - :default: false - - Whether the tracking mechanism creates versions for tables and views - automatically. - - If this is set to true and you create a table or view with - - * CREATE TABLE ... - * CREATE VIEW ... - - and no version exists for it, the mechanism will create a version for - you automatically. - -.. _tracking3: -.. config:option:: $cfg['Servers'][$i]['tracking_default_statements'] - - :type: string - :default: ``'CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,CREATE INDEX,DROP INDEX,INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,CREATE VIEW,ALTER VIEW,DROP VIEW,CREATE DATABASE,ALTER DATABASE,DROP DATABASE'`` - - Defines the list of statements the auto-creation uses for new - versions. - -.. _tracking4: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_view'] - - :type: boolean - :default: true - - Whether a DROP VIEW IF EXISTS statement will be added as first line to - the log when creating a view. - -.. _tracking5: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_table'] - - :type: boolean - :default: true - - Whether a DROP TABLE IF EXISTS statement will be added as first line - to the log when creating a table. - -.. _tracking6: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_database'] - - :type: boolean - :default: true - - Whether a DROP DATABASE IF EXISTS statement will be added as first - line to the log when creating a database. - -.. _userconfig: -.. config:option:: $cfg['Servers'][$i]['userconfig'] - - :type: string - :default: ``''`` - - Since release 3.4.x phpMyAdmin allows users to set most preferences by - themselves and store them in the database. - - If you don't allow for storing preferences in - :config:option:`$cfg['Servers'][$i]['pmadb']`, users can still personalize - phpMyAdmin, but settings will be saved in browser's local storage, or, it - is is unavailable, until the end of session. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['userconfig']` - - - -.. _designer_coords: -.. config:option:: $cfg['Servers'][$i]['designer_coords'] - - :type: string - :default: ``''`` - - Since release 2.10.0 a Designer interface is available; it permits to - visually manage the relations. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['designer\_coords']` - (e.g. ``pma__designer_coords``) - - - -.. config:option:: $cfg['Servers'][$i]['MaxTableUiprefs'] - - :type: integer - :default: 100 - - Maximum number of rows saved in - :config:option:`$cfg['Servers'][$i]['table_uiprefs']` table. - - When tables are dropped or renamed, - :config:option:`$cfg['Servers'][$i]['table_uiprefs']` may contain invalid data - (referring to tables which no longer exist). We only keep this number of newest - rows in :config:option:`$cfg['Servers'][$i]['table_uiprefs']` and automatically - delete older rows. - -.. config:option:: $cfg['Servers'][$i]['AllowRoot'] - - :type: boolean - :default: true - - Whether to allow root access. This is just a shortcut for the - :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` below. - -.. config:option:: $cfg['Servers'][$i]['AllowNoPassword'] - - :type: boolean - :default: false - - Whether to allow logins without a password. The default value of - ``false`` for this parameter prevents unintended access to a MySQL - server with was left with an empty password for root or on which an - anonymous (blank) user is defined. - -.. _servers_allowdeny_order: -.. config:option:: $cfg['Servers'][$i]['AllowDeny']['order'] - - :type: string - :default: ``''`` - - If your rule order is empty, then :term:`IP` - authorization is disabled. - - If your rule order is set to - ``'deny,allow'`` then the system applies all deny rules followed by - allow rules. Access is allowed by default. Any client which does not - match a Deny command or does match an Allow command will be allowed - access to the server. - - If your rule order is set to ``'allow,deny'`` - then the system applies all allow rules followed by deny rules. Access - is denied by default. Any client which does not match an Allow - directive or does match a Deny directive will be denied access to the - server. - - If your rule order is set to ``'explicit'``, authorization is - performed in a similar fashion to rule order 'deny,allow', with the - added restriction that your host/username combination **must** be - listed in the *allow* rules, and not listed in the *deny* rules. This - is the **most** secure means of using Allow/Deny rules, and was - available in Apache by specifying allow and deny rules without setting - any order. - - Please also see :config:option:`$cfg['TrustedProxies']` for - detecting IP address behind proxies. - -.. _servers_allowdeny_rules: -.. config:option:: $cfg['Servers'][$i]['AllowDeny']['rules'] - - :type: array of strings - :default: array() - - The general format for the rules is as such: - - .. code-block:: none - - <'allow' | 'deny'> [from] - - If you wish to match all users, it is possible to use a ``'%'`` as a - wildcard in the *username* field. - - There are a few shortcuts you can - use in the *ipmask* field as well (please note that those containing - SERVER\_ADDRESS might not be available on all webservers): - - .. code-block:: none - - - 'all' -> 0.0.0.0/0 - 'localhost' -> 127.0.0.1/8 - 'localnetA' -> SERVER_ADDRESS/8 - 'localnetB' -> SERVER_ADDRESS/16 - 'localnetC' -> SERVER_ADDRESS/24 - - Having an empty rule list is equivalent to either using ``'allow % - from all'`` if your rule order is set to ``'deny,allow'`` or ``'deny % - from all'`` if your rule order is set to ``'allow,deny'`` or - ``'explicit'``. - - For the :term:`IP address` matching - system, the following work: - - * ``xxx.xxx.xxx.xxx`` (an exact :term:`IP address`) - * ``xxx.xxx.xxx.[yyy-zzz]`` (an :term:`IP address` range) - * ``xxx.xxx.xxx.xxx/nn`` (CIDR, Classless Inter-Domain Routing type :term:`IP` addresses) - - But the following does not work: - - * ``xxx.xxx.xxx.xx[yyy-zzz]`` (partial :term:`IP` address range) - - For :term:`IPv6` addresses, the following work: - - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx`` (an exact :term:`IPv6` address) - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:[yyyy-zzzz]`` (an :term:`IPv6` address range) - * ``xxxx:xxxx:xxxx:xxxx/nn`` (CIDR, Classless Inter-Domain Routing type :term:`IPv6` addresses) - - But the following does not work: - - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx[yyy-zzz]`` (partial :term:`IPv6` address range) - -.. config:option:: $cfg['Servers'][$i]['SignonScript'] - - :type: string - :default: ``''`` - - Name of PHP script to be sourced and executed to obtain login - credentials. This is alternative approach to session based single - signon. The script needs to provide function - ``get_login_credentials`` which returns list of username and - password, accepting single parameter of existing username (can be - empty). See :file:`examples/signon-script.php` for an example. - -.. config:option:: $cfg['Servers'][$i]['SignonSession'] - - :type: string - :default: ``''`` - - Name of session which will be used for signon authentication method. - You should use something different than ``phpMyAdmin``, because this - is session which phpMyAdmin uses internally. Takes effect only if - :config:option:`$cfg['Servers'][$i]['SignonScript']` is not configured. - -.. config:option:: $cfg['Servers'][$i]['SignonURL'] - - :type: string - :default: ``''`` - - :term:`URL` where user will be redirected - to log in for signon authentication method. Should be absolute - including protocol. - -.. config:option:: $cfg['Servers'][$i]['LogoutURL'] - - :type: string - :default: ``''`` - - :term:`URL` where user will be redirected - after logout (doesn't affect config authentication method). Should be - absolute including protocol. - -.. config:option:: $cfg['Servers'][$i]['StatusCacheDatabases'] - - :type: array of strings - :default: array() - - Enables caching of ``TABLE STATUS`` outputs for specific databases on - this server (in some cases ``TABLE STATUS`` can be very slow, so you - may want to cache it). APC is used (if the PHP extension is available, - if not, this setting is ignored silently). You have to provide - :config:option:`$cfg['Servers'][$i]['StatusCacheLifetime']`. - -.. config:option:: $cfg['Servers'][$i]['StatusCacheLifetime'] - - :type: integer - :default: 0 - - Lifetime in seconds of the ``TABLE STATUS`` cache if - :config:option:`$cfg['Servers'][$i]['StatusCacheDatabases']` is used. - -Generic settings ----------------- - -.. config:option:: $cfg['ServerDefault'] - - :type: integer - :default: 1 - - If you have more than one server configured, you can set - :config:option:`$cfg['ServerDefault']` to any one of them to autoconnect to that - server when phpMyAdmin is started, or set it to 0 to be given a list - of servers without logging in. - - If you have only one server configured, - :config:option:`$cfg['ServerDefault']` MUST be set to that server. - -.. config:option:: $cfg['VersionCheck'] - - :type: boolean - :default: true - - Enables check for latest versions using javascript on main phpMyAdmin - page. - - .. note:: - - This setting can be adjusted by your vendor. - -.. config:option:: $cfg['ProxyUrl'] - - :type: string - :default: "" - - The url of the proxy to be used when phpmyadmin needs to access the outside - intenet such as when retrieving the latest version info or submitting error - reports. You need this if the server where phpMyAdmin is installed does not - have direct access to the internet. - The format is: "hostname:portnumber" - -.. config:option:: $cfg['ProxyUser'] - - :type: string - :default: "" - - The username for authenticating with the proxy. By default, no - authentication is performed. If a username is supplied, Basic - Authentication will be performed. No other types of authentication - are currently supported. - -.. config:option:: $cfg['ProxyPass'] - - :type: string - :default: "" - - The password for authenticating with the proxy. - -.. config:option:: $cfg['MaxDbList'] - - :type: integer - :default: 100 - - The maximum number of database names to be displayed in the main panel's - database list. - -.. config:option:: $cfg['MaxTableList'] - - :type: integer - :default: 250 - - The maximum number of table names to be displayed in the main panel's - list (except on the Export page). This limit is also enforced in the - navigation panel when in Light mode. - -.. config:option:: $cfg['ShowHint'] - - :type: boolean - :default: true - - Whether or not to show hints (for example, hints when hovering over - table headers). - -.. config:option:: $cfg['MaxCharactersInDisplayedSQL'] - - :type: integer - :default: 1000 - - The maximum number of characters when a :term:`SQL` query is displayed. The - default limit of 1000 should be correct to avoid the display of tons of - hexadecimal codes that represent BLOBs, but some users have real - :term:`SQL` queries that are longer than 1000 characters. Also, if a - query's length exceeds this limit, this query is not saved in the history. - -.. config:option:: $cfg['PersistentConnections'] - - :type: boolean - :default: false - - Whether `persistent connections `_ should be used or not. Works with - following extensions: - - * mysql (`mysql\_pconnect `_), - * mysqli (requires PHP 5.3.0 or newer, `more information - `_). - -.. config:option:: $cfg['ForceSSL'] - - :type: boolean - :default: false - - Whether to force using https while accessing phpMyAdmin. - - .. note:: - - In some setups (like separate SSL proxy or load balancer) you might - have to set :config:option:`$cfg['PmaAbsoluteUri']` for correct - redirection. - -.. config:option:: $cfg['ExecTimeLimit'] - - :type: integer [number of seconds] - :default: 300 - - Set the number of seconds a script is allowed to run. If seconds is - set to zero, no time limit is imposed. This setting is used while - importing/exporting dump files but has - no effect when PHP is running in safe mode. - -.. config:option:: $cfg['SessionSavePath'] - - :type: string - :default: ``''`` - - Path for storing session data (`session\_save\_path PHP parameter - `_). - -.. config:option:: $cfg['MemoryLimit'] - - :type: string [number of bytes] - :default: ``'-1'`` - - Set the number of bytes a script is allowed to allocate. If set to - ``'-1'``, no limit is imposed. - - This setting is used while importing/exporting dump files and at some other - places in phpMyAdmin so you definitely don't want to put here a too low - value. It has no effect when PHP is running in safe mode. - - You can also use any string as in :file:`php.ini`, eg. '16M'. Ensure you - don't omit the suffix (16 means 16 bytes!) - -.. config:option:: $cfg['SkipLockedTables'] - - :type: boolean - :default: false - - Mark used tables and make it possible to show databases with locked - tables (since MySQL 3.23.30). - -.. config:option:: $cfg['ShowSQL'] - - :type: boolean - :default: true - - Defines whether :term:`SQL` queries - generated by phpMyAdmin should be displayed or not. - -.. config:option:: $cfg['RetainQueryBox'] - - :type: boolean - :default: false - - Defines whether the :term:`SQL` query box - should be kept displayed after its submission. - -.. config:option:: $cfg['CodemirrorEnable'] - - :type: boolean - :default: true - - Defines whether to use a Javascript code editor for SQL query boxes. - CodeMirror provides syntax highlighting and line numbers. However, - middle-clicking for pasting the clipboard contents in some Linux - distributions (such as Ubuntu) is not supported by all browsers. - -.. config:option:: $cfg['AllowUserDropDatabase'] - - :type: boolean - :default: false - - Defines whether normal users (non-administrator) are allowed to delete - their own database or not. If set as false, the link :guilabel:`Drop - Database` will not be shown, and even a ``DROP DATABASE mydatabase`` will - be rejected. Quite practical for :term:`ISP` 's with many customers. - - .. note:: - - This limitation of :term:`SQL` queries is not - as strict as when using MySQL privileges. This is due to nature of - :term:`SQL` queries which might be quite - complicated. So this choice should be viewed as help to avoid accidental - dropping rather than strict privilege limitation. - -.. config:option:: $cfg['Confirm'] - - :type: boolean - :default: true - - Whether a warning ("Are your really sure...") should be displayed when - you're about to lose data. - -.. config:option:: $cfg['UseDbSearch'] - - :type: boolean - :default: true - - Define whether the "search string inside database" is enabled or not. - -.. config:option:: $cfg['IgnoreMultiSubmitErrors'] - - :type: boolean - :default: false - - Define whether phpMyAdmin will continue executing a multi-query - statement if one of the queries fails. Default is to abort execution. - -Cookie authentication options ------------------------------ - -.. config:option:: $cfg['blowfish_secret'] - - :type: string - :default: ``''`` - - The "cookie" auth\_type uses blowfish algorithm to encrypt the - password. If you are using the "cookie" auth\_type, enter here a - random passphrase of your choice. It will be used internally by the - blowfish algorithm: you won’t be prompted for this passphrase. There - is no maximum length for this secret. - - .. versionchanged:: 3.1.0 - Since version 3.1.0 phpMyAdmin can generate this on the fly, but it - makes a bit weaker security as this generated secret is stored in - session and furthermore it makes impossible to recall user name from - cookie. - -.. config:option:: $cfg['LoginCookieRecall'] - - :type: boolean - :default: true - - Define whether the previous login should be recalled or not in cookie - authentication mode. - - This is automatically disabled if you do not have - configured :config:option:`$cfg['blowfish_secret']`. - -.. config:option:: $cfg['LoginCookieValidity'] - - :type: integer [number of seconds] - :default: 1440 - - Define how long a login cookie is valid. Please note that php - configuration option `session.gc\_maxlifetime - `_ might limit session validity and if the session is lost, - the login cookie is also invalidated. So it is a good idea to set - ``session.gc_maxlifetime`` at least to the same value of - :config:option:`$cfg['LoginCookieValidity']`. - -.. config:option:: $cfg['LoginCookieStore'] - - :type: integer [number of seconds] - :default: 0 - - Define how long login cookie should be stored in browser. Default 0 - means that it will be kept for existing session. This is recommended - for not trusted environments. - -.. config:option:: $cfg['LoginCookieDeleteAll'] - - :type: boolean - :default: true - - If enabled (default), logout deletes cookies for all servers, - otherwise only for current one. Setting this to false makes it easy to - forget to log out from other server, when you are using more of them. - -.. _AllowArbitraryServer: -.. config:option:: $cfg['AllowArbitraryServer'] - - :type: boolean - :default: false - - If enabled, allows you to log in to arbitrary servers using cookie - authentication. - - .. note:: - - Please use this carefully, as this may allow users access to MySQL servers - behind the firewall where your :term:`HTTP` - server is placed. - -.. config:option:: $cfg['CaptchaLoginPublicKey'] - - :type: string - :default: ``''`` - - The public key for the reCaptcha service that can be obtain from - http://www.google.com/recaptcha. - - reCaptcha will be then used in :ref:`cookie`. - -.. config:option:: $cfg['CaptchaLoginPrivateKey'] - - :type: string - :default: ``''`` - - The private key for the reCaptcha service that can be obtain from - http://www.google.com/recaptcha. - - reCaptcha will be then used in :ref:`cookie`. - -Navigation panel setup ----------------------- - -.. config:option:: $cfg['MaxNavigationItems'] - - :type: integer - :default: 250 - - The number of items that can be displayed on each page of the - navigation tree. - -.. config:option:: $cfg['NavigationTreeEnableGrouping'] - - :type: boolean - :default: true - - Defines whether to group the databases based on a common prefix - in their name :config:option:`$cfg['NavigationTreeDbSeparator']`. - -.. config:option:: $cfg['NavigationTreeDbSeparator'] - - :type: string or array - :default: ``'_'`` - - The string used to separate the parts of the database name when - showing them in a tree. Alternatively you can specify more strings in - an array and all of them will be used as a separator. - -.. config:option:: $cfg['NavigationTreeTableSeparator'] - - :type: string or array - :default: ``'__'`` - - Defines a string to be used to nest table spaces. This means if you have - tables like ``first__second__third`` this will be shown as a three-level - hierarchy like: first > second > third. If set to false or empty, the - feature is disabled. NOTE: You should not use this separator at the - beginning or end of a table name or multiple times after another without - any other characters in between. - -.. config:option:: $cfg['NavigationTreeTableLevel'] - - :type: integer - :default: 1 - - Defines how many sublevels should be displayed when splitting up - tables by the above separator. - -.. config:option:: $cfg['NumRecentTables'] - - :type: integer - :default: 10 - - The maximum number of recently used tables shown in the navigation - panel. Set this to 0 (zero) to disable the listing of recent tables. - -.. config:option:: $cfg['NavigationDisplayLogo'] - - :type: boolean - :default: true - - Defines whether or not to display the phpMyAdmin logo at the top of - the navigation panel. - -.. config:option:: $cfg['NavigationLogoLink'] - - :type: string - :default: ``'index.php'`` - - Enter :term:`URL` where logo in the - navigation panel will point to. For use especially with self made - theme which changes this. - -.. config:option:: $cfg['NavigationLogoLinkWindow'] - - :type: string - :default: ``'main'`` - - Whether to open the linked page in the main window (``main``) or in a - new one (``new``). Note: use ``new`` if you are linking to - ``phpmyadmin.net``. - -.. config:option:: $cfg['NavigationTreeDisplayItemFilterMinimum'] - - :type: integer - :default: 30 - - Defines the minimum number of items (tables, views, routines and - events) to display a JavaScript filter box above the list of items in - the navigation tree. - - To disable the filter completely some high number can be used (e.g. 9999) - -.. config:option:: $cfg['NavigationTreeDisplayDbFilterMinimum'] - - :type: integer - :default: 30 - - Defines the minimum number of databases to display a JavaScript filter - box above the list of databases in the navigation tree. - - To disable the filter completely some high number can be used - (e.g. 9999) - -.. config:option:: $cfg['NavigationDisplayServers'] - - :type: boolean - :default: true - - Defines whether or not to display a server choice at the top of the - navigation panel. - -.. config:option:: $cfg['DisplayServersList'] - - :type: boolean - :default: false - - Defines whether to display this server choice as links instead of in a - drop-down. - -.. config:option:: $cfg['NavigationTreeDefaultTabTable'] - - :type: string - :default: ``'tbl_structure.php'`` - - Defines the tab displayed by default when clicking the small icon next - to each table name in the navigation panel. Possible values: - - * ``tbl_structure.php`` - * ``tbl_sql.php`` - * ``tbl_select.php`` - * ``tbl_change.php`` - * ``sql.php`` - -Main panel ----------- - -.. config:option:: $cfg['ShowStats'] - - :type: boolean - :default: true - - Defines whether or not to display space usage and statistics about - databases and tables. Note that statistics requires at least MySQL - 3.23.3 and that, at this date, MySQL doesn't return such information - for Berkeley DB tables. - -.. config:option:: $cfg['ShowServerInfo'] - - :type: boolean - :default: true - - Defines whether to display detailed server information on main page. - You can additionally hide more information by using - :config:option:`$cfg['Servers'][$i]['verbose']`. - -.. config:option:: $cfg['ShowPhpInfo'] - - :type: boolean - :default: false - -.. config:option:: $cfg['ShowChgPassword'] - - :type: boolean - :default: true - -.. config:option:: $cfg['ShowCreateDb'] - - :type: boolean - :default: true - - Defines whether to display the :guilabel:`PHP information` and - :guilabel:`Change password` links and form for creating database or not at - the starting main (right) frame. This setting does not check MySQL commands - entered directly. - - Please note that to block the usage of ``phpinfo()`` in scripts, you have to - put this in your :file:`php.ini`: - - .. code-block:: ini - - disable_functions = phpinfo() - - Also note that enabling the :guilabel:`Change password` link has no effect - with config authentication mode: because of the hard coded password value - in the configuration file, end users can't be allowed to change their - passwords. - -Database structure ------------------- - -.. config:option:: $cfg['ShowDbStructureCreation'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a - "Creation" column that displays when each table was created. - -.. config:option:: $cfg['ShowDbStructureLastUpdate'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a "Last - update" column that displays when each table was last updated. - -.. config:option:: $cfg['ShowDbStructureLastCheck'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a "Last - check" column that displays when each table was last checked. - -.. config:option:: $cfg['HideStructureActions'] - - :type: boolean - :default: true - - Defines whether the table structure actions are hidden under a "More" - drop-down. - -Browse mode ------------ - -.. config:option:: $cfg['TableNavigationLinksMode'] - - :type: string - :default: ``'icons'`` - - Defines whether the table navigation links contain ``'icons'``, ``'text'`` - or ``'both'``. - -.. config:option:: $cfg['ShowAll'] - - :type: boolean - :default: false - - Defines whether a user should be displayed a "Show all" button in browse - mode or not in all cases. By default it is shown only on small tables (less - than 500 rows) to avoid performance issues while getting too many rows. - -.. config:option:: $cfg['MaxRows'] - - :type: integer - :default: 25 - - Number of rows displayed when browsing a result set and no LIMIT - clause is used. If the result set contains more rows, "Previous" and - "Next" links will be shown. Possible values: 25,50,100,250,500. - -.. config:option:: $cfg['Order'] - - :type: string - :default: ``'SMART'`` - - Defines whether columns are displayed in ascending (``ASC``) order, in - descending (``DESC``) order or in a "smart" (``SMART``) order - I.E. - descending order for columns of type TIME, DATE, DATETIME and - TIMESTAMP, ascending order else- by default. - -.. config:option:: $cfg['DisplayBinaryAsHex'] - - :type: boolean - :default: true - - Defines whether the "Show binary contents as HEX" browse option is - ticked by default. - -.. config:option:: $cfg['GridEditing'] - - :type: string - :default: ``'double-click'`` - - Defines which action (``double-click`` or ``click``) triggers grid - editing. Can be deactived with the ``disabled`` value. - -.. config:option:: $cfg['SaveCellsAtOnce'] - - :type: boolean - :default: false - - Defines whether or not to save all edited cells at once for grid - editing. - -Editing mode ------------- - -.. config:option:: $cfg['ProtectBinary'] - - :type: boolean or string - :default: ``'blob'`` - - Defines whether ``BLOB`` or ``BINARY`` columns are protected from - editing when browsing a table's content. Valid values are: - - * ``false`` to allow editing of all columns; - * ``'blob'`` to allow editing of all columns except ``BLOBS``; - * ``'noblob'`` to disallow editing of all columns except ``BLOBS`` (the - opposite of ``'blob'``); - * ``'all'`` to disallow editing of all ``BINARY`` or ``BLOB`` columns. - -.. config:option:: $cfg['ShowFunctionFields'] - - :type: boolean - :default: true - - Defines whether or not MySQL functions fields should be initially - displayed in edit/insert mode. Since version 2.10, the user can toggle - this setting from the interface. - -.. config:option:: $cfg['ShowFieldTypesInDataEditView'] - - :type: boolean - :default: true - - Defines whether or not type fields should be initially displayed in - edit/insert mode. The user can toggle this setting from the interface. - -.. config:option:: $cfg['InsertRows'] - - :type: integer - :default: 2 - - Defines the maximum number of concurrent entries for the Insert page. - -.. config:option:: $cfg['ForeignKeyMaxLimit'] - - :type: integer - :default: 100 - - If there are fewer items than this in the set of foreign keys, then a - drop-down box of foreign keys is presented, in the style described by - the :config:option:`$cfg['ForeignKeyDropdownOrder']` setting. - -.. config:option:: $cfg['ForeignKeyDropdownOrder'] - - :type: array - :default: array('content-id', 'id-content') - - For the foreign key drop-down fields, there are several methods of - display, offering both the key and value data. The contents of the - array should be one or both of the following strings: ``content-id``, - ``id-content``. - -Export and import settings --------------------------- - -.. config:option:: $cfg['ZipDump'] - - :type: boolean - :default: true - -.. config:option:: $cfg['GZipDump'] - - :type: boolean - :default: true - -.. config:option:: $cfg['BZipDump'] - - :type: boolean - :default: true - - Defines whether to allow the use of zip/GZip/BZip2 compression when - creating a dump file - -.. config:option:: $cfg['CompressOnFly'] - - :type: boolean - :default: true - - Defines whether to allow on the fly compression for GZip/BZip2 - compressed exports. This doesn't affect smaller dumps and allows users - to create larger dumps that won't otherwise fit in memory due to php - memory limit. Produced files contain more GZip/BZip2 headers, but all - normal programs handle this correctly. - -.. config:option:: $cfg['Export'] - - :type: array - :default: array(...) - - In this array are defined default parameters for export, names of - items are similar to texts seen on export page, so you can easily - identify what they mean. - -.. config:option:: $cfg['Export']['method'] - - :type: string - :default: ``'quick'`` - - Defines how the export form is displayed when it loads. Valid values - are: - - * ``quick`` to display the minimum number of options to configure - * ``custom`` to display every available option to configure - * ``custom-no-form`` same as ``custom`` but does not display the option - of using quick export - - - -.. config:option:: $cfg['Import'] - - :type: array - :default: array(...) - - In this array are defined default parameters for import, names of - items are similar to texts seen on import page, so you can easily - identify what they mean. - - -Tabs display settings ---------------------- - -.. config:option:: $cfg['TabsMode'] - - :type: string - :default: ``'both'`` - - Defines whether the menu tabs contain ``'icons'``, ``'text'`` or ``'both'``. - -.. config:option:: $cfg['ActionLinksMode'] - - :type: string - :default: ``'both'`` - - If set to ``icons``, will display icons instead of text for db and table - properties links (like :guilabel:`Browse`, :guilabel:`Select`, - :guilabel:`Insert`, ...). Can be set to ``'both'`` - if you want icons AND text. When set to ``text``, will only show text. - -.. config:option:: $cfg['PropertiesNumColumns'] - - :type: integer - :default: 1 - - How many columns will be utilized to display the tables on the database - property view? When setting this to a value larger than 1, the type of the - database will be omitted for more display space. - -.. config:option:: $cfg['DefaultTabServer'] - - :type: string - :default: ``'index.php'`` - - Defines the tab displayed by default on server view. Possible values: - - * ``main.php`` (recommended for multi-user setups) - * ``server_databases.php``, - * ``server_status.php`` - * ``server_variables.php`` - * ``server_privileges.php`` - -.. config:option:: $cfg['DefaultTabDatabase'] - - :type: string - :default: ``'db_structure.php'`` - - Defines the tab displayed by default on database view. Possible - values: - - * ``db_structure.php`` - * ``db_sql.php`` - * ``db_search.php``. - -.. config:option:: $cfg['DefaultTabTable'] - - :type: string - :default: ``'sql.php'`` - - Defines the tab displayed by default on table view. Possible values: - - * ``tbl_structure.php`` - * ``tbl_sql.php`` - * ``tbl_select.php`` - * ``tbl_change.php`` - * ``sql.php`` - -PDF Options ------------ - -.. config:option:: $cfg['PDFPageSizes'] - - :type: array - :default: ``array('A3', 'A4', 'A5', 'letter', 'legal')`` - - Array of possible paper sizes for creating PDF pages. - - You should never need to change this. - -.. config:option:: $cfg['PDFDefaultPageSize'] - - :type: string - :default: ``'A4'`` - - Default page size to use when creating PDF pages. Valid values are any - listed in :config:option:`$cfg['PDFPageSizes']`. - -Languages ---------- - -.. config:option:: $cfg['DefaultLang'] - - :type: string - :default: ``'en'`` - - Defines the default language to use, if not browser-defined or user- - defined. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. - -.. config:option:: $cfg['DefaultConnectionCollation'] - - :type: string - :default: ``'utf8_general_ci'`` - - Defines the default connection collation to use, if not user-defined. - See the `MySQL documentation `_ for list of possible values. This setting is - ignored when connected to Drizzle server. - -.. config:option:: $cfg['Lang'] - - :type: string - :default: not set - - Force language to use. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. - -.. config:option:: $cfg['FilterLanguages'] - - :type: string - :default: ``''`` - - Limit list of available languages to those matching the given regular - expression. For example if you want only Czech and English, you should - set filter to ``'^(cs|en)'``. - -.. config:option:: $cfg['RecodingEngine'] - - :type: string - :default: ``'auto'`` - - You can select here which functions will be used for character set - conversion. Possible values are: - - * auto - automatically use available one (first is tested iconv, then - recode) - * iconv - use iconv or libiconv functions - * recode - use recode\_string function - * mb - use mbstring extension - * none - disable encoding conversion - - Enabled charset conversion activates a pull-down menu in the Export - and Import pages, to choose the character set when exporting a file. - The default value in this menu comes from - :config:option:`$cfg['Export']['charset']` and :config:option:`$cfg['Import']['charset']`. - -.. config:option:: $cfg['IconvExtraParams'] - - :type: string - :default: ``'//TRANSLIT'`` - - Specify some parameters for iconv used in charset conversion. See - `iconv documentation `_ for details. By default - ``//TRANSLIT`` is used, so that invalid characters will be - transliterated. - -.. config:option:: $cfg['AvailableCharsets'] - - :type: array - :default: array(..._ - - Available character sets for MySQL conversion. You can add your own - (any of supported by recode/iconv) or remove these which you don't - use. Character sets will be shown in same order as here listed, so if - you frequently use some of these move them to the top. - -Web server settings -------------------- - -.. config:option:: $cfg['OBGzip'] - - :type: string/boolean - :default: ``'auto'`` - - Defines whether to use GZip output buffering for increased speed in - :term:`HTTP` transfers. Set to - true/false for enabling/disabling. When set to 'auto' (string), - phpMyAdmin tries to enable output buffering and will automatically - disable it if your browser has some problems with buffering. IE6 with - a certain patch is known to cause data corruption when having enabled - buffering. - -.. config:option:: $cfg['TrustedProxies'] - - :type: array - :default: array() - - Lists proxies and HTTP headers which are trusted for - :config:option:`$cfg['Servers'][$i]['AllowDeny']['order']`. This list is by - default empty, you need to fill in some trusted proxy servers if you - want to use rules for IP addresses behind proxy. - - The following example specifies that phpMyAdmin should trust a - HTTP\_X\_FORWARDED\_FOR (``X -Forwarded-For``) header coming from the proxy - 1.2.3.4: - - .. code-block:: php - - $cfg['TrustedProxies'] = array('1.2.3.4' => 'HTTP_X_FORWARDED_FOR'); - - The :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` directive uses the - client's IP address as usual. - -.. config:option:: $cfg['GD2Available'] - - :type: string - :default: ``'auto'`` - - Specifies whether GD >= 2 is available. If yes it can be used for MIME - transformations. Possible values are: - - * auto - automatically detect - * yes - GD 2 functions can be used - * no - GD 2 function cannot be used - -.. config:option:: $cfg['CheckConfigurationPermissions'] - - :type: boolean - :default: true - - We normally check the permissions on the configuration file to ensure - it's not world writable. However, phpMyAdmin could be installed on a - NTFS filesystem mounted on a non-Windows server, in which case the - permissions seems wrong but in fact cannot be detected. In this case a - sysadmin would set this parameter to ``false``. - -.. config:option:: $cfg['LinkLengthLimit'] - - :type: integer - :default: 1000 - - Limit for length of :term:`URL` in links. When length would be above this - limit, it is replaced by form with button. This is required as some web - servers (:term:`IIS`) have problems with long :term:`URL` . - -.. config:option:: $cfg['CSPAllow'] - - :type: string - :default: ``''`` - - Additional string to include in allowed script and image sources in Content - Security Policy header. - - This can be useful when you want to include some external javascript files - in :file:`config.footer.inc.php` or :file:`config.header.inc.php`, which - would be normally not allowed by Content Security Policy. - - To allow some sites, just list them within the string: - - .. code-block:: php - - $cfg['CSPAllow'] = 'example.com example.net'; - - .. versionadded:: 4.0.4 - -.. config:option:: $cfg['DisableMultiTableMaintenance'] - - :type: boolean - :default: false - - In the database Structure page, it's possible to mark some tables then - choose an operation like optimizing for many tables. This can slow - down a server; therefore, setting this to ``true`` prevents this kind - of multiple maintenance operation. - -Theme settings --------------- - -.. config:option:: $cfg['NaviWidth'] - - :type: integer - :default: - - Navigation panel width in pixels. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['NaviBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['MainBackground'] - - :type: string [CSS color for background] - :default: - - The background styles used for both the frames. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['NaviPointerBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['NaviPointerColor'] - - :type: string [CSS color] - :default: - - The style used for the pointer in the navigation panel. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['Border'] - - :type: integer - :default: - - The size of a table's border. See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['ThBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['ThColor'] - - :type: string [CSS color] - :default: - - The style used for table headers. See - :file:`themes/themename/layout.inc.php`. - -.. _cfg_BgcolorOne: -.. config:option:: $cfg['BgOne'] - - :type: string [CSS color] - :default: - - The color (HTML) #1 for table rows. See - :file:`themes/themename/layout.inc.php`. - -.. _cfg_BgcolorTwo: -.. config:option:: $cfg['BgTwo'] - - :type: string [CSS color] - :default: - - The color (HTML) #2 for table rows. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['BrowsePointerBackground'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowsePointerColor'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowseMarkerBackground'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowseMarkerColor'] - - :type: string [CSS color] - :default: - - The colors (HTML) uses for the pointer and the marker in browse mode. - The former feature highlights the row over which your mouse is passing - and the latter lets you visually mark/unmark rows by clicking on the - corresponding checkbox. Highlighting / marking a column is done by - hovering over / clicking the column's header (outside of the text). - See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['FontFamily'] - - :type: string - :default: - - You put here a valid CSS font family value, for example ``arial, sans- - serif``. See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['FontFamilyFixed'] - - :type: string - :default: - - You put here a valid CSS font family value, for example ``monospace``. - This one is used in textarea. See :file:`themes/themename/layout.inc.php`. - -Design customization --------------------- - -.. config:option:: $cfg['NavigationTreePointerEnable'] - - :type: boolean - :default: true - - A value of ``true`` activates the navi pointer. - -.. config:option:: $cfg['BrowsePointerEnable'] - - :type: boolean - :default: true - - Whether to activate the browse pointer or not. - -.. config:option:: $cfg['BrowseMarkerEnable'] - - :type: boolean - :default: true - - Whether to activate the browse marker or not. - -.. config:option:: $cfg['LimitChars'] - - :type: integer - :default: 50 - - Maximum number of characters shown in any non-numeric field on browse - view. Can be turned off by a toggle button on the browse page. - -.. config:option:: $cfg['RowActionLinks'] - - :type: string - :default: ``'left'`` - - Defines the place where table row links (Edit, Copy, Delete) would be - put when tables contents are displayed (you may have them displayed at - the left side, right side, both sides or nowhere). "left" and "right" - are parsed as "top" and "bottom" with vertical display mode. - -.. config:option:: $cfg['DefaultDisplay'] - - :type: string - :default: ``'horizonta'`` - - There are 3 display modes: horizontal, horizontalflipped and vertical. - Define which one is displayed by default. The first mode displays each - row on a horizontal line, the second rotates the headers by 90 - degrees, so you can use descriptive headers even though columns only - contain small values and still print them out. The vertical mode sorts - each row on a vertical lineup. - -.. config:option:: $cfg['RememberSorting'] - - :type: boolean - :default: true - - If enabled, remember the sorting of each table when browsing them. - -.. config:option:: $cfg['HeaderFlipType'] - - :type: string - :default: ``'auto'`` - - The HeaderFlipType can be set to 'auto', 'css' or 'fake'. When using - 'css' the rotation of the header for horizontalflipped is done via - CSS. The CSS transformation currently works only in Internet - Explorer.If set to 'fake' PHP does the transformation for you, but of - course this does not look as good as CSS. The 'auto' option enables - CSS transformation when browser supports it and use PHP based one - otherwise. - -.. config:option:: $cfg['ShowBrowseComments'] - - :type: boolean - :default: true - -.. config:option:: $cfg['ShowPropertyComments'] - - :type: boolean - :default: true - - By setting the corresponding variable to ``true`` you can enable the - display of column comments in Browse or Property display. In browse - mode, the comments are shown inside the header. In property mode, - comments are displayed using a CSS-formatted dashed-line below the - name of the column. The comment is shown as a tool-tip for that - column. - -Text fields ------------ - -.. config:option:: $cfg['CharEditing'] - - :type: string - :default: ``'input'`` - - Defines which type of editing controls should be used for CHAR and - VARCHAR columns. Possible values are: - - * input - this allows to limit size of text to size of columns in MySQL, - but has problems with newlines in columns - * textarea - no problems with newlines in columns, but also no length - limitations - -.. config:option:: $cfg['MinSizeForInputField'] - - :type: integer - :default: 4 - - Defines the minimum size for input fields generated for CHAR and - VARCHAR columns. - -.. config:option:: $cfg['MaxSizeForInputField'] - - :type: integer - :default: 60 - - Defines the maximum size for input fields generated for CHAR and - VARCHAR columns. - -.. config:option:: $cfg['TextareaCols'] - - :type: integer - :default: 40 - -.. config:option:: $cfg['TextareaRows'] - - :type: integer - :default: 15 - -.. config:option:: $cfg['CharTextareaCols'] - - :type: integer - :default: 40 - -.. config:option:: $cfg['CharTextareaRows'] - - :type: integer - :default: 2 - - Number of columns and rows for the textareas. This value will be - emphasized (\*2) for :term:`SQL` query - textareas and (\*1.25) for :term:`SQL` - textareas inside the query window. - - The Char\* values are used for CHAR - and VARCHAR editing (if configured via :config:option:`$cfg['CharEditing']`). - -.. config:option:: $cfg['LongtextDoubleTextarea'] - - :type: boolean - :default: true - - Defines whether textarea for LONGTEXT columns should have double size. - -.. config:option:: $cfg['TextareaAutoSelect'] - - :type: boolean - :default: false - - Defines if the whole textarea of the query box will be selected on - click. - - -SQL query box settings ----------------------- - -.. config:option:: $cfg['SQLQuery']['Edit'] - - :type: boolean - :default: true - - Whether to display an edit link to change a query in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['Explain'] - - :type: boolean - :default: true - - Whether to display a link to explain a SELECT query in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['ShowAsPHP'] - - :type: boolean - :default: true - - Whether to display a link to wrap a query in PHP code in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['Validate'] - - :type: boolean - :default: false - - Whether to display a link to validate a query in any SQL Query box. - - .. seealso:: :config:option:`$cfg['SQLValidator']` - -.. config:option:: $cfg['SQLQuery']['Refresh'] - - :type: boolean - :default: true - - Whether to display a link to refresh a query in any SQL Query box. - -Web server upload/save/import directories ------------------------------------------ - -.. config:option:: $cfg['UploadDir'] - - :type: string - :default: ``''`` - - The name of the directory where :term:`SQL` files have been uploaded by - other means than phpMyAdmin (for example, ftp). Those files are available - under a drop-down box when you click the database or table name, then the - Import tab. - - If - you want different directory for each user, %u will be replaced with - username. - - Please note that the file names must have the suffix ".sql" - (or ".sql.bz2" or ".sql.gz" if support for compressed formats is - enabled). - - This feature is useful when your file is too big to be - uploaded via :term:`HTTP`, or when file - uploads are disabled in PHP. - - .. note:: - - If PHP is running in safe mode, this directory must be owned by the same - user as the owner of the phpMyAdmin scripts. See also :ref:`faq1_16` for - alternatives. - -.. config:option:: $cfg['SaveDir'] - - :type: string - :default: ``''`` - - The name of the directory where dumps can be saved. - - If you want different directory for each user, %u will be replaced with - username. - - Please note that the directory must exist and has to be writable for - the user running webserver. - - .. note:: - - If PHP is running in safe mode, this directory must be owned by the same - user as the owner of the phpMyAdmin scripts. - -.. config:option:: $cfg['TempDir'] - - :type: string - :default: ``''`` - - The name of the directory where temporary files can be stored. - - This is needed for importing ESRI Shapefiles, see :ref:`faq6_30` and to - work around limitations of ``open_basedir`` for uploaded files, see - :ref:`faq1_11`. - - If the directory where phpMyAdmin is installed is - subject to an ``open_basedir`` restriction, you need to create a - temporary directory in some directory accessible by the web server. - However for security reasons, this directory should be outside the - tree published by webserver. If you cannot avoid having this directory - published by webserver, place at least an empty :file:`index.html` file - there, so that directory listing is not possible. - - This directory should have as strict permissions as possible as the only - user required to access this directory is the one who runs the webserver. - If you have root privileges, simply make this user owner of this directory - and make it accessible only by it: - - .. code-block:: sh - - - chown www-data:www-data tmp - chmod 700 tmp - - If you cannot change owner of the directory, you can achieve a similar - setup using :term:`ACL`: - - .. code-block:: sh - - chmod 700 tmp - setfacl -m "g:www-data:rwx" tmp - setfacl -d -m "g:www-data:rwx" tmp - - If neither of above works for you, you can still make the directory - :command:`chmod 777`, but it might impose risk of other users on system - reading and writing data in this directory. - -Various display setting ------------------------ - -.. config:option:: $cfg['ShowDisplayDirection'] - - :type: boolean - :default: false - - Defines whether or not type display direction option is shown when - browsing a table. - -.. config:option:: $cfg['RepeatCells'] - - :type: integer - :default: 100 - - Repeat the headers every X cells, or 0 to deactivate. - -.. config:option:: $cfg['EditInWindow'] - - :type: boolean - :default: true - -.. config:option:: $cfg['QueryWindowWidth'] - - :type: integer - :default: 550 - -.. config:option:: $cfg['QueryWindowHeight'] - - :type: integer - :default: 310 - -.. config:option:: $cfg['QueryHistoryDB'] - - :type: boolean - :default: false - -.. config:option:: $cfg['QueryWindowDefTab'] - - :type: string - :default: ``'sql'`` - -.. config:option:: $cfg['QueryHistoryMax'] - - :type: integer - :default: 25 - - All those variables affect the query window feature. A :term:`SQL` link or - icon is always displayed in the navigation panel. If JavaScript is enabled - in your browser, a click on this opens a distinct query window, which is a - direct interface to enter :term:`SQL` queries. Otherwise, the right panel - changes to display a query box. - - The size of this query window can be customized with - :config:option:`$cfg['QueryWindowWidth']` and - :config:option:`$cfg['QueryWindowHeight']` - both integers for the size in - pixels. Note that normally, those parameters will be modified in - :file:`layout.inc.php`` for the theme you are using. - - If :config:option:`$cfg['EditInWindow']` is set to true, a click on [Edit] - from the results page (in the :guilabel:`Showing Rows` section) opens the - query window and puts the current query inside it. If set to false, - clicking on the link puts the :term:`SQL` query - in the right panel's query box. - - If :config:option:`$cfg['QueryHistoryDB']` is set to ``true``, all your - Queries are logged to a table, which has to be created by you (see - :config:option:`$cfg['Servers'][$i]['history']`). If set to false, all your - queries will be appended to the form, but only as long as your window is - opened they remain saved. - - When using the JavaScript based query window, it will always get updated - when you click on a new table/db to browse and will focus if you click on - :guilabel:`Edit SQL` after using a query. You can suppress updating the - query window by checking the box :guilabel:`Do not overwrite this query - from outside the window` below the query textarea. Then you can browse - tables/databases in the background without losing the contents of the - textarea, so this is especially useful when composing a query with tables - you first have to look in. The checkbox will get automatically checked - whenever you change the contents of the textarea. Please uncheck the button - whenever you definitely want the query window to get updated even though - you have made alterations. - - If :config:option:`$cfg['QueryHistoryDB']` is set to ``true`` you can - specify the amount of saved history items using - :config:option:`$cfg['QueryHistoryMax']`. - - The query window also has a custom tabbed look to group the features. - Using the variable :config:option:`$cfg['QueryWindowDefTab']` you can - specify the default tab to be used when opening the query window. It can be - set to either ``sql``, ``files``, ``history`` or ``full``. - -.. config:option:: $cfg['BrowseMIME'] - - :type: boolean - :default: true - - Enable :ref:`transformations`. - -.. config:option:: $cfg['MaxExactCount'] - - :type: integer - :default: 0 - - For InnoDB tables, determines for how large tables phpMyAdmin should - get the exact row count using ``SELECT COUNT``. If the approximate row - count as returned by ``SHOW TABLE STATUS`` is smaller than this value, - ``SELECT COUNT`` will be used, otherwise the approximate count will be - used. - -.. config:option:: $cfg['MaxExactCountViews'] - - :type: integer - :default: 0 - - For VIEWs, since obtaining the exact count could have an impact on - performance, this value is the maximum to be displayed, using a - ``SELECT COUNT ... LIMIT``. Setting this to 0 bypasses any row - counting. - -.. config:option:: $cfg['NaturalOrder'] - - :type: boolean - :default: true - - Sorts database and table names according to natural order (for - example, t1, t2, t10). Currently implemented in the navigation panel - and in Database view, for the table list. - -.. config:option:: $cfg['InitialSlidersState'] - - :type: string - :default: ``'closed'`` - - If set to ``'closed'``, the visual sliders are initially in a closed - state. A value of ``'open'`` does the reverse. To completely disable - all visual sliders, use ``'disabled'``. - -.. config:option:: $cfg['UserprefsDisallow'] - - :type: array - :default: array() - - Contains names of configuration options (keys in ``$cfg`` array) that - users can't set through user preferences. For possible values, refer - to :file:`libraries/config/user_preferences.forms.php`. - -.. config:option:: $cfg['UserprefsDeveloperTab'] - - :type: boolean - :default: false - - Activates in the user preferences a tab containing options for - developers of phpMyAdmin. - -Page titles ------------ - -.. config:option:: $cfg['TitleTable'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ / @TABLE@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleDatabase'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleServer'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleDefault'] - - :type: string - :default: ``'@HTTP_HOST@ | @PHPMYADMIN@'`` - - Allows you to specify window's title bar. You can use :ref:`faq6_27`. - -Theme manager settings ----------------------- - -.. config:option:: $cfg['ThemePath'] - - :type: string - :default: ``'./themes'`` - - If theme manager is active, use this as the path of the subdirectory - containing all the themes. - -.. config:option:: $cfg['ThemeManager'] - - :type: boolean - :default: true - - Enables user-selectable themes. See :ref:`faqthemes`. - -.. config:option:: $cfg['ThemeDefault'] - - :type: string - :default: ``'pmahomme'`` - - The default theme (a subdirectory under :config:option:`$cfg['ThemePath']`). - -.. config:option:: $cfg['ThemePerServer'] - - :type: boolean - :default: false - - Whether to allow different theme for each server. - -Default queries ---------------- - -.. config:option:: $cfg['DefaultQueryTable'] - - :type: string - :default: ``'SELECT * FROM @TABLE@ WHERE 1'`` - -.. config:option:: $cfg['DefaultQueryDatabase'] - - :type: string - :default: ``''`` - - Default queries that will be displayed in query boxes when user didn't - specify any. You can use standard :ref:`faq6_27`. - -SQL validator settings ----------------------- - -.. config:option:: $cfg['SQLValidator'] - - :type: array - :default: array(...) - - - -.. config:option:: $cfg['SQLValidator']['use'] - - :type: boolean - :default: false - - phpMyAdmin now supports use of the `Mimer SQL Validator - `_ service, as originally - published on `Slashdot - `_. For - help in setting up your system to use the service, see the - :ref:`faqsqlvalidator`. - -.. config:option:: $cfg['SQLValidator']['username'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['SQLValidator']['password'] - - :type: string - :default: ``''`` - - The SOAP service allows you to log in with ``anonymous`` and any password, - so we use those by default. Instead, if you have an account with them, you - can put your login details here, and it will be used in place of the - anonymous login. - -MySQL settings --------------- - -.. config:option:: $cfg['DefaultFunctions'] - - :type: array - :default: array(...) - - Functions selected by default when inserting/changing row, Functions - are defined for meta types as (FUNC\_NUMBER, FUNC\_DATE, FUNC\_CHAR, - FUNC\_SPATIAL, FUNC\_UUID) and for ``first_timestamp``, which is used - for first timestamp column in table. - - -Developer ---------- - -.. warning:: - - These settings might have huge effect on performance or security. - -.. config:option:: $cfg['DBG'] - - :type: array - :default: array(...) - -.. config:option:: $cfg['DBG']['sql'] - - :type: boolean - :default: false - - Enable logging queries and execution times to be - displayed in the bottom of main page (right frame). - -.. config:option:: $cfg['DBG']['demo'] - - :type: boolean - :default: false - - Enable to let server present itself as demo server. - This is used for . - -.. config:option:: $cfg['Error_Handler']['display'] - - :type: boolean - :default: false - - Whether to display errors from PHP or not. - diff --git a/pma12111211/doc/copyright.rst b/pma12111211/doc/copyright.rst deleted file mode 100644 index cfcb8639..00000000 --- a/pma12111211/doc/copyright.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _copyright: - -Copyright -========= - -.. code-block:: none - - Copyright (C) 1998-2000 Tobias Ratschiller - Copyright (C) 2001-2013 Marc Delisle - Olivier Müller - Robin Johnson - Alexander M. Turek - Michal Čihař - Garvin Hicking - Michael Keck - Sebastian Mendel - [check credits for more details] - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License version 2, as -published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see `http://www.gnu.org/licenses/ -`_. diff --git a/pma12111211/doc/credits.rst b/pma12111211/doc/credits.rst deleted file mode 100644 index 61c77587..00000000 --- a/pma12111211/doc/credits.rst +++ /dev/null @@ -1,626 +0,0 @@ -.. _credits: - -Credits -======= - - -Credits, in chronological order -+++++++++++++++++++++++++++++++ - -* Tobias Ratschiller - - * creator of the phpmyadmin project - - * maintainer from 1998 to summer 2000 - -* Marc Delisle - - * multi-language version in December 1998 - - * various fixes and improvements - - * :term:`SQL` analyser (most of it) - - * current project maintainer - - * maintains content on our website - -* Olivier Müller - - * started SourceForge phpMyAdmin project in March 2001 - - * sync'ed different existing CVS trees with new features and bugfixes - - * multi-language improvements, dynamic language selection - - * many bugfixes and improvements - -* Loïc Chapeaux - - * rewrote and optimized javascript, DHTML and DOM stuff - - * rewrote the scripts so they fit the :term:`PEAR` coding standards and - generate XHTML1.0 and CSS2 compliant codes - - * improved the language detection system - - * many bugfixes and improvements - -* Robin Johnson - - * database maintenance controls - - * table type code - - * Host authentication :term:`IP` Allow/Deny - - * DB-based configuration (Not completed) - - * :term:`SQL` parser and pretty-printer - - * :term:`SQL` validator - - * many bugfixes and improvements - -* Armel Fauveau - - * bookmarks feature - - * multiple dump feature - - * gzip dump feature - - * zip dump feature - -* Geert Lund - - * various fixes - - * moderator of the phpMyAdmin former users forum at phpwizard.net - -* Korakot Chaovavanich - - * "insert as new row" feature - -* Pete Kelly - - * rewrote and fix dump code - - * bugfixes - -* Steve Alberty - - * rewrote dump code for PHP4 - - * mySQL table statistics - - * bugfixes - -* Benjamin Gandon - - * main author of the version 2.1.0.1 - - * bugfixes - -* Alexander M. Turek - - * MySQL 4.0 / 4.1 / 5.0 compatibility - - * abstract database interface (PMA\_DBI) with MySQLi support - - * privileges administration - - * :term:`XML` exports - - * various features and fixes - - * German language file updates - -* Mike Beck - - * automatic joins in QBE - - * links column in printview - - * Relation view - -* Michal Čihař - - * enhanced index creation/display feature - - * feature to use a different charset for HTML than for MySQL - - * improvements of export feature - - * various features and fixes - - * Czech language file updates - - * created current website for phpMyAdmin - -* Christophe Gesché from the "MySQL Form Generator for PHPMyAdmin" - (http://sf.net/projects/phpmysqlformgen/) - - * suggested the patch for multiple table printviews - -* Garvin Hicking - - * built the patch for vertical display of table rows - - * built the Javascript based Query window + :term:`SQL` history - - * Improvement of column/db comments - - * (MIME)-Transformations for columns - - * Use custom alias names for Databases in left frame - - * hierarchical/nested table display - - * :term:`PDF`-scratchboard for WYSIWYG- - distribution of :term:`PDF` relations - - * new icon sets - - * vertical display of column properties page - - * some bugfixes, features, support, German language additions - -* Yukihiro Kawada - - * japanese kanji encoding conversion feature - -* Piotr Roszatycki and Dan Wilson - - * the Cookie authentication mode - -* Axel Sander - - * table relation-links feature - -* Maxime Delorme - - * :term:`PDF` schema output, thanks also to - Olivier Plathey for the "FPDF" library (see ), Steven - Wittens for the "UFPDF" library (see ) and - Nicola Asuni for the "TCPDF" library (see ). - -* Olof Edlund - - * :term:`SQL` validator server - -* Ivan R. Lanin - - * phpMyAdmin logo (until June 2004) - -* Mike Cochrane - - * blowfish library from the Horde project (withdrawn in release 4.0) - -* Marcel Tschopp - - * mysqli support - - * many bugfixes and improvements - -* Nicola Asuni (Tecnick.com) - - * TCPDF library (`http://www.tcpdf.org `_) - -* Michael Keck - - * redesign for 2.6.0 - - * phpMyAdmin sailboat logo (June 2004) - -* Mathias Landhäußer - - * Representation at conferences - -* Sebastian Mendel - - * interface improvements - - * various bugfixes - -* Ivan A Kirillov - - * new relations Designer - -* Raj Kissu Rajandran (Google Summer of Code 2008) - - * BLOBstreaming support (withdrawn in release 4.0) - -* Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011) - - * improved setup script - - * user preferences - - * Drizzle support - -* Derek Schaefer (Google Summer of Code 2009) - - * Improved the import system - -* Alexander Rutkowski (Google Summer of Code 2009) - - * Tracking mechanism - -* Zahra Naeem (Google Summer of Code 2009) - - * Synchronization feature (removed in release 4.0) - -* Tomáš Srnka (Google Summer of Code 2009) - - * Replication support - -* Muhammad Adnan (Google Summer of Code 2010) - - * Relation schema export to multiple formats - -* Lori Lee (Google Summer of Code 2010) - - * User interface improvements - - * ENUM/SET editor - - * Simplified interface for export/import - -* Ninad Pundalik (Google Summer of Code 2010) - - * AJAXifying the interface - -* Martynas Mickevičius (Google Summer of Code 2010) - - * Charts - -* Barrie Leslie - - * BLOBstreaming support with PBMS PHP extension (withdrawn in release - 4.0) - -* Ankit Gupta (Google Summer of Code 2010) - - * Visual query builder - -* Madhura Jayaratne (Google Summer of Code 2011) - - * OpenGIS support - -* Ammar Yasir (Google Summer of Code 2011) - - * Zoom search - -* Aris Feryanto (Google Summer of Code 2011) - - * Browse-mode improvements - -* Thilanka Kaushalya (Google Summer of Code 2011) - - * AJAXification - -* Tyron Madlener (Google Summer of Code 2011) - - * Query statistics and charts for the status page - -* Zarubin Stas (Google Summer of Code 2011) - - * Automated testing - -* Rouslan Placella (Google Summer of Code 2011 and 2012) - - * Improved support for Stored Routines, Triggers and Events - - * Italian translation updates - - * Removal of frames, new navigation - -* Dieter Adriaenssens - - * Various bugfixes - - * Dutch translation updates - -* Alex Marin (Google Summer of Code 2012) - - * New plugins and properties system - -* Thilina Buddika Abeyrathna (Google Summer of Code 2012) - - * Refactoring - -* Atul Pratap Singh (Google Summer of Code 2012) - - * Refactoring - -* Chanaka Indrajith (Google Summer of Code 2012) - - * Refactoring - -* Yasitha Pandithawatta (Google Summer of Code 2012) - - * Automated testing - -* Jim Wigginton (phpseclib.sourceforge.net) - - * phpseclib - -* Bin Zu (Google Summer of Code 2013) - - * Refactoring - -* Supun Nakandala (Google Summer of Code 2013) - - * Refactoring - -* Mohamed Ashraf (Google Summer of Code 2013) - - * AJAX error reporting - -* Adam Kang (Google Summer of Code 2013) - - * Automated testing - -* Ayush Chaudhary (Google Summer of Code 2013) - - * Automated testing - -* Kasun Chathuranga (Google Summer of Code 2013) - - * Interface improvements - - -And also to the following people who have contributed minor changes, -enhancements, bugfixes or support for a new language since version -2.1.0: - -Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita, -Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats -Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger, -Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, -Andreas Pauley, Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval -Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, -Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V., -Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay, -Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael -Winningham, Vilius Zigmantas, "Manuzhai". - - -Translators -+++++++++++ - -Following people have contributed to translation of phpMyAdmin: - -* Arabic - - * Abdullah Al-Saedi - -* Bulgarian - - * stoyanster - -* Catalan - - * Xavier Navarro - -* Czech - - * Michal Čihař - -* Danish - - * opensource - * Jørgen Thomsen - -* German - - * mrbendig - * torsten.funck - * Sven Strickroth - * typo3 - * Jo Michael - -* Greek - - * Panagiotis Papazoglou - -* English (United Kingdom) - - * Robert Readman - -* Spanish - - * Matías Bellone - -* French - - * Marc Delisle - -* Hindi - - * u4663530 - * rsedwardian - -* Hungarian - - * gergo314 - -* Italian - - * Rouslan Placella - -* Japanese - - * Yuichiro - -* Lithuanian - - * Kęstutis - -* Norwegian Bokmål - - * Sven-Erik Andersen - -* Dutch - - * Dieter Adriaenssens - * Herman van Rink - -* Polish - - * Stanisław Krukowski - * Marcin Kozioł - -* Portuguese - - * JoaoTMDias - -* Portuguese (Brazil) - - * wiltave - * emerson4br - -* Romanian - - * alexukf - -* Russian - - * Victor Volkov - -* Sinhala - - * Madhura Jayaratne - -* Slovak - - * Martin Lacina - -* Slovenian - - * Domen - -* Swedish - - * stefan - -* Tamil - - * ysajeepan - -* Telugu - - * veeven - -* Thai - - * kanitchet - -* Turkish - - * Burak Yavuz - -* Uighur - - * gheni - -* Ukrainian - - * typim - * oleg-ilnytskyi - -* Urdu - - * Mehbooob Khan - -* Simplified Chinese - - * shanyan baishui - -* Traditional Chinese - - * star - -Documentation translators -+++++++++++++++++++++++++ - -Following people have contributed to translation of phpMyAdmin documentation: - -* Czech - - * Michal Čihař - -* Greek - - * Panagiotis Papazoglou - -* English (United Kingdom) - - * Robert Readman - -* French - - * Cédric Corazza - -* Japanese - - * Yuichiro Takahashi - -* Polish - - * Stanisław Krukowski - -* Portuguese (Brazil) - - * mjaning - -* Slovenian - - * Domen - -Original Credits of Version 2.1.0 -+++++++++++++++++++++++++++++++++ - -This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his -idea to create a web-based interface to MySQL using PHP3. Although I -have not used any of his source-code, there are some concepts I've -borrowed from him. phpMyAdmin was created because Peter told me he -wasn't going to further develop his (great) tool. - -Thanks go to - -* Amalesh Kempf who contributed the - code for the check when dropping a table or database. He also - suggested that you should be able to specify the primary key on - tbl\_create.php3. To version 1.1.1 he contributed the ldi\_\*.php3-set - (Import text-files) as well as a bug-report. Plus many smaller - improvements. -* Jan Legenhausen : He made many of the changes that - were introduced in 1.3.0 (including quite significant ones like the - authentication). For 1.4.1 he enhanced the table-dump feature. Plus - bug-fixes and help. -* Marc Delisle made phpMyAdmin - language-independent by outsourcing the strings to a separate file. He - also contributed the French translation. -* Alexandr Bravo who contributed - tbl\_select.php3, a feature to display only some columns from a table. -* Chris Jackson added support for MySQL functions - in tbl\_change.php3. He also added the "Query by Example" feature in - 2.0. -* Dave Walton added support for multiple - servers and is a regular contributor for bug-fixes. -* Gabriel Ash contributed the random access - features for 2.0.6. - -The following people have contributed minor changes, enhancements, -bugfixes or support for a new language: - -Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas -Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel -Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, -Jannis Hermanns, G. Wieggers. - -And thanks to everyone else who sent me email with suggestions, bug- -reports and or just some feedback. - diff --git a/pma12111211/doc/developers.rst b/pma12111211/doc/developers.rst deleted file mode 100644 index 55745276..00000000 --- a/pma12111211/doc/developers.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. _developers: - -Developers Information -====================== - -phpMyAdmin is Open Source, so you're invited to contribute to it. Many -great features have been written by other people and you too can help -to make phpMyAdmin a useful tool. - -You can check out all the possibilities to contribute in the -`contribute section on our website -`_. \ No newline at end of file diff --git a/pma12111211/doc/doctrees/config.doctree b/pma12111211/doc/doctrees/config.doctree deleted file mode 100644 index d08a99cc..00000000 Binary files a/pma12111211/doc/doctrees/config.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/copyright.doctree b/pma12111211/doc/doctrees/copyright.doctree deleted file mode 100644 index 80552098..00000000 Binary files a/pma12111211/doc/doctrees/copyright.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/credits.doctree b/pma12111211/doc/doctrees/credits.doctree deleted file mode 100644 index 73b81d87..00000000 Binary files a/pma12111211/doc/doctrees/credits.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/developers.doctree b/pma12111211/doc/doctrees/developers.doctree deleted file mode 100644 index 5dd15d98..00000000 Binary files a/pma12111211/doc/doctrees/developers.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/environment.pickle b/pma12111211/doc/doctrees/environment.pickle deleted file mode 100644 index b5f1b360..00000000 Binary files a/pma12111211/doc/doctrees/environment.pickle and /dev/null differ diff --git a/pma12111211/doc/doctrees/faq.doctree b/pma12111211/doc/doctrees/faq.doctree deleted file mode 100644 index 350917c1..00000000 Binary files a/pma12111211/doc/doctrees/faq.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/glossary.doctree b/pma12111211/doc/doctrees/glossary.doctree deleted file mode 100644 index a7e322d6..00000000 Binary files a/pma12111211/doc/doctrees/glossary.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/index.doctree b/pma12111211/doc/doctrees/index.doctree deleted file mode 100644 index 644120cd..00000000 Binary files a/pma12111211/doc/doctrees/index.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/intro.doctree b/pma12111211/doc/doctrees/intro.doctree deleted file mode 100644 index 2ad1d811..00000000 Binary files a/pma12111211/doc/doctrees/intro.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/other.doctree b/pma12111211/doc/doctrees/other.doctree deleted file mode 100644 index 5fa4a00e..00000000 Binary files a/pma12111211/doc/doctrees/other.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/privileges.doctree b/pma12111211/doc/doctrees/privileges.doctree deleted file mode 100644 index faa962f2..00000000 Binary files a/pma12111211/doc/doctrees/privileges.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/require.doctree b/pma12111211/doc/doctrees/require.doctree deleted file mode 100644 index 921e5b8e..00000000 Binary files a/pma12111211/doc/doctrees/require.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/setup.doctree b/pma12111211/doc/doctrees/setup.doctree deleted file mode 100644 index 718412c9..00000000 Binary files a/pma12111211/doc/doctrees/setup.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/transformations.doctree b/pma12111211/doc/doctrees/transformations.doctree deleted file mode 100644 index 76edaa2d..00000000 Binary files a/pma12111211/doc/doctrees/transformations.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/user.doctree b/pma12111211/doc/doctrees/user.doctree deleted file mode 100644 index c1f5e810..00000000 Binary files a/pma12111211/doc/doctrees/user.doctree and /dev/null differ diff --git a/pma12111211/doc/doctrees/vendors.doctree b/pma12111211/doc/doctrees/vendors.doctree deleted file mode 100644 index 571387d4..00000000 Binary files a/pma12111211/doc/doctrees/vendors.doctree and /dev/null differ diff --git a/pma12111211/doc/faq.rst b/pma12111211/doc/faq.rst deleted file mode 100644 index 4265c5b0..00000000 --- a/pma12111211/doc/faq.rst +++ /dev/null @@ -1,2015 +0,0 @@ -.. _faq: - -FAQ - Frequently Asked Questions -================================ - -Please have a look at our `Link section -`_ on the official -phpMyAdmin homepage for in-depth coverage of phpMyAdmin's features and -or interface. - -.. _faqserver: - -Server -++++++ - -.. _faq1_1: - -1.1 My server is crashing each time a specific action is required or phpMyAdmin sends a blank page or a page full of cryptic characters to my browser, what can I do? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in your -:file:`config.inc.php` file and the ``zlib.output_compression`` directive to -``Off`` in your php configuration file. - -.. _faq1_2: - -1.2 My Apache server crashes when using phpMyAdmin. ---------------------------------------------------- - -You should first try the latest versions of Apache (and possibly MySQL). If -your server keeps crashing, please ask for help in the various Apache support -groups. - -.. seealso:: :ref:`faq1_1` - -.. _faq1_3: - -1.3 (withdrawn). ----------------- - -.. _faq1_4: - -1.4 Using phpMyAdmin on IIS, I'm displayed the error message: "The specified CGI application misbehaved by not returning a complete set of HTTP headers ...". -------------------------------------------------------------------------------------------------------------------------------------------------------------- - -You just forgot to read the *install.txt* file from the PHP -distribution. Have a look at the last message in this `PHP bug report #12061 -`_ from the official PHP bug -database. - -.. _faq1_5: - -1.5 Using phpMyAdmin on IIS, I'm facing crashes and/or many error messages with the HTTP. ------------------------------------------------------------------------------------------ - -This is a known problem with the PHP :term:`ISAPI` filter: it's not so stable. -Please use instead the cookie authentication mode. - -.. _faq1_6: - -1.6 I can't use phpMyAdmin on PWS: nothing is displayed! --------------------------------------------------------- - -This seems to be a PWS bug. Filippo Simoncini found a workaround (at -this time there is no better fix): remove or comment the ``DOCTYPE`` -declarations (2 lines) from the scripts :file:`libraries/Header.class.php` -and :file:`index.php`. - -.. _faq1_7: - -1.7 How can I GZip a dump or a CSV export? It does not seem to work. --------------------------------------------------------------------- - -This feature is based on the ``gzencode()`` -PHP function to be more independent of the platform (Unix/Windows, -Safe Mode or not, and so on). So, you must have Zlib support -(``--with-zlib``). - -.. _faq1_8: - -1.8 I cannot insert a text file in a table, and I get an error about safe mode being in effect. ------------------------------------------------------------------------------------------------ - -Your uploaded file is saved by PHP in the "upload dir", as defined in -:file:`php.ini` by the variable ``upload_tmp_dir`` (usually the system -default is */tmp*). We recommend the following setup for Apache -servers running in safe mode, to enable uploads of files while being -reasonably secure: - -* create a separate directory for uploads: :command:`mkdir /tmp/php` -* give ownership to the Apache server's user.group: :command:`chown - apache.apache /tmp/php` -* give proper permission: :command:`chmod 600 /tmp/php` -* put ``upload_tmp_dir = /tmp/php`` in :file:`php.ini` -* restart Apache - -.. _faq1_9: - -1.9 (withdrawn). ----------------- - -.. _faq1_10: - -1.10 I'm having troubles when uploading files with phpMyAdmin running on a secure server. My browser is Internet Explorer and I'm using the Apache server. ----------------------------------------------------------------------------------------------------------------------------------------------------------- - -As suggested by "Rob M" in the phpWizard forum, add this line to your -*httpd.conf*: - -.. code-block:: apache - - SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown - -It seems to clear up many problems between Internet Explorer and SSL. - -.. _faq1_11: - -1.11 I get an 'open\_basedir restriction' while uploading a file from the query box. ------------------------------------------------------------------------------------- - -Since version 2.2.4, phpMyAdmin supports servers with open\_basedir -restrictions. However you need to create temporary directory and configure it -as :config:option:`$cfg['TempDir']`. The uploaded files will be moved there, -and after execution of your :term:`SQL` commands, removed. - -.. _faq1_12: - -1.12 I have lost my MySQL root password, what can I do? -------------------------------------------------------- - -The MySQL manual explains how to `reset the permissions -`_. - -.. _faq1_13: - -1.13 (withdrawn). ------------------ - -.. _faq1_14: - -1.14 (withdrawn). ------------------ - -.. _faq1_15: - -1.15 I have problems with *mysql.user* column names. ----------------------------------------------------- - -In previous MySQL versions, the ``User`` and ``Password``columns were -named ``user`` and ``password``. Please modify your column names to -align with current standards. - -.. _faq1_16: - -1.16 I cannot upload big dump files (memory, HTTP or timeout problems). ------------------------------------------------------------------------ - -Starting with version 2.7.0, the import engine has been re–written and -these problems should not occur. If possible, upgrade your phpMyAdmin -to the latest version to take advantage of the new import features. - -The first things to check (or ask your host provider to check) are the -values of ``upload_max_filesize``, ``memory_limit`` and -``post_max_size`` in the :file:`php.ini` configuration file. All of these -three settings limit the maximum size of data that can be submitted -and handled by PHP. One user also said that ``post_max_size`` and -``memory_limit`` need to be larger than ``upload_max_filesize``. -There exist several workarounds if your upload is too big or your -hosting provider is unwilling to change the settings: - -* Look at the :config:option:`$cfg['UploadDir']` feature. This allows one to upload a file to the server - via scp, ftp, or your favorite file transfer method. PhpMyAdmin is - then able to import the files from the temporary directory. More - information is available in the :ref:`config` of this document. -* Using a utility (such as `BigDump - `_) to split the files before - uploading. We cannot support this or any third party applications, but - are aware of users having success with it. -* If you have shell (command line) access, use MySQL to import the files - directly. You can do this by issuing the "source" command from within - MySQL: - - .. code-block:: mysql - - source filename.sql; - -.. _faq1_17: - -1.17 Which MySQL versions does phpMyAdmin support? --------------------------------------------------- - -Since phpMyAdmin 3.0.x, only MySQL 5.0.1 and newer are supported. For -older MySQL versions, you need to use the latest 2.x branch. -phpMyAdmin can connect to your MySQL server using PHP's classic `MySQL -extension `_ as well as the `improved MySQL -extension (MySQLi) `_ that is available in PHP -5.0. The latter one should be used unless you have a good reason not -to do so. When compiling PHP, we strongly recommend that you manually -link the MySQL extension of your choice to a MySQL client library of -at least the same minor version since the one that is bundled with -some PHP distributions is rather old and might cause problems see -:ref:`faq1_17a`. `MariaDB `_ is also supported -(versions 5.1 and 5.2 were tested). - -.. versionchanged:: 3.5 - Since phpMyAdmin 3.5 `Drizzle `_ is supported. - -.. _faq1_17a: - -1.17a I cannot connect to the MySQL server. It always returns the error message, "Client does not support authentication protocol requested by server; consider upgrading MySQL client" ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -You tried to access MySQL with an old MySQL client library. The -version of your MySQL client library can be checked in your phpinfo() -output. In general, it should have at least the same minor version as -your server - as mentioned in :ref:`faq1_17`. This problem is -generally caused by using MySQL version 4.1 or newer. MySQL changed -the authentication hash and your PHP is trying to use the old method. -The proper solution is to use the `mysqli extension -`_ with the proper client library to match -your MySQL installation. Your chosen extension is specified in -:config:option:`$cfg['Servers'][$i]['extension']`. More -information (and several workarounds) are located in the `MySQL -Documentation `_. - -.. _faq1_18: - -1.18 (withdrawn). ------------------ - -.. _faq1_19: - -1.19 I can't run the "display relations" feature because the script seems not to know the font face I'm using! --------------------------------------------------------------------------------------------------------------- - -The :term:`TCPDF` library we're using for this feature requires some special -files to use font faces. Please refers to the `TCPDF manual -`_ to build these files. - -.. _faqmysql: - -1.20 I receive the error "cannot load MySQL extension, please check PHP Configuration". ---------------------------------------------------------------------------------------- - -To connect to a MySQL server, PHP needs a set of MySQL functions -called "MySQL extension". This extension may be part of the PHP -distribution (compiled-in), otherwise it needs to be loaded -dynamically. Its name is probably *mysql.so* or *php\_mysql.dll*. -phpMyAdmin tried to load the extension but failed. Usually, the -problem is solved by installing a software package called "PHP-MySQL" -or something similar. - -There are currently two interfaces PHP provides as MySQL extensions - ``mysql`` -and ``mysqli`` and you can change which of then is being used by -:config:option:`$cfg['Servers'][$i]['extension']`. - -.. _faq1_21: - -1.21 I am running the CGI version of PHP under Unix, and I cannot log in using cookie auth. -------------------------------------------------------------------------------------------- - -In :file:`php.ini`, set ``mysql.max_links`` higher than 1. - -.. _faq1_22: - -1.22 I don't see the "Location of text file" field, so I cannot upload. ------------------------------------------------------------------------ - -This is most likely because in :file:`php.ini`, your ``file_uploads`` -parameter is not set to "on". - -.. _faq1_23: - -1.23 I'm running MySQL on a Win32 machine. Each time I create a new table the table and column names are changed to lowercase! ------------------------------------------------------------------------------------------------------------------------------- - -This happens because the MySQL directive ``lower_case_table_names`` -defaults to 1 (``ON``) in the Win32 version of MySQL. You can change -this behavior by simply changing the directive to 0 (``OFF``): Just -edit your ``my.ini`` file that should be located in your Windows -directory and add the following line to the group [mysqld]: - -.. code-block:: ini - - set-variable = lower_case_table_names=0 - -Next, save the file and restart the MySQL service. You can always -check the value of this directive using the query - -.. code-block:: mysql - - SHOW VARIABLES LIKE 'lower_case_table_names'; - -.. _faq1_24: - -1.24 (withdrawn). ------------------ - -.. _faq1_25: - -1.25 I am running Apache with mod\_gzip-1.3.26.1a on Windows XP, and I get problems, such as undefined variables when I run a SQL query. ----------------------------------------------------------------------------------------------------------------------------------------- - -A tip from Jose Fandos: put a comment on the following two lines in -httpd.conf, like this: - -.. code-block:: apache - - - # mod_gzip_item_include file \.php$ - # mod_gzip_item_include mime "application/x-httpd-php.*" - -as this version of mod\_gzip on Apache (Windows) has problems handling -PHP scripts. Of course you have to restart Apache. - -.. _faq1_26: - -1.26 I just installed phpMyAdmin in my document root of IIS but I get the error "No input file specified" when trying to run phpMyAdmin. ----------------------------------------------------------------------------------------------------------------------------------------- - -This is a permission problem. Right-click on the phpmyadmin folder and -choose properties. Under the tab Security, click on "Add" and select -the user "IUSR\_machine" from the list. Now set his permissions and it -should work. - -.. _faq1_27: - -1.27 I get empty page when I want to view huge page (eg. db\_structure.php with plenty of tables). --------------------------------------------------------------------------------------------------- - -This was caused by a `PHP bug `_ that occur when -GZIP output buffering is enabled. If you turn off it (by -:config:option:`$cfg['OBGzip']` in :file:`config.inc.php`), it should work. -This bug will has been fixed in PHP 5.0.0. - -.. _faq1_28: - -1.28 My MySQL server sometimes refuses queries and returns the message 'Errorcode: 13'. What does this mean? ------------------------------------------------------------------------------------------------------------- - -This can happen due to a MySQL bug when having database / table names -with upper case characters although ``lower_case_table_names`` is -set to 1. To fix this, turn off this directive, convert all database -and table names to lower case and turn it on again. Alternatively, -there's a bug-fix available starting with MySQL 3.23.56 / -4.0.11-gamma. - -.. _faq1_29: - -1.29 When I create a table or modify a column, I get an error and the columns are duplicated. ---------------------------------------------------------------------------------------------- - -It is possible to configure Apache in such a way that PHP has problems -interpreting .php files. - -The problems occur when two different (and conflicting) set of -directives are used: - -.. code-block:: apache - - - SetOutputFilter PHP - SetInputFilter PHP - -and - -.. code-block:: apache - - AddType application/x-httpd-php .php - -In the case we saw, one set of directives was in -``/etc/httpd/conf/httpd.conf``, while the other set was in -``/etc/httpd/conf/addon-modules/php.conf``. The recommended way is -with ``AddType``, so just comment out the first set of lines and -restart Apache: - -.. code-block:: apache - - - #SetOutputFilter PHP - #SetInputFilter PHP - -.. _faq1_30: - -1.30 I get the error "navigation.php: Missing hash". ----------------------------------------------------- - -This problem is known to happen when the server is running Turck -MMCache but upgrading MMCache to version 2.3.21 solves the problem. - -.. _faq1_31: - -1.31 Does phpMyAdmin support PHP 5? ------------------------------------ - -Yes. - -Since release 4.1 phpMyAdmin supports only PHP 5.3 and newer. For PHP 5.2 you -can use 4.0.x releases. - -.. _faq1_32: - -1.32 Can I use HTTP authentication with IIS? --------------------------------------------- - -Yes. This procedure was tested with phpMyAdmin 2.6.1, PHP 4.3.9 in -:term:`ISAPI` mode under :term:`IIS` 5.1. - -#. In your :file:`php.ini` file, set ``cgi.rfc2616_headers = 0`` -#. In ``Web Site Properties -> File/Directory Security -> Anonymous - Access`` dialog box, check the ``Anonymous access`` checkbox and - uncheck any other checkboxes (i.e. uncheck ``Basic authentication``, - ``Integrated Windows authentication``, and ``Digest`` if it's - enabled.) Click ``OK``. -#. In ``Custom Errors``, select the range of ``401;1`` through ``401;5`` - and click the ``Set to Default`` button. - -.. seealso:: :rfc:`2616` - -.. _faq1_33: - -1.33 (withdrawn). ------------------ - -.. _faq1_34: - -1.34 Can I access directly to database or table pages? ------------------------------------------------------- - -Yes. Out of the box, you can use :term:`URL` like -http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script. -For ``server`` you use the server number -which refers to the order of the server paragraph in -:file:`config.inc.php`. Table and script parts are optional. If you want -http://server/phpMyAdmin/database[/table][/script] :term:`URL`, you need to do some configuration. Following -lines apply only for `Apache `_ web server. -First make sure, that you have enabled some features within global -configuration. You need ``Options FollowSymLinks`` and ``AllowOverride -FileInfo`` enabled for directory where phpMyAdmin is installed and you -need mod\_rewrite to be enabled. Then you just need to create -following :term:`.htaccess` file in root folder of phpMyAdmin installation (don't -forget to change directory name inside of it): - -.. code-block:: apache - - - RewriteEngine On - RewriteBase /path_to_phpMyAdmin - RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R] - RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R] - RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R] - RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R] - -.. _faq1_35: - -1.35 Can I use HTTP authentication with Apache CGI? ---------------------------------------------------- - -Yes. However you need to pass authentication variable to :term:`CGI` using -following rewrite rule: - -.. code-block:: apache - - - RewriteEngine On - RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] - -.. _faq1_36: - -1.36 I get an error "500 Internal Server Error". ------------------------------------------------- - -There can be many explanations to this and a look at your server's -error log file might give a clue. - -.. _faq1_37: - -1.37 I run phpMyAdmin on cluster of different machines and password encryption in cookie auth doesn't work. ------------------------------------------------------------------------------------------------------------ - -If your cluster consist of different architectures, PHP code used for -encryption/decryption won't work correct. This is caused by use of -pack/unpack functions in code. Only solution is to use mcrypt -extension which works fine in this case. - -.. _faq1_38: - -1.38 Can I use phpMyAdmin on a server on which Suhosin is enabled? ------------------------------------------------------------------- - -Yes but the default configuration values of Suhosin are known to cause -problems with some operations, for example editing a table with many -columns and no primary key or with textual primary key. - -Suhosin configuration might lead to malfunction in some cases and it -can not be fully avoided as phpMyAdmin is kind of application which -needs to transfer big amounts of columns in single HTTP request, what -is something what Suhosin tries to prevent. Generally all -``suhosin.request.*``, ``suhosin.post.*`` and ``suhosin.get.*`` -directives can have negative effect on phpMyAdmin usability. You can -always find in your error logs which limit did cause dropping of -variable, so you can diagnose the problem and adjust matching -configuration variable. - -The default values for most Suhosin configuration options will work in -most scenarios, however you might want to adjust at least following -parameters: - -* `suhosin.request.max\_vars `_ should - be increased (eg. 2048) -* `suhosin.post.max\_vars `_ should be - increased (eg. 2048) -* `suhosin.request.max\_array\_index\_length `_ - should be increased (eg. 256) -* `suhosin.post.max\_array\_index\_length `_ - should be increased (eg. 256) -* `suhosin.request.max\_totalname\_length `_ - should be increased (eg. 8192) -* `suhosin.post.max\_totalname\_length `_ should be - increased (eg. 8192) -* `suhosin.get.max\_value\_length `_ - should be increased (eg. 1024) -* `suhosin.sql.bailout\_on\_error `_ - needs to be disabled (the default) -* `suhosin.log.\* `_ should not - include :term:`SQL`, otherwise you get big - slowdown - -You can also disable the warning using the :config:option:`$cfg['SuhosinDisableWarning']`. - -.. _faq1_39: - -1.39 When I try to connect via https, I can log in, but then my connection is redirected back to http. What can cause this behavior? ------------------------------------------------------------------------------------------------------------------------------------- - -Be sure that you have enabled ``SSLOptions`` and ``StdEnvVars`` in -your Apache configuration. - -.. seealso:: - -.. _faq1_40: - -1.40 When accessing phpMyAdmin via an Apache reverse proxy, cookie login does not work. ---------------------------------------------------------------------------------------- - -To be able to use cookie auth Apache must know that it has to rewrite -the set-cookie headers. Example from the Apache 2.2 documentation: - -.. code-block:: apache - - - ProxyPass /mirror/foo/ http://backend.example.com/ - ProxyPassReverse /mirror/foo/ http://backend.example.com/ - ProxyPassReverseCookieDomain backend.example.com public.example.com - ProxyPassReverseCookiePath / /mirror/foo/ - -Note: if the backend url looks like http://host/~user/phpmyadmin, the -tilde (~) must be url encoded as %7E in the ProxyPassReverse\* lines. -This is not specific to phpmyadmin, it's just the behavior of Apache. - -.. code-block:: apache - - - ProxyPass /mirror/foo/ http://backend.example.com/~user/phpmyadmin - ProxyPassReverse /mirror/foo/ http://backend.example.com/%7Euser/phpmyadmin - ProxyPassReverseCookiePath /%7Euser/phpmyadmin /mirror/foo - -.. seealso:: - -.. _faq1_41: - -1.41 When I view a database and ask to see its privileges, I get an error about an unknown column. --------------------------------------------------------------------------------------------------- - -The MySQL server's privilege tables are not up to date, you need to -run the :command:`mysql_upgrade` command on the server. - -.. _faq1_42: - -1.42 How can I prevent robots from accessing phpMyAdmin? --------------------------------------------------------- - -You can add various rules to :term:`.htaccess` to filter access based on user agent -field. This is quite easy to circumvent, but could prevent at least -some robots accessing your installation. - -.. code-block:: apache - - - RewriteEngine on - - # Allow only GET and POST verbs - RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR] - - # Ban Typical Vulnerability Scanners and others - # Kick out Script Kiddies - RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR] - RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR] - RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR] - - # Ban Search Engines, Crawlers to your administrative panel - # No reasons to access from bots - # Ultimately Better than the useless robots.txt - # Did google respect robots.txt? - # Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled" - RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC] - RewriteRule .* - [F] - -.. _faq1_43: - -1.43 Why can't I display the structure of my table containing hundreds of columns? ----------------------------------------------------------------------------------- - -Because your PHP's ``memory_limit`` is too low; adjust it in :file:`php.ini`. - -.. _faqconfig: - -Configuration -+++++++++++++ - -.. _faq2_1: - -2.1 The error message "Warning: Cannot add header information - headers already sent by ..." is displayed, what's the problem? ------------------------------------------------------------------------------------------------------------------------------- - -Edit your :file:`config.inc.php` file and ensure there is nothing (I.E. no -blank lines, no spaces, no characters...) neither before the ```` tag at the end. We also got a report -from a user under :term:`IIS`, that used a zipped distribution kit: the file -:file:`libraries/Config.class.php` contained an end-of-line character (hex 0A) -at the end; removing this character cleared his errors. - -.. _faq2_2: - -2.2 phpMyAdmin can't connect to MySQL. What's wrong? ----------------------------------------------------- - -Either there is an error with your PHP setup or your username/password -is wrong. Try to make a small script which uses mysql\_connect and see -if it works. If it doesn't, it may be you haven't even compiled MySQL -support into PHP. - -.. _faq2_3: - -2.3 The error message "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) ..." is displayed. What can I do? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -For RedHat users, Harald Legner suggests this on the mailing list: - -On my RedHat-Box the socket of MySQL is */var/lib/mysql/mysql.sock*. -In your :file:`php.ini` you will find a line - -.. code-block:: ini - - mysql.default_socket = /tmp/mysql.sock - -change it to - -.. code-block:: ini - - mysql.default_socket = /var/lib/mysql/mysql.sock - -Then restart apache and it will work. - -Here is a fix suggested by Brad Ummer: - -* First, you need to determine what socket is being used by MySQL. To do - this, telnet to your server and go to the MySQL bin directory. In this - directory there should be a file named *mysqladmin*. Type - ``./mysqladmin variables``, and this should give you a bunch of info - about your MySQL server, including the socket (*/tmp/mysql.sock*, for - example). -* Then, you need to tell PHP to use this socket. To do this in - phpMyAdmin, you need to complete the socket information in the - :file:`config.inc.php`. For example: - :config:option:`$cfg['Servers'][$i]['socket']` Please also make sure that - the permissions of this file allow to be readable by your webserver (i.e. - '0755'). - -Have also a look at the `corresponding section of the MySQL -documentation `_. - -.. _faq2_4: - -2.4 Nothing is displayed by my browser when I try to run phpMyAdmin, what can I do? ------------------------------------------------------------------------------------ - -Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in the phpMyAdmin configuration -file. It helps sometime. Also have a look at your PHP version number: -if it contains "b" or "alpha" it means you're running a testing -version of PHP. That's not a so good idea, please upgrade to a plain -revision. - -.. _faq2_5: - -2.5 Each time I want to insert or change a row or drop a database or a table, an error 404 (page not found) is displayed or, with HTTP or cookie authentication, I'm asked to log in again. What's wrong? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -Check the value you set for the :config:option:`$cfg['PmaAbsoluteUri']` directive in the phpMyAdmin -configuration file. - -.. _faq2_6: - -2.6 I get an "Access denied for user: 'root@localhost' (Using password: YES)"-error when trying to access a MySQL-Server on a host which is port-forwarded for my localhost. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -When you are using a port on your localhost, which you redirect via -port-forwarding to another host, MySQL is not resolving the localhost -as expected. Erik Wasser explains: The solution is: if your host is -"localhost" MySQL (the command line tool :command:`mysql` as well) always -tries to use the socket connection for speeding up things. And that -doesn't work in this configuration with port forwarding. If you enter -"127.0.0.1" as hostname, everything is right and MySQL uses the -:term:`TCP` connection. - -.. _faqthemes: - -2.7 Using and creating themes ------------------------------ - -Themes are configured with :config:option:`$cfg['ThemePath']`, -:config:option:`$cfg['ThemeManager']` and :config:option:`$cfg['ThemeDefault']`. -Under :config:option:`$cfg['ThemePath']`, you should not delete the -directory ``pmahomme`` or its underlying structure, because this is the -system theme used by phpMyAdmin. ``pmahomme`` contains all images and -styles, for backwards compatibility and for all themes that would not -include images or css-files. If :config:option:`$cfg['ThemeManager']` -is enabled, you can select your favorite theme on the main page. Your selected -theme will be stored in a cookie. - -To create a theme: - -* make a new subdirectory (for example "your\_theme\_name") under :config:option:`$cfg['ThemePath']` (by - default ``themes``) -* copy the files and directories from ``pmahomme`` to "your\_theme\_name" -* edit the css-files in "your\_theme\_name/css" -* put your new images in "your\_theme\_name/img" -* edit :file:`layout.inc.php` in "your\_theme\_name" -* edit :file:`info.inc.php` in "your\_theme\_name" to contain your chosen - theme name, that will be visible in user interface -* make a new screenshot of your theme and save it under - "your\_theme\_name/screen.png" - -In theme directory there is file :file:`info.inc.php` which contains theme -verbose name, theme generation and theme version. These versions and -generations are enumerated from 1 and do not have any direct -dependence on phpMyAdmin version. Themes within same generation should -be backwards compatible - theme with version 2 should work in -phpMyAdmin requiring version 1. Themes with different generation are -incompatible. - -If you do not want to use your own symbols and buttons, remove the -directory "img" in "your\_theme\_name". phpMyAdmin will use the -default icons and buttons (from the system-theme ``pmahomme``). - -.. _faqmissingparameters: - -2.8 I get "Missing parameters" errors, what can I do? ------------------------------------------------------ - -Here are a few points to check: - -* In :file:`config.inc.php`, try to leave the :config:option:`$cfg['PmaAbsoluteUri']` directive empty. See also - :ref:`faq4_7`. -* Maybe you have a broken PHP installation or you need to upgrade your - Zend Optimizer. See . -* If you are using Hardened PHP with the ini directive - ``varfilter.max_request_variables`` set to the default (200) or - another low value, you could get this error if your table has a high - number of columns. Adjust this setting accordingly. (Thanks to Klaus - Dorninger for the hint). -* In the :file:`php.ini` directive ``arg_separator.input``, a value of ";" - will cause this error. Replace it with "&;". -* If you are using `Hardened-PHP `_, you - might want to increase `request limits `_. -* The directory specified in the :file:`php.ini` directive - ``session.save_path`` does not exist or is read-only. - -.. _faq2_9: - -2.9 Seeing an upload progress bar ---------------------------------- - -To be able to see a progress bar during your uploads, your server must -have the `APC `_ extension, the -`uploadprogress `_ one, or -you must be running PHP 5.4.0 or higher. Moreover, the JSON extension -has to be enabled in your PHP. - -If using APC, you must set ``apc.rfc1867`` to ``on`` in your :file:`php.ini`. - -If using PHP 5.4.0 or higher, you must set -``session.upload_progress.enabled`` to ``1`` in your :file:`php.ini`. However, -starting from phpMyAdmin version 4.0.4, session-based upload progress has -been temporarily deactivated due to its problematic behavior. - -.. seealso:: :rfc:`1867` - -.. _faqlimitations: - -Known limitations -+++++++++++++++++ - -.. _login_bug: - -3.1 When using HTTP authentication, a user who logged out can not log in again in with the same nick. ------------------------------------------------------------------------------------------------------ - -This is related to the authentication mechanism (protocol) used by -phpMyAdmin. To bypass this problem: just close all the opened browser -windows and then go back to phpMyAdmin. You should be able to log in -again. - -.. _faq3_2: - -3.2 When dumping a large table in compressed mode, I get a memory limit error or a time limit error. ----------------------------------------------------------------------------------------------------- - -Compressed dumps are built in memory and because of this are limited -to php's memory limit. For GZip/BZip2 exports this can be overcome -since 2.5.4 using :config:option:`$cfg['CompressOnFly']` (enabled by default). -Zip exports can not be handled this way, so if you need Zip files for larger -dump, you have to use another way. - -.. _faq3_3: - -3.3 With InnoDB tables, I lose foreign key relationships when I rename a table or a column. -------------------------------------------------------------------------------------------- - -This is an InnoDB bug, see . - -.. _faq3_4: - -3.4 I am unable to import dumps I created with the mysqldump tool bundled with the MySQL server distribution. -------------------------------------------------------------------------------------------------------------- - -The problem is that older versions of ``mysqldump`` created invalid -comments like this: - -.. code-block:: mysql - - - -- MySQL dump 8.22 - -- - -- Host: localhost Database: database - --------------------------------------------------------- - -- Server version 3.23.54 - -The invalid part of the code is the horizontal line made of dashes -that appears once in every dump created with mysqldump. If you want to -run your dump you have to turn it into valid MySQL. This means, you -have to add a whitespace after the first two dashes of the line or add -a # before it: ``-- -------------------------------------------------------`` or -``#---------------------------------------------------------`` - -.. _faq3_5: - -3.5 When using nested folders, multiple hierarchies are displayed in a wrong manner. ------------------------------------------------------------------------------------- - -Please note that you should not use the separating string multiple -times without any characters between them, or at the beginning/end of -your table name. If you have to, think about using another -TableSeparator or disabling that feature. - -.. seealso:: :config:option:`$cfg['NavigationTreeTableSeparator']` - -.. _faq3_6: - -3.6 What is currently not supported in phpMyAdmin about InnoDB? ---------------------------------------------------------------- - -In Relation view, having more than one index column in the foreign key. In Query-by- -example (Query), automatic generation of the query LEFT JOIN from the -foreign table. - -.. _faq3_7: - -3.7 I have table with many (100+) columns and when I try to browse table I get series of errors like "Warning: unable to parse url". How can this be fixed? ------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Your table neither have a primary key nor an unique one, so we must -use a long expression to identify this row. This causes problems to -parse\_url function. The workaround is to create a primary or unique -key. - -.. _faq3_8: - -3.8 I cannot use (clickable) HTML-forms in columns where I put a MIME-Transformation onto! ------------------------------------------------------------------------------------------- - -Due to a surrounding form-container (for multi-row delete checkboxes), -no nested forms can be put inside the table where phpMyAdmin displays -the results. You can, however, use any form inside of a table if keep -the parent form-container with the target to tbl\_row\_delete.php and -just put your own input-elements inside. If you use a custom submit -input field, the form will submit itself to the displaying page again, -where you can validate the $HTTP\_POST\_VARS in a transformation. For -a tutorial on how to effectively use transformations, see our `Link -section `_ on the -official phpMyAdmin-homepage. - -.. _faq3_9: - -3.9 I get error messages when using "--sql\_mode=ANSI" for the MySQL server. ----------------------------------------------------------------------------- - -When MySQL is running in ANSI-compatibility mode, there are some major -differences in how :term:`SQL` is structured (see -). Most important of all, the -quote-character (") is interpreted as an identifier quote character and not as -a string quote character, which makes many internal phpMyAdmin operations into -invalid :term:`SQL` statements. There is no -workaround to this behaviour. News to this item will be posted in `Bug report -#1013 `_. - -.. _faq3_10: - -3.10 Homonyms and no primary key: When the results of a SELECT display more that one column with the same value (for example ``SELECT lastname from employees where firstname like 'A%'`` and two "Smith" values are displayed), if I click Edit I cannot be sure that I am editing the intended row. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Please make sure that your table has a primary key, so that phpMyAdmin -can use it for the Edit and Delete links. - -.. _faq3_11: - -3.11 The number of rows for InnoDB tables is not correct. ---------------------------------------------------------- - -phpMyAdmin uses a quick method to get the row count, and this method only -returns an approximate count in the case of InnoDB tables. See -:config:option:`$cfg['MaxExactCount']` for a way to modify those results, but -this could have a serious impact on performance. - -.. _faq3_12: - -3.12 (withdrawn). ------------------ - -.. _faq3_13: - -3.13 I get an error when entering ``USE`` followed by a db name containing an hyphen. -------------------------------------------------------------------------------------- - -The tests I have made with MySQL 5.1.49 shows that the API does not -accept this syntax for the USE command. - -.. _faq3_14: - -3.14 I am not able to browse a table when I don't have the right to SELECT one of the columns. ----------------------------------------------------------------------------------------------- - -This has been a known limitation of phpMyAdmin since the beginning and -it's not likely to be solved in the future. - -.. _faq3_15: - -3.15 (withdrawn). ------------------ - -.. _faq3_16: - -3.16 (withdrawn). ------------------ - -.. _faq3_17: - -3.17 (withdrawn). ------------------ - -.. _faq3_18: - -3.18 When I import a CSV file that contains multiple tables, they are lumped together into a single table. ----------------------------------------------------------------------------------------------------------- - -There is no reliable way to differentiate tables in :term:`CSV` format. For the -time being, you will have to break apart :term:`CSV` files containing multiple -tables. - -.. _faq3_19: - -3.19 When I import a file and have phpMyAdmin determine the appropriate data structure it only uses int, decimal, and varchar types. ------------------------------------------------------------------------------------------------------------------------------------- - -Currently, the import type-detection system can only assign these -MySQL types to columns. In future, more will likely be added but for -the time being you will have to edit the structure to your liking -post-import. Also, you should note the fact that phpMyAdmin will use -the size of the largest item in any given column as the column size -for the appropriate type. If you know you will be adding larger items -to that column then you should manually adjust the column sizes -accordingly. This is done for the sake of efficiency. - -.. _faq3_20: - -3.20 After upgrading, some bookmarks are gone or their content cannot be shown. -------------------------------------------------------------------------------- - -At some point, the character set used to store bookmark content has changed. -It's better to recreate your bookmark from the newer phpMyAdmin version. - -.. _faqmultiuser: - -ISPs, multi-user installations -++++++++++++++++++++++++++++++ - -.. _faq4_1: - -4.1 I'm an ISP. Can I setup one central copy of phpMyAdmin or do I need to install it for each customer? --------------------------------------------------------------------------------------------------------- - -Since version 2.0.3, you can setup a central copy of phpMyAdmin for all your -users. The development of this feature was kindly sponsored by NetCologne GmbH. -This requires a properly setup MySQL user management and phpMyAdmin -:term:`HTTP` or cookie authentication. - -.. seealso:: :ref:`authentication_modes` - -.. _faq4_2: - -4.2 What's the preferred way of making phpMyAdmin secure against evil access? ------------------------------------------------------------------------------ - -This depends on your system. If you're running a server which cannot be -accessed by other people, it's sufficient to use the directory protection -bundled with your webserver (with Apache you can use :term:`.htaccess` files, -for example). If other people have telnet access to your server, you should use -phpMyAdmin's :term:`HTTP` or cookie authentication features. - -Suggestions: - -* Your :file:`config.inc.php` file should be ``chmod 660``. -* All your phpMyAdmin files should be chown -R phpmy.apache, where phpmy - is a user whose password is only known to you, and apache is the group - under which Apache runs. -* Follow security recommendations for PHP and your webserver. - -.. _faq4_3: - -4.3 I get errors about not being able to include a file in */lang* or in */libraries*. --------------------------------------------------------------------------------------- - -Check :file:`php.ini`, or ask your sysadmin to check it. The -``include_path`` must contain "." somewhere in it, and -``open_basedir``, if used, must contain "." and "./lang" to allow -normal operation of phpMyAdmin. - -.. _faq4_4: - -4.4 phpMyAdmin always gives "Access denied" when using HTTP authentication. ---------------------------------------------------------------------------- - -This could happen for several reasons: - -* :config:option:`$cfg['Servers'][$i]['controluser']` and/or :config:option:`$cfg['Servers'][$i]['controlpass']` are wrong. -* The username/password you specify in the login dialog are invalid. -* You have already setup a security mechanism for the phpMyAdmin- - directory, eg. a :term:`.htaccess` file. This would interfere with phpMyAdmin's - authentication, so remove it. - -.. _faq4_5: - -4.5 Is it possible to let users create their own databases? ------------------------------------------------------------ - -Starting with 2.2.5, in the user management page, you can enter a -wildcard database name for a user (for example "joe%"), and put the -privileges you want. For example, adding ``SELECT, INSERT, UPDATE, -DELETE, CREATE, DROP, INDEX, ALTER`` would let a user create/manage -his/her database(s). - -.. _faq4_6: - -4.6 How can I use the Host-based authentication additions? ----------------------------------------------------------- - -If you have existing rules from an old :term:`.htaccess` file, you can take them and -add a username between the ``'deny'``/``'allow'`` and ``'from'`` -strings. Using the username wildcard of ``'%'`` would be a major -benefit here if your installation is suited to using it. Then you can -just add those updated lines into the -:config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` array. - -If you want a pre-made sample, you can try this fragment. It stops the -'root' user from logging in from any networks other than the private -network :term:`IP` blocks. - -.. code-block:: php - - - //block root from logging in except from the private networks - $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow'; - $cfg['Servers'][$i]['AllowDeny']['rules'] = array( - 'deny root from all', - 'allow root from localhost', - 'allow root from 10.0.0.0/8', - 'allow root from 192.168.0.0/16', - 'allow root from 172.16.0.0/12', - ); - -.. _faq4_7: - -4.7 Authentication window is displayed more than once, why? ------------------------------------------------------------ - -This happens if you are using a :term:`URL` to start phpMyAdmin which is -different than the one set in your :config:option:`$cfg['PmaAbsoluteUri']`. For -example, a missing "www", or entering with an :term:`IP` address while a domain -name is defined in the config file. - -.. _faq4_8: - -4.8 Which parameters can I use in the URL that starts phpMyAdmin? ------------------------------------------------------------------ - -When starting phpMyAdmin, you can use the ``db``, ``pma_username``, -``pma_password`` and ``server`` parameters. This last one can contain -either the numeric host index (from ``$i`` of the configuration file) -or one of the host names present in the configuration file. Using -``pma_username`` and ``pma_password`` has been tested along with the -usage of 'cookie' ``auth_type``. - -.. _faqbrowsers: - -Browsers or client OS -+++++++++++++++++++++ - -.. _faq5_1: - -5.1 I get an out of memory error, and my controls are non-functional, when trying to create a table with more than 14 columns. ------------------------------------------------------------------------------------------------------------------------------- - -We could reproduce this problem only under Win98/98SE. Testing under -WinNT4 or Win2K, we could easily create more than 60 columns. A -workaround is to create a smaller number of columns, then come back to -your table properties and add the other columns. - -.. _faq5_2: - -5.2 With Xitami 2.5b4, phpMyAdmin won't process form fields. ------------------------------------------------------------- - -This is not a phpMyAdmin problem but a Xitami known bug: you'll face -it with each script/website that use forms. Upgrade or downgrade your -Xitami server. - -.. _faq5_3: - -5.3 I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2). ---------------------------------------------------------------------- - -With Konqueror 2.1.1: plain dumps, zip and GZip dumps work ok, except -that the proposed file name for the dump is always 'tbl\_dump.php'. -Bzip2 dumps don't seem to work. With Konqueror 2.2.1: plain dumps -work; zip dumps are placed into the user's temporary directory, so -they must be moved before closing Konqueror, or else they disappear. -GZip dumps give an error message. Testing needs to be done for -Konqueror 2.2.2. - -.. _faq5_4: - -5.4 I can't use the cookie authentication mode because Internet Explorer never stores the cookies. --------------------------------------------------------------------------------------------------- - -MS Internet Explorer seems to be really buggy about cookies, at least -till version 6. - -.. _faq5_5: - -5.5 In Internet Explorer 5.0, I get JavaScript errors when browsing my rows. ----------------------------------------------------------------------------- - -Upgrade to at least Internet Explorer 5.5 SP2. - -.. _faq5_6: - -5.6 In Internet Explorer 5.0, 5.5 or 6.0, I get an error (like "Page not found") when trying to modify a row in a table with many columns, or with a text column. ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Your table neither have a primary key nor an unique one, so we must use a long -:term:`URL` to identify this row. There is a limit on the length of the -:term:`URL` in those browsers, and this not happen in Netscape, for example. -The workaround is to create a primary or unique key, or use another browser. - -.. _faq5_7: - -5.7 I refresh (reload) my browser, and come back to the welcome page. ---------------------------------------------------------------------- - -Some browsers support right-clicking into the frame you want to -refresh, just do this in the right frame. - -.. _faq5_8: - -5.8 With Mozilla 0.9.7 I have problems sending a query modified in the query box. ---------------------------------------------------------------------------------- - -Looks like a Mozilla bug: 0.9.6 was OK. We will keep an eye on future -Mozilla versions. - -.. _faq5_9: - -5.9 With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a whitespace in the SQL-Query edit area: the page scrolls down. -------------------------------------------------------------------------------------------------------------------------------- - -This is a Mozilla bug (see bug #26882 at `BugZilla -`_). - -.. _faq5_10: - -5.10 With Netscape 4.75 I get empty rows between each row of data in a CSV exported file. ------------------------------------------------------------------------------------------ - -This is a known Netscape 4.75 bug: it adds some line feeds when -exporting data in octet-stream mode. Since we can't detect the -specific Netscape version, we cannot workaround this bug. - -.. _faq5_11: - -5.11 Extended-ASCII characters like German umlauts are displayed wrong. ------------------------------------------------------------------------ - -Please ensure that you have set your browser's character set to the -one of the language file you have selected on phpMyAdmin's start page. -Alternatively, you can try the auto detection mode that is supported -by the recent versions of the most browsers. - -.. _faq5_12: - -5.12 Mac OS X Safari browser changes special characters to "?". ---------------------------------------------------------------- - -This issue has been reported by a :term:`Mac OS X` user, who adds that Chimera, -Netscape and Mozilla do not have this problem. - -.. _faq5_13: - -5.13 With Internet Explorer 5.5 or 6, and HTTP authentication type, I cannot manage two servers: I log in to the first one, then the other one, but if I switch back to the first, I have to log in on each operation. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -This is a bug in Internet Explorer, other browsers do not behave this -way. - -.. _faq5_14: - -5.14 Using Opera6, I can manage to get to the authentication, but nothing happens after that, only a blank screen. ------------------------------------------------------------------------------------------------------------------- - -Please upgrade to Opera7 at least. - -.. _faq5_15: - -5.15 I have display problems with Safari. ------------------------------------------ - -Please upgrade to at least version 1.2.3. - -.. _faq5_16: - -5.16 With Internet Explorer, I get "Access is denied" Javascript errors. Or I cannot make phpMyAdmin work under Windows. ------------------------------------------------------------------------------------------------------------------------- - -Please check the following points: - -* Maybe you have defined your :config:option:`$cfg['PmaAbsoluteUri']` setting in - :file:`config.inc.php` to an :term:`IP` address and you are starting phpMyAdmin - with a :term:`URL` containing a domain name, or the reverse situation. -* Security settings in IE and/or Microsoft Security Center are too high, - thus blocking scripts execution. -* The Windows Firewall is blocking Apache and MySQL. You must allow - :term:`HTTP` ports (80 or 443) and MySQL - port (usually 3306) in the "in" and "out" directions. - -.. _faq5_17: - -5.17 With Firefox, I cannot delete rows of data or drop a database. -------------------------------------------------------------------- - -Many users have confirmed that the Tabbrowser Extensions plugin they -installed in their Firefox is causing the problem. - -.. _faq5_18: - -5.18 With Konqueror 4.2.x an invalid ``LIMIT`` clause is generated when I browse a table. ------------------------------------------------------------------------------------------ - -This happens only when both of these conditions are met: using the -``http`` authentication mode and ``register_globals`` being set to -``On`` on the server. It seems to be a browser-specific problem; -meanwhile use the ``cookie`` authentication mode. - -.. _faq5_19: - -5.19 I get JavaScript errors in my browser. -------------------------------------------- - -Issues have been reported with some combinations of browser -extensions. To troubleshoot, disable all extensions then clear your -browser cache to see if the problem goes away. - -.. _faqusing: - -Using phpMyAdmin -++++++++++++++++ - -.. _faq6_1: - -6.1 I can't insert new rows into a table / I can't create a table - MySQL brings up a SQL error. ------------------------------------------------------------------------------------------------- - -Examine the :term:`SQL` error with care. -Often the problem is caused by specifying a wrong column-type. Common -errors include: - -* Using ``VARCHAR`` without a size argument -* Using ``TEXT`` or ``BLOB`` with a size argument - -Also, look at the syntax chapter in the MySQL manual to confirm that -your syntax is correct. - -.. _faq6_2: - -6.2 When I create a table, I set an index for two columns and phpMyAdmin generates only one index with those two columns. -------------------------------------------------------------------------------------------------------------------------- - -This is the way to create a multi-columns index. If you want two -indexes, create the first one when creating the table, save, then -display the table properties and click the Index link to create the -other index. - -.. _faq6_3: - -6.3 How can I insert a null value into my table? ------------------------------------------------- - -Since version 2.2.3, you have a checkbox for each column that can be -null. Before 2.2.3, you had to enter "null", without the quotes, as -the column's value. Since version 2.5.5, you have to use the checkbox -to get a real NULL value, so if you enter "NULL" this means you want a -literal NULL in the column, and not a NULL value (this works in PHP4). - -.. _faq6_4: - -6.4 How can I backup my database or table? ------------------------------------------- - -Click on a database or table name in the navigation panel, the properties will -be displayed. Then on the menu, click "Export", you can dump the structure, the -data, or both. This will generate standard :term:`SQL` statements that can be -used to recreate your database/table. You will need to choose "Save as file", -so that phpMyAdmin can transmit the resulting dump to your station. Depending -on your PHP configuration, you will see options to compress the dump. See also -the :config:option:`$cfg['ExecTimeLimit']` configuration variable. For -additional help on this subject, look for the word "dump" in this document. - -.. _faq6_5: - -6.5 How can I restore (upload) my database or table using a dump? How can I run a ".sql" file? ----------------------------------------------------------------------------------------------- - -Click on a database name in the navigation panel, the properties will -be displayed. Select "Import" from the list of tabs in the right–hand -frame (or ":term:`SQL`" if your phpMyAdmin -version is previous to 2.7.0). In the "Location of the text file" -section, type in the path to your dump filename, or use the Browse -button. Then click Go. With version 2.7.0, the import engine has been -re–written, if possible it is suggested that you upgrade to take -advantage of the new features. For additional help on this subject, -look for the word "upload" in this document. - -.. _faq6_6: - -6.6 How can I use the relation table in Query-by-example? ---------------------------------------------------------- - -Here is an example with the tables persons, towns and countries, all -located in the database "mydb". If you don't have a ``pma__relation`` -table, create it as explained in the configuration section. Then -create the example tables: - -.. code-block:: mysql - - - CREATE TABLE REL_countries ( - country_code char(1) NOT NULL default '', - description varchar(10) NOT NULL default '', - PRIMARY KEY (country_code) - ) TYPE=MyISAM; - - INSERT INTO REL_countries VALUES ('C', 'Canada'); - - CREATE TABLE REL_persons ( - id tinyint(4) NOT NULL auto_increment, - person_name varchar(32) NOT NULL default '', - town_code varchar(5) default '0', - country_code char(1) NOT NULL default '', - PRIMARY KEY (id) - ) TYPE=MyISAM; - - INSERT INTO REL_persons VALUES (11, 'Marc', 'S', ''); - INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C'); - - CREATE TABLE REL_towns ( - town_code varchar(5) NOT NULL default '0', - description varchar(30) NOT NULL default '', - PRIMARY KEY (town_code) - ) TYPE=MyISAM; - - INSERT INTO REL_towns VALUES ('S', 'Sherbrooke'); - INSERT INTO REL_towns VALUES ('M', 'Montréal'); - -To setup appropriate links and display information: - -* on table "REL\_persons" click Structure, then Relation view -* for "town\_code", choose from dropdowns, "mydb", "REL\_towns", "code" - for foreign database, table and column respectively -* for "country\_code", choose from dropdowns, "mydb", "REL\_countries", - "country\_code" for foreign database, table and column respectively -* on table "REL\_towns" click Structure, then Relation view -* in "Choose column to display", choose "description" -* repeat the two previous steps for table "REL\_countries" - -Then test like this: - -* Click on your db name in the navigation panel -* Choose "Query" -* Use tables: persons, towns, countries -* Click "Update query" -* In the columns row, choose persons.person\_name and click the "Show" - tickbox -* Do the same for towns.description and countries.descriptions in the - other 2 columns -* Click "Update query" and you will see in the query box that the - correct joins have been generated -* Click "Submit query" - -.. _faqdisplay: - -6.7 How can I use the "display column" feature? ------------------------------------------------ - -Starting from the previous example, create the ``pma__table_info`` as -explained in the configuration section, then browse your persons -table, and move the mouse over a town code or country code. See also -:ref:`faq6_21` for an additional feature that "display column" -enables: drop-down list of possible values. - -.. _faqpdf: - -6.8 How can I produce a PDF schema of my database? --------------------------------------------------- - -First the configuration variables "relation", "table\_coords" and -"pdf\_pages" have to be filled in. Then you need to think about your -schema layout. Which tables will go on which pages? - -* Select your database in the navigation panel. -* Choose "Operations" in the navigation bar at the top. -* Choose "Edit :term:`PDF` Pages" near the - bottom of the page. -* Enter a name for the first :term:`PDF` page - and click Go. If you like, you can use the "automatic layout," which - will put all your linked tables onto the new page. -* Select the name of the new page (making sure the Edit radio button is - selected) and click Go. -* Select a table from the list, enter its coordinates and click Save. - Coordinates are relative; your diagram will be automatically scaled to - fit the page. When initially placing tables on the page, just pick any - coordinates -- say, 50x50. After clicking Save, you can then use the - :ref:`wysiwyg` to position the element correctly. -* When you'd like to look at your :term:`PDF`, first be sure to click the Save - button beneath the list of tables and coordinates, to save any changes you - made there. Then scroll all the way down, select the :term:`PDF` options you - want, and click Go. -* Internet Explorer for Windows may suggest an incorrect filename when - you try to save a generated :term:`PDF`. - When saving a generated :term:`PDF`, be - sure that the filename ends in ".pdf", for example "schema.pdf". - Browsers on other operating systems, and other browsers on Windows, do - not have this problem. - -.. _faq6_9: - -6.9 phpMyAdmin is changing the type of one of my columns! ---------------------------------------------------------- - -No, it's MySQL that is doing `silent column type changing -`_. - -.. _underscore: - -6.10 When creating a privilege, what happens with underscores in the database name? ------------------------------------------------------------------------------------ - -If you do not put a backslash before the underscore, this is a -wildcard grant, and the underscore means "any character". So, if the -database name is "john\_db", the user would get rights to john1db, -john2db ... If you put a backslash before the underscore, it means -that the database name will have a real underscore. - -.. _faq6_11: - -6.11 What is the curious symbol ø in the statistics pages? ----------------------------------------------------------- - -It means "average". - -.. _faqexport: - -6.12 I want to understand some Export options. ----------------------------------------------- - -**Structure:** - -* "Add DROP TABLE" will add a line telling MySQL to `drop the table - `_, if it already - exists during the import. It does NOT drop the table after your - export, it only affects the import file. -* "If Not Exists" will only create the table if it doesn't exist. - Otherwise, you may get an error if the table name exists but has a - different structure. -* "Add AUTO\_INCREMENT value" ensures that AUTO\_INCREMENT value (if - any) will be included in backup. -* "Enclose table and column names with backquotes" ensures that column - and table names formed with special characters are protected. -* "Add into comments" includes column comments, relations, and MIME - types set in the pmadb in the dump as :term:`SQL` comments - (*/\* xxx \*/*). - -**Data:** - -* "Complete inserts" adds the column names on every INSERT command, for - better documentation (but resulting file is bigger). -* "Extended inserts" provides a shorter dump file by using only once the - INSERT verb and the table name. -* "Delayed inserts" are best explained in the `MySQL manual - INSERT DELAYED Syntax - `_. -* "Ignore inserts" treats errors as a warning instead. Again, more info - is provided in the `MySQL manual - INSERT Syntax - `_, but basically with - this selected, invalid values are adjusted and inserted rather than - causing the entire statement to fail. - -.. _faq6_13: - -6.13 I would like to create a database with a dot in its name. --------------------------------------------------------------- - -This is a bad idea, because in MySQL the syntax "database.table" is -the normal way to reference a database and table name. Worse, MySQL -will usually let you create a database with a dot, but then you cannot -work with it, nor delete it. - -.. _faqsqlvalidator: - -6.14 How do I set up the SQL Validator? ---------------------------------------- - -To use SQL Validator, you need PHP with :term:`XML`, :term:`PCRE` and -:term:`PEAR` support. In addition you need a :term:`SOAP` support, either as a -PHP extension or as a PEAR SOAP module. - -To install :term:`PEAR` :term:`SOAP` module, run :command:`pear install -Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP` to get the necessary -:term:`PEAR` modules for usage. - -If you use the Validator, you should be aware that any :term:`SQL` statement -you submit will be stored anonymously (database/table/column names, strings, -numbers replaced with generic values). The Mimer :term:`SQL` Validator itself, -is © 2001 Upright Database Technology. We utilize it as free SOAP service. - -.. _faq6_15: - -6.15 I want to add a BLOB column and put an index on it, but MySQL says "BLOB column '...' used in key specification without a key length". -------------------------------------------------------------------------------------------------------------------------------------------- - -The right way to do this, is to create the column without any indexes, -then display the table structure and use the "Create an index" dialog. -On this page, you will be able to choose your BLOB column, and set a -size to the index, which is the condition to create an index on a BLOB -column. - -.. _faq6_16: - -6.16 How can I simply move in page with plenty editing fields? --------------------------------------------------------------- - -You can use :kbd:`Ctrl+arrows` (:kbd:`Option+Arrows` in Safari) for moving on -most pages with many editing fields (table structure changes, row editing, -etc.). - -.. _faq6_17: - -6.17 Transformations: I can't enter my own mimetype! WTF is this feature then useful for? ------------------------------------------------------------------------------------------ - -Slow down :). Defining mimetypes is of no use, if you can't put -transformations on them. Otherwise you could just put a comment on the -column. Because entering your own mimetype will cause serious syntax -checking issues and validation, this introduces a high-risk false- -user-input situation. Instead you have to initialize mimetypes using -functions or empty mimetype definitions. - -Plus, you have a whole overview of available mimetypes. Who knows all those -mimetypes by heart so he/she can enter it at will? - -.. _faqbookmark: - -6.18 Bookmarks: Where can I store bookmarks? Why can't I see any bookmarks below the query box? What is this variable for? --------------------------------------------------------------------------------------------------------------------------- - -Any query you have executed can be stored as a bookmark on the page -where the results are displayed. You will find a button labeled -'Bookmark this query' just at the end of the page. As soon as you have -stored a bookmark, it is related to the database you run the query on. -You can now access a bookmark dropdown on each page, the query box -appears on for that database. - -You can also have, inside the query, a placeholder for a variable. -This is done by inserting into the query a SQL comment between ``/*`` and -``*/``. Inside the comment, the special string ``[VARIABLE]`` is used. -Be aware that the whole query minus the SQL comment must be -valid by itself, otherwise you won't be able to store it as a bookmark. - -When you execute the bookmark, everything typed into the *value* -input box on the query box page will replace the string ``/*[VARIABLE]*/`` in -your stored query. - -Also remember, that everything else inside the ``/*[VARIABLE]*/`` string for -your query will remain the way it is, but will be stripped of the ``/**/`` -chars. So you can use: - -.. code-block:: mysql - - /*, [VARIABLE] AS myname */ - -which will be expanded to - -.. code-block:: mysql - - , VARIABLE as myname - -in your query, where VARIABLE is the string you entered in the input box. If an -empty string is provided, no replacements are made. - -A more complex example. Say you have stored -this query: - -.. code-block:: mysql - - SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE]%' */ - -Say, you now enter "phpMyAdmin" as the variable for the stored query, the full -query will be: - -.. code-block:: mysql - - SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%' - -You can use multiple occurrences of ``/*[VARIABLE]*/`` in a single query -(that is, multiple occurrences of the *same* variable). - -**NOTE THE ABSENCE OF SPACES** inside the ``/**/`` construct. Any spaces -inserted there will be later also inserted as spaces in your query and may lead -to unexpected results especially when using the variable expansion inside of a -"LIKE ''" expression. - -Your initial query which is going to be stored as a bookmark has to yield at -least one result row so you can store the bookmark. You may have that to work -around using well positioned ``/**/`` comments. - -.. _faq6_19: - -6.19 How can I create simple LATEX document to include exported table? ----------------------------------------------------------------------- - -You can simply include table in your LATEX documents, -minimal sample document should look like following one (assuming you -have table exported in file :file:`table.tex`): - -.. code-block:: latex - - - \documentclass{article} % or any class you want - \usepackage{longtable} % for displaying table - \begin{document} % start of document - \include{table} % including exported table - \end{document} % end of document - -.. _faq6_20: - -6.20 I see a lot of databases which are not mine, and cannot access them. -------------------------------------------------------------------------- - -You have one of these global privileges: CREATE TEMPORARY TABLES, SHOW -DATABASES, LOCK TABLES. Those privileges also enable users to see all the -database names. So if your users do not need those privileges, you can remove -them and their databases list will shorten. - -.. seealso:: - -.. _faq6_21: - -6.21 In edit/insert mode, how can I see a list of possible values for a column, based on some foreign table? ------------------------------------------------------------------------------------------------------------- - -You have to setup appropriate links between the tables, and also setup -the "display column" in the foreign table. See :ref:`faq6_6` for an -example. Then, if there are 100 values or less in the foreign table, a -drop-down list of values will be available. You will see two lists of -values, the first list containing the key and the display column, the -second list containing the display column and the key. The reason for -this is to be able to type the first letter of either the key or the -display column. For 100 values or more, a distinct window will appear, -to browse foreign key values and choose one. To change the default -limit of 100, see :config:option:`$cfg['ForeignKeyMaxLimit']`. - - -.. _faq6_22: - -6.22 Bookmarks: Can I execute a default bookmark automatically when entering Browse mode for a table? ------------------------------------------------------------------------------------------------------ - -Yes. If a bookmark has the same label as a table name and it's not a -public bookmark, it will be executed. - -.. _faq6_23: - -6.23 Export: I heard phpMyAdmin can export Microsoft Excel files? ------------------------------------------------------------------ - -You can use :term:`CSV` for Microsoft Excel, -which works out of the box. - -.. versionchanged:: 3.4.5 - Since phpMyAdmin 3.4.5 support for direct export to Microsoft Excel version - 97 and newer was dropped. - -.. _faq6_24: - -6.24 Now that phpMyAdmin supports native MySQL 4.1.x column comments, what happens to my column comments stored in pmadb? -------------------------------------------------------------------------------------------------------------------------- - -Automatic migration of a table's pmadb-style column comments to the -native ones is done whenever you enter Structure page for this table. - -.. _faq6_25: - -6.25 (withdrawn). ------------------ - -.. _faq6_26: - -6.26 How can I select a range of rows? --------------------------------------- - -Click the first row of the range, hold the shift key and click the -last row of the range. This works everywhere you see rows, for example -in Browse mode or on the Structure page. - -.. _faq6_27: - -6.27 What format strings can I use? ------------------------------------ - -In all places where phpMyAdmin accepts format strings, you can use -``@VARIABLE@`` expansion and `strftime `_ -format strings. The expanded variables depend on a context (for -example, if you haven't chosen a table, you can not get the table -name), but the following variables can be used: - -``@HTTP_HOST@`` - HTTP host that runs phpMyAdmin -``@SERVER@`` - MySQL server name -``@VERBOSE@`` - Verbose MySQL server name as defined in :config:option:`$cfg['Servers'][$i]['verbose']` -``@VSERVER@`` - Verbose MySQL server name if set, otherwise normal -``@DATABASE@`` - Currently opened database -``@TABLE@`` - Currently opened table -``@COLUMNS@`` - Columns of the currently opened table -``@PHPMYADMIN@`` - phpMyAdmin with version - -.. _wysiwyg: - -6.28 How can I easily edit relational schema for export? --------------------------------------------------------- - -By clicking on the button 'toggle scratchboard' on the page where you -edit x/y coordinates of those elements you can activate a scratchboard -where all your elements are placed. By clicking on an element, you can -move them around in the pre-defined area and the x/y coordinates will -get updated dynamically. Likewise, when entering a new position -directly into the input field, the new position in the scratchboard -changes after your cursor leaves the input field. - -You have to click on the 'OK'-button below the tables to save the new -positions. If you want to place a new element, first add it to the -table of elements and then you can drag the new element around. - -By changing the paper size and the orientation you can change the size -of the scratchboard as well. You can do so by just changing the -dropdown field below, and the scratchboard will resize automatically, -without interfering with the current placement of the elements. - -If ever an element gets out of range you can either enlarge the paper -size or click on the 'reset' button to place all elements below each -other. - -.. _faq6_29: - -6.29 Why can't I get a chart from my query result table? --------------------------------------------------------- - -Not every table can be put to the chart. Only tables with one, two or -three columns can be visualised as a chart. Moreover the table must be -in a special format for chart script to understand it. Currently -supported formats can be found in the `wiki `_. - -.. _faq6_30: - -6.30 Import: How can I import ESRI Shapefiles? ----------------------------------------------- - -An ESRI Shapefile is actually a set of several files, where .shp file -contains geometry data and .dbf file contains data related to those -geometry data. To read data from .dbf file you need to have PHP -compiled with the dBase extension (--enable-dbase). Otherwise only -geometry data will be imported. - -To upload these set of files you can use either of the following -methods: - -Configure upload directory with :config:option:`$cfg['UploadDir']`, upload both .shp and .dbf files with -the same filename and chose the .shp file from the import page. - -Create a Zip archive with .shp and .dbf files and import it. For this -to work, you need to set :config:option:`$cfg['TempDir']` to a place where the web server user can -write (for example ``'./tmp'``). - -To create the temporary directory on a UNIX-based system, you can do: - -.. code-block:: sh - - cd phpMyAdmin - mkdir tmp - chmod o+rwx tmp - -.. _faq6_31: - -6.31 How do I create a relation in designer? --------------------------------------------- - -To select relation, click: The display column is shown in pink. To -set/unset a column as the display column, click the "Choose column to -display" icon, then click on the appropriate column name. - -.. _faq6_32: - -6.32 How can I use the zoom search feature? -------------------------------------------- - -The Zoom search feature is an alternative to table search feature. It allows -you to explore a table by representing its data in a scatter plot. You can -locate this feature by selecting a table and clicking the :guilabel:`Search` -tab. One of the sub-tabs in the :guilabel:`Table Search` page is -:guilabel:`Zoom Search`. - -Consider the table REL\_persons in :ref:`faq6_6` for -an example. To use zoom search, two columns need to be selected, for -example, id and town\_code. The id values will be represented on one -axis and town\_code values on the other axis. Each row will be -represented as a point in a scatter plot based on its id and -town\_code. You can include two additional search criteria apart from -the two fields to display. - -You can choose which field should be -displayed as label for each point. If a display column has been set -for the table (see :ref:`faqdisplay`), it is taken as the label unless -you specify otherwise. You can also select the maximum number of rows -you want to be displayed in the plot by specifing it in the 'Max rows -to plot' field. Once you have decided over your criteria, click 'Go' -to display the plot. - -After the plot is generated, you can use the -mousewheel to zoom in and out of the plot. In addition, panning -feature is enabled to navigate through the plot. You can zoom-in to a -certail level of detail and use panning to locate your area of -interest. Clicking on a point opens a dialogue box, displaying field -values of the data row represented by the point. You can edit the -values if required and click on submit to issue an update query. Basic -instructions on how to use can be viewed by clicking the 'How to use?' -link located just above the plot. - -.. _faq6_33: - -6.33 When browsing a table, how can I copy a column name? ---------------------------------------------------------- - -Selecting the name of the column within the browse table header cell -for copying is difficult, as the columns support reordering by -dragging the header cells as well as sorting by clicking on the linked -column name. To copy a column name, double-click on the empty area -next to the column name, when the tooltip tells you to do so. This -will show you an input box with the column name. You may right-click -the column name within this input box to copy it to your clipboard. - -.. _faqproject: - -phpMyAdmin project -++++++++++++++++++ - -.. _faq7_1: - -7.1 I have found a bug. How do I inform developers? ---------------------------------------------------- - -Our Bug Tracker is located at under the -Bugs section. But please first discuss your bug with other users: -. - -.. _faq7_2: - -7.2 I want to translate the messages to a new language or upgrade an existing language, where do I start? ---------------------------------------------------------------------------------------------------------- - -Translations are very welcome and all you need to have are the -language skills. The easiest way is to use our `online translation -service `_. You can check -out all the possibilities to translate in the `translate section on -our website `_. - -.. _faq7_3: - -7.3 I would like to help out with the development of phpMyAdmin. How should I proceed? --------------------------------------------------------------------------------------- - -We welcome every contribution to the development of phpMyAdmin. You -can check out all the possibilities to contribute in the `contribute -section on our website -`_. - -.. seealso:: :ref:`developers` - -.. _faqsecurity: - -Security -++++++++ - -.. _faq8_1: - -8.1 Where can I get information about the security alerts issued for phpMyAdmin? --------------------------------------------------------------------------------- - -Please refer to . - -.. _faq8_2: - -8.2 How can I protect phpMyAdmin against brute force attacks? -------------------------------------------------------------- - -If you use Apache web server, phpMyAdmin exports information about -authentication to the Apache environment and it can be used in Apache -logs. Currently there are two variables available: - - -``userID`` - User name of currently active user (he does not have to be logged in). -``userStatus`` - Status of currently active user, one of ``ok`` (user is logged in), - ``mysql-denied`` (MySQL denied user login), ``allow-denied`` (user denied - by allow/deny rules), ``root-denied`` (root is denied in configuration), - ``empty-denied`` (empty password is denied). - -``LogFormat`` directive for Apache can look like following: - -.. code-block:: apache - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined - -You can then use any log analyzing tools to detect possible break-in -attempts. - -.. _faqsynchronization: - -Synchronization -+++++++++++++++ - -.. _faq9_1: - -9.1 (withdrawn). ----------------- - -.. _faq9_2: - -9.2 (withdrawn). ----------------- - diff --git a/pma12111211/doc/glossary.rst b/pma12111211/doc/glossary.rst deleted file mode 100644 index d558b440..00000000 --- a/pma12111211/doc/glossary.rst +++ /dev/null @@ -1,406 +0,0 @@ -.. _glossary: - -Glossary -======== - -From Wikipedia, the free encyclopedia - -.. glossary:: - - .htaccess - the default name of Apache's directory-level configuration file. - - .. seealso:: - - ACL - Access Contol List - - Blowfish - a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier. - - .. seealso:: - - Browser - a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web. - - .. seealso:: - - bzip2 - a free software/open source data compression algorithm and program developed by Julian Seward. - - .. seealso:: - - CGI - Common Gateway Interface is an important World Wide Web technology that - enables a client web browser to request data from a program executed on - the Web server. - - .. seealso:: - - Changelog - a log or record of changes made to a project. - - .. seealso:: - - Client - a computer system that accesses a (remote) service on another computer by some kind of network. - - .. seealso:: - - column - a set of data values of a particular simple type, one for each row of the table. - - .. seealso:: - - Cookie - a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server. - - .. seealso:: - - CSV - Comma- separated values - - .. seealso:: - - DB - look at :term:`database` - - database - an organized collection of data. - - .. seealso:: - - Engine - look at :term:`storage engines` - - extension - a PHP module that extends PHP with additional functionality. - - .. seealso:: - - FAQ - Frequently Asked Questions is a list of commonly asked question and there - answers. - - .. seealso:: - - Field - one part of divided data/columns. - - .. seealso:: - - foreign key - a column or group of columns in a database row that point to a key column - or group of columns forming a key of another database row in some - (usually different) table. - - .. seealso:: - - FPDF - the free :term:`PDF` library - - .. seealso:: - - GD - Graphics Library by Thomas Boutell and others for dynamically manipulating images. - - .. seealso:: - - GD2 - look at :term:`gd` - - gzip - gzip is short for GNU zip, a GNU free software file compression program. - - .. seealso:: - - host - any machine connected to a computer network, a node that has a hostname. - - .. seealso:: - - hostname - the unique name by which a network attached device is known on a network. - - .. seealso:: - - HTTP - HyperText Transfer Protocol is the primary method used to transfer or - convey information on the World Wide Web. - - .. seealso:: - - https - a :term:`HTTP`-connection with additional security measures. - - .. seealso:: - - IEC - International Electrotechnical Commission - - IIS - Internet Information Services is a set of Internet-based services for - servers using Microsoft Windows. - - .. seealso:: - - Index - a feature that allows quick access to the rows in a table. - - .. seealso:: - - IP - Internet Protocol is a data-oriented protocol used by source and - destination hosts for communicating data across a packet-switched - internetwork. - - .. seealso:: - - IP Address - a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard. - - .. seealso:: - - IPv6 - IPv6 (Internet Protocol version 6) is the latest revision of the - Internet Protocol (:term:`IP`), designed to deal with the - long-anticipated problem of its precedessor IPv4 running out of addresses. - - .. seealso:: - - ISAPI - Internet Server Application Programming Interface is the API of Internet Information Services (IIS). - - .. seealso:: - - ISP - Internet service provider is a business or organization that offers users - access to the Internet and related services. - - .. seealso:: - - ISO - International Standards Organisation - - JPEG - a most commonly used standard method of lossy compression for photographic images. - - .. seealso:: - - JPG - look at :term:`jpeg` - - Key - look at :term:`index` - - LATEX - a document preparation system for the TEX typesetting program. - - .. seealso:: - - Mac - Apple Macintosh is line of personal computers is designed, developed, manufactured, and marketed by Apple Computer. - - .. seealso:: - - Mac OS X - the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets. - - .. seealso:: - - MCrypt - a cryptographic library. - - .. seealso:: - - mcrypt - the MCrypt PHP extension. - - .. seealso:: - - MIME - Multipurpose Internet Mail Extensions is - an Internet Standard for the format of e-mail. - - .. seealso:: - - module - some sort of extension for the Apache Webserver. - - .. seealso:: - - MySQL - a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS). - - .. seealso:: - - mysqli - the improved MySQL client PHP extension. - - .. seealso:: - - mysql - the MySQL client PHP extension. - - .. seealso:: - - OpenDocument - open standard for office documents. - - .. seealso:: - - OS X - look at :term:`Mac OS X`. - - .. seealso:: - - PDF - Portable Document Format is a file format developed by Adobe Systems for - representing two dimensional documents in a device independent and - resolution independent format. - - .. seealso:: - - PEAR - the PHP Extension and Application Repository. - - .. seealso:: - - PCRE - Perl Compatible Regular Expressions is the perl-compatible regular - expression functions for PHP - - .. seealso:: - - PHP - short for "PHP: Hypertext Preprocessor", is an open-source, reflective - programming language used mainly for developing server-side applications - and dynamic web content, and more recently, a broader range of software - applications. - - .. seealso:: - - port - a connection through which data is sent and received. - - .. seealso:: - - RFC - Request for Comments (RFC) documents are a series of memoranda - encompassing new research, innovations, and methodologies applicable to - Internet technologies. - - .. seealso:: - - RFC 1952 - GZIP file format specification version 4.3 - - .. seealso:: :rfc:`1952` - - Row (record, tuple) - represents a single, implicitly structured data item in a table. - - .. seealso:: - - Server - a computer system that provides services to other computing systems over a network. - - .. seealso:: - - Storage Engines - handlers for different table types - - .. seealso:: - - SOAP - Simple Object Access Protocol is a protocol specification for exchanging - structured information in the implementation of Web Services in computer - networks. - - .. seealso:: - - socket - a form of inter-process communication. - - .. seealso:: - - SSL - Secure Sockets Layer is a cryptographic protocol which provides secure - communication on the Internet. - - .. seealso:: - - Stored procedure - a subroutine available to applications accessing a relational database system - - .. seealso:: - - SQL - Structured Query Language - - .. seealso:: - - table - a set of data elements (cells) that is organized, defined and stored as - horizontal rows and vertical columns where each item can be uniquely - identified by a label or key or by it?s position in relation to other - items. - - .. seealso:: - - tar - a type of archive file format: the Tape ARchive format. - - .. seealso:: - - TCP - Transmission Control Protocol is one of the core protocols of the - Internet protocol suite. - - .. seealso:: - - TCPDF - Rewrite of :term:`UFPDF` with various improvements. - - .. seealso:: - - trigger - a procedural code that is automatically executed in response to certain events on a particular table or view in a database - - .. seealso:: - - UFPDF - Unicode/UTF-8 extension for :term:`FPDF` - - .. seealso:: - - URL - Uniform Resource Locator is a sequence of characters, conforming to a - standardized format, that is used for referring to resources, such as - documents and images on the Internet, by their location. - - .. seealso:: - - Webserver - A computer (program) that is responsible for accepting HTTP requests from clients and serving them Web pages. - - .. seealso:: - - XML - Extensible Markup Language is a W3C-recommended general- purpose markup - language for creating special-purpose markup languages, capable of - describing many different kinds of data. - - .. seealso:: - - ZIP - a popular data compression and archival format. - - .. seealso:: - - zlib - an open-source, cross- platform data compression library by Jean-loup Gailly and Mark Adler. - - .. seealso:: - - diff --git a/pma12111211/doc/html/.buildinfo b/pma12111211/doc/html/.buildinfo deleted file mode 100644 index 8158f24e..00000000 --- a/pma12111211/doc/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 26dbefbdbde0ac9ce9051c3175330c3b -tags: fbb0d17656682115ca4d033fb2f83ba1 diff --git a/pma12111211/doc/html/_sources/config.txt b/pma12111211/doc/html/_sources/config.txt deleted file mode 100644 index c8c04b26..00000000 --- a/pma12111211/doc/html/_sources/config.txt +++ /dev/null @@ -1,2813 +0,0 @@ -.. index:: config.inc.php - -.. _config: - -Configuration -============= - -Almost all configurable data is placed in :file:`config.inc.php`. If this file -does not exist, please refer to the :ref:`setup` section to create one. This -file only needs to contain the parameters you want to change from their -corresponding default value in :file:`libraries/config.default.php`. - -If a directive is missing from your file, you can just add another line with -the file. This file is for over-writing the defaults; if you wish to use the -default value there's no need to add a line here. - -The parameters which relate to design (like colors) are placed in -:file:`themes/themename/layout.inc.php`. You might also want to create -:file:`config.footer.inc.php` and :file:`config.header.inc.php` files to add -your site specific code to be included on start and end of each page. - -.. note:: - - Some distributions (eg. Debian or Ubuntu) store :file:`config.inc.php` in - ``/etc/phpmyadmin`` instead of within phpMyAdmin sources. - -.. warning:: - - :term:`Mac` users should note that if you are on a version before - :term:`Mac OS X`, PHP does not seem to - like :term:`Mac` end of lines character (``\r``). So - ensure you choose the option that allows to use the \*nix end of line - character (``\n``) in your text editor before saving a script you have - modified. - -Basic settings --------------- - -.. config:option:: $cfg['PmaAbsoluteUri'] - - :type: string - :default: ``''`` - - Sets here the complete :term:`URL` (with full path) to your phpMyAdmin - installation's directory. E.g. - ``http://www.example.net/path_to_your_phpMyAdmin_directory/``. Note also - that the :term:`URL` on most of web servers are case–sensitive. Don’t - forget the trailing slash at the end. - - Starting with version 2.3.0, it is advisable to try leaving this blank. In - most cases phpMyAdmin automatically detects the proper setting. Users of - port forwarding will need to set :config:option:`$cfg['PmaAbsoluteUri']` - (`more info `_). - - A good test is to browse a table, edit a row and save it. There should be - an error message if phpMyAdmin is having trouble auto–detecting the correct - value. If you get an error that this must be set or if the autodetect code - fails to detect your path, please post a bug report on our bug tracker so - we can improve the code. - - .. seealso:: :ref:`faq1_40` - -.. config:option:: $cfg['PmaNoRelation_DisableWarning'] - - :type: boolean - :default: false - - Starting with version 2.3.0 phpMyAdmin offers a lot of features to - work with master / foreign – tables (see :config:option:`$cfg['Servers'][$i]['pmadb']`). - - If you tried to set this - up and it does not work for you, have a look on the :guilabel:`Structure` page - of one database where you would like to use it. You will find a link - that will analyze why those features have been disabled. - - If you do not want to use those features set this variable to ``true`` to - stop this message from appearing. - -.. config:option:: $cfg['SuhosinDisableWarning'] - - :type: boolean - :default: false - - A warning is displayed on the main page if Suhosin is detected. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['McryptDisableWarning'] - - :type: boolean - :default: false - - Disable the default warning that is displayed if mcrypt is missing for - cookie authentication. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['ServerLibraryDifference_DisableWarning'] - - :type: boolean - :default: false - - A warning is displayed on the main page if there is a difference - between the MySQL library and server version. - - You can set this parameter to ``true`` to stop this message from appearing. - -.. config:option:: $cfg['ReservedWordDisableWarning'] - - :type: boolean - :default: false - - This warning is displayed on the Structure page of a table if one or more - column names match with words which are MySQL reserved. - - If you want to turn off this warning, you can set it to ``true`` and - warning will no longer be displayed. - -.. config:option:: $cfg['TranslationWarningThreshold'] - - :type: integer - :default: 80 - - Show warning about incomplete translations on certain threshold. - -.. config:option:: $cfg['SendErrorReports'] - - :type: string - :default: ``'ask'`` - - Sets the default behavior for JavaScript error reporting. - - Whenever an error is detected in the JavaScript execution, an error report - may be sent to the phpMyAdmin team if the user agrees. - - The default setting of ``'ask'`` will ask the user everytime there is a new - error report. However you can set this parameter to ``'always'`` to send error - reports without asking for confirmation or you can set it to ``'never'`` to - never send error reports. - - This directive is available both in the configuration file and in users - preferences. If the person in charge of a multi-user installation prefers - to disable this feature for all users, a value of ``'never'`` should be - set, and the :config:option:`$cfg['UserprefsDisallow']` directive should - contain ``'SendErrorReports'`` in one of its array values. - -.. config:option:: $cfg['AllowThirdPartyFraming'] - - :type: boolean - :default: false - - Setting this to ``true`` allows phpMyAdmin to be included inside a frame, - and is a potential security hole allowing cross-frame scripting attacks or - clickjacking. - -Server connection settings --------------------------- - -.. config:option:: $cfg['Servers'] - - :type: array - :default: one server array with settings listed bellow - - Since version 1.4.2, phpMyAdmin supports the administration of multiple - MySQL servers. Therefore, a :config:option:`$cfg['Servers']`-array has been - added which contains the login information for the different servers. The - first :config:option:`$cfg['Servers'][$i]['host']` contains the hostname of - the first server, the second :config:option:`$cfg['Servers'][$i]['host']` - the hostname of the second server, etc. In - :file:`libraries/config.default.php`, there is only one section for server - definition, however you can put as many as you need in - :file:`config.inc.php`, copy that block or needed parts (you don't have to - define all settings, just those you need to change). - - .. note:: - - The :config:option:`$cfg['Servers']` array starts with - $cfg['Servers'][1]. Do not use $cfg['Servers'][0]. If you want more - than one server, just copy following section (including $i - incrementation) serveral times. There is no need to define full server - array, just define values you need to change. - - -.. config:option:: $cfg['Servers'][$i]['host'] - - :type: string - :default: ``'localhost'`` - - The hostname or :term:`IP` address of your $i-th MySQL-server. E.g. - ``localhost``. - - Possible values are: - - * hostname, e.g., ``'localhost'`` or ``'mydb.example.org'`` - * IP address, e.g., ``'127.0.0.1'`` or ``'192.168.10.1'`` - * dot - ``'.'``, i.e., use named pipes on windows systems - * empty - ``''``, disables this server - - .. note:: - - phpMyAdmin supports connecting to MySQL servers reachable via IPv6 only. - To connect to an IPv6 MySQL server, enter its IPv6 address in this field. - -.. config:option:: $cfg['Servers'][$i]['port'] - - :type: string - :default: ``''`` - - The port-number of your $i-th MySQL-server. Default is 3306 (leave - blank). - - .. note:: - - If you use ``localhost`` as the hostname, MySQL ignores this port number - and connects with the socket, so if you want to connect to a port - different from the default port, use ``127.0.0.1`` or the real hostname - in :config:option:`$cfg['Servers'][$i]['host']`. - -.. config:option:: $cfg['Servers'][$i]['socket'] - - :type: string - :default: ``''`` - - The path to the socket to use. Leave blank for default. To determine - the correct socket, check your MySQL configuration or, using the - :command:`mysql` command–line client, issue the ``status`` command. Among the - resulting information displayed will be the socket used. - -.. config:option:: $cfg['Servers'][$i]['ssl'] - - :type: boolean - :default: false - - Whether to enable SSL for the connection between phpMyAdmin and the MySQL server. - - When using :config:option:`$cfg['Servers'][$i]['extension']` = ``'mysql'``, - none of the remaining ``'ssl...'`` configuration options apply. - - We strongly recommend using :config:option:`$cfg['Servers'][$i]['extension']` = ``'mysqli'`` - when using this option. - -.. config:option:: $cfg['Servers'][$i]['ssl_key'] - - :type: string - :default: NULL - - Path to the key file when using SSL for connecting to the MySQL server. - - For example: - - .. code-block:: php - - $cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/server-key.pem'; - -.. config:option:: $cfg['Servers'][$i]['ssl_cert'] - - :type: string - :default: NULL - - Path to the cert file when using SSL for connecting to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['ssl_ca'] - - :type: string - :default: NULL - - Path to the CA file when using SSL for connecting to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['ssl_ca_path'] - - :type: string - :default: NULL - - Directory containing trusted SSL CA certificates in PEM format. - -.. config:option:: $cfg['Servers'][$i]['ssl_ciphers'] - - :type: string - :default: NULL - - List of allowable ciphers for SSL connections to the MySQL server. - -.. config:option:: $cfg['Servers'][$i]['connect_type'] - - :type: string - :default: ``'tcp'`` - - What type connection to use with the MySQL server. Your options are - ``'socket'`` and ``'tcp'``. It defaults to tcp as that is nearly guaranteed - to be available on all MySQL servers, while sockets are not supported on - some platforms. To use the socket mode, your MySQL server must be on the - same machine as the Web server. - -.. config:option:: $cfg['Servers'][$i]['extension'] - - :type: string - :default: ``'mysqli'`` - - What php MySQL extension to use for the connection. Valid options are: - - ``mysql`` - The classic MySQL extension. - - ``mysqli`` - The improved MySQL extension. This extension became available with PHP - 5.0.0 and is the recommended way to connect to a server running MySQL - 4.1.x or newer. - -.. config:option:: $cfg['Servers'][$i]['compress'] - - :type: boolean - :default: false - - Whether to use a compressed protocol for the MySQL server connection - or not (experimental). - -.. _controlhost: -.. config:option:: $cfg['Servers'][$i]['controlhost'] - - :type: string - :default: ``''`` - - Permits to use an alternate host to hold the configuration storage - data. - -.. _controlport: -.. config:option:: $cfg['Servers'][$i]['controlport'] - - :type: string - :default: ``''`` - - Permits to use an alternate port to connect to the host that - holds the configuration storage. - -.. _controluser: -.. config:option:: $cfg['Servers'][$i]['controluser'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['controlpass'] - - :type: string - :default: ``''`` - - This special account is used for 2 distinct purposes: to make possible all - relational features (see :config:option:`$cfg['Servers'][$i]['pmadb']`) and, - for a MySQL server running with ``--skip-show-database``, to enable a - multi-user installation (:term:`HTTP` or cookie - authentication mode). - - When using :term:`HTTP` or - cookie authentication modes (or 'config' authentication mode since phpMyAdmin - 2.2.1), you need to supply the details of a MySQL account that has ``SELECT`` - privilege on the *mysql.user (all columns except "Password")*, *mysql.db (all - columns)* and *mysql.tables\_priv (all columns except "Grantor" and - "Timestamp")* tables. This account is used to check what databases the user - will see at login. - - .. versionchanged:: 2.2.5 - those were called ``stduser`` and ``stdpass`` - - .. seealso:: :ref:`setup`, :ref:`authentication_modes` - -.. config:option:: $cfg['Servers'][$i]['auth_type'] - - :type: string - :default: ``'cookie'`` - - Whether config or cookie or :term:`HTTP` or signon authentication should be - used for this server. - - * 'config' authentication (``$auth_type = 'config'``) is the plain old - way: username and password are stored in :file:`config.inc.php`. - * 'cookie' authentication mode (``$auth_type = 'cookie'``) as - introduced in 2.2.3 allows you to log in as any valid MySQL user with - the help of cookies. Username and password are stored in cookies - during the session and password is deleted when it ends. This can also - allow you to log in in arbitrary server if :config:option:`$cfg['AllowArbitraryServer']` enabled. - * 'http' authentication (was - called 'advanced' in previous versions and can be written also as - 'http') (``$auth_type = 'http';'``) as introduced in 1.3.0 allows you to log in as any - valid MySQL user via HTTP-Auth. - * 'signon' authentication mode (``$auth_type = 'signon'``) as - introduced in 2.10.0 allows you to log in from prepared PHP session - data or using supplied PHP script. This is useful for implementing - single signon from another application. Sample way how to seed session - is in signon example: :file:`examples/signon.php`. There is also - alternative example using OpenID - :file:`examples/openid.php` and example - for scripts based solution - :file:`examples/signon-script.php`. You need - to configure :config:option:`$cfg['Servers'][$i]['SignonSession']` or - :config:option:`$cfg['Servers'][$i]['SignonScript']` and - :config:option:`$cfg['Servers'][$i]['SignonURL']` to use this authentication - method. - - .. seealso:: :ref:`authentication_modes` - -.. _servers_auth_http_realm: -.. config:option:: $cfg['Servers'][$i]['auth_http_realm'] - - :type: string - :default: ``''`` - - When using auth\_type = ``http``, this field allows to define a custom - :term:`HTTP` Basic Auth Realm which will be displayed to the user. If not - explicitly specified in your configuration, a string combined of - "phpMyAdmin " and either :config:option:`$cfg['Servers'][$i]['verbose']` or - :config:option:`$cfg['Servers'][$i]['host']` will be used. - -.. _servers_auth_swekey_config: -.. config:option:: $cfg['Servers'][$i]['auth_swekey_config'] - - :type: string - :default: ``''`` - - The name of the file containing :ref:`swekey` ids and login names for hardware - authentication. Leave empty to deactivate this feature. - -.. _servers_user: -.. config:option:: $cfg['Servers'][$i]['user'] - - :type: string - :default: ``'root'`` - -.. config:option:: $cfg['Servers'][$i]['password'] - - :type: string - :default: ``''`` - - When using :config:option:`$cfg['Servers'][$i]['auth_type']` set to - 'config', this is the user/password-pair which phpMyAdmin will use to - connect to the MySQL server. This user/password pair is not needed when - :term:`HTTP` or cookie authentication is used - and should be empty. - -.. _servers_nopassword: -.. config:option:: $cfg['Servers'][$i]['nopassword'] - - :type: boolean - :default: false - - Allow attempt to log in without password when a login with password - fails. This can be used together with http authentication, when - authentication is done some other way and phpMyAdmin gets user name - from auth and uses empty password for connecting to MySQL. Password - login is still tried first, but as fallback, no password method is - tried. - -.. _servers_only_db: -.. config:option:: $cfg['Servers'][$i]['only_db'] - - :type: string or array - :default: ``''`` - - If set to a (an array of) database name(s), only this (these) - database(s) will be shown to the user. Since phpMyAdmin 2.2.1, - this/these database(s) name(s) may contain MySQL wildcards characters - ("\_" and "%"): if you want to use literal instances of these - characters, escape them (I.E. use ``'my\_db'`` and not ``'my_db'``). - - This setting is an efficient way to lower the server load since the - latter does not need to send MySQL requests to build the available - database list. But **it does not replace the privileges rules of the - MySQL database server**. If set, it just means only these databases - will be displayed but **not that all other databases can't be used.** - - An example of using more that one database: - - .. code-block:: php - - $cfg['Servers'][$i]['only_db'] = array('db1', 'db2'); - - .. versionchanged:: 4.0.0 - Previous versions permitted to specify the display order of - the database names via this directive. - -.. config:option:: $cfg['Servers'][$i]['hide_db'] - - :type: string - :default: ``''`` - - Regular expression for hiding some databases from unprivileged users. - This only hides them from listing, but a user is still able to access - them (using, for example, the SQL query area). To limit access, use - the MySQL privilege system. For example, to hide all databases - starting with the letter "a", use - - .. code-block:: php - - $cfg['Servers'][$i]['hide_db'] = '^a'; - - and to hide both "db1" and "db2" use - - .. code-block:: php - - $cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$'; - - More information on regular expressions can be found in the `PCRE - pattern syntax - `_ portion - of the PHP reference manual. - -.. config:option:: $cfg['Servers'][$i]['verbose'] - - :type: string - :default: ``''`` - - Only useful when using phpMyAdmin with multiple server entries. If - set, this string will be displayed instead of the hostname in the - pull-down menu on the main page. This can be useful if you want to - show only certain databases on your system, for example. For HTTP - auth, all non-US-ASCII characters will be stripped. - -.. config:option:: $cfg['Servers'][$i]['pmadb'] - - :type: string - :default: ``''`` - - The name of the database containing the phpMyAdmin configuration - storage. - - See the :ref:`linked-tables` section in this document to see the benefits of - this feature, and for a quick way of creating this database and the needed - tables. - - If you are the only user of this phpMyAdmin installation, you can use your - current database to store those special tables; in this case, just put your - current database name in :config:option:`$cfg['Servers'][$i]['pmadb']`. For a - multi-user installation, set this parameter to the name of your central - database containing the phpMyAdmin configuration storage. - -.. _bookmark: -.. config:option:: $cfg['Servers'][$i]['bookmarktable'] - - :type: string - :default: ``''`` - - Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This - can be useful for queries you often run. To allow the usage of this - functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * enter the table name in :config:option:`$cfg['Servers'][$i]['bookmarktable']` - - -.. _relation: -.. config:option:: $cfg['Servers'][$i]['relation'] - - :type: string - :default: ``''`` - - Since release 2.2.4 you can describe, in a special 'relation' table, - which column is a key in another table (a foreign key). phpMyAdmin - currently uses this to: - - * make clickable, when you browse the master table, the data values that - point to the foreign table; - * display in an optional tool-tip the "display column" when browsing the - master table, if you move the mouse to a column containing a foreign - key (use also the 'table\_info' table); (see :ref:`faqdisplay`) - * in edit/insert mode, display a drop-down list of possible foreign keys - (key value and "display column" are shown) (see :ref:`faq6_21`) - * display links on the table properties page, to check referential - integrity (display missing foreign keys) for each described key; - * in query-by-example, create automatic joins (see :ref:`faq6_6`) - * enable you to get a :term:`PDF` schema of - your database (also uses the table\_coords table). - - The keys can be numeric or character. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the relation table name in :config:option:`$cfg['Servers'][$i]['relation']` - * now as normal user open phpMyAdmin and for each one of your tables - where you want to use this feature, click :guilabel:`Structure/Relation view/` - and choose foreign columns. - - .. note:: - - In the current version, ``master_db`` must be the same as ``foreign_db``. - Those columns have been put in future development of the cross-db - relations. - -.. _table_info: -.. config:option:: $cfg['Servers'][$i]['table_info'] - - :type: string - :default: ``''`` - - Since release 2.3.0 you can describe, in a special 'table\_info' - table, which column is to be displayed as a tool-tip when moving the - cursor over the corresponding key. This configuration variable will - hold the name of this special table. To allow the usage of this - functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['table\_info']` (e.g. - ``pma__table_info``) - * then for each table where you want to use this feature, click - "Structure/Relation view/Choose column to display" to choose the - column. - - .. seealso:: :ref:`faqdisplay` - -.. _table_coords: -.. config:option:: $cfg['Servers'][$i]['table_coords'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['pdf_pages'] - - :type: string - :default: ``''`` - - Since release 2.3.0 you can have phpMyAdmin create :term:`PDF` pages - showing the relations between your tables. To do this it needs two tables - "pdf\_pages" (storing information about the available :term:`PDF` pages) - and "table\_coords" (storing coordinates where each table will be placed on - a :term:`PDF` schema output). You must be using the "relation" feature. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the correct table names in - :config:option:`$cfg['Servers'][$i]['table\_coords']` and - :config:option:`$cfg['Servers'][$i]['pdf\_pages']` - - .. seealso:: :ref:`faqpdf`. - -.. _col_com: -.. config:option:: $cfg['Servers'][$i]['column_info'] - - :type: string - :default: ``''`` - - This part requires a content update! Since release 2.3.0 you can - store comments to describe each column for each table. These will then - be shown on the "printview". - - Starting with release 2.5.0, comments are consequently used on the table - property pages and table browse view, showing up as tool-tips above the - column name (properties page) or embedded within the header of table in - browse view. They can also be shown in a table dump. Please see the - relevant configuration directives later on. - - Also new in release 2.5.0 is a MIME- transformation system which is also - based on the following table structure. See :ref:`transformations` for - further information. To use the MIME- transformation system, your - column\_info table has to have the three new columns 'mimetype', - 'transformation', 'transformation\_options'. - - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['column\_info']` (e.g. - ``pma__column_info``) - * to update your PRE-2.5.0 Column\_comments Table use this: and - remember that the Variable in :file:`config.inc.php` has been renamed from - :config:option:`$cfg['Servers'][$i]['column\_comments']` to - :config:option:`$cfg['Servers'][$i]['column\_info']` - - .. code-block:: mysql - - ALTER TABLE `pma__column_comments` - ADD `mimetype` VARCHAR( 255 ) NOT NULL, - ADD `transformation` VARCHAR( 255 ) NOT NULL, - ADD `transformation_options` VARCHAR( 255 ) NOT NULL; - -.. _history: -.. config:option:: $cfg['Servers'][$i]['history'] - - :type: string - :default: ``''`` - - Since release 2.5.0 you can store your :term:`SQL` history, which means all - queries you entered manually into the phpMyAdmin interface. If you don't - want to use a table-based history, you can use the JavaScript-based - history. - - Using that, all your history items are deleted when closing the window. - Using :config:option:`$cfg['QueryHistoryMax']` you can specify an amount of - history items you want to have on hold. On every login, this list gets cut - to the maximum amount. - - The query history is only available if JavaScript is enabled in - your browser. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['history']` (e.g. - ``pma__history``) - -.. _recent: -.. config:option:: $cfg['Servers'][$i]['recent'] - - :type: string - :default: ``''`` - - Since release 3.5.0 you can show recently used tables in the - navigation panel. It helps you to jump across table directly, without - the need to select the database, and then select the table. Using - :config:option:`$cfg['NumRecentTables']` you can configure the maximum number - of recent tables shown. When you select a table from the list, it will jump to - the page specified in :config:option:`$cfg['NavigationTreeDefaultTabTable']`. - - - Without configuring the storage, you can still access the recently used tables, - but it will disappear after you logout. - - To allow the usage of this functionality persistently: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['recent']` (e.g. - ``pma__recent``) - -.. _table_uiprefs: -.. config:option:: $cfg['Servers'][$i]['table_uiprefs'] - - :type: string - :default: ``''`` - - Since release 3.5.0 phpMyAdmin can be configured to remember several - things (sorted column :config:option:`$cfg['RememberSorting']`, column order, - and column visibility from a database table) for browsing tables. Without - configuring the storage, these features still can be used, but the values will - disappear after you logout. - - To allow the usage of these functionality persistently: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['table\_uiprefs']` (e.g. - ``pma__table_uiprefs``) - -.. _configurablemenus: -.. config:option:: $cfg['Servers'][$i]['users'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['Servers'][$i]['usergroups'] - - :type: string - :default: ``''`` - - Since release 4.1.0 you can create different user groups with menu items - attached to them. Users can be assigned to these groups and the logged in - user would only see menu items configured to the usergroup he is assigned to. - To do this it needs two tables "usergroups" (storing allowed menu items for each - user group) and "users" (storing users and their assignments to user groups). - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the correct table names in - :config:option:`$cfg['Servers'][$i]['users']` (e.g. ``pma__users``) and - :config:option:`$cfg['Servers'][$i]['usergroups']` (e.g. ``pma__usergroups``) - -.. _navigationhiding: -.. config:option:: $cfg['Servers'][$i]['navigationhiding'] - - :type: string - :default: ``''`` - - Since release 4.1.0 you can hide/show items in the navigation tree. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['navigationhiding']` (e.g. - ``pma__navigationhiding``) - -.. _tracking: -.. config:option:: $cfg['Servers'][$i]['tracking'] - - :type: string - :default: ``''`` - - Since release 3.3.x a tracking mechanism is available. It helps you to - track every :term:`SQL` command which is - executed by phpMyAdmin. The mechanism supports logging of data - manipulation and data definition statements. After enabling it you can - create versions of tables. - - The creation of a version has two effects: - - * phpMyAdmin saves a snapshot of the table, including structure and - indexes. - * phpMyAdmin logs all commands which change the structure and/or data of - the table and links these commands with the version number. - - Of course you can view the tracked changes. On the :guilabel:`Tracking` - page a complete report is available for every version. For the report you - can use filters, for example you can get a list of statements within a date - range. When you want to filter usernames you can enter \* for all names or - you enter a list of names separated by ','. In addition you can export the - (filtered) report to a file or to a temporary database. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['tracking']` (e.g. - ``pma__tracking``) - - -.. _tracking2: -.. config:option:: $cfg['Servers'][$i]['tracking_version_auto_create'] - - :type: boolean - :default: false - - Whether the tracking mechanism creates versions for tables and views - automatically. - - If this is set to true and you create a table or view with - - * CREATE TABLE ... - * CREATE VIEW ... - - and no version exists for it, the mechanism will create a version for - you automatically. - -.. _tracking3: -.. config:option:: $cfg['Servers'][$i]['tracking_default_statements'] - - :type: string - :default: ``'CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,CREATE INDEX,DROP INDEX,INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,CREATE VIEW,ALTER VIEW,DROP VIEW,CREATE DATABASE,ALTER DATABASE,DROP DATABASE'`` - - Defines the list of statements the auto-creation uses for new - versions. - -.. _tracking4: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_view'] - - :type: boolean - :default: true - - Whether a DROP VIEW IF EXISTS statement will be added as first line to - the log when creating a view. - -.. _tracking5: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_table'] - - :type: boolean - :default: true - - Whether a DROP TABLE IF EXISTS statement will be added as first line - to the log when creating a table. - -.. _tracking6: -.. config:option:: $cfg['Servers'][$i]['tracking_add_drop_database'] - - :type: boolean - :default: true - - Whether a DROP DATABASE IF EXISTS statement will be added as first - line to the log when creating a database. - -.. _userconfig: -.. config:option:: $cfg['Servers'][$i]['userconfig'] - - :type: string - :default: ``''`` - - Since release 3.4.x phpMyAdmin allows users to set most preferences by - themselves and store them in the database. - - If you don't allow for storing preferences in - :config:option:`$cfg['Servers'][$i]['pmadb']`, users can still personalize - phpMyAdmin, but settings will be saved in browser's local storage, or, it - is is unavailable, until the end of session. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['userconfig']` - - - -.. _designer_coords: -.. config:option:: $cfg['Servers'][$i]['designer_coords'] - - :type: string - :default: ``''`` - - Since release 2.10.0 a Designer interface is available; it permits to - visually manage the relations. - - To allow the usage of this functionality: - - * set up :config:option:`$cfg['Servers'][$i]['pmadb']` and the phpMyAdmin configuration storage - * put the table name in :config:option:`$cfg['Servers'][$i]['designer\_coords']` - (e.g. ``pma__designer_coords``) - - - -.. config:option:: $cfg['Servers'][$i]['MaxTableUiprefs'] - - :type: integer - :default: 100 - - Maximum number of rows saved in - :config:option:`$cfg['Servers'][$i]['table_uiprefs']` table. - - When tables are dropped or renamed, - :config:option:`$cfg['Servers'][$i]['table_uiprefs']` may contain invalid data - (referring to tables which no longer exist). We only keep this number of newest - rows in :config:option:`$cfg['Servers'][$i]['table_uiprefs']` and automatically - delete older rows. - -.. config:option:: $cfg['Servers'][$i]['AllowRoot'] - - :type: boolean - :default: true - - Whether to allow root access. This is just a shortcut for the - :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` below. - -.. config:option:: $cfg['Servers'][$i]['AllowNoPassword'] - - :type: boolean - :default: false - - Whether to allow logins without a password. The default value of - ``false`` for this parameter prevents unintended access to a MySQL - server with was left with an empty password for root or on which an - anonymous (blank) user is defined. - -.. _servers_allowdeny_order: -.. config:option:: $cfg['Servers'][$i]['AllowDeny']['order'] - - :type: string - :default: ``''`` - - If your rule order is empty, then :term:`IP` - authorization is disabled. - - If your rule order is set to - ``'deny,allow'`` then the system applies all deny rules followed by - allow rules. Access is allowed by default. Any client which does not - match a Deny command or does match an Allow command will be allowed - access to the server. - - If your rule order is set to ``'allow,deny'`` - then the system applies all allow rules followed by deny rules. Access - is denied by default. Any client which does not match an Allow - directive or does match a Deny directive will be denied access to the - server. - - If your rule order is set to ``'explicit'``, authorization is - performed in a similar fashion to rule order 'deny,allow', with the - added restriction that your host/username combination **must** be - listed in the *allow* rules, and not listed in the *deny* rules. This - is the **most** secure means of using Allow/Deny rules, and was - available in Apache by specifying allow and deny rules without setting - any order. - - Please also see :config:option:`$cfg['TrustedProxies']` for - detecting IP address behind proxies. - -.. _servers_allowdeny_rules: -.. config:option:: $cfg['Servers'][$i]['AllowDeny']['rules'] - - :type: array of strings - :default: array() - - The general format for the rules is as such: - - .. code-block:: none - - <'allow' | 'deny'> [from] - - If you wish to match all users, it is possible to use a ``'%'`` as a - wildcard in the *username* field. - - There are a few shortcuts you can - use in the *ipmask* field as well (please note that those containing - SERVER\_ADDRESS might not be available on all webservers): - - .. code-block:: none - - - 'all' -> 0.0.0.0/0 - 'localhost' -> 127.0.0.1/8 - 'localnetA' -> SERVER_ADDRESS/8 - 'localnetB' -> SERVER_ADDRESS/16 - 'localnetC' -> SERVER_ADDRESS/24 - - Having an empty rule list is equivalent to either using ``'allow % - from all'`` if your rule order is set to ``'deny,allow'`` or ``'deny % - from all'`` if your rule order is set to ``'allow,deny'`` or - ``'explicit'``. - - For the :term:`IP address` matching - system, the following work: - - * ``xxx.xxx.xxx.xxx`` (an exact :term:`IP address`) - * ``xxx.xxx.xxx.[yyy-zzz]`` (an :term:`IP address` range) - * ``xxx.xxx.xxx.xxx/nn`` (CIDR, Classless Inter-Domain Routing type :term:`IP` addresses) - - But the following does not work: - - * ``xxx.xxx.xxx.xx[yyy-zzz]`` (partial :term:`IP` address range) - - For :term:`IPv6` addresses, the following work: - - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx`` (an exact :term:`IPv6` address) - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:[yyyy-zzzz]`` (an :term:`IPv6` address range) - * ``xxxx:xxxx:xxxx:xxxx/nn`` (CIDR, Classless Inter-Domain Routing type :term:`IPv6` addresses) - - But the following does not work: - - * ``xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx[yyy-zzz]`` (partial :term:`IPv6` address range) - -.. config:option:: $cfg['Servers'][$i]['SignonScript'] - - :type: string - :default: ``''`` - - Name of PHP script to be sourced and executed to obtain login - credentials. This is alternative approach to session based single - signon. The script needs to provide function - ``get_login_credentials`` which returns list of username and - password, accepting single parameter of existing username (can be - empty). See :file:`examples/signon-script.php` for an example. - -.. config:option:: $cfg['Servers'][$i]['SignonSession'] - - :type: string - :default: ``''`` - - Name of session which will be used for signon authentication method. - You should use something different than ``phpMyAdmin``, because this - is session which phpMyAdmin uses internally. Takes effect only if - :config:option:`$cfg['Servers'][$i]['SignonScript']` is not configured. - -.. config:option:: $cfg['Servers'][$i]['SignonURL'] - - :type: string - :default: ``''`` - - :term:`URL` where user will be redirected - to log in for signon authentication method. Should be absolute - including protocol. - -.. config:option:: $cfg['Servers'][$i]['LogoutURL'] - - :type: string - :default: ``''`` - - :term:`URL` where user will be redirected - after logout (doesn't affect config authentication method). Should be - absolute including protocol. - -.. config:option:: $cfg['Servers'][$i]['StatusCacheDatabases'] - - :type: array of strings - :default: array() - - Enables caching of ``TABLE STATUS`` outputs for specific databases on - this server (in some cases ``TABLE STATUS`` can be very slow, so you - may want to cache it). APC is used (if the PHP extension is available, - if not, this setting is ignored silently). You have to provide - :config:option:`$cfg['Servers'][$i]['StatusCacheLifetime']`. - -.. config:option:: $cfg['Servers'][$i]['StatusCacheLifetime'] - - :type: integer - :default: 0 - - Lifetime in seconds of the ``TABLE STATUS`` cache if - :config:option:`$cfg['Servers'][$i]['StatusCacheDatabases']` is used. - -Generic settings ----------------- - -.. config:option:: $cfg['ServerDefault'] - - :type: integer - :default: 1 - - If you have more than one server configured, you can set - :config:option:`$cfg['ServerDefault']` to any one of them to autoconnect to that - server when phpMyAdmin is started, or set it to 0 to be given a list - of servers without logging in. - - If you have only one server configured, - :config:option:`$cfg['ServerDefault']` MUST be set to that server. - -.. config:option:: $cfg['VersionCheck'] - - :type: boolean - :default: true - - Enables check for latest versions using javascript on main phpMyAdmin - page. - - .. note:: - - This setting can be adjusted by your vendor. - -.. config:option:: $cfg['ProxyUrl'] - - :type: string - :default: "" - - The url of the proxy to be used when phpmyadmin needs to access the outside - intenet such as when retrieving the latest version info or submitting error - reports. You need this if the server where phpMyAdmin is installed does not - have direct access to the internet. - The format is: "hostname:portnumber" - -.. config:option:: $cfg['ProxyUser'] - - :type: string - :default: "" - - The username for authenticating with the proxy. By default, no - authentication is performed. If a username is supplied, Basic - Authentication will be performed. No other types of authentication - are currently supported. - -.. config:option:: $cfg['ProxyPass'] - - :type: string - :default: "" - - The password for authenticating with the proxy. - -.. config:option:: $cfg['MaxDbList'] - - :type: integer - :default: 100 - - The maximum number of database names to be displayed in the main panel's - database list. - -.. config:option:: $cfg['MaxTableList'] - - :type: integer - :default: 250 - - The maximum number of table names to be displayed in the main panel's - list (except on the Export page). This limit is also enforced in the - navigation panel when in Light mode. - -.. config:option:: $cfg['ShowHint'] - - :type: boolean - :default: true - - Whether or not to show hints (for example, hints when hovering over - table headers). - -.. config:option:: $cfg['MaxCharactersInDisplayedSQL'] - - :type: integer - :default: 1000 - - The maximum number of characters when a :term:`SQL` query is displayed. The - default limit of 1000 should be correct to avoid the display of tons of - hexadecimal codes that represent BLOBs, but some users have real - :term:`SQL` queries that are longer than 1000 characters. Also, if a - query's length exceeds this limit, this query is not saved in the history. - -.. config:option:: $cfg['PersistentConnections'] - - :type: boolean - :default: false - - Whether `persistent connections `_ should be used or not. Works with - following extensions: - - * mysql (`mysql\_pconnect `_), - * mysqli (requires PHP 5.3.0 or newer, `more information - `_). - -.. config:option:: $cfg['ForceSSL'] - - :type: boolean - :default: false - - Whether to force using https while accessing phpMyAdmin. - - .. note:: - - In some setups (like separate SSL proxy or load balancer) you might - have to set :config:option:`$cfg['PmaAbsoluteUri']` for correct - redirection. - -.. config:option:: $cfg['ExecTimeLimit'] - - :type: integer [number of seconds] - :default: 300 - - Set the number of seconds a script is allowed to run. If seconds is - set to zero, no time limit is imposed. This setting is used while - importing/exporting dump files but has - no effect when PHP is running in safe mode. - -.. config:option:: $cfg['SessionSavePath'] - - :type: string - :default: ``''`` - - Path for storing session data (`session\_save\_path PHP parameter - `_). - -.. config:option:: $cfg['MemoryLimit'] - - :type: string [number of bytes] - :default: ``'-1'`` - - Set the number of bytes a script is allowed to allocate. If set to - ``'-1'``, no limit is imposed. - - This setting is used while importing/exporting dump files and at some other - places in phpMyAdmin so you definitely don't want to put here a too low - value. It has no effect when PHP is running in safe mode. - - You can also use any string as in :file:`php.ini`, eg. '16M'. Ensure you - don't omit the suffix (16 means 16 bytes!) - -.. config:option:: $cfg['SkipLockedTables'] - - :type: boolean - :default: false - - Mark used tables and make it possible to show databases with locked - tables (since MySQL 3.23.30). - -.. config:option:: $cfg['ShowSQL'] - - :type: boolean - :default: true - - Defines whether :term:`SQL` queries - generated by phpMyAdmin should be displayed or not. - -.. config:option:: $cfg['RetainQueryBox'] - - :type: boolean - :default: false - - Defines whether the :term:`SQL` query box - should be kept displayed after its submission. - -.. config:option:: $cfg['CodemirrorEnable'] - - :type: boolean - :default: true - - Defines whether to use a Javascript code editor for SQL query boxes. - CodeMirror provides syntax highlighting and line numbers. However, - middle-clicking for pasting the clipboard contents in some Linux - distributions (such as Ubuntu) is not supported by all browsers. - -.. config:option:: $cfg['AllowUserDropDatabase'] - - :type: boolean - :default: false - - Defines whether normal users (non-administrator) are allowed to delete - their own database or not. If set as false, the link :guilabel:`Drop - Database` will not be shown, and even a ``DROP DATABASE mydatabase`` will - be rejected. Quite practical for :term:`ISP` 's with many customers. - - .. note:: - - This limitation of :term:`SQL` queries is not - as strict as when using MySQL privileges. This is due to nature of - :term:`SQL` queries which might be quite - complicated. So this choice should be viewed as help to avoid accidental - dropping rather than strict privilege limitation. - -.. config:option:: $cfg['Confirm'] - - :type: boolean - :default: true - - Whether a warning ("Are your really sure...") should be displayed when - you're about to lose data. - -.. config:option:: $cfg['UseDbSearch'] - - :type: boolean - :default: true - - Define whether the "search string inside database" is enabled or not. - -.. config:option:: $cfg['IgnoreMultiSubmitErrors'] - - :type: boolean - :default: false - - Define whether phpMyAdmin will continue executing a multi-query - statement if one of the queries fails. Default is to abort execution. - -Cookie authentication options ------------------------------ - -.. config:option:: $cfg['blowfish_secret'] - - :type: string - :default: ``''`` - - The "cookie" auth\_type uses blowfish algorithm to encrypt the - password. If you are using the "cookie" auth\_type, enter here a - random passphrase of your choice. It will be used internally by the - blowfish algorithm: you won’t be prompted for this passphrase. There - is no maximum length for this secret. - - .. versionchanged:: 3.1.0 - Since version 3.1.0 phpMyAdmin can generate this on the fly, but it - makes a bit weaker security as this generated secret is stored in - session and furthermore it makes impossible to recall user name from - cookie. - -.. config:option:: $cfg['LoginCookieRecall'] - - :type: boolean - :default: true - - Define whether the previous login should be recalled or not in cookie - authentication mode. - - This is automatically disabled if you do not have - configured :config:option:`$cfg['blowfish_secret']`. - -.. config:option:: $cfg['LoginCookieValidity'] - - :type: integer [number of seconds] - :default: 1440 - - Define how long a login cookie is valid. Please note that php - configuration option `session.gc\_maxlifetime - `_ might limit session validity and if the session is lost, - the login cookie is also invalidated. So it is a good idea to set - ``session.gc_maxlifetime`` at least to the same value of - :config:option:`$cfg['LoginCookieValidity']`. - -.. config:option:: $cfg['LoginCookieStore'] - - :type: integer [number of seconds] - :default: 0 - - Define how long login cookie should be stored in browser. Default 0 - means that it will be kept for existing session. This is recommended - for not trusted environments. - -.. config:option:: $cfg['LoginCookieDeleteAll'] - - :type: boolean - :default: true - - If enabled (default), logout deletes cookies for all servers, - otherwise only for current one. Setting this to false makes it easy to - forget to log out from other server, when you are using more of them. - -.. _AllowArbitraryServer: -.. config:option:: $cfg['AllowArbitraryServer'] - - :type: boolean - :default: false - - If enabled, allows you to log in to arbitrary servers using cookie - authentication. - - .. note:: - - Please use this carefully, as this may allow users access to MySQL servers - behind the firewall where your :term:`HTTP` - server is placed. - -.. config:option:: $cfg['CaptchaLoginPublicKey'] - - :type: string - :default: ``''`` - - The public key for the reCaptcha service that can be obtain from - http://www.google.com/recaptcha. - - reCaptcha will be then used in :ref:`cookie`. - -.. config:option:: $cfg['CaptchaLoginPrivateKey'] - - :type: string - :default: ``''`` - - The private key for the reCaptcha service that can be obtain from - http://www.google.com/recaptcha. - - reCaptcha will be then used in :ref:`cookie`. - -Navigation panel setup ----------------------- - -.. config:option:: $cfg['MaxNavigationItems'] - - :type: integer - :default: 250 - - The number of items that can be displayed on each page of the - navigation tree. - -.. config:option:: $cfg['NavigationTreeEnableGrouping'] - - :type: boolean - :default: true - - Defines whether to group the databases based on a common prefix - in their name :config:option:`$cfg['NavigationTreeDbSeparator']`. - -.. config:option:: $cfg['NavigationTreeDbSeparator'] - - :type: string or array - :default: ``'_'`` - - The string used to separate the parts of the database name when - showing them in a tree. Alternatively you can specify more strings in - an array and all of them will be used as a separator. - -.. config:option:: $cfg['NavigationTreeTableSeparator'] - - :type: string or array - :default: ``'__'`` - - Defines a string to be used to nest table spaces. This means if you have - tables like ``first__second__third`` this will be shown as a three-level - hierarchy like: first > second > third. If set to false or empty, the - feature is disabled. NOTE: You should not use this separator at the - beginning or end of a table name or multiple times after another without - any other characters in between. - -.. config:option:: $cfg['NavigationTreeTableLevel'] - - :type: integer - :default: 1 - - Defines how many sublevels should be displayed when splitting up - tables by the above separator. - -.. config:option:: $cfg['NumRecentTables'] - - :type: integer - :default: 10 - - The maximum number of recently used tables shown in the navigation - panel. Set this to 0 (zero) to disable the listing of recent tables. - -.. config:option:: $cfg['NavigationDisplayLogo'] - - :type: boolean - :default: true - - Defines whether or not to display the phpMyAdmin logo at the top of - the navigation panel. - -.. config:option:: $cfg['NavigationLogoLink'] - - :type: string - :default: ``'index.php'`` - - Enter :term:`URL` where logo in the - navigation panel will point to. For use especially with self made - theme which changes this. - -.. config:option:: $cfg['NavigationLogoLinkWindow'] - - :type: string - :default: ``'main'`` - - Whether to open the linked page in the main window (``main``) or in a - new one (``new``). Note: use ``new`` if you are linking to - ``phpmyadmin.net``. - -.. config:option:: $cfg['NavigationTreeDisplayItemFilterMinimum'] - - :type: integer - :default: 30 - - Defines the minimum number of items (tables, views, routines and - events) to display a JavaScript filter box above the list of items in - the navigation tree. - - To disable the filter completely some high number can be used (e.g. 9999) - -.. config:option:: $cfg['NavigationTreeDisplayDbFilterMinimum'] - - :type: integer - :default: 30 - - Defines the minimum number of databases to display a JavaScript filter - box above the list of databases in the navigation tree. - - To disable the filter completely some high number can be used - (e.g. 9999) - -.. config:option:: $cfg['NavigationDisplayServers'] - - :type: boolean - :default: true - - Defines whether or not to display a server choice at the top of the - navigation panel. - -.. config:option:: $cfg['DisplayServersList'] - - :type: boolean - :default: false - - Defines whether to display this server choice as links instead of in a - drop-down. - -.. config:option:: $cfg['NavigationTreeDefaultTabTable'] - - :type: string - :default: ``'tbl_structure.php'`` - - Defines the tab displayed by default when clicking the small icon next - to each table name in the navigation panel. Possible values: - - * ``tbl_structure.php`` - * ``tbl_sql.php`` - * ``tbl_select.php`` - * ``tbl_change.php`` - * ``sql.php`` - -Main panel ----------- - -.. config:option:: $cfg['ShowStats'] - - :type: boolean - :default: true - - Defines whether or not to display space usage and statistics about - databases and tables. Note that statistics requires at least MySQL - 3.23.3 and that, at this date, MySQL doesn't return such information - for Berkeley DB tables. - -.. config:option:: $cfg['ShowServerInfo'] - - :type: boolean - :default: true - - Defines whether to display detailed server information on main page. - You can additionally hide more information by using - :config:option:`$cfg['Servers'][$i]['verbose']`. - -.. config:option:: $cfg['ShowPhpInfo'] - - :type: boolean - :default: false - -.. config:option:: $cfg['ShowChgPassword'] - - :type: boolean - :default: true - -.. config:option:: $cfg['ShowCreateDb'] - - :type: boolean - :default: true - - Defines whether to display the :guilabel:`PHP information` and - :guilabel:`Change password` links and form for creating database or not at - the starting main (right) frame. This setting does not check MySQL commands - entered directly. - - Please note that to block the usage of ``phpinfo()`` in scripts, you have to - put this in your :file:`php.ini`: - - .. code-block:: ini - - disable_functions = phpinfo() - - Also note that enabling the :guilabel:`Change password` link has no effect - with config authentication mode: because of the hard coded password value - in the configuration file, end users can't be allowed to change their - passwords. - -Database structure ------------------- - -.. config:option:: $cfg['ShowDbStructureCreation'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a - "Creation" column that displays when each table was created. - -.. config:option:: $cfg['ShowDbStructureLastUpdate'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a "Last - update" column that displays when each table was last updated. - -.. config:option:: $cfg['ShowDbStructureLastCheck'] - - :type: boolean - :default: false - - Defines whether the database structure page (tables list) has a "Last - check" column that displays when each table was last checked. - -.. config:option:: $cfg['HideStructureActions'] - - :type: boolean - :default: true - - Defines whether the table structure actions are hidden under a "More" - drop-down. - -Browse mode ------------ - -.. config:option:: $cfg['TableNavigationLinksMode'] - - :type: string - :default: ``'icons'`` - - Defines whether the table navigation links contain ``'icons'``, ``'text'`` - or ``'both'``. - -.. config:option:: $cfg['ShowAll'] - - :type: boolean - :default: false - - Defines whether a user should be displayed a "Show all" button in browse - mode or not in all cases. By default it is shown only on small tables (less - than 500 rows) to avoid performance issues while getting too many rows. - -.. config:option:: $cfg['MaxRows'] - - :type: integer - :default: 25 - - Number of rows displayed when browsing a result set and no LIMIT - clause is used. If the result set contains more rows, "Previous" and - "Next" links will be shown. Possible values: 25,50,100,250,500. - -.. config:option:: $cfg['Order'] - - :type: string - :default: ``'SMART'`` - - Defines whether columns are displayed in ascending (``ASC``) order, in - descending (``DESC``) order or in a "smart" (``SMART``) order - I.E. - descending order for columns of type TIME, DATE, DATETIME and - TIMESTAMP, ascending order else- by default. - -.. config:option:: $cfg['DisplayBinaryAsHex'] - - :type: boolean - :default: true - - Defines whether the "Show binary contents as HEX" browse option is - ticked by default. - -.. config:option:: $cfg['GridEditing'] - - :type: string - :default: ``'double-click'`` - - Defines which action (``double-click`` or ``click``) triggers grid - editing. Can be deactived with the ``disabled`` value. - -.. config:option:: $cfg['SaveCellsAtOnce'] - - :type: boolean - :default: false - - Defines whether or not to save all edited cells at once for grid - editing. - -Editing mode ------------- - -.. config:option:: $cfg['ProtectBinary'] - - :type: boolean or string - :default: ``'blob'`` - - Defines whether ``BLOB`` or ``BINARY`` columns are protected from - editing when browsing a table's content. Valid values are: - - * ``false`` to allow editing of all columns; - * ``'blob'`` to allow editing of all columns except ``BLOBS``; - * ``'noblob'`` to disallow editing of all columns except ``BLOBS`` (the - opposite of ``'blob'``); - * ``'all'`` to disallow editing of all ``BINARY`` or ``BLOB`` columns. - -.. config:option:: $cfg['ShowFunctionFields'] - - :type: boolean - :default: true - - Defines whether or not MySQL functions fields should be initially - displayed in edit/insert mode. Since version 2.10, the user can toggle - this setting from the interface. - -.. config:option:: $cfg['ShowFieldTypesInDataEditView'] - - :type: boolean - :default: true - - Defines whether or not type fields should be initially displayed in - edit/insert mode. The user can toggle this setting from the interface. - -.. config:option:: $cfg['InsertRows'] - - :type: integer - :default: 2 - - Defines the maximum number of concurrent entries for the Insert page. - -.. config:option:: $cfg['ForeignKeyMaxLimit'] - - :type: integer - :default: 100 - - If there are fewer items than this in the set of foreign keys, then a - drop-down box of foreign keys is presented, in the style described by - the :config:option:`$cfg['ForeignKeyDropdownOrder']` setting. - -.. config:option:: $cfg['ForeignKeyDropdownOrder'] - - :type: array - :default: array('content-id', 'id-content') - - For the foreign key drop-down fields, there are several methods of - display, offering both the key and value data. The contents of the - array should be one or both of the following strings: ``content-id``, - ``id-content``. - -Export and import settings --------------------------- - -.. config:option:: $cfg['ZipDump'] - - :type: boolean - :default: true - -.. config:option:: $cfg['GZipDump'] - - :type: boolean - :default: true - -.. config:option:: $cfg['BZipDump'] - - :type: boolean - :default: true - - Defines whether to allow the use of zip/GZip/BZip2 compression when - creating a dump file - -.. config:option:: $cfg['CompressOnFly'] - - :type: boolean - :default: true - - Defines whether to allow on the fly compression for GZip/BZip2 - compressed exports. This doesn't affect smaller dumps and allows users - to create larger dumps that won't otherwise fit in memory due to php - memory limit. Produced files contain more GZip/BZip2 headers, but all - normal programs handle this correctly. - -.. config:option:: $cfg['Export'] - - :type: array - :default: array(...) - - In this array are defined default parameters for export, names of - items are similar to texts seen on export page, so you can easily - identify what they mean. - -.. config:option:: $cfg['Export']['method'] - - :type: string - :default: ``'quick'`` - - Defines how the export form is displayed when it loads. Valid values - are: - - * ``quick`` to display the minimum number of options to configure - * ``custom`` to display every available option to configure - * ``custom-no-form`` same as ``custom`` but does not display the option - of using quick export - - - -.. config:option:: $cfg['Import'] - - :type: array - :default: array(...) - - In this array are defined default parameters for import, names of - items are similar to texts seen on import page, so you can easily - identify what they mean. - - -Tabs display settings ---------------------- - -.. config:option:: $cfg['TabsMode'] - - :type: string - :default: ``'both'`` - - Defines whether the menu tabs contain ``'icons'``, ``'text'`` or ``'both'``. - -.. config:option:: $cfg['ActionLinksMode'] - - :type: string - :default: ``'both'`` - - If set to ``icons``, will display icons instead of text for db and table - properties links (like :guilabel:`Browse`, :guilabel:`Select`, - :guilabel:`Insert`, ...). Can be set to ``'both'`` - if you want icons AND text. When set to ``text``, will only show text. - -.. config:option:: $cfg['PropertiesNumColumns'] - - :type: integer - :default: 1 - - How many columns will be utilized to display the tables on the database - property view? When setting this to a value larger than 1, the type of the - database will be omitted for more display space. - -.. config:option:: $cfg['DefaultTabServer'] - - :type: string - :default: ``'index.php'`` - - Defines the tab displayed by default on server view. Possible values: - - * ``main.php`` (recommended for multi-user setups) - * ``server_databases.php``, - * ``server_status.php`` - * ``server_variables.php`` - * ``server_privileges.php`` - -.. config:option:: $cfg['DefaultTabDatabase'] - - :type: string - :default: ``'db_structure.php'`` - - Defines the tab displayed by default on database view. Possible - values: - - * ``db_structure.php`` - * ``db_sql.php`` - * ``db_search.php``. - -.. config:option:: $cfg['DefaultTabTable'] - - :type: string - :default: ``'sql.php'`` - - Defines the tab displayed by default on table view. Possible values: - - * ``tbl_structure.php`` - * ``tbl_sql.php`` - * ``tbl_select.php`` - * ``tbl_change.php`` - * ``sql.php`` - -PDF Options ------------ - -.. config:option:: $cfg['PDFPageSizes'] - - :type: array - :default: ``array('A3', 'A4', 'A5', 'letter', 'legal')`` - - Array of possible paper sizes for creating PDF pages. - - You should never need to change this. - -.. config:option:: $cfg['PDFDefaultPageSize'] - - :type: string - :default: ``'A4'`` - - Default page size to use when creating PDF pages. Valid values are any - listed in :config:option:`$cfg['PDFPageSizes']`. - -Languages ---------- - -.. config:option:: $cfg['DefaultLang'] - - :type: string - :default: ``'en'`` - - Defines the default language to use, if not browser-defined or user- - defined. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. - -.. config:option:: $cfg['DefaultConnectionCollation'] - - :type: string - :default: ``'utf8_general_ci'`` - - Defines the default connection collation to use, if not user-defined. - See the `MySQL documentation `_ for list of possible values. This setting is - ignored when connected to Drizzle server. - -.. config:option:: $cfg['Lang'] - - :type: string - :default: not set - - Force language to use. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. - -.. config:option:: $cfg['FilterLanguages'] - - :type: string - :default: ``''`` - - Limit list of available languages to those matching the given regular - expression. For example if you want only Czech and English, you should - set filter to ``'^(cs|en)'``. - -.. config:option:: $cfg['RecodingEngine'] - - :type: string - :default: ``'auto'`` - - You can select here which functions will be used for character set - conversion. Possible values are: - - * auto - automatically use available one (first is tested iconv, then - recode) - * iconv - use iconv or libiconv functions - * recode - use recode\_string function - * mb - use mbstring extension - * none - disable encoding conversion - - Enabled charset conversion activates a pull-down menu in the Export - and Import pages, to choose the character set when exporting a file. - The default value in this menu comes from - :config:option:`$cfg['Export']['charset']` and :config:option:`$cfg['Import']['charset']`. - -.. config:option:: $cfg['IconvExtraParams'] - - :type: string - :default: ``'//TRANSLIT'`` - - Specify some parameters for iconv used in charset conversion. See - `iconv documentation `_ for details. By default - ``//TRANSLIT`` is used, so that invalid characters will be - transliterated. - -.. config:option:: $cfg['AvailableCharsets'] - - :type: array - :default: array(..._ - - Available character sets for MySQL conversion. You can add your own - (any of supported by recode/iconv) or remove these which you don't - use. Character sets will be shown in same order as here listed, so if - you frequently use some of these move them to the top. - -Web server settings -------------------- - -.. config:option:: $cfg['OBGzip'] - - :type: string/boolean - :default: ``'auto'`` - - Defines whether to use GZip output buffering for increased speed in - :term:`HTTP` transfers. Set to - true/false for enabling/disabling. When set to 'auto' (string), - phpMyAdmin tries to enable output buffering and will automatically - disable it if your browser has some problems with buffering. IE6 with - a certain patch is known to cause data corruption when having enabled - buffering. - -.. config:option:: $cfg['TrustedProxies'] - - :type: array - :default: array() - - Lists proxies and HTTP headers which are trusted for - :config:option:`$cfg['Servers'][$i]['AllowDeny']['order']`. This list is by - default empty, you need to fill in some trusted proxy servers if you - want to use rules for IP addresses behind proxy. - - The following example specifies that phpMyAdmin should trust a - HTTP\_X\_FORWARDED\_FOR (``X -Forwarded-For``) header coming from the proxy - 1.2.3.4: - - .. code-block:: php - - $cfg['TrustedProxies'] = array('1.2.3.4' => 'HTTP_X_FORWARDED_FOR'); - - The :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` directive uses the - client's IP address as usual. - -.. config:option:: $cfg['GD2Available'] - - :type: string - :default: ``'auto'`` - - Specifies whether GD >= 2 is available. If yes it can be used for MIME - transformations. Possible values are: - - * auto - automatically detect - * yes - GD 2 functions can be used - * no - GD 2 function cannot be used - -.. config:option:: $cfg['CheckConfigurationPermissions'] - - :type: boolean - :default: true - - We normally check the permissions on the configuration file to ensure - it's not world writable. However, phpMyAdmin could be installed on a - NTFS filesystem mounted on a non-Windows server, in which case the - permissions seems wrong but in fact cannot be detected. In this case a - sysadmin would set this parameter to ``false``. - -.. config:option:: $cfg['LinkLengthLimit'] - - :type: integer - :default: 1000 - - Limit for length of :term:`URL` in links. When length would be above this - limit, it is replaced by form with button. This is required as some web - servers (:term:`IIS`) have problems with long :term:`URL` . - -.. config:option:: $cfg['CSPAllow'] - - :type: string - :default: ``''`` - - Additional string to include in allowed script and image sources in Content - Security Policy header. - - This can be useful when you want to include some external javascript files - in :file:`config.footer.inc.php` or :file:`config.header.inc.php`, which - would be normally not allowed by Content Security Policy. - - To allow some sites, just list them within the string: - - .. code-block:: php - - $cfg['CSPAllow'] = 'example.com example.net'; - - .. versionadded:: 4.0.4 - -.. config:option:: $cfg['DisableMultiTableMaintenance'] - - :type: boolean - :default: false - - In the database Structure page, it's possible to mark some tables then - choose an operation like optimizing for many tables. This can slow - down a server; therefore, setting this to ``true`` prevents this kind - of multiple maintenance operation. - -Theme settings --------------- - -.. config:option:: $cfg['NaviWidth'] - - :type: integer - :default: - - Navigation panel width in pixels. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['NaviBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['MainBackground'] - - :type: string [CSS color for background] - :default: - - The background styles used for both the frames. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['NaviPointerBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['NaviPointerColor'] - - :type: string [CSS color] - :default: - - The style used for the pointer in the navigation panel. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['Border'] - - :type: integer - :default: - - The size of a table's border. See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['ThBackground'] - - :type: string [CSS color for background] - :default: - -.. config:option:: $cfg['ThColor'] - - :type: string [CSS color] - :default: - - The style used for table headers. See - :file:`themes/themename/layout.inc.php`. - -.. _cfg_BgcolorOne: -.. config:option:: $cfg['BgOne'] - - :type: string [CSS color] - :default: - - The color (HTML) #1 for table rows. See - :file:`themes/themename/layout.inc.php`. - -.. _cfg_BgcolorTwo: -.. config:option:: $cfg['BgTwo'] - - :type: string [CSS color] - :default: - - The color (HTML) #2 for table rows. See - :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['BrowsePointerBackground'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowsePointerColor'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowseMarkerBackground'] - - :type: string [CSS color] - :default: - -.. config:option:: $cfg['BrowseMarkerColor'] - - :type: string [CSS color] - :default: - - The colors (HTML) uses for the pointer and the marker in browse mode. - The former feature highlights the row over which your mouse is passing - and the latter lets you visually mark/unmark rows by clicking on the - corresponding checkbox. Highlighting / marking a column is done by - hovering over / clicking the column's header (outside of the text). - See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['FontFamily'] - - :type: string - :default: - - You put here a valid CSS font family value, for example ``arial, sans- - serif``. See :file:`themes/themename/layout.inc.php`. - -.. config:option:: $cfg['FontFamilyFixed'] - - :type: string - :default: - - You put here a valid CSS font family value, for example ``monospace``. - This one is used in textarea. See :file:`themes/themename/layout.inc.php`. - -Design customization --------------------- - -.. config:option:: $cfg['NavigationTreePointerEnable'] - - :type: boolean - :default: true - - A value of ``true`` activates the navi pointer. - -.. config:option:: $cfg['BrowsePointerEnable'] - - :type: boolean - :default: true - - Whether to activate the browse pointer or not. - -.. config:option:: $cfg['BrowseMarkerEnable'] - - :type: boolean - :default: true - - Whether to activate the browse marker or not. - -.. config:option:: $cfg['LimitChars'] - - :type: integer - :default: 50 - - Maximum number of characters shown in any non-numeric field on browse - view. Can be turned off by a toggle button on the browse page. - -.. config:option:: $cfg['RowActionLinks'] - - :type: string - :default: ``'left'`` - - Defines the place where table row links (Edit, Copy, Delete) would be - put when tables contents are displayed (you may have them displayed at - the left side, right side, both sides or nowhere). "left" and "right" - are parsed as "top" and "bottom" with vertical display mode. - -.. config:option:: $cfg['DefaultDisplay'] - - :type: string - :default: ``'horizonta'`` - - There are 3 display modes: horizontal, horizontalflipped and vertical. - Define which one is displayed by default. The first mode displays each - row on a horizontal line, the second rotates the headers by 90 - degrees, so you can use descriptive headers even though columns only - contain small values and still print them out. The vertical mode sorts - each row on a vertical lineup. - -.. config:option:: $cfg['RememberSorting'] - - :type: boolean - :default: true - - If enabled, remember the sorting of each table when browsing them. - -.. config:option:: $cfg['HeaderFlipType'] - - :type: string - :default: ``'auto'`` - - The HeaderFlipType can be set to 'auto', 'css' or 'fake'. When using - 'css' the rotation of the header for horizontalflipped is done via - CSS. The CSS transformation currently works only in Internet - Explorer.If set to 'fake' PHP does the transformation for you, but of - course this does not look as good as CSS. The 'auto' option enables - CSS transformation when browser supports it and use PHP based one - otherwise. - -.. config:option:: $cfg['ShowBrowseComments'] - - :type: boolean - :default: true - -.. config:option:: $cfg['ShowPropertyComments'] - - :type: boolean - :default: true - - By setting the corresponding variable to ``true`` you can enable the - display of column comments in Browse or Property display. In browse - mode, the comments are shown inside the header. In property mode, - comments are displayed using a CSS-formatted dashed-line below the - name of the column. The comment is shown as a tool-tip for that - column. - -Text fields ------------ - -.. config:option:: $cfg['CharEditing'] - - :type: string - :default: ``'input'`` - - Defines which type of editing controls should be used for CHAR and - VARCHAR columns. Possible values are: - - * input - this allows to limit size of text to size of columns in MySQL, - but has problems with newlines in columns - * textarea - no problems with newlines in columns, but also no length - limitations - -.. config:option:: $cfg['MinSizeForInputField'] - - :type: integer - :default: 4 - - Defines the minimum size for input fields generated for CHAR and - VARCHAR columns. - -.. config:option:: $cfg['MaxSizeForInputField'] - - :type: integer - :default: 60 - - Defines the maximum size for input fields generated for CHAR and - VARCHAR columns. - -.. config:option:: $cfg['TextareaCols'] - - :type: integer - :default: 40 - -.. config:option:: $cfg['TextareaRows'] - - :type: integer - :default: 15 - -.. config:option:: $cfg['CharTextareaCols'] - - :type: integer - :default: 40 - -.. config:option:: $cfg['CharTextareaRows'] - - :type: integer - :default: 2 - - Number of columns and rows for the textareas. This value will be - emphasized (\*2) for :term:`SQL` query - textareas and (\*1.25) for :term:`SQL` - textareas inside the query window. - - The Char\* values are used for CHAR - and VARCHAR editing (if configured via :config:option:`$cfg['CharEditing']`). - -.. config:option:: $cfg['LongtextDoubleTextarea'] - - :type: boolean - :default: true - - Defines whether textarea for LONGTEXT columns should have double size. - -.. config:option:: $cfg['TextareaAutoSelect'] - - :type: boolean - :default: false - - Defines if the whole textarea of the query box will be selected on - click. - - -SQL query box settings ----------------------- - -.. config:option:: $cfg['SQLQuery']['Edit'] - - :type: boolean - :default: true - - Whether to display an edit link to change a query in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['Explain'] - - :type: boolean - :default: true - - Whether to display a link to explain a SELECT query in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['ShowAsPHP'] - - :type: boolean - :default: true - - Whether to display a link to wrap a query in PHP code in any SQL Query - box. - -.. config:option:: $cfg['SQLQuery']['Validate'] - - :type: boolean - :default: false - - Whether to display a link to validate a query in any SQL Query box. - - .. seealso:: :config:option:`$cfg['SQLValidator']` - -.. config:option:: $cfg['SQLQuery']['Refresh'] - - :type: boolean - :default: true - - Whether to display a link to refresh a query in any SQL Query box. - -Web server upload/save/import directories ------------------------------------------ - -.. config:option:: $cfg['UploadDir'] - - :type: string - :default: ``''`` - - The name of the directory where :term:`SQL` files have been uploaded by - other means than phpMyAdmin (for example, ftp). Those files are available - under a drop-down box when you click the database or table name, then the - Import tab. - - If - you want different directory for each user, %u will be replaced with - username. - - Please note that the file names must have the suffix ".sql" - (or ".sql.bz2" or ".sql.gz" if support for compressed formats is - enabled). - - This feature is useful when your file is too big to be - uploaded via :term:`HTTP`, or when file - uploads are disabled in PHP. - - .. note:: - - If PHP is running in safe mode, this directory must be owned by the same - user as the owner of the phpMyAdmin scripts. See also :ref:`faq1_16` for - alternatives. - -.. config:option:: $cfg['SaveDir'] - - :type: string - :default: ``''`` - - The name of the directory where dumps can be saved. - - If you want different directory for each user, %u will be replaced with - username. - - Please note that the directory must exist and has to be writable for - the user running webserver. - - .. note:: - - If PHP is running in safe mode, this directory must be owned by the same - user as the owner of the phpMyAdmin scripts. - -.. config:option:: $cfg['TempDir'] - - :type: string - :default: ``''`` - - The name of the directory where temporary files can be stored. - - This is needed for importing ESRI Shapefiles, see :ref:`faq6_30` and to - work around limitations of ``open_basedir`` for uploaded files, see - :ref:`faq1_11`. - - If the directory where phpMyAdmin is installed is - subject to an ``open_basedir`` restriction, you need to create a - temporary directory in some directory accessible by the web server. - However for security reasons, this directory should be outside the - tree published by webserver. If you cannot avoid having this directory - published by webserver, place at least an empty :file:`index.html` file - there, so that directory listing is not possible. - - This directory should have as strict permissions as possible as the only - user required to access this directory is the one who runs the webserver. - If you have root privileges, simply make this user owner of this directory - and make it accessible only by it: - - .. code-block:: sh - - - chown www-data:www-data tmp - chmod 700 tmp - - If you cannot change owner of the directory, you can achieve a similar - setup using :term:`ACL`: - - .. code-block:: sh - - chmod 700 tmp - setfacl -m "g:www-data:rwx" tmp - setfacl -d -m "g:www-data:rwx" tmp - - If neither of above works for you, you can still make the directory - :command:`chmod 777`, but it might impose risk of other users on system - reading and writing data in this directory. - -Various display setting ------------------------ - -.. config:option:: $cfg['ShowDisplayDirection'] - - :type: boolean - :default: false - - Defines whether or not type display direction option is shown when - browsing a table. - -.. config:option:: $cfg['RepeatCells'] - - :type: integer - :default: 100 - - Repeat the headers every X cells, or 0 to deactivate. - -.. config:option:: $cfg['EditInWindow'] - - :type: boolean - :default: true - -.. config:option:: $cfg['QueryWindowWidth'] - - :type: integer - :default: 550 - -.. config:option:: $cfg['QueryWindowHeight'] - - :type: integer - :default: 310 - -.. config:option:: $cfg['QueryHistoryDB'] - - :type: boolean - :default: false - -.. config:option:: $cfg['QueryWindowDefTab'] - - :type: string - :default: ``'sql'`` - -.. config:option:: $cfg['QueryHistoryMax'] - - :type: integer - :default: 25 - - All those variables affect the query window feature. A :term:`SQL` link or - icon is always displayed in the navigation panel. If JavaScript is enabled - in your browser, a click on this opens a distinct query window, which is a - direct interface to enter :term:`SQL` queries. Otherwise, the right panel - changes to display a query box. - - The size of this query window can be customized with - :config:option:`$cfg['QueryWindowWidth']` and - :config:option:`$cfg['QueryWindowHeight']` - both integers for the size in - pixels. Note that normally, those parameters will be modified in - :file:`layout.inc.php`` for the theme you are using. - - If :config:option:`$cfg['EditInWindow']` is set to true, a click on [Edit] - from the results page (in the :guilabel:`Showing Rows` section) opens the - query window and puts the current query inside it. If set to false, - clicking on the link puts the :term:`SQL` query - in the right panel's query box. - - If :config:option:`$cfg['QueryHistoryDB']` is set to ``true``, all your - Queries are logged to a table, which has to be created by you (see - :config:option:`$cfg['Servers'][$i]['history']`). If set to false, all your - queries will be appended to the form, but only as long as your window is - opened they remain saved. - - When using the JavaScript based query window, it will always get updated - when you click on a new table/db to browse and will focus if you click on - :guilabel:`Edit SQL` after using a query. You can suppress updating the - query window by checking the box :guilabel:`Do not overwrite this query - from outside the window` below the query textarea. Then you can browse - tables/databases in the background without losing the contents of the - textarea, so this is especially useful when composing a query with tables - you first have to look in. The checkbox will get automatically checked - whenever you change the contents of the textarea. Please uncheck the button - whenever you definitely want the query window to get updated even though - you have made alterations. - - If :config:option:`$cfg['QueryHistoryDB']` is set to ``true`` you can - specify the amount of saved history items using - :config:option:`$cfg['QueryHistoryMax']`. - - The query window also has a custom tabbed look to group the features. - Using the variable :config:option:`$cfg['QueryWindowDefTab']` you can - specify the default tab to be used when opening the query window. It can be - set to either ``sql``, ``files``, ``history`` or ``full``. - -.. config:option:: $cfg['BrowseMIME'] - - :type: boolean - :default: true - - Enable :ref:`transformations`. - -.. config:option:: $cfg['MaxExactCount'] - - :type: integer - :default: 0 - - For InnoDB tables, determines for how large tables phpMyAdmin should - get the exact row count using ``SELECT COUNT``. If the approximate row - count as returned by ``SHOW TABLE STATUS`` is smaller than this value, - ``SELECT COUNT`` will be used, otherwise the approximate count will be - used. - -.. config:option:: $cfg['MaxExactCountViews'] - - :type: integer - :default: 0 - - For VIEWs, since obtaining the exact count could have an impact on - performance, this value is the maximum to be displayed, using a - ``SELECT COUNT ... LIMIT``. Setting this to 0 bypasses any row - counting. - -.. config:option:: $cfg['NaturalOrder'] - - :type: boolean - :default: true - - Sorts database and table names according to natural order (for - example, t1, t2, t10). Currently implemented in the navigation panel - and in Database view, for the table list. - -.. config:option:: $cfg['InitialSlidersState'] - - :type: string - :default: ``'closed'`` - - If set to ``'closed'``, the visual sliders are initially in a closed - state. A value of ``'open'`` does the reverse. To completely disable - all visual sliders, use ``'disabled'``. - -.. config:option:: $cfg['UserprefsDisallow'] - - :type: array - :default: array() - - Contains names of configuration options (keys in ``$cfg`` array) that - users can't set through user preferences. For possible values, refer - to :file:`libraries/config/user_preferences.forms.php`. - -.. config:option:: $cfg['UserprefsDeveloperTab'] - - :type: boolean - :default: false - - Activates in the user preferences a tab containing options for - developers of phpMyAdmin. - -Page titles ------------ - -.. config:option:: $cfg['TitleTable'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ / @TABLE@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleDatabase'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleServer'] - - :type: string - :default: ``'@HTTP_HOST@ / @VSERVER@ | @PHPMYADMIN@'`` - -.. config:option:: $cfg['TitleDefault'] - - :type: string - :default: ``'@HTTP_HOST@ | @PHPMYADMIN@'`` - - Allows you to specify window's title bar. You can use :ref:`faq6_27`. - -Theme manager settings ----------------------- - -.. config:option:: $cfg['ThemePath'] - - :type: string - :default: ``'./themes'`` - - If theme manager is active, use this as the path of the subdirectory - containing all the themes. - -.. config:option:: $cfg['ThemeManager'] - - :type: boolean - :default: true - - Enables user-selectable themes. See :ref:`faqthemes`. - -.. config:option:: $cfg['ThemeDefault'] - - :type: string - :default: ``'pmahomme'`` - - The default theme (a subdirectory under :config:option:`$cfg['ThemePath']`). - -.. config:option:: $cfg['ThemePerServer'] - - :type: boolean - :default: false - - Whether to allow different theme for each server. - -Default queries ---------------- - -.. config:option:: $cfg['DefaultQueryTable'] - - :type: string - :default: ``'SELECT * FROM @TABLE@ WHERE 1'`` - -.. config:option:: $cfg['DefaultQueryDatabase'] - - :type: string - :default: ``''`` - - Default queries that will be displayed in query boxes when user didn't - specify any. You can use standard :ref:`faq6_27`. - -SQL validator settings ----------------------- - -.. config:option:: $cfg['SQLValidator'] - - :type: array - :default: array(...) - - - -.. config:option:: $cfg['SQLValidator']['use'] - - :type: boolean - :default: false - - phpMyAdmin now supports use of the `Mimer SQL Validator - `_ service, as originally - published on `Slashdot - `_. For - help in setting up your system to use the service, see the - :ref:`faqsqlvalidator`. - -.. config:option:: $cfg['SQLValidator']['username'] - - :type: string - :default: ``''`` - -.. config:option:: $cfg['SQLValidator']['password'] - - :type: string - :default: ``''`` - - The SOAP service allows you to log in with ``anonymous`` and any password, - so we use those by default. Instead, if you have an account with them, you - can put your login details here, and it will be used in place of the - anonymous login. - -MySQL settings --------------- - -.. config:option:: $cfg['DefaultFunctions'] - - :type: array - :default: array(...) - - Functions selected by default when inserting/changing row, Functions - are defined for meta types as (FUNC\_NUMBER, FUNC\_DATE, FUNC\_CHAR, - FUNC\_SPATIAL, FUNC\_UUID) and for ``first_timestamp``, which is used - for first timestamp column in table. - - -Developer ---------- - -.. warning:: - - These settings might have huge effect on performance or security. - -.. config:option:: $cfg['DBG'] - - :type: array - :default: array(...) - -.. config:option:: $cfg['DBG']['sql'] - - :type: boolean - :default: false - - Enable logging queries and execution times to be - displayed in the bottom of main page (right frame). - -.. config:option:: $cfg['DBG']['demo'] - - :type: boolean - :default: false - - Enable to let server present itself as demo server. - This is used for . - -.. config:option:: $cfg['Error_Handler']['display'] - - :type: boolean - :default: false - - Whether to display errors from PHP or not. - diff --git a/pma12111211/doc/html/_sources/copyright.txt b/pma12111211/doc/html/_sources/copyright.txt deleted file mode 100644 index cfcb8639..00000000 --- a/pma12111211/doc/html/_sources/copyright.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. _copyright: - -Copyright -========= - -.. code-block:: none - - Copyright (C) 1998-2000 Tobias Ratschiller - Copyright (C) 2001-2013 Marc Delisle - Olivier Müller - Robin Johnson - Alexander M. Turek - Michal Čihař - Garvin Hicking - Michael Keck - Sebastian Mendel - [check credits for more details] - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License version 2, as -published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see `http://www.gnu.org/licenses/ -`_. diff --git a/pma12111211/doc/html/_sources/credits.txt b/pma12111211/doc/html/_sources/credits.txt deleted file mode 100644 index 61c77587..00000000 --- a/pma12111211/doc/html/_sources/credits.txt +++ /dev/null @@ -1,626 +0,0 @@ -.. _credits: - -Credits -======= - - -Credits, in chronological order -+++++++++++++++++++++++++++++++ - -* Tobias Ratschiller - - * creator of the phpmyadmin project - - * maintainer from 1998 to summer 2000 - -* Marc Delisle - - * multi-language version in December 1998 - - * various fixes and improvements - - * :term:`SQL` analyser (most of it) - - * current project maintainer - - * maintains content on our website - -* Olivier Müller - - * started SourceForge phpMyAdmin project in March 2001 - - * sync'ed different existing CVS trees with new features and bugfixes - - * multi-language improvements, dynamic language selection - - * many bugfixes and improvements - -* Loïc Chapeaux - - * rewrote and optimized javascript, DHTML and DOM stuff - - * rewrote the scripts so they fit the :term:`PEAR` coding standards and - generate XHTML1.0 and CSS2 compliant codes - - * improved the language detection system - - * many bugfixes and improvements - -* Robin Johnson - - * database maintenance controls - - * table type code - - * Host authentication :term:`IP` Allow/Deny - - * DB-based configuration (Not completed) - - * :term:`SQL` parser and pretty-printer - - * :term:`SQL` validator - - * many bugfixes and improvements - -* Armel Fauveau - - * bookmarks feature - - * multiple dump feature - - * gzip dump feature - - * zip dump feature - -* Geert Lund - - * various fixes - - * moderator of the phpMyAdmin former users forum at phpwizard.net - -* Korakot Chaovavanich - - * "insert as new row" feature - -* Pete Kelly - - * rewrote and fix dump code - - * bugfixes - -* Steve Alberty - - * rewrote dump code for PHP4 - - * mySQL table statistics - - * bugfixes - -* Benjamin Gandon - - * main author of the version 2.1.0.1 - - * bugfixes - -* Alexander M. Turek - - * MySQL 4.0 / 4.1 / 5.0 compatibility - - * abstract database interface (PMA\_DBI) with MySQLi support - - * privileges administration - - * :term:`XML` exports - - * various features and fixes - - * German language file updates - -* Mike Beck - - * automatic joins in QBE - - * links column in printview - - * Relation view - -* Michal Čihař - - * enhanced index creation/display feature - - * feature to use a different charset for HTML than for MySQL - - * improvements of export feature - - * various features and fixes - - * Czech language file updates - - * created current website for phpMyAdmin - -* Christophe Gesché from the "MySQL Form Generator for PHPMyAdmin" - (http://sf.net/projects/phpmysqlformgen/) - - * suggested the patch for multiple table printviews - -* Garvin Hicking - - * built the patch for vertical display of table rows - - * built the Javascript based Query window + :term:`SQL` history - - * Improvement of column/db comments - - * (MIME)-Transformations for columns - - * Use custom alias names for Databases in left frame - - * hierarchical/nested table display - - * :term:`PDF`-scratchboard for WYSIWYG- - distribution of :term:`PDF` relations - - * new icon sets - - * vertical display of column properties page - - * some bugfixes, features, support, German language additions - -* Yukihiro Kawada - - * japanese kanji encoding conversion feature - -* Piotr Roszatycki and Dan Wilson - - * the Cookie authentication mode - -* Axel Sander - - * table relation-links feature - -* Maxime Delorme - - * :term:`PDF` schema output, thanks also to - Olivier Plathey for the "FPDF" library (see ), Steven - Wittens for the "UFPDF" library (see ) and - Nicola Asuni for the "TCPDF" library (see ). - -* Olof Edlund - - * :term:`SQL` validator server - -* Ivan R. Lanin - - * phpMyAdmin logo (until June 2004) - -* Mike Cochrane - - * blowfish library from the Horde project (withdrawn in release 4.0) - -* Marcel Tschopp - - * mysqli support - - * many bugfixes and improvements - -* Nicola Asuni (Tecnick.com) - - * TCPDF library (`http://www.tcpdf.org `_) - -* Michael Keck - - * redesign for 2.6.0 - - * phpMyAdmin sailboat logo (June 2004) - -* Mathias Landhäußer - - * Representation at conferences - -* Sebastian Mendel - - * interface improvements - - * various bugfixes - -* Ivan A Kirillov - - * new relations Designer - -* Raj Kissu Rajandran (Google Summer of Code 2008) - - * BLOBstreaming support (withdrawn in release 4.0) - -* Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011) - - * improved setup script - - * user preferences - - * Drizzle support - -* Derek Schaefer (Google Summer of Code 2009) - - * Improved the import system - -* Alexander Rutkowski (Google Summer of Code 2009) - - * Tracking mechanism - -* Zahra Naeem (Google Summer of Code 2009) - - * Synchronization feature (removed in release 4.0) - -* Tomáš Srnka (Google Summer of Code 2009) - - * Replication support - -* Muhammad Adnan (Google Summer of Code 2010) - - * Relation schema export to multiple formats - -* Lori Lee (Google Summer of Code 2010) - - * User interface improvements - - * ENUM/SET editor - - * Simplified interface for export/import - -* Ninad Pundalik (Google Summer of Code 2010) - - * AJAXifying the interface - -* Martynas Mickevičius (Google Summer of Code 2010) - - * Charts - -* Barrie Leslie - - * BLOBstreaming support with PBMS PHP extension (withdrawn in release - 4.0) - -* Ankit Gupta (Google Summer of Code 2010) - - * Visual query builder - -* Madhura Jayaratne (Google Summer of Code 2011) - - * OpenGIS support - -* Ammar Yasir (Google Summer of Code 2011) - - * Zoom search - -* Aris Feryanto (Google Summer of Code 2011) - - * Browse-mode improvements - -* Thilanka Kaushalya (Google Summer of Code 2011) - - * AJAXification - -* Tyron Madlener (Google Summer of Code 2011) - - * Query statistics and charts for the status page - -* Zarubin Stas (Google Summer of Code 2011) - - * Automated testing - -* Rouslan Placella (Google Summer of Code 2011 and 2012) - - * Improved support for Stored Routines, Triggers and Events - - * Italian translation updates - - * Removal of frames, new navigation - -* Dieter Adriaenssens - - * Various bugfixes - - * Dutch translation updates - -* Alex Marin (Google Summer of Code 2012) - - * New plugins and properties system - -* Thilina Buddika Abeyrathna (Google Summer of Code 2012) - - * Refactoring - -* Atul Pratap Singh (Google Summer of Code 2012) - - * Refactoring - -* Chanaka Indrajith (Google Summer of Code 2012) - - * Refactoring - -* Yasitha Pandithawatta (Google Summer of Code 2012) - - * Automated testing - -* Jim Wigginton (phpseclib.sourceforge.net) - - * phpseclib - -* Bin Zu (Google Summer of Code 2013) - - * Refactoring - -* Supun Nakandala (Google Summer of Code 2013) - - * Refactoring - -* Mohamed Ashraf (Google Summer of Code 2013) - - * AJAX error reporting - -* Adam Kang (Google Summer of Code 2013) - - * Automated testing - -* Ayush Chaudhary (Google Summer of Code 2013) - - * Automated testing - -* Kasun Chathuranga (Google Summer of Code 2013) - - * Interface improvements - - -And also to the following people who have contributed minor changes, -enhancements, bugfixes or support for a new language since version -2.1.0: - -Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita, -Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats -Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger, -Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, -Andreas Pauley, Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval -Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, -Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V., -Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay, -Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael -Winningham, Vilius Zigmantas, "Manuzhai". - - -Translators -+++++++++++ - -Following people have contributed to translation of phpMyAdmin: - -* Arabic - - * Abdullah Al-Saedi - -* Bulgarian - - * stoyanster - -* Catalan - - * Xavier Navarro - -* Czech - - * Michal Čihař - -* Danish - - * opensource - * Jørgen Thomsen - -* German - - * mrbendig - * torsten.funck - * Sven Strickroth - * typo3 - * Jo Michael - -* Greek - - * Panagiotis Papazoglou - -* English (United Kingdom) - - * Robert Readman - -* Spanish - - * Matías Bellone - -* French - - * Marc Delisle - -* Hindi - - * u4663530 - * rsedwardian - -* Hungarian - - * gergo314 - -* Italian - - * Rouslan Placella - -* Japanese - - * Yuichiro - -* Lithuanian - - * Kęstutis - -* Norwegian Bokmål - - * Sven-Erik Andersen - -* Dutch - - * Dieter Adriaenssens - * Herman van Rink - -* Polish - - * Stanisław Krukowski - * Marcin Kozioł - -* Portuguese - - * JoaoTMDias - -* Portuguese (Brazil) - - * wiltave - * emerson4br - -* Romanian - - * alexukf - -* Russian - - * Victor Volkov - -* Sinhala - - * Madhura Jayaratne - -* Slovak - - * Martin Lacina - -* Slovenian - - * Domen - -* Swedish - - * stefan - -* Tamil - - * ysajeepan - -* Telugu - - * veeven - -* Thai - - * kanitchet - -* Turkish - - * Burak Yavuz - -* Uighur - - * gheni - -* Ukrainian - - * typim - * oleg-ilnytskyi - -* Urdu - - * Mehbooob Khan - -* Simplified Chinese - - * shanyan baishui - -* Traditional Chinese - - * star - -Documentation translators -+++++++++++++++++++++++++ - -Following people have contributed to translation of phpMyAdmin documentation: - -* Czech - - * Michal Čihař - -* Greek - - * Panagiotis Papazoglou - -* English (United Kingdom) - - * Robert Readman - -* French - - * Cédric Corazza - -* Japanese - - * Yuichiro Takahashi - -* Polish - - * Stanisław Krukowski - -* Portuguese (Brazil) - - * mjaning - -* Slovenian - - * Domen - -Original Credits of Version 2.1.0 -+++++++++++++++++++++++++++++++++ - -This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his -idea to create a web-based interface to MySQL using PHP3. Although I -have not used any of his source-code, there are some concepts I've -borrowed from him. phpMyAdmin was created because Peter told me he -wasn't going to further develop his (great) tool. - -Thanks go to - -* Amalesh Kempf who contributed the - code for the check when dropping a table or database. He also - suggested that you should be able to specify the primary key on - tbl\_create.php3. To version 1.1.1 he contributed the ldi\_\*.php3-set - (Import text-files) as well as a bug-report. Plus many smaller - improvements. -* Jan Legenhausen : He made many of the changes that - were introduced in 1.3.0 (including quite significant ones like the - authentication). For 1.4.1 he enhanced the table-dump feature. Plus - bug-fixes and help. -* Marc Delisle made phpMyAdmin - language-independent by outsourcing the strings to a separate file. He - also contributed the French translation. -* Alexandr Bravo who contributed - tbl\_select.php3, a feature to display only some columns from a table. -* Chris Jackson added support for MySQL functions - in tbl\_change.php3. He also added the "Query by Example" feature in - 2.0. -* Dave Walton added support for multiple - servers and is a regular contributor for bug-fixes. -* Gabriel Ash contributed the random access - features for 2.0.6. - -The following people have contributed minor changes, enhancements, -bugfixes or support for a new language: - -Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas -Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel -Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, -Jannis Hermanns, G. Wieggers. - -And thanks to everyone else who sent me email with suggestions, bug- -reports and or just some feedback. - diff --git a/pma12111211/doc/html/_sources/developers.txt b/pma12111211/doc/html/_sources/developers.txt deleted file mode 100644 index 55745276..00000000 --- a/pma12111211/doc/html/_sources/developers.txt +++ /dev/null @@ -1,12 +0,0 @@ -.. _developers: - -Developers Information -====================== - -phpMyAdmin is Open Source, so you're invited to contribute to it. Many -great features have been written by other people and you too can help -to make phpMyAdmin a useful tool. - -You can check out all the possibilities to contribute in the -`contribute section on our website -`_. \ No newline at end of file diff --git a/pma12111211/doc/html/_sources/faq.txt b/pma12111211/doc/html/_sources/faq.txt deleted file mode 100644 index 4265c5b0..00000000 --- a/pma12111211/doc/html/_sources/faq.txt +++ /dev/null @@ -1,2015 +0,0 @@ -.. _faq: - -FAQ - Frequently Asked Questions -================================ - -Please have a look at our `Link section -`_ on the official -phpMyAdmin homepage for in-depth coverage of phpMyAdmin's features and -or interface. - -.. _faqserver: - -Server -++++++ - -.. _faq1_1: - -1.1 My server is crashing each time a specific action is required or phpMyAdmin sends a blank page or a page full of cryptic characters to my browser, what can I do? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in your -:file:`config.inc.php` file and the ``zlib.output_compression`` directive to -``Off`` in your php configuration file. - -.. _faq1_2: - -1.2 My Apache server crashes when using phpMyAdmin. ---------------------------------------------------- - -You should first try the latest versions of Apache (and possibly MySQL). If -your server keeps crashing, please ask for help in the various Apache support -groups. - -.. seealso:: :ref:`faq1_1` - -.. _faq1_3: - -1.3 (withdrawn). ----------------- - -.. _faq1_4: - -1.4 Using phpMyAdmin on IIS, I'm displayed the error message: "The specified CGI application misbehaved by not returning a complete set of HTTP headers ...". -------------------------------------------------------------------------------------------------------------------------------------------------------------- - -You just forgot to read the *install.txt* file from the PHP -distribution. Have a look at the last message in this `PHP bug report #12061 -`_ from the official PHP bug -database. - -.. _faq1_5: - -1.5 Using phpMyAdmin on IIS, I'm facing crashes and/or many error messages with the HTTP. ------------------------------------------------------------------------------------------ - -This is a known problem with the PHP :term:`ISAPI` filter: it's not so stable. -Please use instead the cookie authentication mode. - -.. _faq1_6: - -1.6 I can't use phpMyAdmin on PWS: nothing is displayed! --------------------------------------------------------- - -This seems to be a PWS bug. Filippo Simoncini found a workaround (at -this time there is no better fix): remove or comment the ``DOCTYPE`` -declarations (2 lines) from the scripts :file:`libraries/Header.class.php` -and :file:`index.php`. - -.. _faq1_7: - -1.7 How can I GZip a dump or a CSV export? It does not seem to work. --------------------------------------------------------------------- - -This feature is based on the ``gzencode()`` -PHP function to be more independent of the platform (Unix/Windows, -Safe Mode or not, and so on). So, you must have Zlib support -(``--with-zlib``). - -.. _faq1_8: - -1.8 I cannot insert a text file in a table, and I get an error about safe mode being in effect. ------------------------------------------------------------------------------------------------ - -Your uploaded file is saved by PHP in the "upload dir", as defined in -:file:`php.ini` by the variable ``upload_tmp_dir`` (usually the system -default is */tmp*). We recommend the following setup for Apache -servers running in safe mode, to enable uploads of files while being -reasonably secure: - -* create a separate directory for uploads: :command:`mkdir /tmp/php` -* give ownership to the Apache server's user.group: :command:`chown - apache.apache /tmp/php` -* give proper permission: :command:`chmod 600 /tmp/php` -* put ``upload_tmp_dir = /tmp/php`` in :file:`php.ini` -* restart Apache - -.. _faq1_9: - -1.9 (withdrawn). ----------------- - -.. _faq1_10: - -1.10 I'm having troubles when uploading files with phpMyAdmin running on a secure server. My browser is Internet Explorer and I'm using the Apache server. ----------------------------------------------------------------------------------------------------------------------------------------------------------- - -As suggested by "Rob M" in the phpWizard forum, add this line to your -*httpd.conf*: - -.. code-block:: apache - - SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown - -It seems to clear up many problems between Internet Explorer and SSL. - -.. _faq1_11: - -1.11 I get an 'open\_basedir restriction' while uploading a file from the query box. ------------------------------------------------------------------------------------- - -Since version 2.2.4, phpMyAdmin supports servers with open\_basedir -restrictions. However you need to create temporary directory and configure it -as :config:option:`$cfg['TempDir']`. The uploaded files will be moved there, -and after execution of your :term:`SQL` commands, removed. - -.. _faq1_12: - -1.12 I have lost my MySQL root password, what can I do? -------------------------------------------------------- - -The MySQL manual explains how to `reset the permissions -`_. - -.. _faq1_13: - -1.13 (withdrawn). ------------------ - -.. _faq1_14: - -1.14 (withdrawn). ------------------ - -.. _faq1_15: - -1.15 I have problems with *mysql.user* column names. ----------------------------------------------------- - -In previous MySQL versions, the ``User`` and ``Password``columns were -named ``user`` and ``password``. Please modify your column names to -align with current standards. - -.. _faq1_16: - -1.16 I cannot upload big dump files (memory, HTTP or timeout problems). ------------------------------------------------------------------------ - -Starting with version 2.7.0, the import engine has been re–written and -these problems should not occur. If possible, upgrade your phpMyAdmin -to the latest version to take advantage of the new import features. - -The first things to check (or ask your host provider to check) are the -values of ``upload_max_filesize``, ``memory_limit`` and -``post_max_size`` in the :file:`php.ini` configuration file. All of these -three settings limit the maximum size of data that can be submitted -and handled by PHP. One user also said that ``post_max_size`` and -``memory_limit`` need to be larger than ``upload_max_filesize``. -There exist several workarounds if your upload is too big or your -hosting provider is unwilling to change the settings: - -* Look at the :config:option:`$cfg['UploadDir']` feature. This allows one to upload a file to the server - via scp, ftp, or your favorite file transfer method. PhpMyAdmin is - then able to import the files from the temporary directory. More - information is available in the :ref:`config` of this document. -* Using a utility (such as `BigDump - `_) to split the files before - uploading. We cannot support this or any third party applications, but - are aware of users having success with it. -* If you have shell (command line) access, use MySQL to import the files - directly. You can do this by issuing the "source" command from within - MySQL: - - .. code-block:: mysql - - source filename.sql; - -.. _faq1_17: - -1.17 Which MySQL versions does phpMyAdmin support? --------------------------------------------------- - -Since phpMyAdmin 3.0.x, only MySQL 5.0.1 and newer are supported. For -older MySQL versions, you need to use the latest 2.x branch. -phpMyAdmin can connect to your MySQL server using PHP's classic `MySQL -extension `_ as well as the `improved MySQL -extension (MySQLi) `_ that is available in PHP -5.0. The latter one should be used unless you have a good reason not -to do so. When compiling PHP, we strongly recommend that you manually -link the MySQL extension of your choice to a MySQL client library of -at least the same minor version since the one that is bundled with -some PHP distributions is rather old and might cause problems see -:ref:`faq1_17a`. `MariaDB `_ is also supported -(versions 5.1 and 5.2 were tested). - -.. versionchanged:: 3.5 - Since phpMyAdmin 3.5 `Drizzle `_ is supported. - -.. _faq1_17a: - -1.17a I cannot connect to the MySQL server. It always returns the error message, "Client does not support authentication protocol requested by server; consider upgrading MySQL client" ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -You tried to access MySQL with an old MySQL client library. The -version of your MySQL client library can be checked in your phpinfo() -output. In general, it should have at least the same minor version as -your server - as mentioned in :ref:`faq1_17`. This problem is -generally caused by using MySQL version 4.1 or newer. MySQL changed -the authentication hash and your PHP is trying to use the old method. -The proper solution is to use the `mysqli extension -`_ with the proper client library to match -your MySQL installation. Your chosen extension is specified in -:config:option:`$cfg['Servers'][$i]['extension']`. More -information (and several workarounds) are located in the `MySQL -Documentation `_. - -.. _faq1_18: - -1.18 (withdrawn). ------------------ - -.. _faq1_19: - -1.19 I can't run the "display relations" feature because the script seems not to know the font face I'm using! --------------------------------------------------------------------------------------------------------------- - -The :term:`TCPDF` library we're using for this feature requires some special -files to use font faces. Please refers to the `TCPDF manual -`_ to build these files. - -.. _faqmysql: - -1.20 I receive the error "cannot load MySQL extension, please check PHP Configuration". ---------------------------------------------------------------------------------------- - -To connect to a MySQL server, PHP needs a set of MySQL functions -called "MySQL extension". This extension may be part of the PHP -distribution (compiled-in), otherwise it needs to be loaded -dynamically. Its name is probably *mysql.so* or *php\_mysql.dll*. -phpMyAdmin tried to load the extension but failed. Usually, the -problem is solved by installing a software package called "PHP-MySQL" -or something similar. - -There are currently two interfaces PHP provides as MySQL extensions - ``mysql`` -and ``mysqli`` and you can change which of then is being used by -:config:option:`$cfg['Servers'][$i]['extension']`. - -.. _faq1_21: - -1.21 I am running the CGI version of PHP under Unix, and I cannot log in using cookie auth. -------------------------------------------------------------------------------------------- - -In :file:`php.ini`, set ``mysql.max_links`` higher than 1. - -.. _faq1_22: - -1.22 I don't see the "Location of text file" field, so I cannot upload. ------------------------------------------------------------------------ - -This is most likely because in :file:`php.ini`, your ``file_uploads`` -parameter is not set to "on". - -.. _faq1_23: - -1.23 I'm running MySQL on a Win32 machine. Each time I create a new table the table and column names are changed to lowercase! ------------------------------------------------------------------------------------------------------------------------------- - -This happens because the MySQL directive ``lower_case_table_names`` -defaults to 1 (``ON``) in the Win32 version of MySQL. You can change -this behavior by simply changing the directive to 0 (``OFF``): Just -edit your ``my.ini`` file that should be located in your Windows -directory and add the following line to the group [mysqld]: - -.. code-block:: ini - - set-variable = lower_case_table_names=0 - -Next, save the file and restart the MySQL service. You can always -check the value of this directive using the query - -.. code-block:: mysql - - SHOW VARIABLES LIKE 'lower_case_table_names'; - -.. _faq1_24: - -1.24 (withdrawn). ------------------ - -.. _faq1_25: - -1.25 I am running Apache with mod\_gzip-1.3.26.1a on Windows XP, and I get problems, such as undefined variables when I run a SQL query. ----------------------------------------------------------------------------------------------------------------------------------------- - -A tip from Jose Fandos: put a comment on the following two lines in -httpd.conf, like this: - -.. code-block:: apache - - - # mod_gzip_item_include file \.php$ - # mod_gzip_item_include mime "application/x-httpd-php.*" - -as this version of mod\_gzip on Apache (Windows) has problems handling -PHP scripts. Of course you have to restart Apache. - -.. _faq1_26: - -1.26 I just installed phpMyAdmin in my document root of IIS but I get the error "No input file specified" when trying to run phpMyAdmin. ----------------------------------------------------------------------------------------------------------------------------------------- - -This is a permission problem. Right-click on the phpmyadmin folder and -choose properties. Under the tab Security, click on "Add" and select -the user "IUSR\_machine" from the list. Now set his permissions and it -should work. - -.. _faq1_27: - -1.27 I get empty page when I want to view huge page (eg. db\_structure.php with plenty of tables). --------------------------------------------------------------------------------------------------- - -This was caused by a `PHP bug `_ that occur when -GZIP output buffering is enabled. If you turn off it (by -:config:option:`$cfg['OBGzip']` in :file:`config.inc.php`), it should work. -This bug will has been fixed in PHP 5.0.0. - -.. _faq1_28: - -1.28 My MySQL server sometimes refuses queries and returns the message 'Errorcode: 13'. What does this mean? ------------------------------------------------------------------------------------------------------------- - -This can happen due to a MySQL bug when having database / table names -with upper case characters although ``lower_case_table_names`` is -set to 1. To fix this, turn off this directive, convert all database -and table names to lower case and turn it on again. Alternatively, -there's a bug-fix available starting with MySQL 3.23.56 / -4.0.11-gamma. - -.. _faq1_29: - -1.29 When I create a table or modify a column, I get an error and the columns are duplicated. ---------------------------------------------------------------------------------------------- - -It is possible to configure Apache in such a way that PHP has problems -interpreting .php files. - -The problems occur when two different (and conflicting) set of -directives are used: - -.. code-block:: apache - - - SetOutputFilter PHP - SetInputFilter PHP - -and - -.. code-block:: apache - - AddType application/x-httpd-php .php - -In the case we saw, one set of directives was in -``/etc/httpd/conf/httpd.conf``, while the other set was in -``/etc/httpd/conf/addon-modules/php.conf``. The recommended way is -with ``AddType``, so just comment out the first set of lines and -restart Apache: - -.. code-block:: apache - - - #SetOutputFilter PHP - #SetInputFilter PHP - -.. _faq1_30: - -1.30 I get the error "navigation.php: Missing hash". ----------------------------------------------------- - -This problem is known to happen when the server is running Turck -MMCache but upgrading MMCache to version 2.3.21 solves the problem. - -.. _faq1_31: - -1.31 Does phpMyAdmin support PHP 5? ------------------------------------ - -Yes. - -Since release 4.1 phpMyAdmin supports only PHP 5.3 and newer. For PHP 5.2 you -can use 4.0.x releases. - -.. _faq1_32: - -1.32 Can I use HTTP authentication with IIS? --------------------------------------------- - -Yes. This procedure was tested with phpMyAdmin 2.6.1, PHP 4.3.9 in -:term:`ISAPI` mode under :term:`IIS` 5.1. - -#. In your :file:`php.ini` file, set ``cgi.rfc2616_headers = 0`` -#. In ``Web Site Properties -> File/Directory Security -> Anonymous - Access`` dialog box, check the ``Anonymous access`` checkbox and - uncheck any other checkboxes (i.e. uncheck ``Basic authentication``, - ``Integrated Windows authentication``, and ``Digest`` if it's - enabled.) Click ``OK``. -#. In ``Custom Errors``, select the range of ``401;1`` through ``401;5`` - and click the ``Set to Default`` button. - -.. seealso:: :rfc:`2616` - -.. _faq1_33: - -1.33 (withdrawn). ------------------ - -.. _faq1_34: - -1.34 Can I access directly to database or table pages? ------------------------------------------------------- - -Yes. Out of the box, you can use :term:`URL` like -http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script. -For ``server`` you use the server number -which refers to the order of the server paragraph in -:file:`config.inc.php`. Table and script parts are optional. If you want -http://server/phpMyAdmin/database[/table][/script] :term:`URL`, you need to do some configuration. Following -lines apply only for `Apache `_ web server. -First make sure, that you have enabled some features within global -configuration. You need ``Options FollowSymLinks`` and ``AllowOverride -FileInfo`` enabled for directory where phpMyAdmin is installed and you -need mod\_rewrite to be enabled. Then you just need to create -following :term:`.htaccess` file in root folder of phpMyAdmin installation (don't -forget to change directory name inside of it): - -.. code-block:: apache - - - RewriteEngine On - RewriteBase /path_to_phpMyAdmin - RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R] - RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R] - RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R] - RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R] - -.. _faq1_35: - -1.35 Can I use HTTP authentication with Apache CGI? ---------------------------------------------------- - -Yes. However you need to pass authentication variable to :term:`CGI` using -following rewrite rule: - -.. code-block:: apache - - - RewriteEngine On - RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] - -.. _faq1_36: - -1.36 I get an error "500 Internal Server Error". ------------------------------------------------- - -There can be many explanations to this and a look at your server's -error log file might give a clue. - -.. _faq1_37: - -1.37 I run phpMyAdmin on cluster of different machines and password encryption in cookie auth doesn't work. ------------------------------------------------------------------------------------------------------------ - -If your cluster consist of different architectures, PHP code used for -encryption/decryption won't work correct. This is caused by use of -pack/unpack functions in code. Only solution is to use mcrypt -extension which works fine in this case. - -.. _faq1_38: - -1.38 Can I use phpMyAdmin on a server on which Suhosin is enabled? ------------------------------------------------------------------- - -Yes but the default configuration values of Suhosin are known to cause -problems with some operations, for example editing a table with many -columns and no primary key or with textual primary key. - -Suhosin configuration might lead to malfunction in some cases and it -can not be fully avoided as phpMyAdmin is kind of application which -needs to transfer big amounts of columns in single HTTP request, what -is something what Suhosin tries to prevent. Generally all -``suhosin.request.*``, ``suhosin.post.*`` and ``suhosin.get.*`` -directives can have negative effect on phpMyAdmin usability. You can -always find in your error logs which limit did cause dropping of -variable, so you can diagnose the problem and adjust matching -configuration variable. - -The default values for most Suhosin configuration options will work in -most scenarios, however you might want to adjust at least following -parameters: - -* `suhosin.request.max\_vars `_ should - be increased (eg. 2048) -* `suhosin.post.max\_vars `_ should be - increased (eg. 2048) -* `suhosin.request.max\_array\_index\_length `_ - should be increased (eg. 256) -* `suhosin.post.max\_array\_index\_length `_ - should be increased (eg. 256) -* `suhosin.request.max\_totalname\_length `_ - should be increased (eg. 8192) -* `suhosin.post.max\_totalname\_length `_ should be - increased (eg. 8192) -* `suhosin.get.max\_value\_length `_ - should be increased (eg. 1024) -* `suhosin.sql.bailout\_on\_error `_ - needs to be disabled (the default) -* `suhosin.log.\* `_ should not - include :term:`SQL`, otherwise you get big - slowdown - -You can also disable the warning using the :config:option:`$cfg['SuhosinDisableWarning']`. - -.. _faq1_39: - -1.39 When I try to connect via https, I can log in, but then my connection is redirected back to http. What can cause this behavior? ------------------------------------------------------------------------------------------------------------------------------------- - -Be sure that you have enabled ``SSLOptions`` and ``StdEnvVars`` in -your Apache configuration. - -.. seealso:: - -.. _faq1_40: - -1.40 When accessing phpMyAdmin via an Apache reverse proxy, cookie login does not work. ---------------------------------------------------------------------------------------- - -To be able to use cookie auth Apache must know that it has to rewrite -the set-cookie headers. Example from the Apache 2.2 documentation: - -.. code-block:: apache - - - ProxyPass /mirror/foo/ http://backend.example.com/ - ProxyPassReverse /mirror/foo/ http://backend.example.com/ - ProxyPassReverseCookieDomain backend.example.com public.example.com - ProxyPassReverseCookiePath / /mirror/foo/ - -Note: if the backend url looks like http://host/~user/phpmyadmin, the -tilde (~) must be url encoded as %7E in the ProxyPassReverse\* lines. -This is not specific to phpmyadmin, it's just the behavior of Apache. - -.. code-block:: apache - - - ProxyPass /mirror/foo/ http://backend.example.com/~user/phpmyadmin - ProxyPassReverse /mirror/foo/ http://backend.example.com/%7Euser/phpmyadmin - ProxyPassReverseCookiePath /%7Euser/phpmyadmin /mirror/foo - -.. seealso:: - -.. _faq1_41: - -1.41 When I view a database and ask to see its privileges, I get an error about an unknown column. --------------------------------------------------------------------------------------------------- - -The MySQL server's privilege tables are not up to date, you need to -run the :command:`mysql_upgrade` command on the server. - -.. _faq1_42: - -1.42 How can I prevent robots from accessing phpMyAdmin? --------------------------------------------------------- - -You can add various rules to :term:`.htaccess` to filter access based on user agent -field. This is quite easy to circumvent, but could prevent at least -some robots accessing your installation. - -.. code-block:: apache - - - RewriteEngine on - - # Allow only GET and POST verbs - RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR] - - # Ban Typical Vulnerability Scanners and others - # Kick out Script Kiddies - RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR] - RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR] - RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR] - - # Ban Search Engines, Crawlers to your administrative panel - # No reasons to access from bots - # Ultimately Better than the useless robots.txt - # Did google respect robots.txt? - # Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled" - RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC] - RewriteRule .* - [F] - -.. _faq1_43: - -1.43 Why can't I display the structure of my table containing hundreds of columns? ----------------------------------------------------------------------------------- - -Because your PHP's ``memory_limit`` is too low; adjust it in :file:`php.ini`. - -.. _faqconfig: - -Configuration -+++++++++++++ - -.. _faq2_1: - -2.1 The error message "Warning: Cannot add header information - headers already sent by ..." is displayed, what's the problem? ------------------------------------------------------------------------------------------------------------------------------- - -Edit your :file:`config.inc.php` file and ensure there is nothing (I.E. no -blank lines, no spaces, no characters...) neither before the ```` tag at the end. We also got a report -from a user under :term:`IIS`, that used a zipped distribution kit: the file -:file:`libraries/Config.class.php` contained an end-of-line character (hex 0A) -at the end; removing this character cleared his errors. - -.. _faq2_2: - -2.2 phpMyAdmin can't connect to MySQL. What's wrong? ----------------------------------------------------- - -Either there is an error with your PHP setup or your username/password -is wrong. Try to make a small script which uses mysql\_connect and see -if it works. If it doesn't, it may be you haven't even compiled MySQL -support into PHP. - -.. _faq2_3: - -2.3 The error message "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) ..." is displayed. What can I do? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -For RedHat users, Harald Legner suggests this on the mailing list: - -On my RedHat-Box the socket of MySQL is */var/lib/mysql/mysql.sock*. -In your :file:`php.ini` you will find a line - -.. code-block:: ini - - mysql.default_socket = /tmp/mysql.sock - -change it to - -.. code-block:: ini - - mysql.default_socket = /var/lib/mysql/mysql.sock - -Then restart apache and it will work. - -Here is a fix suggested by Brad Ummer: - -* First, you need to determine what socket is being used by MySQL. To do - this, telnet to your server and go to the MySQL bin directory. In this - directory there should be a file named *mysqladmin*. Type - ``./mysqladmin variables``, and this should give you a bunch of info - about your MySQL server, including the socket (*/tmp/mysql.sock*, for - example). -* Then, you need to tell PHP to use this socket. To do this in - phpMyAdmin, you need to complete the socket information in the - :file:`config.inc.php`. For example: - :config:option:`$cfg['Servers'][$i]['socket']` Please also make sure that - the permissions of this file allow to be readable by your webserver (i.e. - '0755'). - -Have also a look at the `corresponding section of the MySQL -documentation `_. - -.. _faq2_4: - -2.4 Nothing is displayed by my browser when I try to run phpMyAdmin, what can I do? ------------------------------------------------------------------------------------ - -Try to set the :config:option:`$cfg['OBGzip']` directive to ``false`` in the phpMyAdmin configuration -file. It helps sometime. Also have a look at your PHP version number: -if it contains "b" or "alpha" it means you're running a testing -version of PHP. That's not a so good idea, please upgrade to a plain -revision. - -.. _faq2_5: - -2.5 Each time I want to insert or change a row or drop a database or a table, an error 404 (page not found) is displayed or, with HTTP or cookie authentication, I'm asked to log in again. What's wrong? ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -Check the value you set for the :config:option:`$cfg['PmaAbsoluteUri']` directive in the phpMyAdmin -configuration file. - -.. _faq2_6: - -2.6 I get an "Access denied for user: 'root@localhost' (Using password: YES)"-error when trying to access a MySQL-Server on a host which is port-forwarded for my localhost. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -When you are using a port on your localhost, which you redirect via -port-forwarding to another host, MySQL is not resolving the localhost -as expected. Erik Wasser explains: The solution is: if your host is -"localhost" MySQL (the command line tool :command:`mysql` as well) always -tries to use the socket connection for speeding up things. And that -doesn't work in this configuration with port forwarding. If you enter -"127.0.0.1" as hostname, everything is right and MySQL uses the -:term:`TCP` connection. - -.. _faqthemes: - -2.7 Using and creating themes ------------------------------ - -Themes are configured with :config:option:`$cfg['ThemePath']`, -:config:option:`$cfg['ThemeManager']` and :config:option:`$cfg['ThemeDefault']`. -Under :config:option:`$cfg['ThemePath']`, you should not delete the -directory ``pmahomme`` or its underlying structure, because this is the -system theme used by phpMyAdmin. ``pmahomme`` contains all images and -styles, for backwards compatibility and for all themes that would not -include images or css-files. If :config:option:`$cfg['ThemeManager']` -is enabled, you can select your favorite theme on the main page. Your selected -theme will be stored in a cookie. - -To create a theme: - -* make a new subdirectory (for example "your\_theme\_name") under :config:option:`$cfg['ThemePath']` (by - default ``themes``) -* copy the files and directories from ``pmahomme`` to "your\_theme\_name" -* edit the css-files in "your\_theme\_name/css" -* put your new images in "your\_theme\_name/img" -* edit :file:`layout.inc.php` in "your\_theme\_name" -* edit :file:`info.inc.php` in "your\_theme\_name" to contain your chosen - theme name, that will be visible in user interface -* make a new screenshot of your theme and save it under - "your\_theme\_name/screen.png" - -In theme directory there is file :file:`info.inc.php` which contains theme -verbose name, theme generation and theme version. These versions and -generations are enumerated from 1 and do not have any direct -dependence on phpMyAdmin version. Themes within same generation should -be backwards compatible - theme with version 2 should work in -phpMyAdmin requiring version 1. Themes with different generation are -incompatible. - -If you do not want to use your own symbols and buttons, remove the -directory "img" in "your\_theme\_name". phpMyAdmin will use the -default icons and buttons (from the system-theme ``pmahomme``). - -.. _faqmissingparameters: - -2.8 I get "Missing parameters" errors, what can I do? ------------------------------------------------------ - -Here are a few points to check: - -* In :file:`config.inc.php`, try to leave the :config:option:`$cfg['PmaAbsoluteUri']` directive empty. See also - :ref:`faq4_7`. -* Maybe you have a broken PHP installation or you need to upgrade your - Zend Optimizer. See . -* If you are using Hardened PHP with the ini directive - ``varfilter.max_request_variables`` set to the default (200) or - another low value, you could get this error if your table has a high - number of columns. Adjust this setting accordingly. (Thanks to Klaus - Dorninger for the hint). -* In the :file:`php.ini` directive ``arg_separator.input``, a value of ";" - will cause this error. Replace it with "&;". -* If you are using `Hardened-PHP `_, you - might want to increase `request limits `_. -* The directory specified in the :file:`php.ini` directive - ``session.save_path`` does not exist or is read-only. - -.. _faq2_9: - -2.9 Seeing an upload progress bar ---------------------------------- - -To be able to see a progress bar during your uploads, your server must -have the `APC `_ extension, the -`uploadprogress `_ one, or -you must be running PHP 5.4.0 or higher. Moreover, the JSON extension -has to be enabled in your PHP. - -If using APC, you must set ``apc.rfc1867`` to ``on`` in your :file:`php.ini`. - -If using PHP 5.4.0 or higher, you must set -``session.upload_progress.enabled`` to ``1`` in your :file:`php.ini`. However, -starting from phpMyAdmin version 4.0.4, session-based upload progress has -been temporarily deactivated due to its problematic behavior. - -.. seealso:: :rfc:`1867` - -.. _faqlimitations: - -Known limitations -+++++++++++++++++ - -.. _login_bug: - -3.1 When using HTTP authentication, a user who logged out can not log in again in with the same nick. ------------------------------------------------------------------------------------------------------ - -This is related to the authentication mechanism (protocol) used by -phpMyAdmin. To bypass this problem: just close all the opened browser -windows and then go back to phpMyAdmin. You should be able to log in -again. - -.. _faq3_2: - -3.2 When dumping a large table in compressed mode, I get a memory limit error or a time limit error. ----------------------------------------------------------------------------------------------------- - -Compressed dumps are built in memory and because of this are limited -to php's memory limit. For GZip/BZip2 exports this can be overcome -since 2.5.4 using :config:option:`$cfg['CompressOnFly']` (enabled by default). -Zip exports can not be handled this way, so if you need Zip files for larger -dump, you have to use another way. - -.. _faq3_3: - -3.3 With InnoDB tables, I lose foreign key relationships when I rename a table or a column. -------------------------------------------------------------------------------------------- - -This is an InnoDB bug, see . - -.. _faq3_4: - -3.4 I am unable to import dumps I created with the mysqldump tool bundled with the MySQL server distribution. -------------------------------------------------------------------------------------------------------------- - -The problem is that older versions of ``mysqldump`` created invalid -comments like this: - -.. code-block:: mysql - - - -- MySQL dump 8.22 - -- - -- Host: localhost Database: database - --------------------------------------------------------- - -- Server version 3.23.54 - -The invalid part of the code is the horizontal line made of dashes -that appears once in every dump created with mysqldump. If you want to -run your dump you have to turn it into valid MySQL. This means, you -have to add a whitespace after the first two dashes of the line or add -a # before it: ``-- -------------------------------------------------------`` or -``#---------------------------------------------------------`` - -.. _faq3_5: - -3.5 When using nested folders, multiple hierarchies are displayed in a wrong manner. ------------------------------------------------------------------------------------- - -Please note that you should not use the separating string multiple -times without any characters between them, or at the beginning/end of -your table name. If you have to, think about using another -TableSeparator or disabling that feature. - -.. seealso:: :config:option:`$cfg['NavigationTreeTableSeparator']` - -.. _faq3_6: - -3.6 What is currently not supported in phpMyAdmin about InnoDB? ---------------------------------------------------------------- - -In Relation view, having more than one index column in the foreign key. In Query-by- -example (Query), automatic generation of the query LEFT JOIN from the -foreign table. - -.. _faq3_7: - -3.7 I have table with many (100+) columns and when I try to browse table I get series of errors like "Warning: unable to parse url". How can this be fixed? ------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Your table neither have a primary key nor an unique one, so we must -use a long expression to identify this row. This causes problems to -parse\_url function. The workaround is to create a primary or unique -key. - -.. _faq3_8: - -3.8 I cannot use (clickable) HTML-forms in columns where I put a MIME-Transformation onto! ------------------------------------------------------------------------------------------- - -Due to a surrounding form-container (for multi-row delete checkboxes), -no nested forms can be put inside the table where phpMyAdmin displays -the results. You can, however, use any form inside of a table if keep -the parent form-container with the target to tbl\_row\_delete.php and -just put your own input-elements inside. If you use a custom submit -input field, the form will submit itself to the displaying page again, -where you can validate the $HTTP\_POST\_VARS in a transformation. For -a tutorial on how to effectively use transformations, see our `Link -section `_ on the -official phpMyAdmin-homepage. - -.. _faq3_9: - -3.9 I get error messages when using "--sql\_mode=ANSI" for the MySQL server. ----------------------------------------------------------------------------- - -When MySQL is running in ANSI-compatibility mode, there are some major -differences in how :term:`SQL` is structured (see -). Most important of all, the -quote-character (") is interpreted as an identifier quote character and not as -a string quote character, which makes many internal phpMyAdmin operations into -invalid :term:`SQL` statements. There is no -workaround to this behaviour. News to this item will be posted in `Bug report -#1013 `_. - -.. _faq3_10: - -3.10 Homonyms and no primary key: When the results of a SELECT display more that one column with the same value (for example ``SELECT lastname from employees where firstname like 'A%'`` and two "Smith" values are displayed), if I click Edit I cannot be sure that I am editing the intended row. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Please make sure that your table has a primary key, so that phpMyAdmin -can use it for the Edit and Delete links. - -.. _faq3_11: - -3.11 The number of rows for InnoDB tables is not correct. ---------------------------------------------------------- - -phpMyAdmin uses a quick method to get the row count, and this method only -returns an approximate count in the case of InnoDB tables. See -:config:option:`$cfg['MaxExactCount']` for a way to modify those results, but -this could have a serious impact on performance. - -.. _faq3_12: - -3.12 (withdrawn). ------------------ - -.. _faq3_13: - -3.13 I get an error when entering ``USE`` followed by a db name containing an hyphen. -------------------------------------------------------------------------------------- - -The tests I have made with MySQL 5.1.49 shows that the API does not -accept this syntax for the USE command. - -.. _faq3_14: - -3.14 I am not able to browse a table when I don't have the right to SELECT one of the columns. ----------------------------------------------------------------------------------------------- - -This has been a known limitation of phpMyAdmin since the beginning and -it's not likely to be solved in the future. - -.. _faq3_15: - -3.15 (withdrawn). ------------------ - -.. _faq3_16: - -3.16 (withdrawn). ------------------ - -.. _faq3_17: - -3.17 (withdrawn). ------------------ - -.. _faq3_18: - -3.18 When I import a CSV file that contains multiple tables, they are lumped together into a single table. ----------------------------------------------------------------------------------------------------------- - -There is no reliable way to differentiate tables in :term:`CSV` format. For the -time being, you will have to break apart :term:`CSV` files containing multiple -tables. - -.. _faq3_19: - -3.19 When I import a file and have phpMyAdmin determine the appropriate data structure it only uses int, decimal, and varchar types. ------------------------------------------------------------------------------------------------------------------------------------- - -Currently, the import type-detection system can only assign these -MySQL types to columns. In future, more will likely be added but for -the time being you will have to edit the structure to your liking -post-import. Also, you should note the fact that phpMyAdmin will use -the size of the largest item in any given column as the column size -for the appropriate type. If you know you will be adding larger items -to that column then you should manually adjust the column sizes -accordingly. This is done for the sake of efficiency. - -.. _faq3_20: - -3.20 After upgrading, some bookmarks are gone or their content cannot be shown. -------------------------------------------------------------------------------- - -At some point, the character set used to store bookmark content has changed. -It's better to recreate your bookmark from the newer phpMyAdmin version. - -.. _faqmultiuser: - -ISPs, multi-user installations -++++++++++++++++++++++++++++++ - -.. _faq4_1: - -4.1 I'm an ISP. Can I setup one central copy of phpMyAdmin or do I need to install it for each customer? --------------------------------------------------------------------------------------------------------- - -Since version 2.0.3, you can setup a central copy of phpMyAdmin for all your -users. The development of this feature was kindly sponsored by NetCologne GmbH. -This requires a properly setup MySQL user management and phpMyAdmin -:term:`HTTP` or cookie authentication. - -.. seealso:: :ref:`authentication_modes` - -.. _faq4_2: - -4.2 What's the preferred way of making phpMyAdmin secure against evil access? ------------------------------------------------------------------------------ - -This depends on your system. If you're running a server which cannot be -accessed by other people, it's sufficient to use the directory protection -bundled with your webserver (with Apache you can use :term:`.htaccess` files, -for example). If other people have telnet access to your server, you should use -phpMyAdmin's :term:`HTTP` or cookie authentication features. - -Suggestions: - -* Your :file:`config.inc.php` file should be ``chmod 660``. -* All your phpMyAdmin files should be chown -R phpmy.apache, where phpmy - is a user whose password is only known to you, and apache is the group - under which Apache runs. -* Follow security recommendations for PHP and your webserver. - -.. _faq4_3: - -4.3 I get errors about not being able to include a file in */lang* or in */libraries*. --------------------------------------------------------------------------------------- - -Check :file:`php.ini`, or ask your sysadmin to check it. The -``include_path`` must contain "." somewhere in it, and -``open_basedir``, if used, must contain "." and "./lang" to allow -normal operation of phpMyAdmin. - -.. _faq4_4: - -4.4 phpMyAdmin always gives "Access denied" when using HTTP authentication. ---------------------------------------------------------------------------- - -This could happen for several reasons: - -* :config:option:`$cfg['Servers'][$i]['controluser']` and/or :config:option:`$cfg['Servers'][$i]['controlpass']` are wrong. -* The username/password you specify in the login dialog are invalid. -* You have already setup a security mechanism for the phpMyAdmin- - directory, eg. a :term:`.htaccess` file. This would interfere with phpMyAdmin's - authentication, so remove it. - -.. _faq4_5: - -4.5 Is it possible to let users create their own databases? ------------------------------------------------------------ - -Starting with 2.2.5, in the user management page, you can enter a -wildcard database name for a user (for example "joe%"), and put the -privileges you want. For example, adding ``SELECT, INSERT, UPDATE, -DELETE, CREATE, DROP, INDEX, ALTER`` would let a user create/manage -his/her database(s). - -.. _faq4_6: - -4.6 How can I use the Host-based authentication additions? ----------------------------------------------------------- - -If you have existing rules from an old :term:`.htaccess` file, you can take them and -add a username between the ``'deny'``/``'allow'`` and ``'from'`` -strings. Using the username wildcard of ``'%'`` would be a major -benefit here if your installation is suited to using it. Then you can -just add those updated lines into the -:config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` array. - -If you want a pre-made sample, you can try this fragment. It stops the -'root' user from logging in from any networks other than the private -network :term:`IP` blocks. - -.. code-block:: php - - - //block root from logging in except from the private networks - $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow'; - $cfg['Servers'][$i]['AllowDeny']['rules'] = array( - 'deny root from all', - 'allow root from localhost', - 'allow root from 10.0.0.0/8', - 'allow root from 192.168.0.0/16', - 'allow root from 172.16.0.0/12', - ); - -.. _faq4_7: - -4.7 Authentication window is displayed more than once, why? ------------------------------------------------------------ - -This happens if you are using a :term:`URL` to start phpMyAdmin which is -different than the one set in your :config:option:`$cfg['PmaAbsoluteUri']`. For -example, a missing "www", or entering with an :term:`IP` address while a domain -name is defined in the config file. - -.. _faq4_8: - -4.8 Which parameters can I use in the URL that starts phpMyAdmin? ------------------------------------------------------------------ - -When starting phpMyAdmin, you can use the ``db``, ``pma_username``, -``pma_password`` and ``server`` parameters. This last one can contain -either the numeric host index (from ``$i`` of the configuration file) -or one of the host names present in the configuration file. Using -``pma_username`` and ``pma_password`` has been tested along with the -usage of 'cookie' ``auth_type``. - -.. _faqbrowsers: - -Browsers or client OS -+++++++++++++++++++++ - -.. _faq5_1: - -5.1 I get an out of memory error, and my controls are non-functional, when trying to create a table with more than 14 columns. ------------------------------------------------------------------------------------------------------------------------------- - -We could reproduce this problem only under Win98/98SE. Testing under -WinNT4 or Win2K, we could easily create more than 60 columns. A -workaround is to create a smaller number of columns, then come back to -your table properties and add the other columns. - -.. _faq5_2: - -5.2 With Xitami 2.5b4, phpMyAdmin won't process form fields. ------------------------------------------------------------- - -This is not a phpMyAdmin problem but a Xitami known bug: you'll face -it with each script/website that use forms. Upgrade or downgrade your -Xitami server. - -.. _faq5_3: - -5.3 I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2). ---------------------------------------------------------------------- - -With Konqueror 2.1.1: plain dumps, zip and GZip dumps work ok, except -that the proposed file name for the dump is always 'tbl\_dump.php'. -Bzip2 dumps don't seem to work. With Konqueror 2.2.1: plain dumps -work; zip dumps are placed into the user's temporary directory, so -they must be moved before closing Konqueror, or else they disappear. -GZip dumps give an error message. Testing needs to be done for -Konqueror 2.2.2. - -.. _faq5_4: - -5.4 I can't use the cookie authentication mode because Internet Explorer never stores the cookies. --------------------------------------------------------------------------------------------------- - -MS Internet Explorer seems to be really buggy about cookies, at least -till version 6. - -.. _faq5_5: - -5.5 In Internet Explorer 5.0, I get JavaScript errors when browsing my rows. ----------------------------------------------------------------------------- - -Upgrade to at least Internet Explorer 5.5 SP2. - -.. _faq5_6: - -5.6 In Internet Explorer 5.0, 5.5 or 6.0, I get an error (like "Page not found") when trying to modify a row in a table with many columns, or with a text column. ------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -Your table neither have a primary key nor an unique one, so we must use a long -:term:`URL` to identify this row. There is a limit on the length of the -:term:`URL` in those browsers, and this not happen in Netscape, for example. -The workaround is to create a primary or unique key, or use another browser. - -.. _faq5_7: - -5.7 I refresh (reload) my browser, and come back to the welcome page. ---------------------------------------------------------------------- - -Some browsers support right-clicking into the frame you want to -refresh, just do this in the right frame. - -.. _faq5_8: - -5.8 With Mozilla 0.9.7 I have problems sending a query modified in the query box. ---------------------------------------------------------------------------------- - -Looks like a Mozilla bug: 0.9.6 was OK. We will keep an eye on future -Mozilla versions. - -.. _faq5_9: - -5.9 With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a whitespace in the SQL-Query edit area: the page scrolls down. -------------------------------------------------------------------------------------------------------------------------------- - -This is a Mozilla bug (see bug #26882 at `BugZilla -`_). - -.. _faq5_10: - -5.10 With Netscape 4.75 I get empty rows between each row of data in a CSV exported file. ------------------------------------------------------------------------------------------ - -This is a known Netscape 4.75 bug: it adds some line feeds when -exporting data in octet-stream mode. Since we can't detect the -specific Netscape version, we cannot workaround this bug. - -.. _faq5_11: - -5.11 Extended-ASCII characters like German umlauts are displayed wrong. ------------------------------------------------------------------------ - -Please ensure that you have set your browser's character set to the -one of the language file you have selected on phpMyAdmin's start page. -Alternatively, you can try the auto detection mode that is supported -by the recent versions of the most browsers. - -.. _faq5_12: - -5.12 Mac OS X Safari browser changes special characters to "?". ---------------------------------------------------------------- - -This issue has been reported by a :term:`Mac OS X` user, who adds that Chimera, -Netscape and Mozilla do not have this problem. - -.. _faq5_13: - -5.13 With Internet Explorer 5.5 or 6, and HTTP authentication type, I cannot manage two servers: I log in to the first one, then the other one, but if I switch back to the first, I have to log in on each operation. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -This is a bug in Internet Explorer, other browsers do not behave this -way. - -.. _faq5_14: - -5.14 Using Opera6, I can manage to get to the authentication, but nothing happens after that, only a blank screen. ------------------------------------------------------------------------------------------------------------------- - -Please upgrade to Opera7 at least. - -.. _faq5_15: - -5.15 I have display problems with Safari. ------------------------------------------ - -Please upgrade to at least version 1.2.3. - -.. _faq5_16: - -5.16 With Internet Explorer, I get "Access is denied" Javascript errors. Or I cannot make phpMyAdmin work under Windows. ------------------------------------------------------------------------------------------------------------------------- - -Please check the following points: - -* Maybe you have defined your :config:option:`$cfg['PmaAbsoluteUri']` setting in - :file:`config.inc.php` to an :term:`IP` address and you are starting phpMyAdmin - with a :term:`URL` containing a domain name, or the reverse situation. -* Security settings in IE and/or Microsoft Security Center are too high, - thus blocking scripts execution. -* The Windows Firewall is blocking Apache and MySQL. You must allow - :term:`HTTP` ports (80 or 443) and MySQL - port (usually 3306) in the "in" and "out" directions. - -.. _faq5_17: - -5.17 With Firefox, I cannot delete rows of data or drop a database. -------------------------------------------------------------------- - -Many users have confirmed that the Tabbrowser Extensions plugin they -installed in their Firefox is causing the problem. - -.. _faq5_18: - -5.18 With Konqueror 4.2.x an invalid ``LIMIT`` clause is generated when I browse a table. ------------------------------------------------------------------------------------------ - -This happens only when both of these conditions are met: using the -``http`` authentication mode and ``register_globals`` being set to -``On`` on the server. It seems to be a browser-specific problem; -meanwhile use the ``cookie`` authentication mode. - -.. _faq5_19: - -5.19 I get JavaScript errors in my browser. -------------------------------------------- - -Issues have been reported with some combinations of browser -extensions. To troubleshoot, disable all extensions then clear your -browser cache to see if the problem goes away. - -.. _faqusing: - -Using phpMyAdmin -++++++++++++++++ - -.. _faq6_1: - -6.1 I can't insert new rows into a table / I can't create a table - MySQL brings up a SQL error. ------------------------------------------------------------------------------------------------- - -Examine the :term:`SQL` error with care. -Often the problem is caused by specifying a wrong column-type. Common -errors include: - -* Using ``VARCHAR`` without a size argument -* Using ``TEXT`` or ``BLOB`` with a size argument - -Also, look at the syntax chapter in the MySQL manual to confirm that -your syntax is correct. - -.. _faq6_2: - -6.2 When I create a table, I set an index for two columns and phpMyAdmin generates only one index with those two columns. -------------------------------------------------------------------------------------------------------------------------- - -This is the way to create a multi-columns index. If you want two -indexes, create the first one when creating the table, save, then -display the table properties and click the Index link to create the -other index. - -.. _faq6_3: - -6.3 How can I insert a null value into my table? ------------------------------------------------- - -Since version 2.2.3, you have a checkbox for each column that can be -null. Before 2.2.3, you had to enter "null", without the quotes, as -the column's value. Since version 2.5.5, you have to use the checkbox -to get a real NULL value, so if you enter "NULL" this means you want a -literal NULL in the column, and not a NULL value (this works in PHP4). - -.. _faq6_4: - -6.4 How can I backup my database or table? ------------------------------------------- - -Click on a database or table name in the navigation panel, the properties will -be displayed. Then on the menu, click "Export", you can dump the structure, the -data, or both. This will generate standard :term:`SQL` statements that can be -used to recreate your database/table. You will need to choose "Save as file", -so that phpMyAdmin can transmit the resulting dump to your station. Depending -on your PHP configuration, you will see options to compress the dump. See also -the :config:option:`$cfg['ExecTimeLimit']` configuration variable. For -additional help on this subject, look for the word "dump" in this document. - -.. _faq6_5: - -6.5 How can I restore (upload) my database or table using a dump? How can I run a ".sql" file? ----------------------------------------------------------------------------------------------- - -Click on a database name in the navigation panel, the properties will -be displayed. Select "Import" from the list of tabs in the right–hand -frame (or ":term:`SQL`" if your phpMyAdmin -version is previous to 2.7.0). In the "Location of the text file" -section, type in the path to your dump filename, or use the Browse -button. Then click Go. With version 2.7.0, the import engine has been -re–written, if possible it is suggested that you upgrade to take -advantage of the new features. For additional help on this subject, -look for the word "upload" in this document. - -.. _faq6_6: - -6.6 How can I use the relation table in Query-by-example? ---------------------------------------------------------- - -Here is an example with the tables persons, towns and countries, all -located in the database "mydb". If you don't have a ``pma__relation`` -table, create it as explained in the configuration section. Then -create the example tables: - -.. code-block:: mysql - - - CREATE TABLE REL_countries ( - country_code char(1) NOT NULL default '', - description varchar(10) NOT NULL default '', - PRIMARY KEY (country_code) - ) TYPE=MyISAM; - - INSERT INTO REL_countries VALUES ('C', 'Canada'); - - CREATE TABLE REL_persons ( - id tinyint(4) NOT NULL auto_increment, - person_name varchar(32) NOT NULL default '', - town_code varchar(5) default '0', - country_code char(1) NOT NULL default '', - PRIMARY KEY (id) - ) TYPE=MyISAM; - - INSERT INTO REL_persons VALUES (11, 'Marc', 'S', ''); - INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C'); - - CREATE TABLE REL_towns ( - town_code varchar(5) NOT NULL default '0', - description varchar(30) NOT NULL default '', - PRIMARY KEY (town_code) - ) TYPE=MyISAM; - - INSERT INTO REL_towns VALUES ('S', 'Sherbrooke'); - INSERT INTO REL_towns VALUES ('M', 'Montréal'); - -To setup appropriate links and display information: - -* on table "REL\_persons" click Structure, then Relation view -* for "town\_code", choose from dropdowns, "mydb", "REL\_towns", "code" - for foreign database, table and column respectively -* for "country\_code", choose from dropdowns, "mydb", "REL\_countries", - "country\_code" for foreign database, table and column respectively -* on table "REL\_towns" click Structure, then Relation view -* in "Choose column to display", choose "description" -* repeat the two previous steps for table "REL\_countries" - -Then test like this: - -* Click on your db name in the navigation panel -* Choose "Query" -* Use tables: persons, towns, countries -* Click "Update query" -* In the columns row, choose persons.person\_name and click the "Show" - tickbox -* Do the same for towns.description and countries.descriptions in the - other 2 columns -* Click "Update query" and you will see in the query box that the - correct joins have been generated -* Click "Submit query" - -.. _faqdisplay: - -6.7 How can I use the "display column" feature? ------------------------------------------------ - -Starting from the previous example, create the ``pma__table_info`` as -explained in the configuration section, then browse your persons -table, and move the mouse over a town code or country code. See also -:ref:`faq6_21` for an additional feature that "display column" -enables: drop-down list of possible values. - -.. _faqpdf: - -6.8 How can I produce a PDF schema of my database? --------------------------------------------------- - -First the configuration variables "relation", "table\_coords" and -"pdf\_pages" have to be filled in. Then you need to think about your -schema layout. Which tables will go on which pages? - -* Select your database in the navigation panel. -* Choose "Operations" in the navigation bar at the top. -* Choose "Edit :term:`PDF` Pages" near the - bottom of the page. -* Enter a name for the first :term:`PDF` page - and click Go. If you like, you can use the "automatic layout," which - will put all your linked tables onto the new page. -* Select the name of the new page (making sure the Edit radio button is - selected) and click Go. -* Select a table from the list, enter its coordinates and click Save. - Coordinates are relative; your diagram will be automatically scaled to - fit the page. When initially placing tables on the page, just pick any - coordinates -- say, 50x50. After clicking Save, you can then use the - :ref:`wysiwyg` to position the element correctly. -* When you'd like to look at your :term:`PDF`, first be sure to click the Save - button beneath the list of tables and coordinates, to save any changes you - made there. Then scroll all the way down, select the :term:`PDF` options you - want, and click Go. -* Internet Explorer for Windows may suggest an incorrect filename when - you try to save a generated :term:`PDF`. - When saving a generated :term:`PDF`, be - sure that the filename ends in ".pdf", for example "schema.pdf". - Browsers on other operating systems, and other browsers on Windows, do - not have this problem. - -.. _faq6_9: - -6.9 phpMyAdmin is changing the type of one of my columns! ---------------------------------------------------------- - -No, it's MySQL that is doing `silent column type changing -`_. - -.. _underscore: - -6.10 When creating a privilege, what happens with underscores in the database name? ------------------------------------------------------------------------------------ - -If you do not put a backslash before the underscore, this is a -wildcard grant, and the underscore means "any character". So, if the -database name is "john\_db", the user would get rights to john1db, -john2db ... If you put a backslash before the underscore, it means -that the database name will have a real underscore. - -.. _faq6_11: - -6.11 What is the curious symbol ø in the statistics pages? ----------------------------------------------------------- - -It means "average". - -.. _faqexport: - -6.12 I want to understand some Export options. ----------------------------------------------- - -**Structure:** - -* "Add DROP TABLE" will add a line telling MySQL to `drop the table - `_, if it already - exists during the import. It does NOT drop the table after your - export, it only affects the import file. -* "If Not Exists" will only create the table if it doesn't exist. - Otherwise, you may get an error if the table name exists but has a - different structure. -* "Add AUTO\_INCREMENT value" ensures that AUTO\_INCREMENT value (if - any) will be included in backup. -* "Enclose table and column names with backquotes" ensures that column - and table names formed with special characters are protected. -* "Add into comments" includes column comments, relations, and MIME - types set in the pmadb in the dump as :term:`SQL` comments - (*/\* xxx \*/*). - -**Data:** - -* "Complete inserts" adds the column names on every INSERT command, for - better documentation (but resulting file is bigger). -* "Extended inserts" provides a shorter dump file by using only once the - INSERT verb and the table name. -* "Delayed inserts" are best explained in the `MySQL manual - INSERT DELAYED Syntax - `_. -* "Ignore inserts" treats errors as a warning instead. Again, more info - is provided in the `MySQL manual - INSERT Syntax - `_, but basically with - this selected, invalid values are adjusted and inserted rather than - causing the entire statement to fail. - -.. _faq6_13: - -6.13 I would like to create a database with a dot in its name. --------------------------------------------------------------- - -This is a bad idea, because in MySQL the syntax "database.table" is -the normal way to reference a database and table name. Worse, MySQL -will usually let you create a database with a dot, but then you cannot -work with it, nor delete it. - -.. _faqsqlvalidator: - -6.14 How do I set up the SQL Validator? ---------------------------------------- - -To use SQL Validator, you need PHP with :term:`XML`, :term:`PCRE` and -:term:`PEAR` support. In addition you need a :term:`SOAP` support, either as a -PHP extension or as a PEAR SOAP module. - -To install :term:`PEAR` :term:`SOAP` module, run :command:`pear install -Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP` to get the necessary -:term:`PEAR` modules for usage. - -If you use the Validator, you should be aware that any :term:`SQL` statement -you submit will be stored anonymously (database/table/column names, strings, -numbers replaced with generic values). The Mimer :term:`SQL` Validator itself, -is © 2001 Upright Database Technology. We utilize it as free SOAP service. - -.. _faq6_15: - -6.15 I want to add a BLOB column and put an index on it, but MySQL says "BLOB column '...' used in key specification without a key length". -------------------------------------------------------------------------------------------------------------------------------------------- - -The right way to do this, is to create the column without any indexes, -then display the table structure and use the "Create an index" dialog. -On this page, you will be able to choose your BLOB column, and set a -size to the index, which is the condition to create an index on a BLOB -column. - -.. _faq6_16: - -6.16 How can I simply move in page with plenty editing fields? --------------------------------------------------------------- - -You can use :kbd:`Ctrl+arrows` (:kbd:`Option+Arrows` in Safari) for moving on -most pages with many editing fields (table structure changes, row editing, -etc.). - -.. _faq6_17: - -6.17 Transformations: I can't enter my own mimetype! WTF is this feature then useful for? ------------------------------------------------------------------------------------------ - -Slow down :). Defining mimetypes is of no use, if you can't put -transformations on them. Otherwise you could just put a comment on the -column. Because entering your own mimetype will cause serious syntax -checking issues and validation, this introduces a high-risk false- -user-input situation. Instead you have to initialize mimetypes using -functions or empty mimetype definitions. - -Plus, you have a whole overview of available mimetypes. Who knows all those -mimetypes by heart so he/she can enter it at will? - -.. _faqbookmark: - -6.18 Bookmarks: Where can I store bookmarks? Why can't I see any bookmarks below the query box? What is this variable for? --------------------------------------------------------------------------------------------------------------------------- - -Any query you have executed can be stored as a bookmark on the page -where the results are displayed. You will find a button labeled -'Bookmark this query' just at the end of the page. As soon as you have -stored a bookmark, it is related to the database you run the query on. -You can now access a bookmark dropdown on each page, the query box -appears on for that database. - -You can also have, inside the query, a placeholder for a variable. -This is done by inserting into the query a SQL comment between ``/*`` and -``*/``. Inside the comment, the special string ``[VARIABLE]`` is used. -Be aware that the whole query minus the SQL comment must be -valid by itself, otherwise you won't be able to store it as a bookmark. - -When you execute the bookmark, everything typed into the *value* -input box on the query box page will replace the string ``/*[VARIABLE]*/`` in -your stored query. - -Also remember, that everything else inside the ``/*[VARIABLE]*/`` string for -your query will remain the way it is, but will be stripped of the ``/**/`` -chars. So you can use: - -.. code-block:: mysql - - /*, [VARIABLE] AS myname */ - -which will be expanded to - -.. code-block:: mysql - - , VARIABLE as myname - -in your query, where VARIABLE is the string you entered in the input box. If an -empty string is provided, no replacements are made. - -A more complex example. Say you have stored -this query: - -.. code-block:: mysql - - SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE]%' */ - -Say, you now enter "phpMyAdmin" as the variable for the stored query, the full -query will be: - -.. code-block:: mysql - - SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%' - -You can use multiple occurrences of ``/*[VARIABLE]*/`` in a single query -(that is, multiple occurrences of the *same* variable). - -**NOTE THE ABSENCE OF SPACES** inside the ``/**/`` construct. Any spaces -inserted there will be later also inserted as spaces in your query and may lead -to unexpected results especially when using the variable expansion inside of a -"LIKE ''" expression. - -Your initial query which is going to be stored as a bookmark has to yield at -least one result row so you can store the bookmark. You may have that to work -around using well positioned ``/**/`` comments. - -.. _faq6_19: - -6.19 How can I create simple LATEX document to include exported table? ----------------------------------------------------------------------- - -You can simply include table in your LATEX documents, -minimal sample document should look like following one (assuming you -have table exported in file :file:`table.tex`): - -.. code-block:: latex - - - \documentclass{article} % or any class you want - \usepackage{longtable} % for displaying table - \begin{document} % start of document - \include{table} % including exported table - \end{document} % end of document - -.. _faq6_20: - -6.20 I see a lot of databases which are not mine, and cannot access them. -------------------------------------------------------------------------- - -You have one of these global privileges: CREATE TEMPORARY TABLES, SHOW -DATABASES, LOCK TABLES. Those privileges also enable users to see all the -database names. So if your users do not need those privileges, you can remove -them and their databases list will shorten. - -.. seealso:: - -.. _faq6_21: - -6.21 In edit/insert mode, how can I see a list of possible values for a column, based on some foreign table? ------------------------------------------------------------------------------------------------------------- - -You have to setup appropriate links between the tables, and also setup -the "display column" in the foreign table. See :ref:`faq6_6` for an -example. Then, if there are 100 values or less in the foreign table, a -drop-down list of values will be available. You will see two lists of -values, the first list containing the key and the display column, the -second list containing the display column and the key. The reason for -this is to be able to type the first letter of either the key or the -display column. For 100 values or more, a distinct window will appear, -to browse foreign key values and choose one. To change the default -limit of 100, see :config:option:`$cfg['ForeignKeyMaxLimit']`. - - -.. _faq6_22: - -6.22 Bookmarks: Can I execute a default bookmark automatically when entering Browse mode for a table? ------------------------------------------------------------------------------------------------------ - -Yes. If a bookmark has the same label as a table name and it's not a -public bookmark, it will be executed. - -.. _faq6_23: - -6.23 Export: I heard phpMyAdmin can export Microsoft Excel files? ------------------------------------------------------------------ - -You can use :term:`CSV` for Microsoft Excel, -which works out of the box. - -.. versionchanged:: 3.4.5 - Since phpMyAdmin 3.4.5 support for direct export to Microsoft Excel version - 97 and newer was dropped. - -.. _faq6_24: - -6.24 Now that phpMyAdmin supports native MySQL 4.1.x column comments, what happens to my column comments stored in pmadb? -------------------------------------------------------------------------------------------------------------------------- - -Automatic migration of a table's pmadb-style column comments to the -native ones is done whenever you enter Structure page for this table. - -.. _faq6_25: - -6.25 (withdrawn). ------------------ - -.. _faq6_26: - -6.26 How can I select a range of rows? --------------------------------------- - -Click the first row of the range, hold the shift key and click the -last row of the range. This works everywhere you see rows, for example -in Browse mode or on the Structure page. - -.. _faq6_27: - -6.27 What format strings can I use? ------------------------------------ - -In all places where phpMyAdmin accepts format strings, you can use -``@VARIABLE@`` expansion and `strftime `_ -format strings. The expanded variables depend on a context (for -example, if you haven't chosen a table, you can not get the table -name), but the following variables can be used: - -``@HTTP_HOST@`` - HTTP host that runs phpMyAdmin -``@SERVER@`` - MySQL server name -``@VERBOSE@`` - Verbose MySQL server name as defined in :config:option:`$cfg['Servers'][$i]['verbose']` -``@VSERVER@`` - Verbose MySQL server name if set, otherwise normal -``@DATABASE@`` - Currently opened database -``@TABLE@`` - Currently opened table -``@COLUMNS@`` - Columns of the currently opened table -``@PHPMYADMIN@`` - phpMyAdmin with version - -.. _wysiwyg: - -6.28 How can I easily edit relational schema for export? --------------------------------------------------------- - -By clicking on the button 'toggle scratchboard' on the page where you -edit x/y coordinates of those elements you can activate a scratchboard -where all your elements are placed. By clicking on an element, you can -move them around in the pre-defined area and the x/y coordinates will -get updated dynamically. Likewise, when entering a new position -directly into the input field, the new position in the scratchboard -changes after your cursor leaves the input field. - -You have to click on the 'OK'-button below the tables to save the new -positions. If you want to place a new element, first add it to the -table of elements and then you can drag the new element around. - -By changing the paper size and the orientation you can change the size -of the scratchboard as well. You can do so by just changing the -dropdown field below, and the scratchboard will resize automatically, -without interfering with the current placement of the elements. - -If ever an element gets out of range you can either enlarge the paper -size or click on the 'reset' button to place all elements below each -other. - -.. _faq6_29: - -6.29 Why can't I get a chart from my query result table? --------------------------------------------------------- - -Not every table can be put to the chart. Only tables with one, two or -three columns can be visualised as a chart. Moreover the table must be -in a special format for chart script to understand it. Currently -supported formats can be found in the `wiki `_. - -.. _faq6_30: - -6.30 Import: How can I import ESRI Shapefiles? ----------------------------------------------- - -An ESRI Shapefile is actually a set of several files, where .shp file -contains geometry data and .dbf file contains data related to those -geometry data. To read data from .dbf file you need to have PHP -compiled with the dBase extension (--enable-dbase). Otherwise only -geometry data will be imported. - -To upload these set of files you can use either of the following -methods: - -Configure upload directory with :config:option:`$cfg['UploadDir']`, upload both .shp and .dbf files with -the same filename and chose the .shp file from the import page. - -Create a Zip archive with .shp and .dbf files and import it. For this -to work, you need to set :config:option:`$cfg['TempDir']` to a place where the web server user can -write (for example ``'./tmp'``). - -To create the temporary directory on a UNIX-based system, you can do: - -.. code-block:: sh - - cd phpMyAdmin - mkdir tmp - chmod o+rwx tmp - -.. _faq6_31: - -6.31 How do I create a relation in designer? --------------------------------------------- - -To select relation, click: The display column is shown in pink. To -set/unset a column as the display column, click the "Choose column to -display" icon, then click on the appropriate column name. - -.. _faq6_32: - -6.32 How can I use the zoom search feature? -------------------------------------------- - -The Zoom search feature is an alternative to table search feature. It allows -you to explore a table by representing its data in a scatter plot. You can -locate this feature by selecting a table and clicking the :guilabel:`Search` -tab. One of the sub-tabs in the :guilabel:`Table Search` page is -:guilabel:`Zoom Search`. - -Consider the table REL\_persons in :ref:`faq6_6` for -an example. To use zoom search, two columns need to be selected, for -example, id and town\_code. The id values will be represented on one -axis and town\_code values on the other axis. Each row will be -represented as a point in a scatter plot based on its id and -town\_code. You can include two additional search criteria apart from -the two fields to display. - -You can choose which field should be -displayed as label for each point. If a display column has been set -for the table (see :ref:`faqdisplay`), it is taken as the label unless -you specify otherwise. You can also select the maximum number of rows -you want to be displayed in the plot by specifing it in the 'Max rows -to plot' field. Once you have decided over your criteria, click 'Go' -to display the plot. - -After the plot is generated, you can use the -mousewheel to zoom in and out of the plot. In addition, panning -feature is enabled to navigate through the plot. You can zoom-in to a -certail level of detail and use panning to locate your area of -interest. Clicking on a point opens a dialogue box, displaying field -values of the data row represented by the point. You can edit the -values if required and click on submit to issue an update query. Basic -instructions on how to use can be viewed by clicking the 'How to use?' -link located just above the plot. - -.. _faq6_33: - -6.33 When browsing a table, how can I copy a column name? ---------------------------------------------------------- - -Selecting the name of the column within the browse table header cell -for copying is difficult, as the columns support reordering by -dragging the header cells as well as sorting by clicking on the linked -column name. To copy a column name, double-click on the empty area -next to the column name, when the tooltip tells you to do so. This -will show you an input box with the column name. You may right-click -the column name within this input box to copy it to your clipboard. - -.. _faqproject: - -phpMyAdmin project -++++++++++++++++++ - -.. _faq7_1: - -7.1 I have found a bug. How do I inform developers? ---------------------------------------------------- - -Our Bug Tracker is located at under the -Bugs section. But please first discuss your bug with other users: -. - -.. _faq7_2: - -7.2 I want to translate the messages to a new language or upgrade an existing language, where do I start? ---------------------------------------------------------------------------------------------------------- - -Translations are very welcome and all you need to have are the -language skills. The easiest way is to use our `online translation -service `_. You can check -out all the possibilities to translate in the `translate section on -our website `_. - -.. _faq7_3: - -7.3 I would like to help out with the development of phpMyAdmin. How should I proceed? --------------------------------------------------------------------------------------- - -We welcome every contribution to the development of phpMyAdmin. You -can check out all the possibilities to contribute in the `contribute -section on our website -`_. - -.. seealso:: :ref:`developers` - -.. _faqsecurity: - -Security -++++++++ - -.. _faq8_1: - -8.1 Where can I get information about the security alerts issued for phpMyAdmin? --------------------------------------------------------------------------------- - -Please refer to . - -.. _faq8_2: - -8.2 How can I protect phpMyAdmin against brute force attacks? -------------------------------------------------------------- - -If you use Apache web server, phpMyAdmin exports information about -authentication to the Apache environment and it can be used in Apache -logs. Currently there are two variables available: - - -``userID`` - User name of currently active user (he does not have to be logged in). -``userStatus`` - Status of currently active user, one of ``ok`` (user is logged in), - ``mysql-denied`` (MySQL denied user login), ``allow-denied`` (user denied - by allow/deny rules), ``root-denied`` (root is denied in configuration), - ``empty-denied`` (empty password is denied). - -``LogFormat`` directive for Apache can look like following: - -.. code-block:: apache - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined - -You can then use any log analyzing tools to detect possible break-in -attempts. - -.. _faqsynchronization: - -Synchronization -+++++++++++++++ - -.. _faq9_1: - -9.1 (withdrawn). ----------------- - -.. _faq9_2: - -9.2 (withdrawn). ----------------- - diff --git a/pma12111211/doc/html/_sources/glossary.txt b/pma12111211/doc/html/_sources/glossary.txt deleted file mode 100644 index d558b440..00000000 --- a/pma12111211/doc/html/_sources/glossary.txt +++ /dev/null @@ -1,406 +0,0 @@ -.. _glossary: - -Glossary -======== - -From Wikipedia, the free encyclopedia - -.. glossary:: - - .htaccess - the default name of Apache's directory-level configuration file. - - .. seealso:: - - ACL - Access Contol List - - Blowfish - a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier. - - .. seealso:: - - Browser - a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web. - - .. seealso:: - - bzip2 - a free software/open source data compression algorithm and program developed by Julian Seward. - - .. seealso:: - - CGI - Common Gateway Interface is an important World Wide Web technology that - enables a client web browser to request data from a program executed on - the Web server. - - .. seealso:: - - Changelog - a log or record of changes made to a project. - - .. seealso:: - - Client - a computer system that accesses a (remote) service on another computer by some kind of network. - - .. seealso:: - - column - a set of data values of a particular simple type, one for each row of the table. - - .. seealso:: - - Cookie - a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server. - - .. seealso:: - - CSV - Comma- separated values - - .. seealso:: - - DB - look at :term:`database` - - database - an organized collection of data. - - .. seealso:: - - Engine - look at :term:`storage engines` - - extension - a PHP module that extends PHP with additional functionality. - - .. seealso:: - - FAQ - Frequently Asked Questions is a list of commonly asked question and there - answers. - - .. seealso:: - - Field - one part of divided data/columns. - - .. seealso:: - - foreign key - a column or group of columns in a database row that point to a key column - or group of columns forming a key of another database row in some - (usually different) table. - - .. seealso:: - - FPDF - the free :term:`PDF` library - - .. seealso:: - - GD - Graphics Library by Thomas Boutell and others for dynamically manipulating images. - - .. seealso:: - - GD2 - look at :term:`gd` - - gzip - gzip is short for GNU zip, a GNU free software file compression program. - - .. seealso:: - - host - any machine connected to a computer network, a node that has a hostname. - - .. seealso:: - - hostname - the unique name by which a network attached device is known on a network. - - .. seealso:: - - HTTP - HyperText Transfer Protocol is the primary method used to transfer or - convey information on the World Wide Web. - - .. seealso:: - - https - a :term:`HTTP`-connection with additional security measures. - - .. seealso:: - - IEC - International Electrotechnical Commission - - IIS - Internet Information Services is a set of Internet-based services for - servers using Microsoft Windows. - - .. seealso:: - - Index - a feature that allows quick access to the rows in a table. - - .. seealso:: - - IP - Internet Protocol is a data-oriented protocol used by source and - destination hosts for communicating data across a packet-switched - internetwork. - - .. seealso:: - - IP Address - a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard. - - .. seealso:: - - IPv6 - IPv6 (Internet Protocol version 6) is the latest revision of the - Internet Protocol (:term:`IP`), designed to deal with the - long-anticipated problem of its precedessor IPv4 running out of addresses. - - .. seealso:: - - ISAPI - Internet Server Application Programming Interface is the API of Internet Information Services (IIS). - - .. seealso:: - - ISP - Internet service provider is a business or organization that offers users - access to the Internet and related services. - - .. seealso:: - - ISO - International Standards Organisation - - JPEG - a most commonly used standard method of lossy compression for photographic images. - - .. seealso:: - - JPG - look at :term:`jpeg` - - Key - look at :term:`index` - - LATEX - a document preparation system for the TEX typesetting program. - - .. seealso:: - - Mac - Apple Macintosh is line of personal computers is designed, developed, manufactured, and marketed by Apple Computer. - - .. seealso:: - - Mac OS X - the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets. - - .. seealso:: - - MCrypt - a cryptographic library. - - .. seealso:: - - mcrypt - the MCrypt PHP extension. - - .. seealso:: - - MIME - Multipurpose Internet Mail Extensions is - an Internet Standard for the format of e-mail. - - .. seealso:: - - module - some sort of extension for the Apache Webserver. - - .. seealso:: - - MySQL - a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS). - - .. seealso:: - - mysqli - the improved MySQL client PHP extension. - - .. seealso:: - - mysql - the MySQL client PHP extension. - - .. seealso:: - - OpenDocument - open standard for office documents. - - .. seealso:: - - OS X - look at :term:`Mac OS X`. - - .. seealso:: - - PDF - Portable Document Format is a file format developed by Adobe Systems for - representing two dimensional documents in a device independent and - resolution independent format. - - .. seealso:: - - PEAR - the PHP Extension and Application Repository. - - .. seealso:: - - PCRE - Perl Compatible Regular Expressions is the perl-compatible regular - expression functions for PHP - - .. seealso:: - - PHP - short for "PHP: Hypertext Preprocessor", is an open-source, reflective - programming language used mainly for developing server-side applications - and dynamic web content, and more recently, a broader range of software - applications. - - .. seealso:: - - port - a connection through which data is sent and received. - - .. seealso:: - - RFC - Request for Comments (RFC) documents are a series of memoranda - encompassing new research, innovations, and methodologies applicable to - Internet technologies. - - .. seealso:: - - RFC 1952 - GZIP file format specification version 4.3 - - .. seealso:: :rfc:`1952` - - Row (record, tuple) - represents a single, implicitly structured data item in a table. - - .. seealso:: - - Server - a computer system that provides services to other computing systems over a network. - - .. seealso:: - - Storage Engines - handlers for different table types - - .. seealso:: - - SOAP - Simple Object Access Protocol is a protocol specification for exchanging - structured information in the implementation of Web Services in computer - networks. - - .. seealso:: - - socket - a form of inter-process communication. - - .. seealso:: - - SSL - Secure Sockets Layer is a cryptographic protocol which provides secure - communication on the Internet. - - .. seealso:: - - Stored procedure - a subroutine available to applications accessing a relational database system - - .. seealso:: - - SQL - Structured Query Language - - .. seealso:: - - table - a set of data elements (cells) that is organized, defined and stored as - horizontal rows and vertical columns where each item can be uniquely - identified by a label or key or by it?s position in relation to other - items. - - .. seealso:: - - tar - a type of archive file format: the Tape ARchive format. - - .. seealso:: - - TCP - Transmission Control Protocol is one of the core protocols of the - Internet protocol suite. - - .. seealso:: - - TCPDF - Rewrite of :term:`UFPDF` with various improvements. - - .. seealso:: - - trigger - a procedural code that is automatically executed in response to certain events on a particular table or view in a database - - .. seealso:: - - UFPDF - Unicode/UTF-8 extension for :term:`FPDF` - - .. seealso:: - - URL - Uniform Resource Locator is a sequence of characters, conforming to a - standardized format, that is used for referring to resources, such as - documents and images on the Internet, by their location. - - .. seealso:: - - Webserver - A computer (program) that is responsible for accepting HTTP requests from clients and serving them Web pages. - - .. seealso:: - - XML - Extensible Markup Language is a W3C-recommended general- purpose markup - language for creating special-purpose markup languages, capable of - describing many different kinds of data. - - .. seealso:: - - ZIP - a popular data compression and archival format. - - .. seealso:: - - zlib - an open-source, cross- platform data compression library by Jean-loup Gailly and Mark Adler. - - .. seealso:: - - diff --git a/pma12111211/doc/html/_sources/index.txt b/pma12111211/doc/html/_sources/index.txt deleted file mode 100644 index 917ddf81..00000000 --- a/pma12111211/doc/html/_sources/index.txt +++ /dev/null @@ -1,32 +0,0 @@ -.. phpMyAdmin documentation master file, created by - sphinx-quickstart on Wed Sep 26 14:04:48 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to phpMyAdmin's documentation! -====================================== - -Contents: - -.. toctree:: - :maxdepth: 2 - - intro - require - setup - config - user - faq - developers - vendors - copyright - credits - glossary - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`search` -* :ref:`glossary` diff --git a/pma12111211/doc/html/_sources/intro.txt b/pma12111211/doc/html/_sources/intro.txt deleted file mode 100644 index 9576814d..00000000 --- a/pma12111211/doc/html/_sources/intro.txt +++ /dev/null @@ -1,68 +0,0 @@ -.. _intro: - -Introduction -============ - -phpMyAdmin can manage a whole MySQL server (needs a super-user) as -well as a single database. To accomplish the latter you'll need a -properly set up MySQL user who can read/write only the desired -database. It's up to you to look up the appropriate part in the MySQL -manual. - - -Supported features ------------------- - -Currently phpMyAdmin can: - -* browse and drop databases, tables, views, columns and indexes -* display multiple results sets through stored procedures or queries -* create, copy, drop, rename and alter databases, tables, columns and - indexes -* maintenance server, databases and tables, with proposals on server - configuration -* execute, edit and bookmark any :term:`SQL`-statement, even batch-queries -* load text files into tables -* create [#f1]_ and read dumps of tables -* export [#f1]_ data to various formats: :term:`CSV`, :term:`XML`, :term:`PDF`, - :term:`ISO`/:term:`IEC` 26300 - :term:`OpenDocument` Text and Spreadsheet, Microsoft - Word 2000, and LATEX formats -* import data and :term:`MySQL` structures from :term:`OpenDocument` spreadsheets, as - well as :term:`XML`, :term:`CSV`, and :term:`SQL` files -* administer multiple servers -* manage MySQL users and privileges -* check referential integrity in MyISAM tables -* using Query-by-example (QBE), create complex queries automatically - connecting required tables -* create :term:`PDF` graphics of your - database layout -* search globally in a database or a subset of it -* transform stored data into any format using a set of predefined - functions, like displaying BLOB-data as image or download-link -* track changes on databases, tables and views -* support InnoDB tables and foreign keys see :ref:`faq3_6` -* support mysqli, the improved MySQL extension see :ref:`faq1_17` -* create, edit, call, export and drop stored procedures and functions -* create, edit, export and drop events and triggers -* communicate in `62 different languages - `_ - - -A word about users ------------------- - -Many people have difficulty understanding the concept of user -management with regards to phpMyAdmin. When a user logs in to -phpMyAdmin, that username and password are passed directly to MySQL. -phpMyAdmin does no account management on its own (other than allowing -one to manipulate the MySQL user account information); all users must -be valid MySQL users. - -.. rubric:: Footnotes - -.. [#f1] - - phpMyAdmin can compress (:term:`Zip`, :term:`GZip` or :term:`RFC 1952` - formats) dumps and :term:`CSV` exports if you use PHP with - :term:`Zlib` support (``--with-zlib``). - Proper support may also need changes in :file:`php.ini`. diff --git a/pma12111211/doc/html/_sources/other.txt b/pma12111211/doc/html/_sources/other.txt deleted file mode 100644 index aa954512..00000000 --- a/pma12111211/doc/html/_sources/other.txt +++ /dev/null @@ -1,18 +0,0 @@ -Other sources of information -============================ - -Printed Book ------------- - -The definitive guide to using phpMyAdmin is the book Mastering phpMyAdmin for -Effective MySQL Management by Marc Delisle. You can get information on that -book and other officially endorsed `books at the phpMyAdmin site`_. - -.. _books at the phpMyAdmin site: http://www.phpmyadmin.net/home_page/docs.php?books - -Tutorials ---------- - -Third party tutorials and articles are listed on our `wiki page`_. - -.. _wiki page: http://wiki.phpmyadmin.net/pma/Articles diff --git a/pma12111211/doc/html/_sources/privileges.txt b/pma12111211/doc/html/_sources/privileges.txt deleted file mode 100644 index 0c12932d..00000000 --- a/pma12111211/doc/html/_sources/privileges.txt +++ /dev/null @@ -1,50 +0,0 @@ -User management -=============== - -User management is the process of controlling which users are allowed to -connect to the MySQL server and what permissions they have on each database. -phpMyAdmin does not handle user management, rather it passes the username and -password on to MySQL, which then determines whether a user is permitted to -perform a particular action. Within phpMyAdmin, administrators have full -control over creating users, viewing and editing privileges for existing users, -and removing users. - -Within phpMyAdmin, user management is controlled via the :guilabel:`Users` link -from the main page. Users can be created, edited, and removed. - -Creating a new user -------------------- - -To create a new user, click the :guilabel:`Add a new user` link near the bottom -of the :guilabel:`Users` page (you must be a "superuser", e.g., user "root"). -Use the textboxes and drop-downs to configure the user to your particular -needs. You can then select whether to create a database for that user and grant -specific global privileges. Once you've created the user (by clicking Go), you -can define that user's permissions on a specific database (don't grant global -privileges in that case). In general, users do not need any global privileges -(other than USAGE), only permissions for their specific database. - -Editing an existing user ------------------------- - -To edit an existing user, simply click the pencil icon to the right of that -user in the :guilabel:`Users` page. You can then edit their global- and -database-specific privileges, change their password, or even copy those -privileges to a new user. - -Deleting a user ---------------- - -From the :guilabel:`Users` page, check the checkbox for the user you wish to -remove, select whether or not to also remove any databases of the same name (if -they exist), and click Go. - -Assigning privileges to user for a specific database ----------------------------------------------------- - -Users are assigned to databases by editing the user record (from the -:guilabel:`Users` link on the home page) not from within the :guilabel:`Users` -link under the table. If you are creating a user specifically for a given table -you will have to create the user first (with no global privileges) and then go -back and edit that user to add the table and privileges for the individual -table. diff --git a/pma12111211/doc/html/_sources/require.txt b/pma12111211/doc/html/_sources/require.txt deleted file mode 100644 index 4582d728..00000000 --- a/pma12111211/doc/html/_sources/require.txt +++ /dev/null @@ -1,53 +0,0 @@ -.. _require: - -Requirements -============ - -Web server ----------- - -Since, phpMyAdmin's interface is based entirely in your browser, you'll need a -web server (such as Apache, :term:`IIS`) to install phpMyAdmin's files into. - -PHP ---- - -* You need PHP 5.3.0 or newer, with ``session`` support, the Standard PHP Library - (SPL) extension, JSON support, and the ``mbstring`` extension. - -* To support uploading of ZIP files, you need the PHP ``zip`` extension. - -* You need GD2 support in PHP to display inline thumbnails of JPEGs - ("image/jpeg: inline") with their original aspect ratio. - -* When using the cookie authentication (the default), the `mcrypt - `_ extension is strongly suggested for most - users and is **required** for 64–bit machines. Not using mcrypt will - cause phpMyAdmin to load pages significantly slower. - -* To support upload progress bars, see :ref:`faq2_9`. - -* To support XML and Open Document Spreadsheet importing, you need the - `libxml `_ extension. - -* Performance suggestion: install the ``ctype`` extension. - -.. seealso:: :ref:`faq1_31`, :ref:`authentication_modes` - -Database --------- - -phpMyAdmin supports MySQL-compatible databases. - -* MySQL 5.5 or newer -* MariaDB 5.5 or newer -* Drizzle - -.. seealso:: :ref:`faq1_17` - -Web browser ------------ - -To access phpMyAdmin you need a web browser with cookies and javascript -enabled. - diff --git a/pma12111211/doc/html/_sources/setup.txt b/pma12111211/doc/html/_sources/setup.txt deleted file mode 100644 index 783cffd4..00000000 --- a/pma12111211/doc/html/_sources/setup.txt +++ /dev/null @@ -1,493 +0,0 @@ -.. _setup: - -Installation -============ - -phpMyAdmin does not apply any special security methods to the MySQL -database server. It is still the system administrator's job to grant -permissions on the MySQL databases properly. phpMyAdmin's :guilabel:`Users` -page can be used for this. - -.. warning:: - - :term:`Mac` users should note that if you are on a version before - :term:`Mac OS X`, StuffIt unstuffs with :term:`Mac` formats. So you'll have - to resave as in BBEdit to Unix style ALL phpMyAdmin scripts before - uploading them to your server, as PHP seems not to like :term:`Mac`-style - end of lines character ("``\r``"). - -Linux distributions -+++++++++++++++++++ - -phpMyAdmin is included in most Linux distributions. It is recommended to use -distribution packages when possible - they usually provide integration to your -distribution and you will automatically get security updates from your distribution. - - -Debian ------- - -Debian's package repositories include a phpMyAdmin package, but be aware that -the configuration file is maintained in ``/etc/phpmyadmin`` and may differ in -some ways from the official phpMyAdmin documentation. - -OpenSUSE --------- - -OpenSUSE already comes with phpMyAdmin package, just install packages from -the `openSUSE Build Service `_. - -Ubuntu ------- - -Ubuntu ships phpMyAdmin package, however if you want to use recent version, you -can use packages from -`PPA for Michal Čihař `_. - -Gentoo ------- - -Gentoo ships the phpMyAdmin package, both in a near stock configuration as well -as in a ``webapp-config`` configuration. Use ``emerge dev-db/phpmyadmin`` to -install. - -Mandriva --------- - -Mandriva ships the phpMyAdmin package in their ``contrib`` branch and can be -installed via the usual Control Center. - -Fedora ------- - -Fedora ships the phpMyAdmin package, but be aware that the configuration file -is maintained in ``/etc/phpMyAdmin/`` and may differ in some ways from the -official phpMyAdmin documentation. - -Red Hat Enterprise Linux ------------------------- - -Red Hat Enterprise Linux itself and thus derivatives like CentOS don't -ship phpMyAdmin, but the Fedora-driven repository -`Extra Packages for Enterprise Linux (EPEL) `_ -is doing so, if it's -`enabled `_. -But be aware that the configuration file is maintained in -``/etc/phpMyAdmin/`` and may differ in some ways from the -official phpMyAdmin documentation. - - -Installing on Windows -+++++++++++++++++++++ - -The easiest way to get phpMyAdmin on Windows is using third party products -which include phpMyAdmin together with a database and web server such as -`XAMPP `_. - -You can find more of such options at `Wikipedia `_. - - -.. _quick_install: - -Quick Install -+++++++++++++ - -#. Choose an appropriate distribution kit from the phpmyadmin.net - Downloads page. Some kits contain only the English messages, others - contain all languages. We'll assume you chose a kit whose name - looks like ``phpMyAdmin-x.x.x -all-languages.tar.gz``. -#. Untar or unzip the distribution (be sure to unzip the subdirectories): - ``tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz`` in your - webserver's document root. If you don't have direct access to your - document root, put the files in a directory on your local machine, - and, after step 4, transfer the directory on your web server using, - for example, ftp. -#. Ensure that all the scripts have the appropriate owner (if PHP is - running in safe mode, having some scripts with an owner different from - the owner of other scripts will be a problem). See :ref:`faq4_2` and - :ref:`faq1_26` for suggestions. -#. Now you must configure your installation. There are two methods that - can be used. Traditionally, users have hand-edited a copy of - :file:`config.inc.php`, but now a wizard-style setup script is provided - for those who prefer a graphical installation. Creating a - :file:`config.inc.php` is still a quick way to get started and needed for - some advanced features. - - -Manually creating the file --------------------------- - -To manually create the file, simply use your text editor to create the -file :file:`config.inc.php` (you can copy :file:`config.sample.inc.php` to get -minimal configuration file) in the main (top-level) phpMyAdmin -directory (the one that contains :file:`index.php`). phpMyAdmin first -loads :file:`libraries/config.default.php` and then overrides those values -with anything found in :file:`config.inc.php`. If the default value is -okay for a particular setting, there is no need to include it in -:file:`config.inc.php`. You'll need a few directives to get going, a -simple configuration may look like this: - -.. code-block:: xml+php - - - - -Or, if you prefer to not be prompted every time you log in: - -.. code-block:: xml+php - - - - -For a full explanation of possible configuration values, see the -:ref:`config` of this document. - -.. index:: Setup script - -.. _setup_script: - -Using Setup script ------------------- - -Instead of manually editing :file:`config.inc.php`, you can use the `Setup -Script `_. First you must manually create a folder ``config`` -in the phpMyAdmin directory. This is a security measure. On a -Linux/Unix system you can use the following commands: - -.. code-block:: sh - - - cd phpMyAdmin - mkdir config # create directory for saving - chmod o+rw config # give it world writable permissions - -And to edit an existing configuration, copy it over first: - -.. code-block:: sh - - - cp config.inc.php config/ # copy current configuration for editing - chmod o+w config/config.inc.php # give it world writable permissions - -On other platforms, simply create the folder and ensure that your web -server has read and write access to it. :ref:`faq1_26` can help with -this. - -Next, open ``setup/`` in your browser. If you have an existing configuration, -use the ``Load`` button to bring its content inside the setup panel. -Note that **changes are not saved to disk until explicitly choose ``Save``** -from the *Configuration* area of the screen. Normally the script saves the new -:file:`config.inc.php` to the ``config/`` directory, but if the webserver does -not have the proper permissions you may see the error "Cannot load or -save configuration." Ensure that the ``config/`` directory exists and -has the proper permissions - or use the ``Download`` link to save the -config file locally and upload it (via FTP or some similar means) to the -proper location. - -Once the file has been saved, it must be moved out of the ``config/`` -directory and the permissions must be reset, again as a security -measure: - -.. code-block:: sh - - - mv config/config.inc.php . # move file to current directory - chmod o-rw config.inc.php # remove world read and write permissions - rm -rf config # remove not needed directory - -Now the file is ready to be used. You can choose to review or edit the -file with your favorite editor, if you prefer to set some advanced -options which the setup script does not provide. - -#. If you are using the ``auth_type`` "config", it is suggested that you - protect the phpMyAdmin installation directory because using config - does not require a user to enter a password to access the phpMyAdmin - installation. Use of an alternate authentication method is - recommended, for example with HTTP–AUTH in a :term:`.htaccess` file or switch to using - ``auth_type`` cookie or http. See the :ref:`faqmultiuser` - for additional information, especially :ref:`faq4_4`. -#. Open the `main phpMyAdmin directory `_ in your browser. - phpMyAdmin should now display a welcome screen and your databases, or - a login dialog if using :term:`HTTP` or - cookie authentication mode. -#. You should deny access to the ``./libraries`` and ``./setup/lib`` - subfolders in your webserver configuration. For Apache you can use - supplied :term:`.htaccess` file in that folder, for other webservers, you should - configure this yourself. Such configuration prevents from possible - path exposure and cross side scripting vulnerabilities that might - happen to be found in that code. -#. It is generally good idea to protect public phpMyAdmin installation - against access by robots as they usually can not do anything good - there. You can do this using ``robots.txt`` file in root of your - webserver or limit access by web server configuration, see - :ref:`faq1_42`. - -.. index:: - single: Configuration storage - single: phpMyAdmin configuration storage - single: pmadb - -.. _linked-tables: - -phpMyAdmin configuration storage -++++++++++++++++++++++++++++++++ - -For a whole set of new features (bookmarks, comments, :term:`SQL`-history, -tracking mechanism, :term:`PDF`-generation, column contents transformation, -etc.) you need to create a set of special tables. Those tables can be located -in your own database, or in a central database for a multi-user installation -(this database would then be accessed by the controluser, so no other user -should have rights to it). - -Please look at your ``./examples/`` directory, where you should find a -file called *create\_tables.sql*. (If you are using a Windows server, -pay special attention to :ref:`faq1_23`). - -If you already had this infrastructure and upgraded to MySQL 4.1.2 or -newer, please use :file:`examples/upgrade_tables_mysql_4_1_2+.sql` -and then create new tables by importing -:file:`examples/create_tables.sql`. - -You can use your phpMyAdmin to create the tables for you. Please be -aware that you may need special (administrator) privileges to create -the database and tables, and that the script may need some tuning, -depending on the database name. - -After having imported the :file:`examples/create_tables.sql` file, you -should specify the table names in your :file:`config.inc.php` file. The -directives used for that can be found in the :ref:`config`. You will also need to -have a controluser with the proper rights to those tables (see section -:ref:`authentication_modes` below). - -.. _upgrading: - -Upgrading from an older version -+++++++++++++++++++++++++++++++ - -Simply copy :file:`config.inc.php` from your previous installation into -the newly unpacked one. Configuration files from old versions may -require some tweaking as some options have been changed or removed. -For compatibility with PHP 6, remove a -``set_magic_quotes_runtime(0);`` statement that you might find near -the end of your configuration file. - -You should **not** copy :file:`libraries/config.default.php` over -:file:`config.inc.php` because the default configuration file is version- -specific. - -If you have upgraded your MySQL server from a version previous to 4.1.2 to -version 5.x or newer and if you use the phpMyAdmin configuration storage, you -should run the :term:`SQL` script found in -:file:`examples/upgrade_tables_mysql_4_1_2+.sql`. - -.. index:: Authentication mode - -.. _authentication_modes: - -Using authentication modes -++++++++++++++++++++++++++ - -:term:`HTTP` and cookie authentication modes are recommended in a **multi-user -environment** where you want to give users access to their own database and -don't want them to play around with others. Nevertheless be aware that MS -Internet Explorer seems to be really buggy about cookies, at least till version -6. Even in a **single-user environment**, you might prefer to use :term:`HTTP` -or cookie mode so that your user/password pair are not in clear in the -configuration file. - -:term:`HTTP` and cookie authentication -modes are more secure: the MySQL login information does not need to be -set in the phpMyAdmin configuration file (except possibly for the -:config:option:`$cfg['Servers'][$i]['controluser']`). -However, keep in mind that the password travels in plain text, unless -you are using the HTTPS protocol. In cookie mode, the password is -stored, encrypted with the blowfish algorithm, in a temporary cookie. - -.. note: - - This section is only applicable if your MySQL server is running - with ``--skip-show-database``. - -For ':term:`HTTP`' and 'cookie' modes, phpMyAdmin needs a controluser that has -**only** the ``SELECT`` privilege on the *`mysql`.`user` (all columns except -`Password`)*, *`mysql`.`db` (all columns)*, *`mysql`.`host` (all columns)* and -*`mysql`.`tables\_priv` (all columns except `Grantor` and `Timestamp`)* tables. -You must specify the details for the controluser in the :file:`config.inc.php` -file under the :config:option:`$cfg['Servers'][$i]['controluser']` and -:config:option:`$cfg['Servers'][$i]['controlpass']` settings. The following -example assumes you want to use ``pma`` as the controluser and ``pmapass`` as -the controlpass, but **this is only an example: use something else in your -file!** Input these statements from the phpMyAdmin :term:`SQL` Query window or -mysql command–line client. Of course you have to replace ``localhost`` with the -webserver's host if it's not the same as the MySQL server's one. - -.. code-block:: mysql - - GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass'; - GRANT SELECT ( - Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, - Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, - File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, - Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, - Execute_priv, Repl_slave_priv, Repl_client_priv - ) ON mysql.user TO 'pma'@'localhost'; - GRANT SELECT ON mysql.db TO 'pma'@'localhost'; - GRANT SELECT ON mysql.host TO 'pma'@'localhost'; - GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) - ON mysql.tables_priv TO 'pma'@'localhost'; - -If you want to use the many new relation and bookmark features: - -.. code-block:: mysql - - GRANT SELECT, INSERT, UPDATE, DELETE ON .* TO 'pma'@'localhost'; - -(this of course requires that your :ref:`linked-tables` be set up). - -Then each of the *true* users should be granted a set of privileges -on a set of particular databases. Normally you shouldn't give global -privileges to an ordinary user, unless you understand the impact of those -privileges (for example, you are creating a superuser). -For example, to grant the user *real_user* with all privileges on -the database *user_base*: - -.. code-block:: mysql - - GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password'; - - -What the user may now do is controlled entirely by the MySQL user management -system. With HTTP or cookie authentication mode, you don't need to fill the -user/password fields inside the :config:option:`$cfg['Servers']`. - -.. index:: pair: HTTP; Authentication mode - -HTTP authentication mode ------------------------- - -* Uses :term:`HTTP` Basic authentication - method and allows you to log in as any valid MySQL user. -* Is supported with most PHP configurations. For :term:`IIS` (:term:`ISAPI`) - support using :term:`CGI` PHP see :ref:`faq1_32`, for using with Apache - :term:`CGI` see :ref:`faq1_35`. -* See also :ref:`faq4_4` about not using the :term:`.htaccess` mechanism along with - ':term:`HTTP`' authentication mode. - -.. index:: pair: Cookie; Authentication mode - -.. _cookie: - -Cookie authentication mode --------------------------- - -* You can use this method as a replacement for the :term:`HTTP` authentication - (for example, if you're running :term:`IIS`). -* Obviously, the user must enable cookies in the browser, but this is - now a requirement for all authentication modes. -* With this mode, the user can truly log out of phpMyAdmin and log in - back with the same username. -* If you want to log in to arbitrary server see :config:option:`$cfg['AllowArbitraryServer']` directive. -* As mentioned in the :ref:`require` section, having the ``mcrypt`` extension will - speed up access considerably, but is not required. - -.. index:: pair: Signon; Authentication mode - -Signon authentication mode --------------------------- - -* This mode is a convenient way of using credentials from another - application to authenticate to phpMyAdmin. -* The other application has to store login information into session - data. - -.. seealso:: - :config:option:`$cfg['Servers'][$i]['auth_type']`, - :config:option:`$cfg['Servers'][$i]['SignonSession']`, - :config:option:`$cfg['Servers'][$i]['SignonScript']`, - :config:option:`$cfg['Servers'][$i]['SignonURL']` - - -.. index:: pair: Config; Authentication mode - -Config authentication mode --------------------------- - -* This mode is the less secure one because it requires you to fill the - :config:option:`$cfg['Servers'][$i]['user']` and - :config:option:`$cfg['Servers'][$i]['password']` - fields (and as a result, anyone who can read your :file:`config.inc.php` - can discover your username and password). But you don't need to setup - a "controluser" here: using the :config:option:`$cfg['Servers'][$i]['only_db']` might be enough. -* In the :ref:`faqmultiuser` section, there is an entry explaining how - to protect your configuration file. -* For additional security in this mode, you may wish to consider the - Host authentication :config:option:`$cfg['Servers'][$i]['AllowDeny']['order']` - and :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` configuration directives. -* Unlike cookie and http, does not require a user to log in when first - loading the phpMyAdmin site. This is by design but could allow any - user to access your installation. Use of some restriction method is - suggested, perhaps a :term:`.htaccess` file with the HTTP-AUTH directive or disallowing - incoming HTTP requests at one’s router or firewall will suffice (both - of which are beyond the scope of this manual but easily searchable - with Google). - -.. index:: pair: Swekey; Authentication mode - -.. _swekey: - -Swekey authentication mode --------------------------- - -The Swekey is a low cost authentication USB key that can be used in -web applications. When Swekey authentication is activated, phpMyAdmin -requires the users's Swekey to be plugged before entering the login -page (currently supported for cookie authentication mode only). Swekey -Authentication is disabled by default. To enable it, add the following -line to :file:`config.inc.php`: - -.. code-block:: php - - $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey.conf'; - -You then have to create the ``swekey.conf`` file that will associate -each user with their Swekey Id. It is important to place this file -outside of your web server's document root (in the example, it is -located in ``/etc``). A self documented sample file is provided in the -``examples`` directory. Feel free to use it with your own users' -information. If you want to purchase a Swekey please visit -`http://phpmyadmin.net/auth\_key `_ -since this link provides funding for phpMyAdmin. - -.. seealso:: :config:option:`$cfg['Servers'][$i]['auth_swekey_config']` - - -Securing your phpMyAdmin installation -+++++++++++++++++++++++++++++++++++++ - -The phpMyAdmin team tries hardly to make the application secure, however there -are always ways to make your installation more secure: - -* remove ``setup`` directory from phpMyAdmin, you will probably not - use it after initial setup -* properly choose authentication method - :ref:`cookie` - is probably the best choice for shared hosting -* in case you don't want all MySQL users to be able to access - phpMyAdmin, you can use :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` to limit them -* consider hiding phpMyAdmin behind authentication proxy, so that - MySQL credentials are not all users need to login -* if you are afraid of automated attacks, enabling Captcha by - :config:option:`$cfg['CaptchaLoginPublicKey']` and - :config:option:`$cfg['CaptchaLoginPrivateKey']` might be an option. diff --git a/pma12111211/doc/html/_sources/transformations.txt b/pma12111211/doc/html/_sources/transformations.txt deleted file mode 100644 index 4c3ce46c..00000000 --- a/pma12111211/doc/html/_sources/transformations.txt +++ /dev/null @@ -1,138 +0,0 @@ -.. _transformations: - -Transformations -=============== - -.. _transformationsintro: - -Introduction -++++++++++++ - -To enable transformations, you have to setup the ``column_info`` -table and the proper directives. Please see the :ref:`config` on how to do so. - -You can apply different transformations to the contents of each -column. The transformation will take the content of each column and -transform it with certain rules defined in the selected -transformation. - -Say you have a column 'filename' which contains a filename. Normally -you would see in phpMyAdmin only this filename. Using transformations -you can transform that filename into a HTML link, so you can click -inside of the phpMyAdmin structure on the column's link and will see -the file displayed in a new browser window. Using transformation -options you can also specify strings to append/prepend to a string or -the format you want the output stored in. - -For a general overview of all available transformations and their -options, you can consult your *//transformation\_overview.php* installation. - -For a tutorial on how to effectively use transformations, see our -`Link section `_ on the -official phpMyAdmin homepage. - -.. _transformationshowto: - -Usage -+++++ - -Go to your *tbl\_structure.php* page (i.e. reached through clicking on -the 'Structure' link for a table). There click on "Change" (or change -icon) and there you will see three new fields at the end of the line. -They are called 'MIME-type', 'Browser transformation' and -'Transformation options'. - -* The field 'MIME-type' is a drop-down field. Select the MIME-type that - corresponds to the column's contents. Please note that transformations - are inactive as long as no MIME-type is selected. -* The field 'Browser transformation' is a drop-down field. You can - choose from a hopefully growing amount of pre-defined transformations. - See below for information on how to build your own transformation. - There are global transformations and mimetype-bound transformations. - Global transformations can be used for any mimetype. They will take - the mimetype, if necessary, into regard. Mimetype-bound - transformations usually only operate on a certain mimetype. There are - transformations which operate on the main mimetype (like 'image'), - which will most likely take the subtype into regard, and those who - only operate on a specific subtype (like 'image/jpeg'). You can use - transformations on mimetypes for which the function was not defined - for. There is no security check for you selected the right - transformation, so take care of what the output will be like. -* The field 'Transformation options' is a free-type textfield. You have - to enter transform-function specific options here. Usually the - transforms can operate with default options, but it is generally a - good idea to look up the overview to see which options are necessary. - Much like the ENUM/SET-Fields, you have to split up several options - using the format 'a','b','c',...(NOTE THE MISSING BLANKS). This is - because internally the options will be parsed as an array, leaving the - first value the first element in the array, and so forth. If you want - to specify a MIME character set you can define it in the - transformation\_options. You have to put that outside of the pre- - defined options of the specific mime-transform, as the last value of - the set. Use the format "'; charset=XXX'". If you use a transform, for - which you can specify 2 options and you want to append a character - set, enter "'first parameter','second parameter','charset=us-ascii'". - You can, however use the defaults for the parameters: "'','','charset - =us-ascii'". - -.. _transformationsfiles: - -File structure -++++++++++++++ - -All specific transformations for mimetypes are defined through class -files in the directory 'libraries/plugins/transformations/'. Each of -them extends a certain transformation abstract class declared in -libraries/plugins/transformations/abstract. - -They are stored in files to ease up customization and easy adding of -new transformations. - -Because the user cannot enter own mimetypes, it is kept sure that -transformations always work. It makes no sense to apply a -transformation to a mimetype the transform-function doesn't know to -handle. - -There is a file called '*transformations.lib.php*' that provides some -basic functions which can be included by any other transform function. - -The file name convention is ``[Mimetype]_[Subtype]_[Transformation -Name].class.php``, while the abtract class that it extends has the -name ``[Transformation Name]TransformationsPlugin``. All of the -methods that have to be implemented by a transformations plug-in are: - -#. getMIMEType() and getMIMESubtype() in the main class; -#. getName(), getInfo() and applyTransformation() in the abstract class - it extends. - -The getMIMEType(), getMIMESubtype() and getName() methods return the -name of the MIME type, MIME Subtype and transformation accordingly. -getInfo() returns the transformation's description and possible -options it may receive and applyTransformation() is the method that -does the actual work of the transformation plug-in. - -Please see the libraries/plugins/transformations/TEMPLATE and -libraries/plugins/transformations/TEMPLATE\_ABSTRACT files for adding -your own transformation plug-in. You can also generate a new -transformation plug-in (with or without the abstract transformation -class), by using -:file:`libraries/plugins/transformations/generator_plugin.sh` or -:file:`libraries/plugins/transformations/generator_main_class.sh`. - -The applyTransformation() method always gets passed three variables: - -#. **$buffer** - Contains the text inside of the column. This is the - text, you want to transform. -#. **$options** - Contains any user-passed options to a transform - function as an array. -#. **$meta** - Contains an object with information about your column. The - data is drawn from the output of the `mysql\_fetch\_field() - `_ function. This means, all - object properties described on the `manual page - `_ are available in this - variable and can be used to transform a column accordingly to - unsigned/zerofill/not\_null/... properties. The $meta->mimetype - variable contains the original MIME-type of the column (i.e. - 'text/plain', 'image/jpeg' etc.) - diff --git a/pma12111211/doc/html/_sources/user.txt b/pma12111211/doc/html/_sources/user.txt deleted file mode 100644 index ceaf7233..00000000 --- a/pma12111211/doc/html/_sources/user.txt +++ /dev/null @@ -1,9 +0,0 @@ -User Guide -========== - -.. toctree:: - :maxdepth: 2 - - transformations - privileges - other diff --git a/pma12111211/doc/html/_sources/vendors.txt b/pma12111211/doc/html/_sources/vendors.txt deleted file mode 100644 index 13d7e550..00000000 --- a/pma12111211/doc/html/_sources/vendors.txt +++ /dev/null @@ -1,34 +0,0 @@ -Distributing and packaging phpMyAdmin -===================================== - -This document is intended to give advices to people who want to -redistribute phpMyAdmin inside other software package such as Linux -distribution or some all in one package including web server and MySQL -server. - -Generally you can customize some basic aspects (paths to some files and -behavior) in :file:`libraries/vendor_config.php`. - -For example if you want setup script to generate config file in var, change -``SETUP_CONFIG_FILE`` to :file:`/var/lib/phpmyadmin/config.inc.php` and you -will also probably want to skip directory writable check, so set -``SETUP_DIR_WRITABLE`` to false. - -External libraries ------------------- - -phpMyAdmin includes several external libraries, you might want to -replace them with system ones if they are available, but please note -that you should test whether version you provide is compatible with the -one we ship. - -Currently known list of external libraries: - -js/jquery - jQuery js framework and various jQuery based libraries. - -libraries/php-gettext - php-gettext library -libraries/tcpdf - tcpdf library, stripped down of not needed files - diff --git a/pma12111211/doc/html/_static/ajax-loader.gif b/pma12111211/doc/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8ca..00000000 Binary files a/pma12111211/doc/html/_static/ajax-loader.gif and /dev/null differ diff --git a/pma12111211/doc/html/_static/basic.css b/pma12111211/doc/html/_static/basic.css deleted file mode 100644 index 43e8bafa..00000000 --- a/pma12111211/doc/html/_static/basic.css +++ /dev/null @@ -1,540 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox input[type="text"] { - width: 170px; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - width: 30px; -} - -img { - border: 0; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- general body styles --------------------------------------------------- */ - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlighted { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.refcount { - color: #060; -} - -.optional { - font-size: 1.3em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/pma12111211/doc/html/_static/comment-bright.png b/pma12111211/doc/html/_static/comment-bright.png deleted file mode 100644 index 551517b8..00000000 Binary files a/pma12111211/doc/html/_static/comment-bright.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/comment-close.png b/pma12111211/doc/html/_static/comment-close.png deleted file mode 100644 index 09b54be4..00000000 Binary files a/pma12111211/doc/html/_static/comment-close.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/comment.png b/pma12111211/doc/html/_static/comment.png deleted file mode 100644 index 92feb52b..00000000 Binary files a/pma12111211/doc/html/_static/comment.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/default.css b/pma12111211/doc/html/_static/default.css deleted file mode 100644 index 21f3f509..00000000 --- a/pma12111211/doc/html/_static/default.css +++ /dev/null @@ -1,256 +0,0 @@ -/* - * default.css_t - * ~~~~~~~~~~~~~ - * - * Sphinx stylesheet -- default theme. - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: sans-serif; - font-size: 100%; - background-color: #11303d; - color: #000; - margin: 0; - padding: 0; -} - -div.document { - background-color: #1c4e63; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 230px; -} - -div.body { - background-color: #ffffff; - color: #000000; - padding: 0 20px 30px 20px; -} - -div.footer { - color: #ffffff; - width: 100%; - padding: 9px 0 9px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #ffffff; - text-decoration: underline; -} - -div.related { - background-color: #133f52; - line-height: 30px; - color: #ffffff; -} - -div.related a { - color: #ffffff; -} - -div.sphinxsidebar { -} - -div.sphinxsidebar h3 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.4em; - font-weight: normal; - margin: 0; - padding: 0; -} - -div.sphinxsidebar h3 a { - color: #ffffff; -} - -div.sphinxsidebar h4 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.3em; - font-weight: normal; - margin: 5px 0 0 0; - padding: 0; -} - -div.sphinxsidebar p { - color: #ffffff; -} - -div.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; -} - -div.sphinxsidebar ul { - margin: 10px; - padding: 0; - color: #ffffff; -} - -div.sphinxsidebar a { - color: #98dbcc; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - - - -/* -- hyperlink styles ------------------------------------------------------ */ - -a { - color: #355f7c; - text-decoration: none; -} - -a:visited { - color: #355f7c; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - - - -/* -- body styles ----------------------------------------------------------- */ - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Trebuchet MS', sans-serif; - background-color: #f2f2f2; - font-weight: normal; - color: #20435c; - border-bottom: 1px solid #ccc; - margin: 20px -20px 10px -20px; - padding: 3px 0 3px 10px; -} - -div.body h1 { margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 160%; } -div.body h3 { font-size: 140%; } -div.body h4 { font-size: 120%; } -div.body h5 { font-size: 110%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #c60f0f; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - background-color: #c60f0f; - color: white; -} - -div.body p, div.body dd, div.body li { - text-align: justify; - line-height: 130%; -} - -div.admonition p.admonition-title + p { - display: inline; -} - -div.admonition p { - margin-bottom: 5px; -} - -div.admonition pre { - margin-bottom: 5px; -} - -div.admonition ul, div.admonition ol { - margin-bottom: 5px; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre { - padding: 5px; - background-color: #eeffcc; - color: #333333; - line-height: 120%; - border: 1px solid #ac9; - border-left: none; - border-right: none; -} - -tt { - background-color: #ecf0f3; - padding: 0 1px 0 1px; - font-size: 0.95em; -} - -th { - background-color: #ede; -} - -.warning tt { - background: #efc2c2; -} - -.note tt { - background: #d6d6d6; -} - -.viewcode-back { - font-family: sans-serif; -} - -div.viewcode-block:target { - background-color: #f4debf; - border-top: 1px solid #ac9; - border-bottom: 1px solid #ac9; -} \ No newline at end of file diff --git a/pma12111211/doc/html/_static/doctools.js b/pma12111211/doc/html/_static/doctools.js deleted file mode 100644 index d4619fdf..00000000 --- a/pma12111211/doc/html/_static/doctools.js +++ /dev/null @@ -1,247 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -} - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s == 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * small function to check if an array contains - * a given item. - */ -jQuery.contains = function(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == item) - return true; - } - return false; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node) { - if (node.nodeType == 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { - var span = document.createElement("span"); - span.className = className; - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this); - }); - } - } - return this.each(function() { - highlight(this); - }); -}; - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated == 'undefined') - return string; - return (typeof translated == 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated == 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) == 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this == '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/pma12111211/doc/html/_static/down-pressed.png b/pma12111211/doc/html/_static/down-pressed.png deleted file mode 100644 index 6f7ad782..00000000 Binary files a/pma12111211/doc/html/_static/down-pressed.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/down.png b/pma12111211/doc/html/_static/down.png deleted file mode 100644 index 3003a887..00000000 Binary files a/pma12111211/doc/html/_static/down.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/file.png b/pma12111211/doc/html/_static/file.png deleted file mode 100644 index d18082e3..00000000 Binary files a/pma12111211/doc/html/_static/file.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/jquery.js b/pma12111211/doc/html/_static/jquery.js deleted file mode 100644 index 7c243080..00000000 --- a/pma12111211/doc/html/_static/jquery.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
            a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

            ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
            ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
            ","
            "],thead:[1,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],col:[2,"","
            "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
            ","
            "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
            ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
            "; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/pma12111211/doc/html/_static/minus.png b/pma12111211/doc/html/_static/minus.png deleted file mode 100644 index da1c5620..00000000 Binary files a/pma12111211/doc/html/_static/minus.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/plus.png b/pma12111211/doc/html/_static/plus.png deleted file mode 100644 index b3cb3742..00000000 Binary files a/pma12111211/doc/html/_static/plus.png and /dev/null differ diff --git a/pma12111211/doc/html/_static/pygments.css b/pma12111211/doc/html/_static/pygments.css deleted file mode 100644 index 1a14f2ae..00000000 --- a/pma12111211/doc/html/_static/pygments.css +++ /dev/null @@ -1,62 +0,0 @@ -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #303030 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0040D0 } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/pma12111211/doc/html/_static/searchtools.js b/pma12111211/doc/html/_static/searchtools.js deleted file mode 100644 index 663be4c9..00000000 --- a/pma12111211/doc/html/_static/searchtools.js +++ /dev/null @@ -1,560 +0,0 @@ -/* - * searchtools.js_t - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilties for the full-text search. - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words, hlwords is the list of normal, unstemmed - * words. the first one is used to find the occurance, the - * latter for highlighting it. - */ - -jQuery.makeSearchSummary = function(text, keywords, hlwords) { - var textLower = text.toLowerCase(); - var start = 0; - $.each(keywords, function() { - var i = textLower.indexOf(this.toLowerCase()); - if (i > -1) - start = i; - }); - start = Math.max(start - 120, 0); - var excerpt = ((start > 0) ? '...' : '') + - $.trim(text.substr(start, 240)) + - ((start + 240 - text.length) ? '...' : ''); - var rv = $('
            ').text(excerpt); - $.each(hlwords, function() { - rv = rv.highlightText(this, 'highlighted'); - }); - return rv; -} - - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - -/** - * Search Module - */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } - }, - - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, success: null, - dataType: "script", cache: true}); - }, - - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); - } - }, - - hasIndex : function() { - return this._index !== null; - }, - - deferQuery : function(query) { - this._queued_query = query; - }, - - stopPulse : function() { - this._pulse_status = 0; - }, - - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (var i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something - */ - performSearch : function(query) { - // create the required interface elements - this.out = $('#search-results'); - this.title = $('

            ' + _('Searching') + '

            ').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

            ').appendTo(this.out); - this.output = $('
            '; - } - } - - if (method_exists($propertyGroup, "getDoc")) { - $doc = $propertyGroup->getDoc(); - if ($doc != null) { - if (count($doc) == 3) { - $ret .= PMA_Util::showMySQLDocu( - $doc[1], - false, - $doc[2] - ); - } elseif (count($doc) == 1) { - $ret .= PMA_Util::showDocu('faq', $doc[0]); - } else { - $ret .= PMA_Util::showMySQLDocu( - $doc[1] - ); - } - } - } - - // Close the list element after $doc link is displayed - if (isset($property_class)) { - if ($property_class == 'BoolPropertyItem' - || $property_class == 'MessageOnlyPropertyItem' - || $property_class == 'SelectPropertyItem' - || $property_class == 'TextPropertyItem' - ) { - $ret .= ''; - } - } - $ret .= "\n"; - return $ret; -} - -/** - * Returns html div with editable options for plugin - * - * @param string $section name of config section in $GLOBALS['cfg'][$section] - * @param array &$list array with plugin instances - * - * @return string html fieldset with plugin options - */ -function PMA_pluginGetOptions($section, &$list) -{ - $ret = ''; - // Options for plugins that support them - foreach ($list as $plugin) { - $properties = $plugin->getProperties(); - if ($properties != null) { - $text = $properties->getText(); - $options = $properties->getOptions(); - } - - $plugin_name = strtolower(substr(get_class($plugin), strlen($section))); - $ret .= '
            '; - $ret .= '

            ' . PMA_getString($text) . '

            '; - - $no_options = true; - if ($options != null && count($options) > 0) { - foreach ($options->getProperties() - as $propertyMainGroup - ) { - // check for hidden properties - $no_options = true; - foreach ($propertyMainGroup->getProperties() as $propertyItem) { - if (strcmp("HiddenPropertyItem", get_class($propertyItem))) { - $no_options = false; - break; - } - } - - $ret .= PMA_pluginGetOneOption( - $section, - $plugin_name, - $propertyMainGroup - ); - } - } - - if ($no_options) { - $ret .= '

            ' . __('This format has no options') . '

            '; - } - $ret .= '
            '; - } - return $ret; -} diff --git a/pma12111211/libraries/plugins/AuthenticationPlugin.class.php b/pma12111211/libraries/plugins/AuthenticationPlugin.class.php deleted file mode 100644 index 7943d2cb..00000000 --- a/pma12111211/libraries/plugins/AuthenticationPlugin.class.php +++ /dev/null @@ -1,60 +0,0 @@ - authentication failed - * - * @return boolean - */ - abstract public function authFails(); -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/ExportPlugin.class.php b/pma12111211/libraries/plugins/ExportPlugin.class.php deleted file mode 100644 index ecfde15f..00000000 --- a/pma12111211/libraries/plugins/ExportPlugin.class.php +++ /dev/null @@ -1,206 +0,0 @@ -properties; - } - - /** - * Sets the export plugins properties and is implemented by each export - * plugin - * - * @return void - */ - abstract protected function setProperties(); -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/ImportPlugin.class.php b/pma12111211/libraries/plugins/ImportPlugin.class.php deleted file mode 100644 index 4ef4deb4..00000000 --- a/pma12111211/libraries/plugins/ImportPlugin.class.php +++ /dev/null @@ -1,59 +0,0 @@ -properties; - } - - /** - * Sets the export plugins properties and is implemented by each import - * plugin - * - * @return void - */ - abstract protected function setProperties(); -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/PluginManager.class.php b/pma12111211/libraries/plugins/PluginManager.class.php deleted file mode 100644 index 34859819..00000000 --- a/pma12111211/libraries/plugins/PluginManager.class.php +++ /dev/null @@ -1,132 +0,0 @@ -_storage = new SplObjectStorage(); - } - - /** - * Attaches an SplObserver so that it can be notified of updates - * - * @param SplObserver $observer The SplObserver to attach - * - * @return void - */ - function attach (SplObserver $observer ) - { - $this->_storage->attach($observer); - } - - /** - * Detaches an observer from the subject to no longer notify it of updates - * - * @param SplObserver $observer The SplObserver to detach - * - * @return void - */ - function detach (SplObserver $observer) - { - $this->_storage->detach($observer); - } - - /** - * It is called after setStatus() was run by a certain plugin, and has - * the role of sending a notification to all of the plugins in $_storage, - * by calling the update() method for each of them. - * - * @todo implement - * @return void - */ - function notify () - { - } - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - /** - * Gets the list with all the plugins that attach to it - * - * @return SplObjectStorage - */ - public function getStorage() - { - return $this->_storage; - } - - /** - * Setter for $_storage - * - * @param SplObjectStorage $_storage the list with all the plugins that - * attach to it - * - * @return void - */ - public function setStorage($_storage) - { - $this->_storage = $_storage; - } - - /** - * Gets the information about the current plugin state - * It is called by all the plugins in $_storage in their update() method - * - * @return string - */ - public function getStatus() - { - return $this->_status; - } - - /** - * Setter for $_status - * If a plugin changes its status, this has to be remembered in order to - * notify the rest of the plugins that they should update - * - * @param string $_status contains information about the current plugin state - * - * @return void - */ - public function setStatus($_status) - { - $this->_status = $_status; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/PluginObserver.class.php b/pma12111211/libraries/plugins/PluginObserver.class.php deleted file mode 100644 index 82a2fdc3..00000000 --- a/pma12111211/libraries/plugins/PluginObserver.class.php +++ /dev/null @@ -1,91 +0,0 @@ -_pluginManager = $pluginManager; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * TODO Declare this function abstract, removing its body, - * as soon as we drop support for PHP 5.3.x. - * See bug #3625 - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - * - * @throws Exception - */ - public function update (SplSubject $subject) - { - throw new Exception( - 'PluginObserver::update must be overridden in child classes.' - ); - } - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the PluginManager instance that contains the list with all the - * plugins that attached to it - * - * @return PluginManager - */ - public function getPluginManager() - { - return $this->_pluginManager; - } - - /** - * Setter for $_pluginManager - * - * @param PluginManager $_pluginManager the private instance that it will - * attach to - * - * @return void - */ - public function setPluginManager($_pluginManager) - { - $this->_pluginManager = $_pluginManager; - } -} -?> diff --git a/pma12111211/libraries/plugins/TransformationsInterface.int.php b/pma12111211/libraries/plugins/TransformationsInterface.int.php deleted file mode 100644 index 1bcb8af4..00000000 --- a/pma12111211/libraries/plugins/TransformationsInterface.int.php +++ /dev/null @@ -1,49 +0,0 @@ - diff --git a/pma12111211/libraries/plugins/TransformationsPlugin.class.php b/pma12111211/libraries/plugins/TransformationsPlugin.class.php deleted file mode 100644 index 02ed816b..00000000 --- a/pma12111211/libraries/plugins/TransformationsPlugin.class.php +++ /dev/null @@ -1,51 +0,0 @@ - diff --git a/pma12111211/libraries/plugins/UploadInterface.int.php b/pma12111211/libraries/plugins/UploadInterface.int.php deleted file mode 100644 index ab660d61..00000000 --- a/pma12111211/libraries/plugins/UploadInterface.int.php +++ /dev/null @@ -1,36 +0,0 @@ -upload plugins - * - * @package PhpMyAdmin - */ -if (! defined('PHPMYADMIN')) { - exit; -} - -/** - * Provides a common interface that will have to implemented by all of the - * import->upload plugins. - * - * @package PhpMyAdmin - */ -interface UploadInterface -{ - /** - * Gets the specific upload ID Key - * - * @return string ID Key - */ - public static function getIdKey(); - - /** - * Returns upload status. - * - * @param string $id upload id - * - * @return array|null - */ - public static function getUploadStatus($id); -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/auth/AuthenticationConfig.class.php b/pma12111211/libraries/plugins/auth/AuthenticationConfig.class.php deleted file mode 100644 index 6f7e4e45..00000000 --- a/pma12111211/libraries/plugins/auth/AuthenticationConfig.class.php +++ /dev/null @@ -1,174 +0,0 @@ - authentication failed - * - * @global string the MySQL error message PHP returns - * @global string the connection type (persistent or not) - * @global string the MySQL server port to use - * @global string the MySQL socket port to use - * @global array the current server settings - * @global string the font face to use in case of failure - * @global string the default font size to use in case of failure - * @global string the big font size to use in case of failure - * @global boolean tell the "PMA_mysqlDie()" function headers have been - * sent - * - * @return boolean always true (no return indeed) - */ - public function authFails() - { - $conn_error = $GLOBALS['dbi']->getError(); - if (! $conn_error) { - $conn_error = __('Cannot connect: invalid settings.'); - } - - /* HTML header */ - $response = PMA_Response::getInstance(); - $response->getFooter()->setMinimal(); - $header = $response->getHeader(); - $header->setBodyId('loginform'); - $header->setTitle(__('Access denied')); - $header->disableMenu(); - echo '

            -
            -

            '; - echo sprintf(__('Welcome to %s'), ' phpMyAdmin '); - echo '

            -
            -
            - - - - - - - ' . "\n"; - if (count($GLOBALS['cfg']['Servers']) > 1) { - // offer a chance to login to other servers if the current one failed - include_once './libraries/select_server.lib.php'; - echo '' . "\n"; - echo ' ' . "\n"; - echo '' . "\n"; - } - echo '
            '; - if (isset($GLOBALS['allowDeny_forbidden']) - && $GLOBALS['allowDeny_forbidden'] - ) { - trigger_error(__('Access denied'), E_USER_NOTICE); - } else { - // Check whether user has configured something - if ($GLOBALS['PMA_Config']->source_mtime == 0) { - echo '

            ' . sprintf( - __( - 'You probably did not create a configuration file.' - . ' You might want to use the %1$ssetup script%2$s to' - . ' create one.' - ), - '', - '' - ) . '

            ' . "\n"; - } elseif (! isset($GLOBALS['errno']) - || (isset($GLOBALS['errno']) && $GLOBALS['errno'] != 2002) - && $GLOBALS['errno'] != 2003 - ) { - // if we display the "Server not responding" error, do not confuse - // users by telling them they have a settings problem - // (note: it's true that they could have a badly typed host name, - // but anyway the current message tells that the server - // rejected the connection, which is not really what happened) - // 2002 is the error given by mysqli - // 2003 is the error given by mysql - trigger_error( - __( - 'phpMyAdmin tried to connect to the MySQL server, and the' - . ' server rejected the connection. You should check the' - . ' host, username and password in your configuration and' - . ' make sure that they correspond to the information given' - . ' by the administrator of the MySQL server.' - ), E_USER_WARNING - ); - } - echo PMA_Util::mysqlDie( - $conn_error, '', true, '', false - ); - } - $GLOBALS['error_handler']->dispUserErrors(); - echo '
            ' . "\n"; - echo '' - . __('Retry to connect') - . '' . "\n"; - echo '
            ' . "\n"; - echo PMA_selectServer(true, true); - echo '
            ' . "\n"; - if (!defined('TESTSUITE')) { - exit; - } - return true; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } -} diff --git a/pma12111211/libraries/plugins/auth/AuthenticationCookie.class.php b/pma12111211/libraries/plugins/auth/AuthenticationCookie.class.php deleted file mode 100644 index 73f54a07..00000000 --- a/pma12111211/libraries/plugins/auth/AuthenticationCookie.class.php +++ /dev/null @@ -1,817 +0,0 @@ -setCookie( - 'pma_mcrypt_iv', - base64_encode($iv) - ); - } -} - -/** - * Handles the cookie authentication method - * - * @package PhpMyAdmin-Authentication - */ -class AuthenticationCookie extends AuthenticationPlugin -{ - /** - * Displays authentication form - * - * this function MUST exit/quit the application - * - * @global string $conn_error the last connection error - * - * @return boolean|void - */ - public function auth() - { - global $conn_error; - - $response = PMA_Response::getInstance(); - if ($response->isAjax()) { - $response->isSuccess(false); - - $login_link = '

            [ ' . - sprintf( - '', - $GLOBALS['cfg']['PmaAbsoluteUri'], - __('Log in') - ) - . ' ]'; - - if (! empty($conn_error)) { - - $conn_error .= $login_link; - - $response->addJSON( - 'message', - PMA_Message::error( - $conn_error - ) - ); - } else { - $response->addJSON( - 'message', - PMA_Message::error( - __('Your session has expired. Please log in again.') . - $login_link - ) - ); - } - if (defined('TESTSUITE')) { - return true; - } else { - exit; - } - } - - /* Perform logout to custom URL */ - if (! empty($_REQUEST['old_usr']) - && ! empty($GLOBALS['cfg']['Server']['LogoutURL']) - ) { - PMA_sendHeaderLocation($GLOBALS['cfg']['Server']['LogoutURL']); - if (defined('TESTSUITE')) { - return true; - } else { - exit; - } - } - - // No recall if blowfish secret is not configured as it would produce - // garbage - if ($GLOBALS['cfg']['LoginCookieRecall'] - && ! empty($GLOBALS['cfg']['blowfish_secret']) - ) { - $default_user = $GLOBALS['PHP_AUTH_USER']; - $default_server = $GLOBALS['pma_auth_server']; - $autocomplete = ''; - } else { - $default_user = ''; - $default_server = ''; - // skip the IE autocomplete feature. - $autocomplete = ' autocomplete="off"'; - } - - $response->getFooter()->setMinimal(); - $header = $response->getHeader(); - $header->setBodyId('loginform'); - $header->setTitle('phpMyAdmin'); - $header->disableMenu(); - $header->disableWarnings(); - - if (file_exists(CUSTOM_HEADER_FILE)) { - include CUSTOM_HEADER_FILE; - } - echo ' -
            - -

            '; - echo sprintf( - __('Welcome to %s'), - 'phpMyAdmin' - ); - echo "

            "; - - // Show error message - if (! empty($conn_error)) { - PMA_Message::rawError($conn_error)->display(); - } - - echo "\n"; - - echo "
            "; - // Displays the languages form - if (empty($GLOBALS['cfg']['Lang'])) { - include_once './libraries/display_select_lang.lib.php'; - // use fieldset, don't show doc link - echo PMA_getLanguageSelectorHtml(true, false); - } - echo '
            -
            - - '; - - // BEGIN Swekey Integration - Swekey_login('input_username', 'input_go'); - // END Swekey Integration - - if ($GLOBALS['error_handler']->hasDisplayErrors()) { - echo '
            '; - $GLOBALS['error_handler']->dispErrors(); - echo '
            '; - } - echo '
            '; - if (file_exists(CUSTOM_FOOTER_FILE)) { - include CUSTOM_FOOTER_FILE; - } - if (! defined('TESTSUITE')) { - exit; - } else { - return true; - } - } - - /** - * Gets advanced authentication settings - * - * this function DOES NOT check authentication - it just checks/provides - * authentication credentials required to connect to the MySQL server - * usually with $GLOBALS['dbi']->connect() - * - * it returns false if something is missing - which usually leads to - * auth() which displays login form - * - * it returns true if all seems ok which usually leads to auth_set_user() - * - * it directly switches to authFails() if user inactivity timout is reached - * - * @todo AllowArbitraryServer on does not imply that the user wants an - * arbitrary server, or? so we should also check if this is filled - * and not only if allowed - * - * @return boolean whether we get authentication settings or not - */ - public function authCheck() - { - global $conn_error; - - // Initialization - /** - * @global $GLOBALS['pma_auth_server'] the user provided server to - * connect to - */ - $GLOBALS['pma_auth_server'] = ''; - - $GLOBALS['PHP_AUTH_USER'] = $GLOBALS['PHP_AUTH_PW'] = ''; - $GLOBALS['from_cookie'] = false; - - // BEGIN Swekey Integration - if (! Swekey_Auth_check()) { - return false; - } - // END Swekey Integration - - if (defined('PMA_CLEAR_COOKIES')) { - foreach ($GLOBALS['cfg']['Servers'] as $key => $val) { - $GLOBALS['PMA_Config']->removeCookie('pmaPass-' . $key); - $GLOBALS['PMA_Config']->removeCookie('pmaServer-' . $key); - $GLOBALS['PMA_Config']->removeCookie('pmaUser-' . $key); - } - return false; - } - - // We already have one correct captcha. - $skip = false; - if ( isset($_SESSION['last_valid_captcha']) - && $_SESSION['last_valid_captcha'] - ) { - $skip = true; - } - - // Verify Captcha if it is required. - if ( !empty($GLOBALS['cfg']['CaptchaLoginPrivateKey']) - && !empty($GLOBALS['cfg']['CaptchaLoginPublicKey']) - && !$skip - ) { - if ( !empty($_POST["recaptcha_challenge_field"]) - && !empty($_POST["recaptcha_response_field"]) - ) { - include_once 'libraries/plugins/auth/recaptchalib.php'; - - // Use private key to verify captcha status. - $resp = recaptcha_check_answer( - $GLOBALS['cfg']['CaptchaLoginPrivateKey'], - $_SERVER["REMOTE_ADDR"], - $_POST["recaptcha_challenge_field"], - $_POST["recaptcha_response_field"] - ); - - // Check if the captcha entered is valid, if not stop the login. - if ( !$resp->is_valid ) { - $conn_error = __('Entered captcha is wrong, try again!'); - $_SESSION['last_valid_captcha'] = false; - return false; - } else { - $_SESSION['last_valid_captcha'] = true; - } - } elseif (! empty($_POST["recaptcha_challenge_field"]) - && empty($_POST["recaptcha_response_field"]) - ) { - $conn_error = __('Please enter correct captcha!'); - return false; - } else { - if (! isset($_SESSION['last_valid_captcha']) - || ! $_SESSION['last_valid_captcha'] - ) { - return false; - } - } - } - - if (! empty($_REQUEST['old_usr'])) { - // The user wants to be logged out - // -> delete his choices that were stored in session - - // according to the PHP manual we should do this before the destroy: - //$_SESSION = array(); - - if (! defined('TESTSUITE')) { - session_destroy(); - // $_SESSION array is not immediately emptied - $_SESSION['last_valid_captcha'] = false; - } - // -> delete password cookie(s) - if ($GLOBALS['cfg']['LoginCookieDeleteAll']) { - foreach ($GLOBALS['cfg']['Servers'] as $key => $val) { - $GLOBALS['PMA_Config']->removeCookie('pmaPass-' . $key); - if (isset($_COOKIE['pmaPass-' . $key])) { - unset($_COOKIE['pmaPass-' . $key]); - } - } - } else { - $GLOBALS['PMA_Config']->removeCookie( - 'pmaPass-' . $GLOBALS['server'] - ); - if (isset($_COOKIE['pmaPass-' . $GLOBALS['server']])) { - unset($_COOKIE['pmaPass-' . $GLOBALS['server']]); - } - } - } - - if (! empty($_REQUEST['pma_username'])) { - // The user just logged in - $GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username']; - $GLOBALS['PHP_AUTH_PW'] = empty($_REQUEST['pma_password']) - ? '' - : $_REQUEST['pma_password']; - if ($GLOBALS['cfg']['AllowArbitraryServer'] - && isset($_REQUEST['pma_servername']) - ) { - $GLOBALS['pma_auth_server'] = $_REQUEST['pma_servername']; - } - return true; - } - - // At the end, try to set the $GLOBALS['PHP_AUTH_USER'] - // and $GLOBALS['PHP_AUTH_PW'] variables from cookies - - // servername - if ($GLOBALS['cfg']['AllowArbitraryServer'] - && ! empty($_COOKIE['pmaServer-' . $GLOBALS['server']]) - ) { - $GLOBALS['pma_auth_server'] - = $_COOKIE['pmaServer-' . $GLOBALS['server']]; - } - - // username - if (empty($_COOKIE['pmaUser-' . $GLOBALS['server']])) { - return false; - } - - $GLOBALS['PHP_AUTH_USER'] = $this->blowfishDecrypt( - $_COOKIE['pmaUser-' . $GLOBALS['server']], - $this->_getBlowfishSecret() - ); - - // user was never logged in since session start - if (empty($_SESSION['last_access_time'])) { - return false; - } - - // User inactive too long - $last_access_time = time() - $GLOBALS['cfg']['LoginCookieValidity']; - if ($_SESSION['last_access_time'] < $last_access_time - ) { - PMA_Util::cacheUnset('is_create_db_priv', true); - PMA_Util::cacheUnset('is_process_priv', true); - PMA_Util::cacheUnset('is_reload_priv', true); - PMA_Util::cacheUnset('db_to_create', true); - PMA_Util::cacheUnset('dbs_where_create_table_allowed', true); - $GLOBALS['no_activity'] = true; - $this->authFails(); - if (! defined('TESTSUITE')) { - exit; - } else { - return false; - } - } - - // password - if (empty($_COOKIE['pmaPass-' . $GLOBALS['server']])) { - return false; - } - - $GLOBALS['PHP_AUTH_PW'] = $this->blowfishDecrypt( - $_COOKIE['pmaPass-' . $GLOBALS['server']], - $this->_getBlowfishSecret() - ); - - if ($GLOBALS['PHP_AUTH_PW'] == "\xff(blank)") { - $GLOBALS['PHP_AUTH_PW'] = ''; - } - - $GLOBALS['from_cookie'] = true; - - return true; - } - - /** - * Set the user and password after last checkings if required - * - * @return boolean always true - */ - public function authSetUser() - { - global $cfg; - - // Ensures valid authentication mode, 'only_db', bookmark database and - // table names and relation table name are used - if ($cfg['Server']['user'] != $GLOBALS['PHP_AUTH_USER']) { - foreach ($cfg['Servers'] as $idx => $current) { - if ($current['host'] == $cfg['Server']['host'] - && $current['port'] == $cfg['Server']['port'] - && $current['socket'] == $cfg['Server']['socket'] - && $current['ssl'] == $cfg['Server']['ssl'] - && $current['connect_type'] == $cfg['Server']['connect_type'] - && $current['user'] == $GLOBALS['PHP_AUTH_USER'] - ) { - $GLOBALS['server'] = $idx; - $cfg['Server'] = $current; - break; - } - } // end foreach - } // end if - - if ($GLOBALS['cfg']['AllowArbitraryServer'] - && ! empty($GLOBALS['pma_auth_server']) - ) { - /* Allow to specify 'host port' */ - $parts = explode(' ', $GLOBALS['pma_auth_server']); - if (count($parts) == 2) { - $tmp_host = $parts[0]; - $tmp_port = $parts[1]; - } else { - $tmp_host = $GLOBALS['pma_auth_server']; - $tmp_port = ''; - } - if ($cfg['Server']['host'] != $GLOBALS['pma_auth_server']) { - $cfg['Server']['host'] = $tmp_host; - if (! empty($tmp_port)) { - $cfg['Server']['port'] = $tmp_port; - } - } - unset($tmp_host, $tmp_port, $parts); - } - $cfg['Server']['user'] = $GLOBALS['PHP_AUTH_USER']; - $cfg['Server']['password'] = $GLOBALS['PHP_AUTH_PW']; - - // Avoid showing the password in phpinfo()'s output - unset($GLOBALS['PHP_AUTH_PW']); - unset($_SERVER['PHP_AUTH_PW']); - - $_SESSION['last_access_time'] = time(); - } - - /** - * Stores user credentials after successful login. - * - * @return void - */ - public function storeUserCredentials() - { - global $cfg; - - // Name and password cookies need to be refreshed each time - // Duration = one month for username - $GLOBALS['PMA_Config']->setCookie( - 'pmaUser-' . $GLOBALS['server'], - $this->blowfishEncrypt( - $cfg['Server']['user'], - $this->_getBlowfishSecret() - ) - ); - - // Duration = as configured - $GLOBALS['PMA_Config']->setCookie( - 'pmaPass-' . $GLOBALS['server'], - $this->blowfishEncrypt( - ! empty($cfg['Server']['password']) - ? $cfg['Server']['password'] : "\xff(blank)", - $this->_getBlowfishSecret() - ), - null, - $GLOBALS['cfg']['LoginCookieStore'] - ); - - // Set server cookies if required (once per session) and, in this case, - // force reload to ensure the client accepts cookies - if (! $GLOBALS['from_cookie']) { - if ($GLOBALS['cfg']['AllowArbitraryServer']) { - if (! empty($GLOBALS['pma_auth_server'])) { - // Duration = one month for servername - $GLOBALS['PMA_Config']->setCookie( - 'pmaServer-' . $GLOBALS['server'], - $cfg['Server']['host'] - ); - } else { - // Delete servername cookie - $GLOBALS['PMA_Config']->removeCookie( - 'pmaServer-' . $GLOBALS['server'] - ); - } - } - - // URL where to go: - $redirect_url = $cfg['PmaAbsoluteUri'] . 'index.php'; - - // any parameters to pass? - $url_params = array(); - if (strlen($GLOBALS['db'])) { - $url_params['db'] = $GLOBALS['db']; - } - if (strlen($GLOBALS['table'])) { - $url_params['table'] = $GLOBALS['table']; - } - // any target to pass? - if (! empty($GLOBALS['target']) - && $GLOBALS['target'] != 'index.php' - ) { - $url_params['target'] = $GLOBALS['target']; - } - - /** - * Clear user cache. - */ - PMA_Util::clearUserCache(); - - PMA_Response::getInstance()->disable(); - - PMA_sendHeaderLocation( - $redirect_url . PMA_URL_getCommon($url_params, '&'), - true - ); - if (! defined('TESTSUITE')) { - exit; - } else { - return false; - } - } // end if - - return true; - - } - - /** - * User is not allowed to login to MySQL -> authentication failed - * - * prepares error message and switches to auth() which display the error - * and the login form - * - * this function MUST exit/quit the application, - * currently doen by call to auth() - * - * @return void - */ - public function authFails() - { - global $conn_error; - - // Deletes password cookie and displays the login form - $GLOBALS['PMA_Config']->removeCookie('pmaPass-' . $GLOBALS['server']); - - if (! empty($GLOBALS['login_without_password_is_forbidden'])) { - $conn_error = __( - 'Login without a password is forbidden by configuration' - . ' (see AllowNoPassword)' - ); - } elseif (! empty($GLOBALS['allowDeny_forbidden'])) { - $conn_error = __('Access denied'); - } elseif (! empty($GLOBALS['no_activity'])) { - $conn_error = sprintf( - __('No activity within %s seconds; please log in again.'), - $GLOBALS['cfg']['LoginCookieValidity'] - ); - } elseif ($GLOBALS['dbi']->getError()) { - $conn_error = '#' . $GLOBALS['errno'] . ' ' - . __('Cannot log in to the MySQL server'); - } else { - $conn_error = __('Cannot log in to the MySQL server'); - } - - // needed for PHP-CGI (not need for FastCGI or mod-php) - header('Cache-Control: no-store, no-cache, must-revalidate'); - header('Pragma: no-cache'); - - $this->auth(); - } - - /** - * Returns blowfish secret or generates one if needed. - * - * @return string - */ - private function _getBlowfishSecret() - { - if (empty($GLOBALS['cfg']['blowfish_secret'])) { - if (empty($_SESSION['auto_blowfish_secret'])) { - // this returns 23 characters - $_SESSION['auto_blowfish_secret'] = uniqid('', true); - } - return $_SESSION['auto_blowfish_secret']; - } else { - // apply md5() to work around too long secrets (returns 32 characters) - return md5($GLOBALS['cfg']['blowfish_secret']); - } - } - - /** - * Encryption using blowfish algorithm (mcrypt) - * or phpseclib's AES if mcrypt not available - * - * @param string $data original data - * @param string $secret the secret - * - * @return string the encrypted result - */ - public function blowfishEncrypt($data, $secret) - { - global $iv; - if (! function_exists('mcrypt_encrypt')) { - /** - * This library uses mcrypt when available, so - * we could always call it instead of having an - * if/then/else logic, however the include_once - * call is costly - */ - include_once "./libraries/phpseclib/Crypt/AES.php"; - $cipher = new Crypt_AES(CRYPT_AES_MODE_ECB); - $cipher->setKey($secret); - return base64_encode($cipher->encrypt($data)); - } else { - return base64_encode( - mcrypt_encrypt( - MCRYPT_BLOWFISH, - $secret, - $data, - MCRYPT_MODE_CBC, - $iv - ) - ); - } - } - - /** - * Decryption using blowfish algorithm (mcrypt) - * or phpseclib's AES if mcrypt not available - * - * @param string $encdata encrypted data - * @param string $secret the secret - * - * @return string original data - */ - public function blowfishDecrypt($encdata, $secret) - { - global $iv; - if (! function_exists('mcrypt_encrypt')) { - include_once "./libraries/phpseclib/Crypt/AES.php"; - $cipher = new Crypt_AES(CRYPT_AES_MODE_ECB); - $cipher->setKey($secret); - return $cipher->decrypt(base64_decode($encdata)); - } else { - $data = base64_decode($encdata); - $decrypted = mcrypt_decrypt( - MCRYPT_BLOWFISH, - $secret, - $data, - MCRYPT_MODE_CBC, - $iv - ); - return trim($decrypted); - } - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } -} diff --git a/pma12111211/libraries/plugins/auth/AuthenticationHttp.class.php b/pma12111211/libraries/plugins/auth/AuthenticationHttp.class.php deleted file mode 100644 index 75273b11..00000000 --- a/pma12111211/libraries/plugins/auth/AuthenticationHttp.class.php +++ /dev/null @@ -1,261 +0,0 @@ -getFooter()->setMinimal(); - $header = $response->getHeader(); - $header->setTitle(__('Access denied')); - $header->disableMenu(); - $header->setBodyId('loginform'); - - $response->addHTML('

            '); - $response->addHTML(sprintf(__('Welcome to %s'), ' phpMyAdmin')); - $response->addHTML('

            '); - $response->addHTML('

            '); - $response->addHTML( - PMA_Message::error( - __('Wrong username/password. Access denied.') - ) - ); - $response->addHTML('

            '); - - if (file_exists(CUSTOM_FOOTER_FILE)) { - include CUSTOM_FOOTER_FILE; - } - - if (! defined('TESTSUITE')) { - exit; - } else { - return false; - } - } - - /** - * Gets advanced authentication settings - * - * @global string $PHP_AUTH_USER the username if register_globals is on - * @global string $PHP_AUTH_PW the password if register_globals is on - * @global array the array of server variables if - * register_globals is off - * @global array the array of environment variables if - * register_globals is off - * @global string the username for the ? server - * @global string the password for the ? server - * @global string the username for the WebSite Professional - * server - * @global string the password for the WebSite Professional - * server - * @global string the username of the user who logs out - * - * @return boolean whether we get authentication settings or not - */ - public function authCheck() - { - global $PHP_AUTH_USER, $PHP_AUTH_PW; - - // Grabs the $PHP_AUTH_USER variable whatever are the values of the - // 'register_globals' and the 'variables_order' directives - if (empty($PHP_AUTH_USER)) { - if (PMA_getenv('PHP_AUTH_USER')) { - $PHP_AUTH_USER = PMA_getenv('PHP_AUTH_USER'); - } elseif (PMA_getenv('REMOTE_USER')) { - // CGI, might be encoded, see below - $PHP_AUTH_USER = PMA_getenv('REMOTE_USER'); - } elseif (PMA_getenv('REDIRECT_REMOTE_USER')) { - // CGI, might be encoded, see below - $PHP_AUTH_USER = PMA_getenv('REDIRECT_REMOTE_USER'); - } elseif (PMA_getenv('AUTH_USER')) { - // WebSite Professional - $PHP_AUTH_USER = PMA_getenv('AUTH_USER'); - } elseif (PMA_getenv('HTTP_AUTHORIZATION') - && false === strpos(PMA_getenv('HTTP_AUTHORIZATION'), '<') - ) { - // IIS, might be encoded, see below; also prevent XSS - $PHP_AUTH_USER = PMA_getenv('HTTP_AUTHORIZATION'); - } elseif (PMA_getenv('Authorization')) { - // FastCGI, might be encoded, see below - $PHP_AUTH_USER = PMA_getenv('Authorization'); - } - } - // Grabs the $PHP_AUTH_PW variable whatever are the values of the - // 'register_globals' and the 'variables_order' directives - if (empty($PHP_AUTH_PW)) { - if (PMA_getenv('PHP_AUTH_PW')) { - $PHP_AUTH_PW = PMA_getenv('PHP_AUTH_PW'); - } elseif (PMA_getenv('REMOTE_PASSWORD')) { - // Apache/CGI - $PHP_AUTH_PW = PMA_getenv('REMOTE_PASSWORD'); - } elseif (PMA_getenv('AUTH_PASSWORD')) { - // WebSite Professional - $PHP_AUTH_PW = PMA_getenv('AUTH_PASSWORD'); - } - } - - // Decode possibly encoded information (used by IIS/CGI/FastCGI) - // (do not use explode() because a user might have a colon in his password - if (strcmp(substr($PHP_AUTH_USER, 0, 6), 'Basic ') == 0) { - $usr_pass = base64_decode(substr($PHP_AUTH_USER, 6)); - if (! empty($usr_pass)) { - $colon = strpos($usr_pass, ':'); - if ($colon) { - $PHP_AUTH_USER = substr($usr_pass, 0, $colon); - $PHP_AUTH_PW = substr($usr_pass, $colon + 1); - } - unset($colon); - } - unset($usr_pass); - } - - // User logged out -> ensure the new username is not the same - $old_usr = isset($_REQUEST['old_usr']) ? $_REQUEST['old_usr'] : ''; - if (! empty($old_usr) - && (isset($PHP_AUTH_USER) && $old_usr == $PHP_AUTH_USER) - ) { - $PHP_AUTH_USER = ''; - // -> delete user's choices that were stored in session - if (! defined('TESTSUITE')) { - session_destroy(); - } - } - - // Returns whether we get authentication settings or not - if (empty($PHP_AUTH_USER)) { - return false; - } else { - return true; - } - } - - /** - * Set the user and password after last checkings if required - * - * @global array $cfg the valid servers settings - * @global integer $server the id of the current server - * @global array the current server settings - * @global string $PHP_AUTH_USER the current username - * @global string $PHP_AUTH_PW the current password - * - * @return boolean always true - */ - public function authSetUser() - { - global $cfg, $server; - global $PHP_AUTH_USER, $PHP_AUTH_PW; - - // Ensures valid authentication mode, 'only_db', bookmark database and - // table names and relation table name are used - if ($cfg['Server']['user'] != $PHP_AUTH_USER) { - $servers_cnt = count($cfg['Servers']); - for ($i = 1; $i <= $servers_cnt; $i++) { - if (isset($cfg['Servers'][$i]) - && ($cfg['Servers'][$i]['host'] == $cfg['Server']['host'] - && $cfg['Servers'][$i]['user'] == $PHP_AUTH_USER) - ) { - $server = $i; - $cfg['Server'] = $cfg['Servers'][$i]; - break; - } - } // end for - } // end if - - $cfg['Server']['user'] = $PHP_AUTH_USER; - $cfg['Server']['password'] = $PHP_AUTH_PW; - - // Avoid showing the password in phpinfo()'s output - unset($GLOBALS['PHP_AUTH_PW']); - unset($_SERVER['PHP_AUTH_PW']); - - return true; - } - - /** - * User is not allowed to login to MySQL -> authentication failed - * - * @return boolean always true (no return indeed) - */ - public function authFails() - { - $error = $GLOBALS['dbi']->getError(); - if ($error && $GLOBALS['errno'] != 1045) { - PMA_fatalError($error); - } else { - $this->auth(); - return true; - } - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } -} diff --git a/pma12111211/libraries/plugins/auth/AuthenticationSignon.class.php b/pma12111211/libraries/plugins/auth/AuthenticationSignon.class.php deleted file mode 100644 index 4586af92..00000000 --- a/pma12111211/libraries/plugins/auth/AuthenticationSignon.class.php +++ /dev/null @@ -1,299 +0,0 @@ - authentication failed - * - * @return boolean always true (no return indeed) - */ - public function authFails() - { - /* Session name */ - $session_name = $GLOBALS['cfg']['Server']['SignonSession']; - - /* Does session exist? */ - if (isset($_COOKIE[$session_name])) { - /* End current session */ - if (! defined('TESTSUITE')) { - session_write_close(); - } - - /* Load single signon session */ - session_name($session_name); - session_id($_COOKIE[$session_name]); - if (! defined('TESTSUITE')) { - session_start(); - } - - /* Set error message */ - if (! empty($GLOBALS['login_without_password_is_forbidden'])) { - $_SESSION['PMA_single_signon_error_message'] = __( - 'Login without a password is forbidden by configuration ' - . '(see AllowNoPassword)' - ); - } elseif (! empty($GLOBALS['allowDeny_forbidden'])) { - $_SESSION['PMA_single_signon_error_message'] = __('Access denied'); - } elseif (! empty($GLOBALS['no_activity'])) { - $_SESSION['PMA_single_signon_error_message'] = sprintf( - __('No activity within %s seconds; please log in again.'), - $GLOBALS['cfg']['LoginCookieValidity'] - ); - } elseif ($GLOBALS['dbi']->getError()) { - $_SESSION['PMA_single_signon_error_message'] = PMA_sanitize( - $GLOBALS['dbi']->getError() - ); - } else { - $_SESSION['PMA_single_signon_error_message'] = __( - 'Cannot log in to the MySQL server' - ); - } - } - $this->auth(); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } -} diff --git a/pma12111211/libraries/plugins/auth/recaptchalib.php b/pma12111211/libraries/plugins/auth/recaptchalib.php deleted file mode 100644 index 32c4f4d7..00000000 --- a/pma12111211/libraries/plugins/auth/recaptchalib.php +++ /dev/null @@ -1,277 +0,0 @@ - $value ) - $req .= $key . '=' . urlencode( stripslashes($value) ) . '&'; - - // Cut the last '&' - $req=substr($req,0,strlen($req)-1); - return $req; -} - - - -/** - * Submits an HTTP POST to a reCAPTCHA server - * @param string $host - * @param string $path - * @param array $data - * @param int port - * @return array response - */ -function _recaptcha_http_post($host, $path, $data, $port = 80) { - - $req = _recaptcha_qsencode ($data); - - $http_request = "POST $path HTTP/1.0\r\n"; - $http_request .= "Host: $host\r\n"; - $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; - $http_request .= "Content-Length: " . strlen($req) . "\r\n"; - $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; - $http_request .= "\r\n"; - $http_request .= $req; - - $response = ''; - if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { - die ('Could not open socket'); - } - - fwrite($fs, $http_request); - - while ( !feof($fs) ) - $response .= fgets($fs, 1160); // One TCP-IP packet - fclose($fs); - $response = explode("\r\n\r\n", $response, 2); - - return $response; -} - - - -/** - * Gets the challenge HTML (javascript and non-javascript version). - * This is called from the browser, and the resulting reCAPTCHA HTML widget - * is embedded within the HTML form it was called from. - * @param string $pubkey A public key for reCAPTCHA - * @param string $error The error given by reCAPTCHA (optional, default is null) - * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false) - - * @return string - The HTML to be embedded in the user's form. - */ -function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false) -{ - if ($pubkey == null || $pubkey == '') { - die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create"); - } - - if ($use_ssl) { - $server = RECAPTCHA_API_SECURE_SERVER; - } else { - $server = RECAPTCHA_API_SERVER; - } - - $errorpart = ""; - if ($error) { - $errorpart = "&error=" . $error; - } - return ' - - '; -} - - - - -/** - * A ReCaptchaResponse is returned from recaptcha_check_answer() - */ -class ReCaptchaResponse { - var $is_valid; - var $error; -} - - -/** - * Calls an HTTP POST function to verify if the user's guess was correct - * @param string $privkey - * @param string $remoteip - * @param string $challenge - * @param string $response - * @param array $extra_params an array of extra variables to post to the server - * @return ReCaptchaResponse - */ -function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array()) -{ - if ($privkey == null || $privkey == '') { - die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create"); - } - - if ($remoteip == null || $remoteip == '') { - die ("For security reasons, you must pass the remote ip to reCAPTCHA"); - } - - - - //discard spam submissions - if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) { - $recaptcha_response = new ReCaptchaResponse(); - $recaptcha_response->is_valid = false; - $recaptcha_response->error = 'incorrect-captcha-sol'; - return $recaptcha_response; - } - - $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify", - array ( - 'privatekey' => $privkey, - 'remoteip' => $remoteip, - 'challenge' => $challenge, - 'response' => $response - ) + $extra_params - ); - - $answers = explode ("\n", $response [1]); - $recaptcha_response = new ReCaptchaResponse(); - - if (trim ($answers [0]) == 'true') { - $recaptcha_response->is_valid = true; - } - else { - $recaptcha_response->is_valid = false; - $recaptcha_response->error = $answers [1]; - } - return $recaptcha_response; - -} - -/** - * gets a URL where the user can sign up for reCAPTCHA. If your application - * has a configuration page where you enter a key, you should provide a link - * using this function. - * @param string $domain The domain where the page is hosted - * @param string $appname The name of your application - */ -function recaptcha_get_signup_url ($domain = null, $appname = null) { - return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname)); -} - -function _recaptcha_aes_pad($val) { - $block_size = 16; - $numpad = $block_size - (strlen ($val) % $block_size); - return str_pad($val, strlen ($val) + $numpad, chr($numpad)); -} - -/* Mailhide related code */ - -function _recaptcha_aes_encrypt($val,$ky) { - if (! function_exists ("mcrypt_encrypt")) { - die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed."); - } - $mode=MCRYPT_MODE_CBC; - $enc=MCRYPT_RIJNDAEL_128; - $val=_recaptcha_aes_pad($val); - return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); -} - - -function _recaptcha_mailhide_urlbase64 ($x) { - return strtr(base64_encode ($x), '+/', '-_'); -} - -/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */ -function recaptcha_mailhide_url($pubkey, $privkey, $email) { - if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) { - die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " . - "you can do so at http://www.google.com/recaptcha/mailhide/apikey"); - } - - - $ky = pack('H*', $privkey); - $cryptmail = _recaptcha_aes_encrypt ($email, $ky); - - return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail); -} - -/** - * gets the parts of the email to expose to the user. - * eg, given johndoe@example,com return ["john", "example.com"]. - * the email is then displayed as john...@example.com - */ -function _recaptcha_mailhide_email_parts ($email) { - $arr = preg_split("/@/", $email ); - - if (strlen ($arr[0]) <= 4) { - $arr[0] = substr ($arr[0], 0, 1); - } else if (strlen ($arr[0]) <= 6) { - $arr[0] = substr ($arr[0], 0, 3); - } else { - $arr[0] = substr ($arr[0], 0, 4); - } - return $arr; -} - -/** - * Gets html to display an email address given a public an private key. - * to get a key, go to: - * - * http://www.google.com/recaptcha/mailhide/apikey - */ -function recaptcha_mailhide_html($pubkey, $privkey, $email) { - $emailparts = _recaptcha_mailhide_email_parts ($email); - $url = recaptcha_mailhide_url ($pubkey, $privkey, $email); - - return htmlentities($emailparts[0]) . "...@" . htmlentities ($emailparts [1]); - -} - - -?> diff --git a/pma12111211/libraries/plugins/auth/swekey/authentication.inc.php b/pma12111211/libraries/plugins/auth/swekey/authentication.inc.php deleted file mode 100644 index 1977f883..00000000 --- a/pma12111211/libraries/plugins/auth/swekey/authentication.inc.php +++ /dev/null @@ -1,172 +0,0 @@ - - - diff --git a/pma12111211/libraries/plugins/auth/swekey/musbe-ca.crt b/pma12111211/libraries/plugins/auth/swekey/musbe-ca.crt deleted file mode 100644 index 2a31ad18..00000000 --- a/pma12111211/libraries/plugins/auth/swekey/musbe-ca.crt +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIJAMjw7QcLWCd6MA0GCSqGSIb3DQEBBQUAMGsxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRQwEgYDVQQKEwtNdXNiZSwgSW5j -LjESMBAGA1UEAxMJbXVzYmUuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQG11c2Jl -LmNvbTAeFw0wODA5MDQxNDE2MTNaFw0zNzEyMjExNDE2MTNaMGsxCzAJBgNVBAYT -AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRQwEgYDVQQKEwtNdXNiZSwgSW5jLjES -MBAGA1UEAxMJbXVzYmUuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQG11c2JlLmNv -bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOBhOljxVzQfK4gted2I -d3BemcjW4abAUOzn3KYWXpPO5xIfVeXNDGkDbyH+X+7fo94sX25/ewuKNFDSOcvo -tXHq7uQenTHB35r+a+LY81KceUHgW90a3XsqPAkwAjyYcgo3zmM2DtLvw+5Yod8T -wAHk9m3qavnQ1uk99jBTwL7RZ9jIZHh9pFCL93uJc2obtd8O96Iycbn2q0w/AWbb -+eUVWIHzvLtfPvROeL3lJzr/Uz5LjKapxJ3qyqASflfHpnj9pU8l6g2TQ6Hg5KT5 -tLFkRe7uGhOfRtOQ/+NjaWrEuNCFnpyN4Q5Fv+5qA1Ip1IpH0200sWbAf/k2u0Qp -Sx0CAwEAAaOB0DCBzTAdBgNVHQ4EFgQUczJrQ7hCvtsnzcqiDIZ/GSn/CiwwgZ0G -A1UdIwSBlTCBkoAUczJrQ7hCvtsnzcqiDIZ/GSn/Ciyhb6RtMGsxCzAJBgNVBAYT -AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRQwEgYDVQQKEwtNdXNiZSwgSW5jLjES -MBAGA1UEAxMJbXVzYmUuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQG11c2JlLmNv -bYIJAMjw7QcLWCd6MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAGxk -8xzIljeBDQWWVRr0NEALVSv3i09V4jAKkyEOfmZ8lKMKJi0atwbtjrXTzLnNYj+Q -pyUbyY/8ItWvV7pnVxMiF9qcer7e9X4vw358GZuMVE/da1nWxz+CwzTm5oO30RzA -antM9bISFFr9lJq69bDWOnCUi1IG8DSL3TxtlABso7S4vqiZ+sB33l6k1K4a/Njb -QkU9UejKhKkVVZTsOrumfnOJ4MCmPfX8Y/AY2o670y5HnzpxerIYziCVzApPVrW7 -sKH0tuVGturMfQOKgstYe4/m9glBTeTLMkjD+6MJC2ONBD7GAiOO95gNl5M1fzJQ -FEe5CJ7DCYl0GdmLXXw= ------END CERTIFICATE----- diff --git a/pma12111211/libraries/plugins/auth/swekey/swekey.auth.lib.php b/pma12111211/libraries/plugins/auth/swekey/swekey.auth.lib.php deleted file mode 100644 index 9c36efcb..00000000 --- a/pma12111211/libraries/plugins/auth/swekey/swekey.auth.lib.php +++ /dev/null @@ -1,302 +0,0 @@ - - - \n"; - // if (file_exists($caFile)) - // echo "\n"; - } - - if (file_exists($caFile)) { - Swekey_SetCAFile($caFile); - } elseif (! empty($caFile) - && (substr($_SESSION['SWEKEY']['CONF_SERVER_CHECK'], 0, 8) == "https://")) { - return "Internal Error: CA File $caFile not found"; - } - - $result = null; - $swekey_id = $_GET['swekey_id']; - $swekey_otp = $_GET['swekey_otp']; - - if (isset($swekey_id)) { - unset($_SESSION['SWEKEY']['AUTHENTICATED_SWEKEY']); - if (! isset($_SESSION['SWEKEY']['RND_TOKEN'])) { - unset($swekey_id); - } else { - if (strlen($swekey_id) == 32) { - $res = Swekey_CheckOtp($swekey_id, $_SESSION['SWEKEY']['RND_TOKEN'], $swekey_otp); - unset($_SESSION['SWEKEY']['RND_TOKEN']); - if (! $res) { - $result = __('Hardware authentication failed!') . ' (' . Swekey_GetLastError() . ')'; - } else { - $_SESSION['SWEKEY']['AUTHENTICATED_SWEKEY'] = $swekey_id; - $_SESSION['SWEKEY']['FORCE_USER'] = $_SESSION['SWEKEY']['VALID_SWEKEYS'][$swekey_id]; - return null; - } - } else { - $result = __('No valid authentication key plugged'); - if ($_SESSION['SWEKEY']['CONF_DEBUG']) { - $result .= "
            " . htmlspecialchars($swekey_id); - } - unset($_SESSION['SWEKEY']['CONF_LOADED']); // reload the conf file - } - } - } else { - unset($_SESSION['SWEKEY']); - } - - $_SESSION['SWEKEY']['RND_TOKEN'] = Swekey_GetFastRndToken(); - if (strlen($_SESSION['SWEKEY']['RND_TOKEN']) != 64) { - $result = __('Hardware authentication failed!') . ' (' . Swekey_GetLastError() . ')'; - unset($_SESSION['SWEKEY']['CONF_LOADED']); // reload the conf file - } - - if (! isset($swekey_id)) { - ?> - - display(); - if ($GLOBALS['error_handler']->hasDisplayErrors()) { - echo '
            '; - $GLOBALS['error_handler']->dispErrors(); - echo '
            '; - } - } - - if (isset($_SESSION['SWEKEY']) && $_SESSION['SWEKEY']['ENABLED']) { - echo ''; - } -} - -if (!empty($_GET['session_to_unset'])) { - session_write_close(); - session_id($_GET['session_to_unset']); - session_start(); - $_SESSION = array(); - session_write_close(); - session_destroy(); - exit; -} - -if (isset($_GET['swekey_reset'])) { - unset($_SESSION['SWEKEY']); -} - -?> diff --git a/pma12111211/libraries/plugins/auth/swekey/swekey.php b/pma12111211/libraries/plugins/auth/swekey/swekey.php deleted file mode 100644 index d495d45b..00000000 --- a/pma12111211/libraries/plugins/auth/swekey/swekey.php +++ /dev/null @@ -1,522 +0,0 @@ -"; - -/** - * Servers addresses - * Use the Swekey_SetXxxServer($server) functions to set them - */ - -global $gSwekeyCheckServer; -if (! isset($gSwekeyCheckServer)) { - $gSwekeyCheckServer = SWEKEY_DEFAULT_CHECK_SERVER; -} - -global $gSwekeyRndTokenServer; -if (! isset($gSwekeyRndTokenServer)) { - $gSwekeyRndTokenServer = SWEKEY_DEFAULT_RND_SERVER; -} - -global $gSwekeyStatusServer; -if (! isset($gSwekeyStatusServer)) { - $gSwekeyStatusServer = SWEKEY_DEFAULT_STATUS_SERVER; -} - -global $gSwekeyCA; - -global $gSwekeyTokenCacheEnabled; -if (! isset($gSwekeyTokenCacheEnabled)) { - $gSwekeyTokenCacheEnabled = true; -} - -/** - * Change the address of the Check server. - * If $server is empty the default value 'http://auth-check.musbe.net' will be used - * - * @param server The protocol and hostname to use - * - * @access public - */ -function Swekey_SetCheckServer($server) -{ - global $gSwekeyCheckServer; - if (empty($server)) { - $gSwekeyCheckServer = SWEKEY_DEFAULT_CHECK_SERVER; - } else { - $gSwekeyCheckServer = $server; - } -} - -/** - * Change the address of the Random Token Generator server. - * If $server is empty the default value 'http://auth-rnd-gen.musbe.net' will be used - * - * @param server The protocol and hostname to use - * - * @access public - */ -function Swekey_SetRndTokenServer($server) -{ - global $gSwekeyRndTokenServer; - if (empty($server)) { - $gSwekeyRndTokenServer = SWEKEY_DEFAULT_RND_SERVER; - } else { - $gSwekeyRndTokenServer = $server; - } -} - -/** - * Change the address of the Satus server. - * If $server is empty the default value 'http://auth-status.musbe.net' will be used - * - * @param server The protocol and hostname to use - * - * @access public - */ -function Swekey_SetStatusServer($server) -{ - global $gSwekeyStatusServer; - if (empty($server)) { - $gSwekeyStatusServer = SWEKEY_DEFAULT_STATUS_SERVER; - } else { - $gSwekeyStatusServer = $server; - } -} - -/** - * Change the certificat file in case of the the severs use https instead of http - * - * @param cafile The path of the crt file to use - * - * @access public - */ -function Swekey_SetCAFile($cafile) -{ - global $gSwekeyCA; - $gSwekeyCA = $cafile; -} - -/** - * Enable or disable the random token caching - * Because everybody has full access to the cache file, it can be a DOS vulnerability - * So disable it if you are running in a non secure enviromnement - * - * @param $enable - * - * @access public - */ -function Swekey_EnableTokenCache($enable) -{ - global $gSwekeyTokenCacheEnabled; - $gSwekeyTokenCacheEnabled = ! empty($enable); -} - - -/** - * Return the last error. - * - * @return The Last Error - * @access public - */ -function Swekey_GetLastError() -{ - global $gSwekeyLastError; - return $gSwekeyLastError; -} - -/** - * Return the last result. - * - * @return The Last Error - * @access public - */ -function Swekey_GetLastResult() -{ - global $gSwekeyLastResult; - return $gSwekeyLastResult; -} - -/** - * Send a synchronous request to the server. - * This function manages timeout then will not block if one of the server is down - * - * @param url The url to get - * @param response_code The response code - * - * @return The body of the response or "" in case of error - * @access private - */ -function Swekey_HttpGet($url, &$response_code) -{ - global $gSwekeyLastError; - $gSwekeyLastError = 0; - global $gSwekeyLastResult; - $gSwekeyLastResult = ""; - - // use curl if available - if (function_exists('curl_init')) { - $sess = curl_init($url); - if (substr($url, 0, 8) == "https://") { - global $gSwekeyCA; - - if (! empty($gSwekeyCA)) { - if (file_exists($gSwekeyCA)) { - if (! curl_setopt($sess, CURLOPT_CAINFO, $gSwekeyCA)) { - error_log("SWEKEY_ERROR:Could not set CA file : ".curl_error($sess)); - } else { - $caFileOk = true; - } - } else { - error_log("SWEKEY_ERROR:Could not find CA file $gSwekeyCA getting $url"); - } - } - - curl_setopt($sess, CURLOPT_SSL_VERIFYHOST, '2'); - curl_setopt($sess, CURLOPT_SSL_VERIFYPEER, '2'); - curl_setopt($sess, CURLOPT_CONNECTTIMEOUT, '20'); - curl_setopt($sess, CURLOPT_TIMEOUT, '20'); - } else { - curl_setopt($sess, CURLOPT_CONNECTTIMEOUT, '3'); - curl_setopt($sess, CURLOPT_TIMEOUT, '5'); - } - - curl_setopt($sess, CURLOPT_RETURNTRANSFER, '1'); - $res=curl_exec($sess); - $response_code = curl_getinfo($sess, CURLINFO_HTTP_CODE); - $curlerr = curl_error($sess); - curl_close($sess); - - if ($response_code == 200) { - $gSwekeyLastResult = $res; - return $res; - } - - if (! empty($response_code)) { - $gSwekeyLastError = $response_code; - error_log("SWEKEY_ERROR:Error $gSwekeyLastError ($curlerr) getting $url"); - return ""; - } - - $response_code = 408; // Request Timeout - $gSwekeyLastError = $response_code; - error_log("SWEKEY_ERROR:Error $curlerr getting $url"); - return ""; - } - - // use pecl_http if available - if (class_exists('HttpRequest')) { - // retry if one of the server is down - for ($num=1; $num <= 3; $num++ ) { - $r = new HttpRequest($url); - $options = array('timeout' => '3'); - - if (substr($url, 0, 6) == "https:") { - $sslOptions = array(); - $sslOptions['verifypeer'] = true; - $sslOptions['verifyhost'] = true; - - $capath = __FILE__; - $name = strrchr($capath, '/'); - // windows - if (empty($name)) { - $name = strrchr($capath, '\\'); - } - $capath = substr($capath, 0, strlen($capath) - strlen($name) + 1).'musbe-ca.crt'; - - if (! empty($gSwekeyCA)) { - $sslOptions['cainfo'] = $gSwekeyCA; - } - - $options['ssl'] = $sslOptions; - } - - $r->setOptions($options); - - // try - { - $reply = $r->send(); - $res = $reply->getBody(); - $info = $r->getResponseInfo(); - $response_code = $info['response_code']; - if ($response_code != 200) { - $gSwekeyLastError = $response_code; - error_log("SWEKEY_ERROR:Error ".$gSwekeyLastError." getting ".$url); - return ""; - } - - - $gSwekeyLastResult = $res; - return $res; - } - // catch (HttpException $e) - // { - // error_log("SWEKEY_WARNING:HttpException ".$e." getting ".$url); - // } - } - - $response_code = 408; // Request Timeout - $gSwekeyLastError = $response_code; - error_log("SWEKEY_ERROR:Error ".$gSwekeyLastError." getting ".$url); - return ""; - } - - global $http_response_header; - $res = @file_get_contents($url); - $response_code = substr($http_response_header[0], 9, 3); //HTTP/1.0 - if ($response_code == 200) { - $gSwekeyLastResult = $res; - return $res; - } - - $gSwekeyLastError = $response_code; - error_log("SWEKEY_ERROR:Error ".$response_code." getting ".$url); - return ""; -} - -/** - * Get a Random Token from a Token Server - * The RT is a 64 vhars hexadecimal value - * You should better use Swekey_GetFastRndToken() for performance - * @access public - */ -function Swekey_GetRndToken() -{ - global $gSwekeyRndTokenServer; - return Swekey_HttpGet($gSwekeyRndTokenServer.'/FULL-RND-TOKEN', $response_code); -} - -/** - * Get a Half Random Token from a Token Server - * The RT is a 64 vhars hexadecimal value - * Use this value if you want to make your own Swekey_GetFastRndToken() - * @access public - */ -function Swekey_GetHalfRndToken() -{ - global $gSwekeyRndTokenServer; - return Swekey_HttpGet($gSwekeyRndTokenServer.'/HALF-RND-TOKEN', $response_code); -} - -/** - * Get a Half Random Token - * The RT is a 64 vhars hexadecimal value - * This function get a new random token and reuse it. - * Token are refetched from the server only once every 30 seconds. - * You should always use this function to get half random token. - * @access public - */ -function Swekey_GetFastHalfRndToken() -{ - global $gSwekeyTokenCacheEnabled; - - $res = ""; - $cachefile = ""; - - // We check if we have a valid RT is the session - if (isset($_SESSION['rnd-token-date'])) { - if (time() - $_SESSION['rnd-token-date'] < 30) { - $res = $_SESSION['rnd-token']; - } - } - - // If not we try to get it from a temp file (PHP >= 5.2.1 only) - if (strlen($res) != 32 && $gSwekeyTokenCacheEnabled) { - if (function_exists('sys_get_temp_dir')) { - $tempdir = sys_get_temp_dir(); - $cachefile = $tempdir."/swekey-rnd-token-".get_current_user(); - $modif = filemtime($cachefile); - if ($modif != false) { - if (time() - $modif < 30) { - $res = @file_get_contents($cachefile); - if (strlen($res) != 32) { - $res = ""; - } else { - $_SESSION['rnd-token'] = $res; - $_SESSION['rnd-token-date'] = $modif; - } - } - } - } - } - - // If we don't have a valid RT here we have to get it from the server - if (strlen($res) != 32) { - $res = substr(Swekey_GetHalfRndToken(), 0, 32); - $_SESSION['rnd-token'] = $res; - $_SESSION['rnd-token-date'] = time(); - if (! empty($cachefile)) { - // we unlink the file so no possible tempfile race attack - unlink($cachefile); - $file = fopen($cachefile, "x"); - if ($file != false) { - @fwrite($file, $res); - @fclose($file); - } - } - } - - return $res."00000000000000000000000000000000"; -} - -/** - * Get a Random Token - * The RT is a 64 vhars hexadecimal value - * This function generates a unique random token for each call but call the - * server only once every 30 seconds. - * You should always use this function to get random token. - * @access public - */ -function Swekey_GetFastRndToken() -{ - $res = Swekey_GetFastHalfRndToken(); - if (strlen($res) == 64) { - return substr($res, 0, 32).strtoupper(md5("Musbe Authentication Key" . mt_rand() . date(DATE_ATOM))); - } - return ""; -} - - -/** - * Checks that an OTP generated by a Swekey is valid - * - * @param id The id of the swekey - * @param rt The random token used to generate the otp - * @param otp The otp generated by the swekey - * - * @return true or false - * @access public - */ -function Swekey_CheckOtp($id, $rt, $otp) -{ - global $gSwekeyCheckServer; - $res = Swekey_HttpGet($gSwekeyCheckServer.'/CHECK-OTP/'.$id.'/'.$rt.'/'.$otp, $response_code); - return $response_code == 200 && $res == "OK"; -} - -/** - * Values that are associated with a key. - * The following values can be returned by the Swekey_GetStatus() function - */ -define("SWEKEY_STATUS_OK", 0); -define("SWEKEY_STATUS_NOT_FOUND", 1); // The key does not exist in the db -define("SWEKEY_STATUS_INACTIVE", 2); // The key has never been activated -define("SWEKEY_STATUS_LOST", 3); // The user has lost his key -define("SWEKEY_STATUS_STOLEN", 4); // The key was stolen -define("SWEKEY_STATUS_FEE_DUE", 5); // The annual fee was not paid -define("SWEKEY_STATUS_OBSOLETE", 6); // The hardware is no longer supported -define("SWEKEY_STATUS_UNKOWN", 201); // We could not connect to the authentication server - -/** - * Values that are associated with a key. - * The Javascript Api can also return the following values - */ -define("SWEKEY_STATUS_REPLACED", 100); // This key has been replaced by a backup key -define("SWEKEY_STATUS_BACKUP_KEY", 101); // This key is a backup key that is not activated yet -define("SWEKEY_STATUS_NOTPLUGGED", 200); // This key is not plugged in the computer - - -/** - * Return the text corresponding to the integer status of a key - * - * @param status The status - * - * @return The text corresponding to the status - * @access public - */ -function Swekey_GetStatusStr($status) -{ - switch($status) - { - case SWEKEY_STATUS_OK : - return 'OK'; - case SWEKEY_STATUS_NOT_FOUND : - return 'Key does not exist in the db'; - case SWEKEY_STATUS_INACTIVE : - return 'Key not activated'; - case SWEKEY_STATUS_LOST : - return 'Key was lost'; - case SWEKEY_STATUS_STOLEN : - return 'Key was stolen'; - case SWEKEY_STATUS_FEE_DUE : - return 'The annual fee was not paid'; - case SWEKEY_STATUS_OBSOLETE : - return 'Key no longer supported'; - case SWEKEY_STATUS_REPLACED : - return 'This key has been replaced by a backup key'; - case SWEKEY_STATUS_BACKUP_KEY : - return 'This key is a backup key that is not activated yet'; - case SWEKEY_STATUS_NOTPLUGGED : - return 'This key is not plugged in the computer'; - case SWEKEY_STATUS_UNKOWN : - return 'Unknow Status, could not connect to the authentication server'; - } - return 'unknown status '.$status; -} - -/** - * If your web site requires a key to login you should check that the key - * is still valid (has not been lost or stolen) before requiring it. - * A key can be authenticated only if its status is SWEKEY_STATUS_OK - * - * @param id The id of the swekey - * - * @return The status of the swekey - * @access public - */ -function Swekey_GetStatus($id) -{ - global $gSwekeyStatusServer; - $res = Swekey_HttpGet($gSwekeyStatusServer.'/GET-STATUS/'.$id, $response_code); - if ($response_code == 200) { - return intval($res); - } - return SWEKEY_STATUS_UNKOWN; -} - -?> diff --git a/pma12111211/libraries/plugins/export/ExportCodegen.class.php b/pma12111211/libraries/plugins/export/ExportCodegen.class.php deleted file mode 100644 index 4495e7ee..00000000 --- a/pma12111211/libraries/plugins/export/ExportCodegen.class.php +++ /dev/null @@ -1,423 +0,0 @@ -initSpecificVariables(); - $this->setProperties(); - } - - /** - * Initialize the local variables that are used for export CodeGen - * - * @return void - */ - protected function initSpecificVariables() - { - $this->_setCgFormats( - array( - "NHibernate C# DO", - "NHibernate XML" - ) - ); - - $this->_setCgHandlers( - array( - "_handleNHibernateCSBody", - "_handleNHibernateXMLBody" - ) - ); - } - - /** - * Sets the export CodeGen properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - include_once "$props/options/items/SelectPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('CodeGen'); - $exportPluginProperties->setExtension('cs'); - $exportPluginProperties->setMimeType('text/cs'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - $leaf = new SelectPropertyItem(); - $leaf->setName("format"); - $leaf->setText(__('Format:')); - $leaf->setValues($this->_getCgFormats()); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in NHibernate format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - $CG_FORMATS = $this->_getCgFormats(); - $CG_HANDLERS = $this->_getCgHandlers(); - - $format = $GLOBALS['codegen_format']; - if (isset($CG_FORMATS[$format])) { - return PMA_exportOutputHandler( - $this->$CG_HANDLERS[$format]($db, $table, $crlf) - ); - } - return PMA_exportOutputHandler(sprintf("%s is not supported.", $format)); - } - - /** - * Used to make identifiers (from table or database names) - * - * @param string $str name to be converted - * @param bool $ucfirst whether to make the first character uppercase - * - * @return string identifier - */ - public static function cgMakeIdentifier($str, $ucfirst = true) - { - // remove unsafe characters - $str = preg_replace('/[^\p{L}\p{Nl}_]/u', '', $str); - // make sure first character is a letter or _ - if (! preg_match('/^\pL/u', $str)) { - $str = '_' . $str; - } - if ($ucfirst) { - $str = ucfirst($str); - } - return $str; - } - - /** - * C# Handler - * - * @param string $db database name - * @param string $table table name - * @param string $crlf line separator - * - * @return string containing C# code lines, separated by "\n" - */ - private function _handleNHibernateCSBody($db, $table, $crlf) - { - $lines = array(); - - $result = $GLOBALS['dbi']->query( - sprintf( - 'DESC %s.%s', PMA_Util::backquote($db), - PMA_Util::backquote($table) - ) - ); - if ($result) { - $tableProperties = array(); - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $tableProperties[] = new TableProperty($row); - } - $GLOBALS['dbi']->freeResult($result); - $lines[] = 'using System;'; - $lines[] = 'using System.Collections;'; - $lines[] = 'using System.Collections.Generic;'; - $lines[] = 'using System.Text;'; - $lines[] = 'namespace ' . ExportCodegen::cgMakeIdentifier($db); - $lines[] = '{'; - $lines[] = ' #region ' . ExportCodegen::cgMakeIdentifier($table); - $lines[] = ' public class ' . ExportCodegen::cgMakeIdentifier($table); - $lines[] = ' {'; - $lines[] = ' #region Member Variables'; - foreach ($tableProperties as $tableProperty) { - $lines[] = $tableProperty->formatCs( - ' protected #dotNetPrimitiveType# _#name#;' - ); - } - $lines[] = ' #endregion'; - $lines[] = ' #region Constructors'; - $lines[] = ' public ' - . ExportCodegen::cgMakeIdentifier($table) . '() { }'; - $temp = array(); - foreach ($tableProperties as $tableProperty) { - if (! $tableProperty->isPK()) { - $temp[] = $tableProperty->formatCs( - '#dotNetPrimitiveType# #name#' - ); - } - } - $lines[] = ' public ' - . ExportCodegen::cgMakeIdentifier($table) - . '(' - . implode(', ', $temp) - . ')'; - $lines[] = ' {'; - foreach ($tableProperties as $tableProperty) { - if (! $tableProperty->isPK()) { - $lines[] = $tableProperty->formatCs( - ' this._#name#=#name#;' - ); - } - } - $lines[] = ' }'; - $lines[] = ' #endregion'; - $lines[] = ' #region Public Properties'; - foreach ($tableProperties as $tableProperty) { - $lines[] = $tableProperty->formatCs( - ' public virtual #dotNetPrimitiveType# #ucfirstName#' - . "\n" - . ' {' . "\n" - . ' get {return _#name#;}' . "\n" - . ' set {_#name#=value;}' . "\n" - . ' }' - ); - } - $lines[] = ' #endregion'; - $lines[] = ' }'; - $lines[] = ' #endregion'; - $lines[] = '}'; - } - return implode("\n", $lines); - } - - /** - * XML Handler - * - * @param string $db database name - * @param string $table table name - * @param string $crlf line separator - * - * @return string containing XML code lines, separated by "\n" - */ - private function _handleNHibernateXMLBody($db, $table, $crlf) - { - $lines = array(); - $lines[] = ''; - $lines[] = ''; - $lines[] = ' '; - $result = $GLOBALS['dbi']->query( - sprintf( - "DESC %s.%s", PMA_Util::backquote($db), - PMA_Util::backquote($table) - ) - ); - if ($result) { - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $tableProperty = new TableProperty($row); - if ($tableProperty->isPK()) { - $lines[] = $tableProperty->formatXml( - ' ' . "\n" - . ' ' . "\n" - . ' ' . "\n" - . ' ' - ); - } else { - $lines[] = $tableProperty->formatXml( - ' ' . "\n" - . ' ' . "\n" - . ' ' - ); - } - } - $GLOBALS['dbi']->freeResult($result); - } - $lines[] = ' '; - $lines[] = ''; - return implode("\n", $lines); - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Getter for CodeGen formats - * - * @return array - */ - private function _getCgFormats() - { - return $this->_cgFormats; - } - - /** - * Setter for CodeGen formats - * - * @param array $CG_FORMATS contains CodeGen Formats - * - * @return void - */ - private function _setCgFormats($CG_FORMATS) - { - $this->_cgFormats = $CG_FORMATS; - } - - /** - * Getter for CodeGen handlers - * - * @return array - */ - private function _getCgHandlers() - { - return $this->_cgHandlers; - } - - /** - * Setter for CodeGen handlers - * - * @param array $CG_HANDLERS contains CodeGen handler methods - * - * @return void - */ - private function _setCgHandlers($CG_HANDLERS) - { - $this->_cgHandlers = $CG_HANDLERS; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/export/ExportCsv.class.php b/pma12111211/libraries/plugins/export/ExportCsv.class.php deleted file mode 100644 index 22cbd631..00000000 --- a/pma12111211/libraries/plugins/export/ExportCsv.class.php +++ /dev/null @@ -1,321 +0,0 @@ -setProperties(); - } - - /** - * Sets the export CSV properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('CSV'); - $exportPluginProperties->setExtension('csv'); - $exportPluginProperties->setMimeType('text/comma-separated-values'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create leaf items and add them to the group - $leaf = new TextPropertyItem(); - $leaf->setName("separator"); - $leaf->setText(__('Columns separated with:')); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("enclosed"); - $leaf->setText(__('Columns enclosed with:')); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("escaped"); - $leaf->setText(__('Columns escaped with:')); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("terminated"); - $leaf->setText(__('Lines terminated with:')); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName('null'); - $leaf->setText(__('Replace NULL with:')); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('removeCRLF'); - $leaf->setText( - __('Remove carriage return/line feed characters within columns') - ); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('columns'); - $leaf->setText(__('Put columns names in the first row')); - $generalOptions->addProperty($leaf); - $leaf = new HiddenPropertyItem(); - $leaf->setName('structure_or_data'); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - global $what, $csv_terminated, $csv_separator, $csv_enclosed, $csv_escaped; - - // Here we just prepare some values for export - if ($what == 'excel') { - $csv_terminated = "\015\012"; - switch($GLOBALS['excel_edition']) { - case 'win': - // as tested on Windows with Excel 2002 and Excel 2007 - $csv_separator = ';'; - break; - case 'mac_excel2003': - $csv_separator = ';'; - break; - case 'mac_excel2008': - $csv_separator = ','; - break; - } - $csv_enclosed = '"'; - $csv_escaped = '"'; - if (isset($GLOBALS['excel_columns'])) { - $GLOBALS['csv_columns'] = 'yes'; - } - } else { - if (empty($csv_terminated) || strtolower($csv_terminated) == 'auto') { - $csv_terminated = $GLOBALS['crlf']; - } else { - $csv_terminated = str_replace('\\r', "\015", $csv_terminated); - $csv_terminated = str_replace('\\n', "\012", $csv_terminated); - $csv_terminated = str_replace('\\t', "\011", $csv_terminated); - } // end if - $csv_separator = str_replace('\\t', "\011", $csv_separator); - } - - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in CSV format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $what, $csv_terminated, $csv_separator, $csv_enclosed, $csv_escaped; - - // Gets the data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - - // If required, get fields name at the first line - if (isset($GLOBALS['csv_columns'])) { - $schema_insert = ''; - for ($i = 0; $i < $fields_cnt; $i++) { - if ($csv_enclosed == '') { - $schema_insert .= stripslashes( - $GLOBALS['dbi']->fieldName($result, $i) - ); - } else { - $schema_insert .= $csv_enclosed - . str_replace( - $csv_enclosed, - $csv_escaped . $csv_enclosed, - stripslashes($GLOBALS['dbi']->fieldName($result, $i)) - ) - . $csv_enclosed; - } - $schema_insert .= $csv_separator; - } // end for - $schema_insert = trim(substr($schema_insert, 0, -1)); - if (! PMA_exportOutputHandler($schema_insert . $csv_terminated)) { - return false; - } - } // end if - - // Format the data - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $schema_insert = ''; - for ($j = 0; $j < $fields_cnt; $j++) { - if (! isset($row[$j]) || is_null($row[$j])) { - $schema_insert .= $GLOBALS[$what . '_null']; - } elseif ($row[$j] == '0' || $row[$j] != '') { - // always enclose fields - if ($what == 'excel') { - $row[$j] = preg_replace("/\015(\012)?/", "\012", $row[$j]); - } - // remove CRLF characters within field - if (isset($GLOBALS[$what . '_removeCRLF']) - && $GLOBALS[$what . '_removeCRLF'] - ) { - $row[$j] = str_replace( - "\n", - "", - str_replace( - "\r", - "", - $row[$j] - ) - ); - } - if ($csv_enclosed == '') { - $schema_insert .= $row[$j]; - } else { - // also double the escape string if found in the data - if ($csv_escaped != $csv_enclosed) { - $schema_insert .= $csv_enclosed - . str_replace( - $csv_enclosed, - $csv_escaped . $csv_enclosed, - str_replace( - $csv_escaped, - $csv_escaped . $csv_escaped, - $row[$j] - ) - ) - . $csv_enclosed; - } else { - // avoid a problem when escape string equals enclose - $schema_insert .= $csv_enclosed - . str_replace( - $csv_enclosed, - $csv_escaped . $csv_enclosed, - $row[$j] - ) - . $csv_enclosed; - } - } - } else { - $schema_insert .= ''; - } - if ($j < $fields_cnt-1) { - $schema_insert .= $csv_separator; - } - } // end for - - if (! PMA_exportOutputHandler($schema_insert . $csv_terminated)) { - return false; - } - } // end while - $GLOBALS['dbi']->freeResult($result); - - return true; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportExcel.class.php b/pma12111211/libraries/plugins/export/ExportExcel.class.php deleted file mode 100644 index 1bb1060d..00000000 --- a/pma12111211/libraries/plugins/export/ExportExcel.class.php +++ /dev/null @@ -1,105 +0,0 @@ -setText('CSV for MS Excel'); - $exportPluginProperties->setExtension('csv'); - $exportPluginProperties->setMimeType('text/comma-separated-values'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new TextPropertyItem(); - $leaf->setName('null'); - $leaf->setText(__('Replace NULL with:')); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('removeCRLF'); - $leaf->setText( - __('Remove carriage return/line feed characters within columns') - ); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('columns'); - $leaf->setText(__('Put columns names in the first row')); - $generalOptions->addProperty($leaf); - $leaf = new SelectPropertyItem(); - $leaf->setName('edition'); - $leaf->setValues( - array( - 'win' => 'Windows', - 'mac_excel2003' => 'Excel 2003 / Macintosh', - 'mac_excel2008' => 'Excel 2008 / Macintosh' - ) - ); - $leaf->setText(__('Excel edition:')); - $generalOptions->addProperty($leaf); - $leaf = new HiddenPropertyItem(); - $leaf->setName('structure_or_data'); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/export/ExportHtmlword.class.php b/pma12111211/libraries/plugins/export/ExportHtmlword.class.php deleted file mode 100644 index edd24aa3..00000000 --- a/pma12111211/libraries/plugins/export/ExportHtmlword.class.php +++ /dev/null @@ -1,647 +0,0 @@ -setProperties(); - } - - /** - * Sets the export HTML-Word properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('Microsoft Word 2000'); - $exportPluginProperties->setExtension('doc'); - $exportPluginProperties->setMimeType('application/vnd.ms-word'); - $exportPluginProperties->setForceFile(true); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // what to dump (structure/data/both) - $dumpWhat = new OptionsPropertyMainGroup(); - $dumpWhat->setName("dump_what"); - $dumpWhat->setText(__('Dump table')); - // create primary items and add them to the group - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $dumpWhat->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dumpWhat); - - // data options main group - $dataOptions = new OptionsPropertyMainGroup(); - $dataOptions->setName("dump_what"); - $dataOptions->setText(__('Data dump options')); - $dataOptions->setForce('structure'); - // create primary items and add them to the group - $leaf = new TextPropertyItem(); - $leaf->setName("null"); - $leaf->setText(__('Replace NULL with:')); - $dataOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Put columns names in the first row')); - $dataOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dataOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - global $charset_of_file; - - return PMA_exportOutputHandler( - ' - - - - - - - ' - ); - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return PMA_exportOutputHandler(''); - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return PMA_exportOutputHandler( - '

            ' . __('Database') . ' ' . htmlspecialchars($db) . '

            ' - ); - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in HTML-Word format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $what; - - if (! PMA_exportOutputHandler( - '

            ' - . __('Dumping data for table') . ' ' . htmlspecialchars($table) - . '

            ' - )) { - return false; - } - if (! PMA_exportOutputHandler( - '' - )) { - return false; - } - - // Gets the data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - - // If required, get fields name at the first line - if (isset($GLOBALS['htmlword_columns'])) { - $schema_insert = ''; - for ($i = 0; $i < $fields_cnt; $i++) { - $schema_insert .= ''; - } // end for - $schema_insert .= ''; - if (! PMA_exportOutputHandler($schema_insert)) { - return false; - } - } // end if - - // Format the data - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $schema_insert = ''; - for ($j = 0; $j < $fields_cnt; $j++) { - if (! isset($row[$j]) || is_null($row[$j])) { - $value = $GLOBALS[$what . '_null']; - } elseif ($row[$j] == '0' || $row[$j] != '') { - $value = $row[$j]; - } else { - $value = ''; - } - $schema_insert .= ''; - } // end for - $schema_insert .= ''; - if (! PMA_exportOutputHandler($schema_insert)) { - return false; - } - } // end while - $GLOBALS['dbi']->freeResult($result); - if (! PMA_exportOutputHandler('
            ')) { - return false; - } - - return true; - } - - /** - * Returns a stand-in CREATE definition to resolve view dependencies - * - * @param string $db the database name - * @param string $view the view name - * @param string $crlf the end of line sequence - * - * @return string resulting definition - */ - public function getTableDefStandIn($db, $view, $crlf) - { - $schema_insert = '' - . '' - . '' - . '' - . '' - . '' - . ''; - - /** - * Get the unique keys in the view - */ - $unique_keys = array(); - $keys = $GLOBALS['dbi']->getTableIndexes($db, $view); - foreach ($keys as $key) { - if ($key['Non_unique'] == 0) { - $unique_keys[] = $key['Column_name']; - } - } - - $columns = $GLOBALS['dbi']->getColumns($db, $view); - foreach ($columns as $column) { - $schema_insert .= $this->formatOneColumnDefinition( - $column, - $unique_keys - ); - $schema_insert .= ''; - } - - $schema_insert .= '
            '; - return $schema_insert; - } - - /** - * Returns $table's CREATE definition - * - * @param string $db the database name - * @param string $table the table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * PMA_exportStructure() also for other - * export types which use this parameter - * @param bool $do_mime whether to include mime comments - * @param bool $show_dates whether to include creation/update/check dates - * @param bool $add_semicolon whether to add semicolon and end-of-line - * at the end - * @param bool $view whether we're handling a view - * - * @return string resulting schema - */ - public function getTableDef( - $db, - $table, - $crlf, - $error_url, - $do_relation, - $do_comments, - $do_mime, - $show_dates = false, - $add_semicolon = true, - $view = false - ) { - // set $cfgRelation here, because there is a chance that it's modified - // since the class initialization - global $cfgRelation; - - $schema_insert = ''; - - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - // Check if we can use Relations - if ($do_relation && ! empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if ($res_rel && count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - /** - * Displays the table structure - */ - $schema_insert .= ''; - - $columns_cnt = 4; - if ($do_relation && $have_rel) { - $columns_cnt++; - } - if ($do_comments && $cfgRelation['commwork']) { - $columns_cnt++; - } - if ($do_mime && $cfgRelation['mimework']) { - $columns_cnt++; - } - - $schema_insert .= ''; - $schema_insert .= ''; - $schema_insert .= ''; - $schema_insert .= ''; - $schema_insert .= ''; - if ($do_relation && $have_rel) { - $schema_insert .= ''; - } - if ($do_comments) { - $schema_insert .= ''; - $comments = PMA_getComments($db, $table); - } - if ($do_mime && $cfgRelation['mimework']) { - $schema_insert .= ''; - $mime_map = PMA_getMIME($db, $table, true); - } - $schema_insert .= ''; - - $columns = $GLOBALS['dbi']->getColumns($db, $table); - /** - * Get the unique keys in the table - */ - $unique_keys = array(); - $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); - foreach ($keys as $key) { - if ($key['Non_unique'] == 0) { - $unique_keys[] = $key['Column_name']; - } - } - foreach ($columns as $column) { - $schema_insert .= $this->formatOneColumnDefinition( - $column, - $unique_keys - ); - $field_name = $column['Field']; - - if ($do_relation && $have_rel) { - $schema_insert .= ''; - } - if ($do_comments && $cfgRelation['commwork']) { - $schema_insert .= ''; - } - if ($do_mime && $cfgRelation['mimework']) { - $schema_insert .= ''; - } - - $schema_insert .= ''; - } // end foreach - - $schema_insert .= '
            ' - . (isset($res_rel[$field_name]) - ? htmlspecialchars( - $res_rel[$field_name]['foreign_table'] - . ' (' . $res_rel[$field_name]['foreign_field'] - . ')' - ) - : '') . '' - . (isset($comments[$field_name]) - ? htmlspecialchars($comments[$field_name]) - : '') . '' - . (isset($mime_map[$field_name]) ? - htmlspecialchars( - str_replace('_', '/', $mime_map[$field_name]['mimetype']) - ) - : '') . '
            '; - return $schema_insert; - } - - /** - * Outputs triggers - * - * @param string $db database name - * @param string $table table name - * - * @return string Formatted triggers list - */ - protected function getTriggers($db, $table) - { - $dump = ''; - $dump .= ''; - $dump .= ''; - $dump .= ''; - $dump .= ''; - $dump .= ''; - $dump .= ''; - - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - - foreach ($triggers as $trigger) { - $dump .= ''; - $dump .= '' - . '' - . '' - . '' - . ''; - } - - $dump .= '
            '; - return $dump; - } - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table', 'triggers', 'create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * PMA_exportStructure() also for other - * export types which use this parameter - * @param bool $do_mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - public function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $do_relation = false, - $do_comments = false, - $do_mime = false, - $dates = false - ) { - $dump = ''; - - switch($export_mode) { - case 'create_table': - $dump .= '

            ' - . __('Table structure for table') . ' ' . htmlspecialchars($table) - . '

            '; - $dump .= $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, - $dates - ); - break; - case 'triggers': - $dump = ''; - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - if ($triggers) { - $dump .= '

            ' - . __('Triggers') . ' ' . htmlspecialchars($table) - . '

            '; - $dump .= $this->getTriggers($db, $table); - } - break; - case 'create_view': - $dump .= '

            ' - . __('Structure for view') . ' ' . htmlspecialchars($table) - . '

            '; - $dump .= $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, $do_mime, - $dates, true, true - ); - break; - case 'stand_in': - $dump .= '

            ' - . __('Stand-in structure for view') . ' ' . htmlspecialchars($table) - . '

            '; - // export a stand-in definition to resolve view dependencies - $dump .= $this->getTableDefStandIn($db, $table, $crlf); - } // end switch - - return PMA_exportOutputHandler($dump); - } - - /** - * Formats the definition for one column - * - * @param array $column info about this column - * @param array $unique_keys unique keys of the table - * - * @return string Formatted column definition - */ - protected function formatOneColumnDefinition( - $column, $unique_keys - ) { - $definition = ''; - - $extracted_columnspec - = PMA_Util::extractColumnSpec($column['Type']); - - $type = htmlspecialchars($extracted_columnspec['print_type']); - if (empty($type)) { - $type = ' '; - } - - if (! isset($column['Default'])) { - if ($column['Null'] != 'NO') { - $column['Default'] = 'NULL'; - } - } - - $fmt_pre = ''; - $fmt_post = ''; - if (in_array($column['Field'], $unique_keys)) { - $fmt_pre = '' . $fmt_pre; - $fmt_post = $fmt_post . ''; - } - if ($column['Key'] == 'PRI') { - $fmt_pre = '' . $fmt_pre; - $fmt_post = $fmt_post . ''; - } - $definition .= '' . $fmt_pre - . htmlspecialchars($column['Field']) . $fmt_post . ''; - $definition .= '' . htmlspecialchars($type) - . ''; - $definition .= '' - . (($column['Null'] == '' || $column['Null'] == 'NO') - ? __('No') - : __('Yes')) - . ''; - $definition .= '' - . htmlspecialchars( - isset($column['Default']) - ? $column['Default'] - : '' - ) - . ''; - - return $definition; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportJson.class.php b/pma12111211/libraries/plugins/export/ExportJson.class.php deleted file mode 100644 index 59bc4772..00000000 --- a/pma12111211/libraries/plugins/export/ExportJson.class.php +++ /dev/null @@ -1,210 +0,0 @@ -setProperties(); - } - - /** - * Sets the export JSON properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('JSON'); - $exportPluginProperties->setExtension('json'); - $exportPluginProperties->setMimeType('text/plain'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - PMA_exportOutputHandler( - '/**' . $GLOBALS['crlf'] - . ' Export to JSON plugin for PHPMyAdmin' . $GLOBALS['crlf'] - . ' @version 0.1' . $GLOBALS['crlf'] - . ' */' . $GLOBALS['crlf'] . $GLOBALS['crlf'] - ); - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - PMA_exportOutputHandler('// Database \'' . $db . '\'' . $GLOBALS['crlf']); - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in JSON format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $columns_cnt = $GLOBALS['dbi']->numFields($result); - - for ($i = 0; $i < $columns_cnt; $i++) { - $columns[$i] = stripslashes($GLOBALS['dbi']->fieldName($result, $i)); - } - unset($i); - - $buffer = ''; - $record_cnt = 0; - while ($record = $GLOBALS['dbi']->fetchRow($result)) { - - $record_cnt++; - - // Output table name as comment if this is the first record of the table - if ($record_cnt == 1) { - $buffer = '// ' . $db . '.' . $table . $crlf . $crlf; - $buffer .= '['; - } else { - $buffer = ', '; - } - - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - $data = array(); - - for ($i = 0; $i < $columns_cnt; $i++) { - $data[$columns[$i]] = $record[$i]; - } - - if (! PMA_exportOutputHandler(json_encode($data))) { - return false; - } - } - - if ($record_cnt) { - if (! PMA_exportOutputHandler(']')) { - return false; - } - } - - $GLOBALS['dbi']->freeResult($result); - return true; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportLatex.class.php b/pma12111211/libraries/plugins/export/ExportLatex.class.php deleted file mode 100644 index dbd55df4..00000000 --- a/pma12111211/libraries/plugins/export/ExportLatex.class.php +++ /dev/null @@ -1,657 +0,0 @@ -initSpecificVariables(); - - $this->setProperties(); - } - - /** - * Initialize the local variables that are used for export Latex - * - * @return void - */ - protected function initSpecificVariables() - { - /* Messages used in default captions */ - $GLOBALS['strLatexContent'] = __('Content of table @TABLE@'); - $GLOBALS['strLatexContinued'] = __('(continued)'); - $GLOBALS['strLatexStructure'] = __('Structure of table @TABLE@'); - } - - /** - * Sets the export Latex properties - * - * @return void - */ - protected function setProperties() - { - global $plugin_param; - $hide_structure = false; - if ($plugin_param['export_type'] == 'table' - && ! $plugin_param['single_table'] - ) { - $hide_structure = true; - } - - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('LaTeX'); - $exportPluginProperties->setExtension('tex'); - $exportPluginProperties->setMimeType('application/x-tex'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("caption"); - $leaf->setText(__('Include table caption')); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // what to dump (structure/data/both) main group - $dumpWhat = new OptionsPropertyMainGroup(); - $dumpWhat->setName("dump_what"); - $dumpWhat->setText(__('Dump table')); - // create primary items and add them to the group - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $dumpWhat->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dumpWhat); - - // structure options main group - if (! $hide_structure) { - $structureOptions = new OptionsPropertyMainGroup(); - $structureOptions->setName("structure"); - $structureOptions->setText(__('Object creation options')); - $structureOptions->setForce('data'); - // create primary items and add them to the group - $leaf = new TextPropertyItem(); - $leaf->setName("structure_caption"); - $leaf->setText(__('Table caption:')); - $leaf->setDoc('faq6-27'); - $structureOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("structure_continued_caption"); - $leaf->setText(__('Table caption (continued):')); - $leaf->setDoc('faq6-27'); - $structureOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("structure_label"); - $leaf->setText(__('Label key:')); - $leaf->setDoc('faq6-27'); - $structureOptions->addProperty($leaf); - if (! empty($GLOBALS['cfgRelation']['relation'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName("relation"); - $leaf->setText(__('Display foreign key relationships')); - $structureOptions->addProperty($leaf); - } - $leaf = new BoolPropertyItem(); - $leaf->setName("comments"); - $leaf->setText(__('Display comments')); - $structureOptions->addProperty($leaf); - if (! empty($GLOBALS['cfgRelation']['mimework'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName("mime"); - $leaf->setText(__('Display MIME types')); - $structureOptions->addProperty($leaf); - } - // add the main group to the root group - $exportSpecificOptions->addProperty($structureOptions); - } - - // data options main group - $dataOptions = new OptionsPropertyMainGroup(); - $dataOptions->setName("data"); - $dataOptions->setText(__('Data dump options')); - $dataOptions->setForce('structure'); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Put columns names in the first row:')); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("data_caption"); - $leaf->setText(__('Table caption:')); - $leaf->setDoc('faq6-27'); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("data_continued_caption"); - $leaf->setText(__('Table caption (continued):')); - $leaf->setDoc('faq6-27'); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("data_label"); - $leaf->setText(__('Label key:')); - $leaf->setDoc('faq6-27'); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName('null'); - $leaf->setText(__('Replace NULL with:')); - $dataOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dataOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - global $crlf; - global $cfg; - - $head = '% phpMyAdmin LaTeX Dump' . $crlf - . '% version ' . PMA_VERSION . $crlf - . '% http://www.phpmyadmin.net' . $crlf - . '%' . $crlf - . '% ' . __('Host:') . ' ' . $cfg['Server']['host']; - if (! empty($cfg['Server']['port'])) { - $head .= ':' . $cfg['Server']['port']; - } - $head .= $crlf - . '% ' . __('Generation Time:') . ' ' - . PMA_Util::localisedDate() . $crlf - . '% ' . __('Server version:') . ' ' . PMA_MYSQL_STR_VERSION . $crlf - . '% ' . __('PHP Version:') . ' ' . phpversion() . $crlf; - return PMA_exportOutputHandler($head); - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - global $crlf; - $head = '% ' . $crlf - . '% ' . __('Database:') . ' ' . '\'' . $db . '\'' . $crlf - . '% ' . $crlf; - return PMA_exportOutputHandler($head); - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in JSON format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - $result = $GLOBALS['dbi']->tryQuery( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - - $columns_cnt = $GLOBALS['dbi']->numFields($result); - for ($i = 0; $i < $columns_cnt; $i++) { - $columns[$i] = $GLOBALS['dbi']->fieldName($result, $i); - } - unset($i); - - $buffer = $crlf . '%' . $crlf . '% ' . __('Data:') . ' ' . $table - . $crlf . '%' . $crlf . ' \\begin{longtable}{|'; - - for ($index = 0; $index < $columns_cnt; $index++) { - $buffer .= 'l|'; - } - $buffer .= '} ' . $crlf ; - - $buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf; - if (isset($GLOBALS['latex_caption'])) { - $buffer .= ' \\caption{' - . PMA_Util::expandUserString( - $GLOBALS['latex_data_caption'], - array( - 'texEscape', - get_class($this), - 'libraries/plugins/export/' . get_class($this) . ".class.php" - ), - array('table' => $table, 'database' => $db) - ) - . '} \\label{' - . PMA_Util::expandUserString( - $GLOBALS['latex_data_label'], - null, - array('table' => $table, 'database' => $db) - ) - . '} \\\\'; - } - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - // show column names - if (isset($GLOBALS['latex_columns'])) { - $buffer = '\\hline '; - for ($i = 0; $i < $columns_cnt; $i++) { - $buffer .= '\\multicolumn{1}{|c|}{\\textbf{' - . self::texEscape(stripslashes($columns[$i])) . '}} & '; - } - - $buffer = substr($buffer, 0, -2) . '\\\\ \\hline \hline '; - if (! PMA_exportOutputHandler($buffer . ' \\endfirsthead ' . $crlf)) { - return false; - } - if (isset($GLOBALS['latex_caption'])) { - if (! PMA_exportOutputHandler( - '\\caption{' - . PMA_Util::expandUserString( - $GLOBALS['latex_data_continued_caption'], - array( - 'texEscape', - get_class($this), - 'libraries/plugins/export/' - . get_class($this) . ".class.php" - ), - array('table' => $table, 'database' => $db) - ) - . '} \\\\ ' - )) { - return false; - } - } - if (! PMA_exportOutputHandler($buffer . '\\endhead \\endfoot' . $crlf)) { - return false; - } - } else { - if (! PMA_exportOutputHandler('\\\\ \hline')) { - return false; - } - } - - // print the whole table - while ($record = $GLOBALS['dbi']->fetchAssoc($result)) { - $buffer = ''; - // print each row - for ($i = 0; $i < $columns_cnt; $i++) { - if ((! function_exists('is_null') - || ! is_null($record[$columns[$i]])) - && isset($record[$columns[$i]]) - ) { - $column_value = self::texEscape( - stripslashes($record[$columns[$i]]) - ); - } else { - $column_value = $GLOBALS['latex_null']; - } - - // last column ... no need for & character - if ($i == ($columns_cnt - 1)) { - $buffer .= $column_value; - } else { - $buffer .= $column_value . " & "; - } - } - $buffer .= ' \\\\ \\hline ' . $crlf; - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - } - - $buffer = ' \\end{longtable}' . $crlf; - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - $GLOBALS['dbi']->freeResult($result); - return true; - } // end getTableLaTeX - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table', 'triggers', 'create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * exportStructure() also for other - * export types which use this parameter - * @param bool $do_mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - public function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $do_relation = false, - $do_comments = false, - $do_mime = false, - $dates = false - ) { - global $cfgRelation; - - /* We do not export triggers */ - if ($export_mode == 'triggers') { - return true; - } - - /** - * Get the unique keys in the table - */ - $unique_keys = array(); - $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); - foreach ($keys as $key) { - if ($key['Non_unique'] == 0) { - $unique_keys[] = $key['Column_name']; - } - } - - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - // Check if we can use Relations - if ($do_relation && ! empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if ($res_rel && count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - /** - * Displays the table structure - */ - $buffer = $crlf . '%' . $crlf . '% ' . __('Structure:') . ' ' . $table - . $crlf . '%' . $crlf . ' \\begin{longtable}{'; - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - $columns_cnt = 4; - $alignment = '|l|c|c|c|'; - if ($do_relation && $have_rel) { - $columns_cnt++; - $alignment .= 'l|'; - } - if ($do_comments) { - $columns_cnt++; - $alignment .= 'l|'; - } - if ($do_mime && $cfgRelation['mimework']) { - $columns_cnt++; - $alignment .='l|'; - } - $buffer = $alignment . '} ' . $crlf ; - - $header = ' \\hline '; - $header .= '\\multicolumn{1}{|c|}{\\textbf{' . __('Column') - . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Type') - . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Null') - . '}} & \\multicolumn{1}{|c|}{\\textbf{' . __('Default') . '}}'; - if ($do_relation && $have_rel) { - $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Links to') . '}}'; - } - if ($do_comments) { - $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . __('Comments') . '}}'; - $comments = PMA_getComments($db, $table); - } - if ($do_mime && $cfgRelation['mimework']) { - $header .= ' & \\multicolumn{1}{|c|}{\\textbf{MIME}}'; - $mime_map = PMA_getMIME($db, $table, true); - } - - // Table caption for first page and label - if (isset($GLOBALS['latex_caption'])) { - $buffer .= ' \\caption{' - . PMA_Util::expandUserString( - $GLOBALS['latex_structure_caption'], - array( - 'texEscape', - get_class($this), - 'libraries/plugins/export/' . get_class($this) . ".class.php" - ), - array('table' => $table, 'database' => $db) - ) - . '} \\label{' - . PMA_Util::expandUserString( - $GLOBALS['latex_structure_label'], - null, - array('table' => $table, 'database' => $db) - ) - . '} \\\\' . $crlf; - } - $buffer .= $header . ' \\\\ \\hline \\hline' . $crlf - . '\\endfirsthead' . $crlf; - // Table caption on next pages - if (isset($GLOBALS['latex_caption'])) { - $buffer .= ' \\caption{' - . PMA_Util::expandUserString( - $GLOBALS['latex_structure_continued_caption'], - array( - 'texEscape', - get_class($this), - 'libraries/plugins/export/' . get_class($this) . ".class.php" - ), - array('table' => $table, 'database' => $db) - ) - . '} \\\\ ' . $crlf; - } - $buffer .= $header . ' \\\\ \\hline \\hline \\endhead \\endfoot ' . $crlf; - - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - $fields = $GLOBALS['dbi']->getColumns($db, $table); - foreach ($fields as $row) { - $extracted_columnspec - = PMA_Util::extractColumnSpec( - $row['Type'] - ); - $type = $extracted_columnspec['print_type']; - if (empty($type)) { - $type = ' '; - } - - if (! isset($row['Default'])) { - if ($row['Null'] != 'NO') { - $row['Default'] = 'NULL'; - } - } - - $field_name = $row['Field']; - - $local_buffer = $field_name . "\000" . $type . "\000" - . (($row['Null'] == '' || $row['Null'] == 'NO') - ? __('No') : __('Yes')) - . "\000" . (isset($row['Default']) ? $row['Default'] : ''); - - if ($do_relation && $have_rel) { - $local_buffer .= "\000"; - if (isset($res_rel[$field_name])) { - $local_buffer .= $res_rel[$field_name]['foreign_table'] . ' (' - . $res_rel[$field_name]['foreign_field'] . ')'; - } - } - if ($do_comments && $cfgRelation['commwork']) { - $local_buffer .= "\000"; - if (isset($comments[$field_name])) { - $local_buffer .= $comments[$field_name]; - } - } - if ($do_mime && $cfgRelation['mimework']) { - $local_buffer .= "\000"; - if (isset($mime_map[$field_name])) { - $local_buffer .= str_replace( - '_', - '/', - $mime_map[$field_name]['mimetype'] - ); - } - } - $local_buffer = self::texEscape($local_buffer); - if ($row['Key']=='PRI') { - $pos=strpos($local_buffer, "\000"); - $local_buffer = '\\textit{' - . substr($local_buffer, 0, $pos) - . '}' . substr($local_buffer, $pos); - } - if (in_array($field_name, $unique_keys)) { - $pos=strpos($local_buffer, "\000"); - $local_buffer = '\\textbf{' - . substr($local_buffer, 0, $pos) - . '}' . substr($local_buffer, $pos); - } - $buffer = str_replace("\000", ' & ', $local_buffer); - $buffer .= ' \\\\ \\hline ' . $crlf; - - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - } // end while - - $buffer = ' \\end{longtable}' . $crlf; - return PMA_exportOutputHandler($buffer); - } // end of the 'exportStructure' method - - /** - * Escapes some special characters for use in TeX/LaTeX - * - * @param string $string the string to convert - * - * @return string the converted string with escape codes - */ - public static function texEscape($string) - { - $escape = array('$', '%', '{', '}', '&', '#', '_', '^'); - $cnt_escape = count($escape); - for ($k = 0; $k < $cnt_escape; $k++) { - $string = str_replace($escape[$k], '\\' . $escape[$k], $string); - } - return $string; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportMediawiki.class.php b/pma12111211/libraries/plugins/export/ExportMediawiki.class.php deleted file mode 100644 index 7038144b..00000000 --- a/pma12111211/libraries/plugins/export/ExportMediawiki.class.php +++ /dev/null @@ -1,366 +0,0 @@ -setProperties(); - } - - /** - * Sets the export MediaWiki properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/groups/OptionsPropertySubgroup.class.php"; - include_once "$props/options/items/MessageOnlyPropertyItem.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('MediaWiki Table'); - $exportPluginProperties->setExtension('mediawiki'); - $exportPluginProperties->setMimeType('text/plain'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - $generalOptions->setText(__('Dump table')); - - // what to dump (structure/data/both) - $subgroup = new OptionsPropertySubgroup(); - $subgroup->setName("dump_table"); - $subgroup->setText("Dump table"); - $leaf = new RadioPropertyItem(); - $leaf->setName('structure_or_data'); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $subgroup->setSubgroupHeader($leaf); - $generalOptions->addProperty($subgroup); - - // export table name - $leaf = new BoolPropertyItem(); - $leaf->setName("caption"); - $leaf->setText(__('Export table names')); - $generalOptions->addProperty($leaf); - - // export table headers - $leaf = new BoolPropertyItem(); - $leaf->setName("headers"); - $leaf->setText(__('Export table headers')); - $generalOptions->addProperty($leaf); - //add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table','triggers','create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; this is - * deprecated but the parameter is left here - * because export.php calls exportStructure() - * also for other export types which use this - * parameter - * @param bool $do_mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - public function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $do_relation = false, - $do_comments = false, - $do_mime = false, - $dates = false - ) { - switch($export_mode) { - case 'create_table': - $columns = $GLOBALS['dbi']->getColumns($db, $table); - $columns = array_values($columns); - $row_cnt = count($columns); - - // Print structure comment - $output = $this->_exportComment( - "Table structure for " - . PMA_Util::backquote($table) - ); - - // Begin the table construction - $output .= "{| class=\"wikitable\" style=\"text-align:center;\"" - . $this->_exportCRLF(); - - // Add the table name - if ($GLOBALS['mediawiki_caption']) { - $output .= "|+'''" . $table . "'''" . $this->_exportCRLF(); - } - - // Add the table headers - if ($GLOBALS['mediawiki_headers']) { - $output .= "|- style=\"background:#ffdead;\"" . $this->_exportCRLF(); - $output .= "! style=\"background:#ffffff\" | " - . $this->_exportCRLF(); - for ($i = 0; $i < $row_cnt; ++$i) { - $output .= " | " . $columns[$i]['Field']. $this->_exportCRLF(); - } - } - - // Add the table structure - $output .= "|-" . $this->_exportCRLF(); - $output .= "! Type" . $this->_exportCRLF(); - for ($i = 0; $i < $row_cnt; ++$i) { - $output .= " | " . $columns[$i]['Type'] . $this->_exportCRLF(); - } - - $output .= "|-" . $this->_exportCRLF(); - $output .= "! Null" . $this->_exportCRLF(); - for ($i = 0; $i < $row_cnt; ++$i) { - $output .= " | " . $columns[$i]['Null'] . $this->_exportCRLF(); - } - - $output .= "|-" . $this->_exportCRLF(); - $output .= "! Default" . $this->_exportCRLF(); - for ($i = 0; $i < $row_cnt; ++$i) { - $output .= " | " . $columns[$i]['Default'] . $this->_exportCRLF(); - } - - $output .= "|-" . $this->_exportCRLF(); - $output .= "! Extra" . $this->_exportCRLF(); - for ($i = 0; $i < $row_cnt; ++$i) { - $output .= " | " . $columns[$i]['Extra'] . $this->_exportCRLF(); - } - - $output .= "|}" . str_repeat($this->_exportCRLF(), 2); - break; - } // end switch - - return PMA_exportOutputHandler($output); - } - - /** - * Outputs the content of a table in MediaWiki format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData( - $db, - $table, - $crlf, - $error_url, - $sql_query - ) { - // Print data comment - $output = $this->_exportComment( - "Table data for ". PMA_Util::backquote($table) - ); - - // Begin the table construction - // Use the "wikitable" class for style - // Use the "sortable" class for allowing tables to be sorted by column - $output .= "{| class=\"wikitable sortable\" style=\"text-align:center;\"" - . $this->_exportCRLF(); - - // Add the table name - if ($GLOBALS['mediawiki_caption']) { - $output .= "|+'''" . $table . "'''" . $this->_exportCRLF(); - } - - // Add the table headers - if ($GLOBALS['mediawiki_headers']) { - // Get column names - $column_names = $GLOBALS['dbi']->getColumnNames($db, $table); - - // Add column names as table headers - if ( ! is_null($column_names) ) { - // Use '|-' for separating rows - $output .= "|-" . $this->_exportCRLF(); - - // Use '!' for separating table headers - foreach ($column_names as $column) { - $output .= " ! " . $column . "" . $this->_exportCRLF(); - } - } - } - - // Get the table data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $output .= "|-" . $this->_exportCRLF(); - - // Use '|' for separating table columns - for ($i = 0; $i < $fields_cnt; ++ $i) { - $output .= " | " . $row[$i] . "" . $this->_exportCRLF(); - } - } - - // End table construction - $output .= "|}" . str_repeat($this->_exportCRLF(), 2); - return PMA_exportOutputHandler($output); - } - - /** - * Outputs comments containing info about the exported tables - * - * @param string $text Text of comment - * - * @return string The formatted comment - */ - private function _exportComment($text = '') - { - // see http://www.mediawiki.org/wiki/Help:Formatting - $comment = $this->_exportCRLF(); - $comment .= '' . str_repeat($this->_exportCRLF(), 2); - - return $comment; - } - - /** - * Outputs CRLF - * - * @return string CRLF - */ - private function _exportCRLF() - { - // The CRLF expected by the mediawiki format is "\n" - return "\n"; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportOds.class.php b/pma12111211/libraries/plugins/export/ExportOds.class.php deleted file mode 100644 index f3d40d26..00000000 --- a/pma12111211/libraries/plugins/export/ExportOds.class.php +++ /dev/null @@ -1,336 +0,0 @@ -setProperties(); - } - - /** - * Sets the export ODS properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('OpenDocument Spreadsheet'); - $exportPluginProperties->setExtension('ods'); - $exportPluginProperties->setMimeType( - 'application/vnd.oasis.opendocument.spreadsheet' - ); - $exportPluginProperties->setForceFile(true); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new TextPropertyItem(); - $leaf->setName("null"); - $leaf->setText(__('Replace NULL with:')); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Put columns names in the first row')); - $generalOptions->addProperty($leaf); - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - $GLOBALS['ods_buffer'] .= '' - . '' - . '' - . '' - . '' - . '/' - . '' - . '/' - . '' - . '' - . '' - . '' - . ':' - . '' - . ':' - . '' - . ' ' - . '' - . '' - . '' - . '' - . '/' - . '' - . '/' - . '' - . ' ' - . '' - . ':' - . '' - . ' ' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . ''; - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - $GLOBALS['ods_buffer'] .= '' - . '' - . ''; - if (! PMA_exportOutputHandler( - PMA_createOpenDocument( - 'application/vnd.oasis.opendocument.spreadsheet', - $GLOBALS['ods_buffer'] - ) - )) { - return false; - } - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in NHibernate format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $what; - - // Gets the data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); - $field_flags = array(); - for ($j = 0; $j < $fields_cnt; $j++) { - $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); - } - - $GLOBALS['ods_buffer'] .= - ''; - - // If required, get fields name at the first line - if (isset($GLOBALS[$what . '_columns'])) { - $GLOBALS['ods_buffer'] .= ''; - for ($i = 0; $i < $fields_cnt; $i++) { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars( - stripslashes($GLOBALS['dbi']->fieldName($result, $i)) - ) - . '' - . ''; - } // end for - $GLOBALS['ods_buffer'] .= ''; - } // end if - - // Format the data - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $GLOBALS['ods_buffer'] .= ''; - for ($j = 0; $j < $fields_cnt; $j++) { - if (! isset($row[$j]) || is_null($row[$j])) { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($GLOBALS[$what . '_null']) - . '' - . ''; - } elseif (stristr($field_flags[$j], 'BINARY') - && $fields_meta[$j]->blob - ) { - // ignore BLOB - $GLOBALS['ods_buffer'] .= - '' - . '' - . ''; - } elseif ($fields_meta[$j]->type == "date") { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } elseif ($fields_meta[$j]->type == "time") { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } elseif ($fields_meta[$j]->type == "datetime") { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } elseif (($fields_meta[$j]->numeric - && $fields_meta[$j]->type != 'timestamp' - && ! $fields_meta[$j]->blob) || $fields_meta[$j]->type == 'real' - ) { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } else { - $GLOBALS['ods_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } - } // end for - $GLOBALS['ods_buffer'] .= ''; - } // end while - $GLOBALS['dbi']->freeResult($result); - - $GLOBALS['ods_buffer'] .= ''; - - return true; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportOdt.class.php b/pma12111211/libraries/plugins/export/ExportOdt.class.php deleted file mode 100644 index 5df6f652..00000000 --- a/pma12111211/libraries/plugins/export/ExportOdt.class.php +++ /dev/null @@ -1,734 +0,0 @@ -setProperties(); - } - - /** - * Sets the export ODT properties - * - * @return void - */ - protected function setProperties() - { - global $plugin_param; - $hide_structure = false; - if ($plugin_param['export_type'] == 'table' - && ! $plugin_param['single_table'] - ) { - $hide_structure = true; - } - - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('OpenDocument Text'); - $exportPluginProperties->setExtension('odt'); - $exportPluginProperties->setMimeType( - 'application/vnd.oasis.opendocument.text' - ); - $exportPluginProperties->setForceFile(true); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // what to dump (structure/data/both) main group - $dumpWhat = new OptionsPropertyMainGroup(); - $dumpWhat->setName("general_opts"); - $dumpWhat->setText(__('Dump table')); - // create primary items and add them to the group - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $dumpWhat->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dumpWhat); - - - // structure options main group - if (! $hide_structure) { - $structureOptions = new OptionsPropertyMainGroup(); - $structureOptions->setName("structure"); - $structureOptions->setText(__('Object creation options')); - $structureOptions->setForce('data'); - // create primary items and add them to the group - if (! empty($GLOBALS['cfgRelation']['relation'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName("relation"); - $leaf->setText(__('Display foreign key relationships')); - $structureOptions->addProperty($leaf); - } - $leaf = new BoolPropertyItem(); - $leaf->setName("comments"); - $leaf->setText(__('Display comments')); - $structureOptions->addProperty($leaf); - if (! empty($GLOBALS['cfgRelation']['mimework'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName("mime"); - $leaf->setText(__('Display MIME types')); - $structureOptions->addProperty($leaf); - } - // add the main group to the root group - $exportSpecificOptions->addProperty($structureOptions); - } - - // data options main group - $dataOptions = new OptionsPropertyMainGroup(); - $dataOptions->setName("data"); - $dataOptions->setText(__('Data dump options')); - $dataOptions->setForce('structure'); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Put columns names in the first row')); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName('null'); - $leaf->setText(__('Replace NULL with:')); - $dataOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dataOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - $GLOBALS['odt_buffer'] .= '' - . '' - . '' - . ''; - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - $GLOBALS['odt_buffer'] .= '' - . '' - . ''; - if (! PMA_exportOutputHandler( - PMA_createOpenDocument( - 'application/vnd.oasis.opendocument.text', - $GLOBALS['odt_buffer'] - ) - )) { - return false; - } - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - $GLOBALS['odt_buffer'] .= - '' - . __('Database') . ' ' . htmlspecialchars($db) - . ''; - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - /** - * Outputs the content of a table in NHibernate format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $what; - - // Gets the data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); - $field_flags = array(); - for ($j = 0; $j < $fields_cnt; $j++) { - $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); - } - - $GLOBALS['odt_buffer'] .= - '' - . __('Dumping data for table') . ' ' . htmlspecialchars($table) - . '' - . '' - . ''; - - // If required, get fields name at the first line - if (isset($GLOBALS[$what . '_columns'])) { - $GLOBALS['odt_buffer'] .= ''; - for ($i = 0; $i < $fields_cnt; $i++) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars( - stripslashes($GLOBALS['dbi']->fieldName($result, $i)) - ) - . '' - . ''; - } // end for - $GLOBALS['odt_buffer'] .= ''; - } // end if - - // Format the data - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $GLOBALS['odt_buffer'] .= ''; - for ($j = 0; $j < $fields_cnt; $j++) { - if (! isset($row[$j]) || is_null($row[$j])) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars($GLOBALS[$what . '_null']) - . '' - . ''; - } elseif (stristr($field_flags[$j], 'BINARY') - && $fields_meta[$j]->blob - ) { - // ignore BLOB - $GLOBALS['odt_buffer'] .= - '' - . '' - . ''; - } elseif ($fields_meta[$j]->numeric - && $fields_meta[$j]->type != 'timestamp' - && ! $fields_meta[$j]->blob - ) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } else { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars($row[$j]) - . '' - . ''; - } - } // end for - $GLOBALS['odt_buffer'] .= ''; - } // end while - $GLOBALS['dbi']->freeResult($result); - - $GLOBALS['odt_buffer'] .= ''; - - return true; - } - - /** - * Returns a stand-in CREATE definition to resolve view dependencies - * - * @param string $db the database name - * @param string $view the view name - * @param string $crlf the end of line sequence - * - * @return bool true - */ - public function getTableDefStandIn($db, $view, $crlf) - { - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - /** - * Displays the table structure - */ - $GLOBALS['odt_buffer'] .= - ''; - $columns_cnt = 4; - $GLOBALS['odt_buffer'] .= - ''; - /* Header */ - $GLOBALS['odt_buffer'] .= '' - . '' - . '' . __('Column') . '' - . '' - . '' - . '' . __('Type') . '' - . '' - . '' - . '' . __('Null') . '' - . '' - . '' - . '' . __('Default') . '' - . '' - . ''; - - $columns = $GLOBALS['dbi']->getColumns($db, $view); - foreach ($columns as $column) { - $GLOBALS['odt_buffer'] .= $this->formatOneColumnDefinition($column); - $GLOBALS['odt_buffer'] .= ''; - } // end foreach - - $GLOBALS['odt_buffer'] .= ''; - return true; - } - - /** - * Returns $table's CREATE definition - * - * @param string $db the database name - * @param string $table the table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * PMA_exportStructure() also for other - * @param bool $do_mime whether to include mime comments - * @param bool $show_dates whether to include creation/update/check dates - * @param bool $add_semicolon whether to add semicolon and end-of-line at - * the end - * @param bool $view whether we're handling a view - * - * @return bool true - */ - public function getTableDef( - $db, - $table, - $crlf, - $error_url, - $do_relation, - $do_comments, - $do_mime, - $show_dates = false, - $add_semicolon = true, - $view = false - ) { - global $cfgRelation; - - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - // Check if we can use Relations - if ($do_relation && ! empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if ($res_rel && count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - /** - * Displays the table structure - */ - $GLOBALS['odt_buffer'] .= ''; - $columns_cnt = 4; - if ($do_relation && $have_rel) { - $columns_cnt++; - } - if ($do_comments) { - $columns_cnt++; - } - if ($do_mime && $cfgRelation['mimework']) { - $columns_cnt++; - } - $GLOBALS['odt_buffer'] .= ''; - /* Header */ - $GLOBALS['odt_buffer'] .= '' - . '' - . '' . __('Column') . '' - . '' - . '' - . '' . __('Type') . '' - . '' - . '' - . '' . __('Null') . '' - . '' - . '' - . '' . __('Default') . '' - . ''; - if ($do_relation && $have_rel) { - $GLOBALS['odt_buffer'] .= '' - . '' . __('Links to') . '' - . ''; - } - if ($do_comments) { - $GLOBALS['odt_buffer'] .= '' - . '' . __('Comments') . '' - . ''; - $comments = PMA_getComments($db, $table); - } - if ($do_mime && $cfgRelation['mimework']) { - $GLOBALS['odt_buffer'] .= '' - . '' . __('MIME type') . '' - . ''; - $mime_map = PMA_getMIME($db, $table, true); - } - $GLOBALS['odt_buffer'] .= ''; - - $columns = $GLOBALS['dbi']->getColumns($db, $table); - foreach ($columns as $column) { - $field_name = $column['Field']; - $GLOBALS['odt_buffer'] .= $this->formatOneColumnDefinition($column); - - if ($do_relation && $have_rel) { - if (isset($res_rel[$field_name])) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars( - $res_rel[$field_name]['foreign_table'] - . ' (' . $res_rel[$field_name]['foreign_field'] . ')' - ) - . '' - . ''; - } - } - if ($do_comments) { - if (isset($comments[$field_name])) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars($comments[$field_name]) - . '' - . ''; - } else { - $GLOBALS['odt_buffer'] .= - '' - . '' - . ''; - } - } - if ($do_mime && $cfgRelation['mimework']) { - if (isset($mime_map[$field_name])) { - $GLOBALS['odt_buffer'] .= - '' - . '' - . htmlspecialchars( - str_replace('_', '/', $mime_map[$field_name]['mimetype']) - ) - . '' - . ''; - } else { - $GLOBALS['odt_buffer'] .= - '' - . '' - . ''; - } - } - $GLOBALS['odt_buffer'] .= ''; - } // end foreach - - $GLOBALS['odt_buffer'] .= ''; - return true; - } // end of the '$this->getTableDef()' function - - /** - * Outputs triggers - * - * @param string $db database name - * @param string $table table name - * - * @return bool true - */ - protected function getTriggers($db, $table) - { - $GLOBALS['odt_buffer'] .= '' - . '' - . '' - . '' - . '' . __('Name') . '' - . '' - . '' - . '' . __('Time') . '' - . '' - . '' - . '' . __('Event') . '' - . '' - . '' - . '' . __('Definition') . '' - . '' - . ''; - - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - - foreach ($triggers as $trigger) { - $GLOBALS['odt_buffer'] .= ''; - $GLOBALS['odt_buffer'] .= '' - . '' - . htmlspecialchars($trigger['name']) - . '' - . ''; - $GLOBALS['odt_buffer'] .= '' - . '' - . htmlspecialchars($trigger['action_timing']) - . '' - . ''; - $GLOBALS['odt_buffer'] .= '' - . '' - . htmlspecialchars($trigger['event_manipulation']) - . '' - . ''; - $GLOBALS['odt_buffer'] .= '' - . '' - . htmlspecialchars($trigger['definition']) - . '' - . ''; - $GLOBALS['odt_buffer'] .= ''; - } - - $GLOBALS['odt_buffer'] .= ''; - return true; - } - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table', 'triggers', 'create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * PMA_exportStructure() also for other - * @param bool $do_mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - public function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $do_relation = false, - $do_comments = false, - $do_mime = false, - $dates = false - ) { - switch($export_mode) { - case 'create_table': - $GLOBALS['odt_buffer'] .= - '' - . __('Table structure for table') . ' ' . - htmlspecialchars($table) - . ''; - $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, - $do_mime, $dates - ); - break; - case 'triggers': - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - if ($triggers) { - $GLOBALS['odt_buffer'] .= - '' - . __('Triggers') . ' ' - . htmlspecialchars($table) - . ''; - $this->getTriggers($db, $table); - } - break; - case 'create_view': - $GLOBALS['odt_buffer'] .= - '' - . __('Structure for view') . ' ' - . htmlspecialchars($table) - . ''; - $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, - $do_mime, $dates, true, true - ); - break; - case 'stand_in': - $GLOBALS['odt_buffer'] .= - '' - . __('Stand-in structure for view') . ' ' - . htmlspecialchars($table) - . ''; - // export a stand-in definition to resolve view dependencies - $this->getTableDefStandIn($db, $table, $crlf); - } // end switch - - return true; - } // end of the '$this->exportStructure' function - - /** - * Formats the definition for one column - * - * @param array $column info about this column - * - * @return string Formatted column definition - */ - protected function formatOneColumnDefinition($column) - { - $field_name = $column['Field']; - $definition = ''; - $definition .= '' - . '' . htmlspecialchars($field_name) . '' - . ''; - - $extracted_columnspec - = PMA_Util::extractColumnSpec($column['Type']); - $type = htmlspecialchars($extracted_columnspec['print_type']); - if (empty($type)) { - $type = ' '; - } - - $definition .= '' - . '' . htmlspecialchars($type) . '' - . ''; - if (! isset($column['Default'])) { - if ($column['Null'] != 'NO') { - $column['Default'] = 'NULL'; - } else { - $column['Default'] = ''; - } - } - $definition .= '' - . '' - . (($column['Null'] == '' || $column['Null'] == 'NO') - ? __('No') - : __('Yes')) - . '' - . ''; - $definition .= '' - . '' . htmlspecialchars($column['Default']) . '' - . ''; - return $definition; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportPdf.class.php b/pma12111211/libraries/plugins/export/ExportPdf.class.php deleted file mode 100644 index 876f0700..00000000 --- a/pma12111211/libraries/plugins/export/ExportPdf.class.php +++ /dev/null @@ -1,276 +0,0 @@ -initSpecificVariables(); - - $this->setProperties(); - } - - /** - * Initialize the local variables that are used for export PDF - * - * @return void - */ - protected function initSpecificVariables() - { - $this->_setPdfReportTitle(""); - $this->_setPdf(new PMA_ExportPdf('L', 'pt', 'A3')); - } - - /** - * Sets the export PDF properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/MessageOnlyPropertyItem.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('PDF'); - $exportPluginProperties->setExtension('pdf'); - $exportPluginProperties->setMimeType('application/pdf'); - $exportPluginProperties->setForceFile(true); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new MessageOnlyPropertyItem(); - $leaf->setName("explanation"); - $leaf->setText( - __('(Generates a report containing the data of a single table)') - ); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("report_title"); - $leaf->setText(__('Report title:')); - $generalOptions->addProperty($leaf); - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - $pdf_report_title = $this->_getPdfReportTitle(); - $pdf = $this->_getPdf(); - $pdf->Open(); - - $attr = array('titleFontSize' => 18, 'titleText' => $pdf_report_title); - $pdf->setAttributes($attr); - $pdf->setTopMargin(30); - - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - $pdf = $this->_getPdf(); - - // instead of $pdf->Output(): - if (! PMA_exportOutputHandler($pdf->getPDFData())) { - return false; - } - - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - /** - * Outputs the content of a table in NHibernate format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - $pdf = $this->_getPdf(); - - $attr = array('currentDb' => $db, 'currentTable' => $table); - $pdf->setAttributes($attr); - $pdf->mysqlReport($sql_query); - - return true; - } // end of the 'PMA_exportData()' function - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the PMA_ExportPdf instance - * - * @return PMA_ExportPdf - */ - private function _getPdf() - { - return $this->_pdf; - } - - /** - * Instantiates the PMA_ExportPdf class - * - * @param string $pdf PMA_ExportPdf instance - * - * @return void - */ - private function _setPdf($pdf) - { - $this->_pdf = $pdf; - } - - /** - * Gets the PDF report title - * - * @return string - */ - private function _getPdfReportTitle() - { - return $this->_pdfReportTitle; - } - - /** - * Sets the PDF report title - * - * @param string $pdfReportTitle PDF report title - * - * @return void - */ - private function _setPdfReportTitle($pdfReportTitle) - { - $this->_pdfReportTitle = $pdfReportTitle; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportPhparray.class.php b/pma12111211/libraries/plugins/export/ExportPhparray.class.php deleted file mode 100644 index 05d6fd24..00000000 --- a/pma12111211/libraries/plugins/export/ExportPhparray.class.php +++ /dev/null @@ -1,229 +0,0 @@ -setProperties(); - } - - /** - * Sets the export PHP Array properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('PHP array'); - $exportPluginProperties->setExtension('php'); - $exportPluginProperties->setMimeType('text/plain'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - PMA_exportOutputHandler( - 'query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - - $columns_cnt = $GLOBALS['dbi']->numFields($result); - for ($i = 0; $i < $columns_cnt; $i++) { - $columns[$i] = stripslashes($GLOBALS['dbi']->fieldName($result, $i)); - } - unset($i); - - // fix variable names (based on - // http://www.php.net/manual/language.variables.basics.php) - if (! preg_match( - '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', - $table - )) { - // fix invalid characters in variable names by replacing them with - // underscores - $tablefixed = preg_replace('/[^a-zA-Z0-9_\x7f-\xff]/', '_', $table); - - // variable name must not start with a number or dash... - if (preg_match('/^[a-zA-Z_\x7f-\xff]/', $tablefixed) == false) { - $tablefixed = '_' . $tablefixed; - } - } else { - $tablefixed = $table; - } - - $buffer = ''; - $record_cnt = 0; - // Output table name as comment - $buffer .= $crlf . '// ' - . PMA_Util::backquote($db) . '.' - . PMA_Util::backquote($table) . $crlf; - $buffer .= '$' . $tablefixed . ' = array('; - - while ($record = $GLOBALS['dbi']->fetchRow($result)) { - $record_cnt++; - - if ($record_cnt == 1) { - $buffer .= $crlf . ' array('; - } else { - $buffer .= ',' . $crlf . ' array('; - } - - for ($i = 0; $i < $columns_cnt; $i++) { - $buffer .= var_export($columns[$i], true) - . " => " . var_export($record[$i], true) - . (($i + 1 >= $columns_cnt) ? '' : ','); - } - - $buffer .= ')'; - } - - $buffer .= $crlf . ');' . $crlf; - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - $GLOBALS['dbi']->freeResult($result); - return true; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportSql.class.php b/pma12111211/libraries/plugins/export/ExportSql.class.php deleted file mode 100644 index 11519435..00000000 --- a/pma12111211/libraries/plugins/export/ExportSql.class.php +++ /dev/null @@ -1,2017 +0,0 @@ -setProperties(); - - // Avoids undefined variables, use NULL so isset() returns false - if (! isset($GLOBALS['sql_backquotes'])) { - $GLOBALS['sql_backquotes'] = null; - } - } - - /** - * Sets the export SQL properties - * - * @return void - */ - protected function setProperties() - { - global $plugin_param; - - $hide_sql = false; - $hide_structure = false; - if ($plugin_param['export_type'] == 'table' - && ! $plugin_param['single_table'] - ) { - $hide_structure = true; - $hide_sql = true; - } - - if (! $hide_sql) { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/groups/OptionsPropertySubgroup.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/MessageOnlyPropertyItem.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - include_once "$props/options/items/SelectPropertyItem.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - include_once "$props/options/items/NumberPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('SQL'); - $exportPluginProperties->setExtension('sql'); - $exportPluginProperties->setMimeType('text/x-sql'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - - // comments - $subgroup = new OptionsPropertySubgroup(); - $subgroup->setName("include_comments"); - $leaf = new BoolPropertyItem(); - $leaf->setName('include_comments'); - $leaf->setText( - __( - 'Display comments (includes info such as export' - . ' timestamp, PHP version, and server version)' - ) - ); - $subgroup->setSubgroupHeader($leaf); - - $leaf = new TextPropertyItem(); - $leaf->setName('header_comment'); - $leaf->setText( - __('Additional custom header comment (\n splits lines):') - ); - $subgroup->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('dates'); - $leaf->setText( - __( - 'Include a timestamp of when databases were created, last' - . ' updated, and last checked' - ) - ); - $subgroup->addProperty($leaf); - if (! empty($GLOBALS['cfgRelation']['relation'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName('relation'); - $leaf->setText(__('Display foreign key relationships')); - $subgroup->addProperty($leaf); - } - if (! empty($GLOBALS['cfgRelation']['mimework'])) { - $leaf = new BoolPropertyItem(); - $leaf->setName('mime'); - $leaf->setText(__('Display MIME types')); - $subgroup->addProperty($leaf); - } - $generalOptions->addProperty($subgroup); - - // enclose in a transaction - $leaf = new BoolPropertyItem(); - $leaf->setName("use_transaction"); - $leaf->setText(__('Enclose export in a transaction')); - $leaf->setDoc( - array( - 'programs', - 'mysqldump', - 'option_mysqldump_single-transaction' - ) - ); - $generalOptions->addProperty($leaf); - - // disable foreign key checks - $leaf = new BoolPropertyItem(); - $leaf->setName("disable_fk"); - $leaf->setText(__('Disable foreign key checks')); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'server-system-variables', - 'sysvar_foreign_key_checks' - ) - ); - $generalOptions->addProperty($leaf); - - // export views as tables - $leaf = new BoolPropertyItem(); - $leaf->setName("views_as_tables"); - $leaf->setText(__('Export views as tables')); - $generalOptions->addProperty($leaf); - - // compatibility maximization - $compats = $GLOBALS['dbi']->getCompatibilities(); - if (count($compats) > 0) { - $values = array(); - foreach ($compats as $val) { - $values[$val] = $val; - } - - $leaf = new SelectPropertyItem(); - $leaf->setName("compatibility"); - $leaf->setText( - __( - 'Database system or older MySQL server to maximize output' - . ' compatibility with:' - ) - ); - $leaf->setValues($values); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'Server_SQL_mode' - ) - ); - $generalOptions->addProperty($leaf); - - unset($values); - } - - // server export options - if ($plugin_param['export_type'] == 'server') { - $leaf = new BoolPropertyItem(); - $leaf->setName("drop_database"); - $leaf->setText( - sprintf(__('Add %s statement'), 'DROP DATABASE') - ); - $generalOptions->addProperty($leaf); - } - - // what to dump (structure/data/both) - $subgroup = new OptionsPropertySubgroup(); - $subgroup->setName("dump_table"); - $subgroup->setText("Dump table"); - $leaf = new RadioPropertyItem(); - $leaf->setName('structure_or_data'); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $subgroup->setSubgroupHeader($leaf); - $generalOptions->addProperty($subgroup); - - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - - // structure options main group - if (! $hide_structure) { - $structureOptions = new OptionsPropertyMainGroup(); - $structureOptions->setName("structure"); - $structureOptions->setText(__('Object creation options')); - $structureOptions->setForce('data'); - - // begin SQL Statements - $subgroup = new OptionsPropertySubgroup(); - $leaf = new MessageOnlyPropertyItem(); - $leaf->setName('add_statements'); - $leaf->setText(__('Add statements:')); - $subgroup->setSubgroupHeader($leaf); - - if ($plugin_param['export_type'] != 'table') { - $leaf = new BoolPropertyItem(); - $leaf->setName('create_database'); - $create_clause = 'CREATE DATABASE / USE'; - $leaf->setText(sprintf(__('Add %s statement'), $create_clause)); - $subgroup->addProperty($leaf); - } - - if ($plugin_param['export_type'] == 'table') { - if (PMA_Table::isView($GLOBALS['db'], $GLOBALS['table'])) { - $drop_clause = 'DROP VIEW'; - } else { - $drop_clause = 'DROP TABLE'; - } - } else { - if (PMA_DRIZZLE) { - $drop_clause = 'DROP TABLE'; - } else { - $drop_clause = 'DROP TABLE / VIEW / PROCEDURE' - . ' / FUNCTION'; - if (PMA_MYSQL_INT_VERSION > 50100) { - $drop_clause .= ' / EVENT'; - } - } - } - $leaf = new BoolPropertyItem(); - $leaf->setName('drop_table'); - $leaf->setText(sprintf(__('Add %s statement'), $drop_clause)); - $subgroup->addProperty($leaf); - // Drizzle doesn't support procedures and functions - if (! PMA_DRIZZLE) { - $leaf = new BoolPropertyItem(); - $leaf->setName('procedure_function'); - $leaf->setText( - sprintf( - __('Add %s statement'), - 'CREATE PROCEDURE / FUNCTION' - . (PMA_MYSQL_INT_VERSION > 50100 - ? ' / EVENT' : '') - ) - ); - $subgroup->addProperty($leaf); - } - - // begin CREATE TABLE statements - $subgroup_create_table = new OptionsPropertySubgroup(); - $leaf = new BoolPropertyItem(); - $leaf->setName('create_table_statements'); - $leaf->setText(__('CREATE TABLE options:')); - $subgroup_create_table->setSubgroupHeader($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('if_not_exists'); - $leaf->setText('IF NOT EXISTS'); - $subgroup_create_table->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName('auto_increment'); - $leaf->setText('AUTO_INCREMENT'); - $subgroup_create_table->addProperty($leaf); - $subgroup->addProperty($subgroup_create_table); - $structureOptions->addProperty($subgroup); - - $leaf = new BoolPropertyItem(); - $leaf->setName("backquotes"); - $leaf->setText( - __( - 'Enclose table and column names with backquotes ' - . '(Protects column and table names formed with' - . ' special characters or keywords)' - ) - ); - - $structureOptions->addProperty($leaf); - - // add the main group to the root group - $exportSpecificOptions->addProperty($structureOptions); - } - - - // begin Data options - $dataOptions = new OptionsPropertyMainGroup(); - $dataOptions->setName("data"); - $dataOptions->setText(__('Data creation options')); - $dataOptions->setForce('structure'); - $leaf = new BoolPropertyItem(); - $leaf->setName("truncate"); - $leaf->setText(__('Truncate table before insert')); - $dataOptions->addProperty($leaf); - - // begin SQL Statements - $subgroup = new OptionsPropertySubgroup(); - $leaf = new MessageOnlyPropertyItem(); - $leaf->setText(__('Instead of INSERT statements, use:')); - $subgroup->setSubgroupHeader($leaf); - // Not supported in Drizzle - if (! PMA_DRIZZLE) { - $leaf = new BoolPropertyItem(); - $leaf->setName("delayed"); - $leaf->setText(__('INSERT DELAYED statements')); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'insert_delayed' - ) - ); - $subgroup->addProperty($leaf); - } - $leaf = new BoolPropertyItem(); - $leaf->setName("ignore"); - $leaf->setText(__('INSERT IGNORE statements')); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'insert' - ) - ); - $subgroup->addProperty($leaf); - $dataOptions->addProperty($subgroup); - - // Function to use when dumping dat - $leaf = new SelectPropertyItem(); - $leaf->setName("type"); - $leaf->setText(__('Function to use when dumping data:')); - $leaf->setValues( - array( - 'INSERT' => 'INSERT', - 'UPDATE' => 'UPDATE', - 'REPLACE' => 'REPLACE' - ) - ); - $dataOptions->addProperty($leaf); - - /* Syntax to use when inserting data */ - $subgroup = new OptionsPropertySubgroup(); - $leaf = new MessageOnlyPropertyItem(); - $leaf->setText(__('Syntax to use when inserting data:')); - $subgroup->setSubgroupHeader($leaf); - $leaf = new RadioPropertyItem(); - $leaf->setName("insert_syntax"); - $leaf->setText(__('INSERT IGNORE statements')); - $leaf->setValues( - array( - 'complete' => __( - 'include column names in every INSERT statement' - . '
                  Example: INSERT INTO' - . ' tbl_name (col_A,col_B,col_C) VALUES (1,2,3)' - ), - 'extended' => __( - 'insert multiple rows in every INSERT statement' - . '
                  Example: INSERT INTO' - . ' tbl_name VALUES (1,2,3), (4,5,6), (7,8,9)' - ), - 'both' => __( - 'both of the above
                  Example:' - . ' INSERT INTO tbl_name (col_A,col_B) VALUES (1,2,3),' - . ' (4,5,6), (7,8,9)' - ), - 'none' => __( - 'neither of the above
                  Example:' - . ' INSERT INTO tbl_name VALUES (1,2,3)' - ) - ) - ); - $subgroup->addProperty($leaf); - $dataOptions->addProperty($subgroup); - - // Max length of query - $leaf = new NumberPropertyItem(); - $leaf->setName("max_query_size"); - $leaf->setText(__('Maximal length of created query')); - $dataOptions->addProperty($leaf); - - // Dump binary columns in hexadecimal - $leaf = new BoolPropertyItem(); - $leaf->setName("hex_for_blob"); - $leaf->setText( - __( - 'Dump binary columns in hexadecimal notation' - . ' (for example, "abc" becomes 0x616263)' - ) - ); - $dataOptions->addProperty($leaf); - - // Drizzle works only with UTC timezone - if (! PMA_DRIZZLE) { - // Dump time in UTC - $leaf = new BoolPropertyItem(); - $leaf->setName("utc_time"); - $leaf->setText( - __( - 'Dump TIMESTAMP columns in UTC (enables TIMESTAMP columns' - . ' to be dumped and reloaded between servers in different' - . ' time zones)' - ) - ); - $dataOptions->addProperty($leaf); - } - - // add the main group to the root group - $exportSpecificOptions->addProperty($dataOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Exports routines (procedures and functions) - * - * @param string $db Database - * - * @return bool Whether it succeeded - */ - public function exportRoutines($db) - { - global $crlf; - - $text = ''; - $delimiter = '$$'; - - $procedure_names = $GLOBALS['dbi'] - ->getProceduresOrFunctions($db, 'PROCEDURE'); - $function_names = $GLOBALS['dbi']->getProceduresOrFunctions($db, 'FUNCTION'); - - if ($procedure_names || $function_names) { - $text .= $crlf - . 'DELIMITER ' . $delimiter . $crlf; - } - - if ($procedure_names) { - $text .= - $this->_exportComment() - . $this->_exportComment(__('Procedures')) - . $this->_exportComment(); - - foreach ($procedure_names as $procedure_name) { - if (! empty($GLOBALS['sql_drop_table'])) { - $text .= 'DROP PROCEDURE IF EXISTS ' - . PMA_Util::backquote($procedure_name) - . $delimiter . $crlf; - } - $text .= $GLOBALS['dbi'] - ->getDefinition($db, 'PROCEDURE', $procedure_name) - . $delimiter . $crlf . $crlf; - } - } - - if ($function_names) { - $text .= - $this->_exportComment() - . $this->_exportComment(__('Functions')) - . $this->_exportComment(); - - foreach ($function_names as $function_name) { - if (! empty($GLOBALS['sql_drop_table'])) { - $text .= 'DROP FUNCTION IF EXISTS ' - . PMA_Util::backquote($function_name) - . $delimiter . $crlf; - } - $text .= $GLOBALS['dbi'] - ->getDefinition($db, 'FUNCTION', $function_name) - . $delimiter . $crlf . $crlf; - } - } - - if ($procedure_names || $function_names) { - $text .= 'DELIMITER ;' . $crlf; - } - - if (! empty($text)) { - return PMA_exportOutputHandler($text); - } else { - return false; - } - } - - /** - * Possibly outputs comment - * - * @param string $text Text of comment - * - * @return string The formatted comment - */ - private function _exportComment($text = '') - { - if (isset($GLOBALS['sql_include_comments']) - && $GLOBALS['sql_include_comments'] - ) { - // see http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-comments.html - return '--' . (empty($text) ? '' : ' ') . $text . $GLOBALS['crlf']; - } else { - return ''; - } - } - - /** - * Possibly outputs CRLF - * - * @return string $crlf or nothing - */ - private function _possibleCRLF() - { - if (isset($GLOBALS['sql_include_comments']) - && $GLOBALS['sql_include_comments'] - ) { - return $GLOBALS['crlf']; - } else { - return ''; - } - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter() - { - global $crlf, $mysql_charset_map; - - $foot = ''; - - if (isset($GLOBALS['sql_disable_fk'])) { - $foot .= 'SET FOREIGN_KEY_CHECKS=1;' . $crlf; - } - - if (isset($GLOBALS['sql_use_transaction'])) { - $foot .= 'COMMIT;' . $crlf; - } - - // restore connection settings - $charset_of_file = isset($GLOBALS['charset_of_file']) - ? $GLOBALS['charset_of_file'] : ''; - if (! empty($GLOBALS['asfile']) - && isset($mysql_charset_map[$charset_of_file]) - && ! PMA_DRIZZLE - ) { - $foot .= $crlf - . '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;' - . $crlf - . '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;' - . $crlf - . '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;' - . $crlf; - } - - /* Restore timezone */ - if (isset($GLOBALS['sql_utc_time']) && $GLOBALS['sql_utc_time']) { - $GLOBALS['dbi']->query('SET time_zone = "' . $GLOBALS['old_tz'] . '"'); - } - - return PMA_exportOutputHandler($foot); - } - - /** - * Outputs export header. It is the first method to be called, so all - * the required variables are initialized here. - * - * @return bool Whether it succeeded - */ - public function exportHeader() - { - global $crlf, $cfg; - global $mysql_charset_map; - - if (isset($GLOBALS['sql_compatibility'])) { - $tmp_compat = $GLOBALS['sql_compatibility']; - if ($tmp_compat == 'NONE') { - $tmp_compat = ''; - } - $GLOBALS['dbi']->tryQuery('SET SQL_MODE="' . $tmp_compat . '"'); - unset($tmp_compat); - } - $head = $this->_exportComment('phpMyAdmin SQL Dump') - . $this->_exportComment('version ' . PMA_VERSION) - . $this->_exportComment('http://www.phpmyadmin.net') - . $this->_exportComment(); - $host_string = __('Host:') . ' ' . $cfg['Server']['host']; - if (! empty($cfg['Server']['port'])) { - $host_string .= ':' . $cfg['Server']['port']; - } - $head .= $this->_exportComment($host_string); - $head .= - $this->_exportComment( - __('Generation Time:') . ' ' - . PMA_Util::localisedDate() - ) - . $this->_exportComment( - __('Server version:') . ' ' . PMA_MYSQL_STR_VERSION - ) - . $this->_exportComment(__('PHP Version:') . ' ' . phpversion()) - . $this->_possibleCRLF(); - - if (isset($GLOBALS['sql_header_comment']) - && ! empty($GLOBALS['sql_header_comment']) - ) { - // '\n' is not a newline (like "\n" would be), it's the characters - // backslash and n, as explained on the export interface - $lines = explode('\n', $GLOBALS['sql_header_comment']); - $head .= $this->_exportComment(); - foreach ($lines as $one_line) { - $head .= $this->_exportComment($one_line); - } - $head .= $this->_exportComment(); - } - - if (isset($GLOBALS['sql_disable_fk'])) { - $head .= 'SET FOREIGN_KEY_CHECKS=0;' . $crlf; - } - - // We want exported AUTO_INCREMENT columns to have still same value, - // do this only for recent MySQL exports - if ((! isset($GLOBALS['sql_compatibility']) - || $GLOBALS['sql_compatibility'] == 'NONE') - && ! PMA_DRIZZLE - ) { - $head .= 'SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";' . $crlf; - } - - if (isset($GLOBALS['sql_use_transaction'])) { - $head .= 'SET AUTOCOMMIT = 0;' . $crlf - . 'START TRANSACTION;' . $crlf; - } - - /* Change timezone if we should export timestamps in UTC */ - if (isset($GLOBALS['sql_utc_time']) && $GLOBALS['sql_utc_time']) { - $head .= 'SET time_zone = "+00:00";' . $crlf; - $GLOBALS['old_tz'] = $GLOBALS['dbi'] - ->fetchValue('SELECT @@session.time_zone'); - $GLOBALS['dbi']->query('SET time_zone = "+00:00"'); - } - - $head .= $this->_possibleCRLF(); - - if (! empty($GLOBALS['asfile']) && ! PMA_DRIZZLE) { - // we are saving as file, therefore we provide charset information - // so that a utility like the mysql client can interpret - // the file correctly - if (isset($GLOBALS['charset_of_file']) - && isset($mysql_charset_map[$GLOBALS['charset_of_file']]) - ) { - // we got a charset from the export dialog - $set_names = $mysql_charset_map[$GLOBALS['charset_of_file']]; - } else { - // by default we use the connection charset - $set_names = $mysql_charset_map['utf-8']; - } - $head .= $crlf - . '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=' - . '@@CHARACTER_SET_CLIENT */;' . $crlf - . '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=' - . '@@CHARACTER_SET_RESULTS */;' . $crlf - . '/*!40101 SET @OLD_COLLATION_CONNECTION=' - . '@@COLLATION_CONNECTION */;'. $crlf - . '/*!40101 SET NAMES ' . $set_names . ' */;' . $crlf . $crlf; - } - - return PMA_exportOutputHandler($head); - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - global $crlf; - - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - if (isset($GLOBALS['sql_drop_database'])) { - if (! PMA_exportOutputHandler( - 'DROP DATABASE ' - . (isset($GLOBALS['sql_backquotes']) - ? PMA_Util::backquoteCompat($db, $compat) : $db) - . ';' . $crlf - )) { - return false; - } - } - if (isset($GLOBALS['sql_create_database'])) { - $create_query = 'CREATE DATABASE IF NOT EXISTS ' - . (isset($GLOBALS['sql_backquotes']) - ? PMA_Util::backquoteCompat($db, $compat) : $db); - $collation = PMA_getDbCollation($db); - if (PMA_DRIZZLE) { - $create_query .= ' COLLATE ' . $collation; - } else { - if (strpos($collation, '_')) { - $create_query .= ' DEFAULT CHARACTER SET ' - . substr($collation, 0, strpos($collation, '_')) - . ' COLLATE ' . $collation; - } else { - $create_query .= ' DEFAULT CHARACTER SET ' . $collation; - } - } - $create_query .= ';' . $crlf; - if (! PMA_exportOutputHandler($create_query)) { - return false; - } - if (isset($GLOBALS['sql_backquotes']) - && ((isset($GLOBALS['sql_compatibility']) - && $GLOBALS['sql_compatibility'] == 'NONE') - || PMA_DRIZZLE) - ) { - $result = PMA_exportOutputHandler( - 'USE ' . PMA_Util::backquoteCompat($db, $compat) - . ';' . $crlf - ); - } else { - $result = PMA_exportOutputHandler('USE ' . $db . ';' . $crlf); - } - return $result; - } else { - return true; - } - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader($db) - { - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - $head = $this->_exportComment() - . $this->_exportComment( - __('Database:') . ' ' - . (isset($GLOBALS['sql_backquotes']) - ? PMA_Util::backquoteCompat($db, $compat) - : '\'' . $db . '\'') - ) - . $this->_exportComment(); - return PMA_exportOutputHandler($head); - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter($db) - { - global $crlf; - - $result = true; - if (isset($GLOBALS['sql_constraints'])) { - $result = PMA_exportOutputHandler($GLOBALS['sql_constraints']); - unset($GLOBALS['sql_constraints']); - } - - if (($GLOBALS['sql_structure_or_data'] == 'structure' - || $GLOBALS['sql_structure_or_data'] == 'structure_and_data') - && isset($GLOBALS['sql_procedure_function']) - ) { - $text = ''; - $delimiter = '$$'; - - if (PMA_MYSQL_INT_VERSION > 50100) { - $event_names = $GLOBALS['dbi']->fetchResult( - 'SELECT EVENT_NAME FROM information_schema.EVENTS WHERE' - . ' EVENT_SCHEMA= \'' - . PMA_Util::sqlAddSlashes($db, true) - . '\';' - ); - } else { - $event_names = array(); - } - - if ($event_names) { - $text .= $crlf - . 'DELIMITER ' . $delimiter . $crlf; - - $text .= - $this->_exportComment() - . $this->_exportComment(__('Events')) - . $this->_exportComment(); - - foreach ($event_names as $event_name) { - if (! empty($GLOBALS['sql_drop_table'])) { - $text .= 'DROP EVENT ' - . PMA_Util::backquote($event_name) - . $delimiter . $crlf; - } - $text .= $GLOBALS['dbi'] - ->getDefinition($db, 'EVENT', $event_name) - . $delimiter . $crlf . $crlf; - } - - $text .= 'DELIMITER ;' . $crlf; - } - - if (! empty($text)) { - $result = PMA_exportOutputHandler($text); - } - } - return $result; - } - - /** - * Returns a stand-in CREATE definition to resolve view dependencies - * - * @param string $db the database name - * @param string $view the view name - * @param string $crlf the end of line sequence - * - * @return string resulting definition - */ - public function getTableDefStandIn($db, $view, $crlf) - { - $create_query = ''; - if (! empty($GLOBALS['sql_drop_table'])) { - $create_query .= 'DROP VIEW IF EXISTS ' - . PMA_Util::backquote($view) - . ';' . $crlf; - } - - $create_query .= 'CREATE TABLE '; - - if (isset($GLOBALS['sql_if_not_exists']) - && $GLOBALS['sql_if_not_exists'] - ) { - $create_query .= 'IF NOT EXISTS '; - } - $create_query .= PMA_Util::backquote($view) . ' (' . $crlf; - $tmp = array(); - $columns = $GLOBALS['dbi']->getColumnsFull($db, $view); - foreach ($columns as $column_name => $definition) { - $tmp[] = PMA_Util::backquote($column_name) . ' ' . - $definition['Type'] . $crlf; - } - $create_query .= implode(',', $tmp) . ');'; - return($create_query); - } - - /** - * Returns CREATE definition that matches $view's structure - * - * @param string $db the database name - * @param string $view the view name - * @param string $crlf the end of line sequence - * @param bool $add_semicolon whether to add semicolon and end-of-line at - * the end - * - * @return string resulting schema - */ - private function _getTableDefForView( - $db, - $view, - $crlf, - $add_semicolon = true - ) { - $create_query = "CREATE TABLE"; - if (isset($GLOBALS['sql_if_not_exists'])) { - $create_query .= " IF NOT EXISTS "; - } - $create_query .= PMA_Util::backquote($view) . "(" . $crlf; - - $columns = $GLOBALS['dbi']->getColumns($db, $view, null, true); - - $firstCol = true; - foreach ($columns as $column) { - $extracted_columnspec = PMA_Util::extractColumnSpec($column['Type']); - - if (! $firstCol) { - $create_query .= "," . $crlf; - } - $create_query .= " " . PMA_Util::backquote($column['Field']); - $create_query .= " " . $column['Type']; - if ($extracted_columnspec['can_contain_collation'] - && ! empty($column['Collation']) - ) { - $create_query .= " COLLATE " . $column['Collation']; - } - if ($column['Null'] == 'NO') { - $create_query .= " NOT NULL"; - } - if (isset($column['Default'])) { - $create_query .= " DEFAULT '" - . PMA_Util::sqlAddSlashes($column['Default']) . "'"; - } else if ($column['Null'] == 'YES') { - $create_query .= " DEFAULT NULL"; - } - if (! empty($column['Comment'])) { - $create_query .= " COMMENT '" - . PMA_Util::sqlAddSlashes($column['Comment']) . "'"; - } - $firstCol = false; - } - $create_query .= $crlf . ")" . ($add_semicolon ? ';' : '') . $crlf; - - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - if ($compat == 'MSSQL') { - $create_query = $this->_makeCreateTableMSSQLCompatible( - $create_query - ); - } - return $create_query; - } - - /** - * Returns $table's CREATE definition - * - * @param string $db the database name - * @param string $table the table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param bool $show_dates whether to include creation/update/check - * dates - * @param bool $add_semicolon whether to add semicolon and end-of-line at - * the end - * @param bool $view whether we're handling a view - * - * @return string resulting schema - */ - public function getTableDef( - $db, - $table, - $crlf, - $error_url, - $show_dates = false, - $add_semicolon = true, - $view = false - ) { - global $sql_drop_table, $sql_backquotes, $sql_constraints, - $sql_constraints_query, $sql_drop_foreign_keys; - - $schema_create = ''; - $auto_increment = ''; - $new_crlf = $crlf; - - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - - // need to use PMA_DatabaseInterface::QUERY_STORE - // with $GLOBALS['dbi']->numRows() in mysqli - $result = $GLOBALS['dbi']->query( - 'SHOW TABLE STATUS FROM ' . PMA_Util::backquote($db) - . ' LIKE \'' . PMA_Util::sqlAddSlashes($table, true) . '\'', - null, - PMA_DatabaseInterface::QUERY_STORE - ); - if ($result != false) { - if ($GLOBALS['dbi']->numRows($result) > 0) { - $tmpres = $GLOBALS['dbi']->fetchAssoc($result); - if (PMA_DRIZZLE && $show_dates) { - // Drizzle doesn't give Create_time and Update_time in - // SHOW TABLE STATUS, add it - $sql ="SELECT - TABLE_CREATION_TIME AS Create_time, - TABLE_UPDATE_TIME AS Update_time - FROM data_dictionary.TABLES - WHERE TABLE_SCHEMA = '" - . PMA_Util::sqlAddSlashes($db) . "' - AND TABLE_NAME = '" - . PMA_Util::sqlAddSlashes($table) . "'"; - $tmpres = array_merge( - $GLOBALS['dbi']->fetchSingleRow($sql), $tmpres - ); - } - // Here we optionally add the AUTO_INCREMENT next value, - // but starting with MySQL 5.0.24, the clause is already included - // in SHOW CREATE TABLE so we'll remove it below - // It's required for Drizzle because SHOW CREATE TABLE uses - // the value from table's creation time - if (isset($GLOBALS['sql_auto_increment']) - && ! empty($tmpres['Auto_increment']) - ) { - $auto_increment .= ' AUTO_INCREMENT=' - . $tmpres['Auto_increment'] . ' '; - } - - if ($show_dates - && isset($tmpres['Create_time']) - && ! empty($tmpres['Create_time']) - ) { - $schema_create .= $this->_exportComment( - __('Creation:') . ' ' - . PMA_Util::localisedDate( - strtotime($tmpres['Create_time']) - ) - ); - $new_crlf = $this->_exportComment() . $crlf; - } - - if ($show_dates - && isset($tmpres['Update_time']) - && ! empty($tmpres['Update_time']) - ) { - $schema_create .= $this->_exportComment( - __('Last update:') . ' ' - . PMA_Util::localisedDate( - strtotime($tmpres['Update_time']) - ) - ); - $new_crlf = $this->_exportComment() . $crlf; - } - - if ($show_dates - && isset($tmpres['Check_time']) - && ! empty($tmpres['Check_time']) - ) { - $schema_create .= $this->_exportComment( - __('Last check:') . ' ' - . PMA_Util::localisedDate( - strtotime($tmpres['Check_time']) - ) - ); - $new_crlf = $this->_exportComment() . $crlf; - } - } - $GLOBALS['dbi']->freeResult($result); - } - - $schema_create .= $new_crlf; - - // no need to generate a DROP VIEW here, it was done earlier - if (! empty($sql_drop_table) && ! PMA_Table::isView($db, $table)) { - $schema_create .= 'DROP TABLE IF EXISTS ' - . PMA_Util::backquote($table, $sql_backquotes) . ';' - . $crlf; - } - - // Complete table dump, - // Whether to quote table and column names or not - // Drizzle always quotes names - if (! PMA_DRIZZLE) { - if ($sql_backquotes) { - $GLOBALS['dbi']->query('SET SQL_QUOTE_SHOW_CREATE = 1'); - } else { - $GLOBALS['dbi']->query('SET SQL_QUOTE_SHOW_CREATE = 0'); - } - } - - // I don't see the reason why this unbuffered query could cause problems, - // because SHOW CREATE TABLE returns only one row, and we free the - // results below. Nonetheless, we got 2 user reports about this - // (see bug 1562533) so I removed the unbuffered mode. - // $result = $GLOBALS['dbi']->query('SHOW CREATE TABLE ' . backquote($db) - // . '.' . backquote($table), null, PMA_DatabaseInterface::QUERY_UNBUFFERED); - // - // Note: SHOW CREATE TABLE, at least in MySQL 5.1.23, does not - // produce a displayable result for the default value of a BIT - // column, nor does the mysqldump command. See MySQL bug 35796 - $result = $GLOBALS['dbi']->tryQuery( - 'SHOW CREATE TABLE ' . PMA_Util::backquote($db) . '.' - . PMA_Util::backquote($table) - ); - // an error can happen, for example the table is crashed - $tmp_error = $GLOBALS['dbi']->getError(); - if ($tmp_error) { - return $this->_exportComment(__('in use') . '(' . $tmp_error . ')'); - } - - if ($result != false && ($row = $GLOBALS['dbi']->fetchRow($result))) { - $create_query = $row[1]; - unset($row); - - // Convert end of line chars to one that we want (note that MySQL - // doesn't return query it will accept in all cases) - if (strpos($create_query, "(\r\n ")) { - $create_query = str_replace("\r\n", $crlf, $create_query); - } elseif (strpos($create_query, "(\n ")) { - $create_query = str_replace("\n", $crlf, $create_query); - } elseif (strpos($create_query, "(\r ")) { - $create_query = str_replace("\r", $crlf, $create_query); - } - - /* - * Drop database name from VIEW creation. - * - * This is a bit tricky, but we need to issue SHOW CREATE TABLE with - * database name, but we don't want name to show up in CREATE VIEW - * statement. - */ - if ($view) { - $create_query = preg_replace( - '/' . PMA_Util::backquote($db) . '\./', - '', - $create_query - ); - } - - // Should we use IF NOT EXISTS? - if (isset($GLOBALS['sql_if_not_exists'])) { - $create_query = preg_replace( - '/^CREATE TABLE/', - 'CREATE TABLE IF NOT EXISTS', - $create_query - ); - } - - if ($compat == 'MSSQL') { - $create_query = $this->_makeCreateTableMSSQLCompatible( - $create_query - ); - } - - // Drizzle (checked on 2011.03.13) returns ROW_FORMAT surrounded - // with quotes, which is not accepted by parser - if (PMA_DRIZZLE) { - $create_query = preg_replace( - '/ROW_FORMAT=\'(\S+)\'/', - 'ROW_FORMAT=$1', - $create_query - ); - } - - // are there any constraints to cut out? - if (preg_match('@CONSTRAINT|FOREIGN[\s]+KEY@', $create_query)) { - - // Split the query into lines, so we can easily handle it. - // We know lines are separated by $crlf (done few lines above). - $sql_lines = explode($crlf, $create_query); - $sql_count = count($sql_lines); - - // lets find first line with constraints - for ($i = 0; $i < $sql_count; $i++) { - if (preg_match( - '@^[\s]*(CONSTRAINT|FOREIGN[\s]+KEY)@', - $sql_lines[$i] - )) { - break; - } - } - - // If we really found a constraint - if ($i != $sql_count) { - - // remove, from the end of create statement - $sql_lines[$i - 1] = preg_replace( - '@,$@', - '', - $sql_lines[$i - 1] - ); - - // prepare variable for constraints - if (! isset($sql_constraints)) { - if (isset($GLOBALS['no_constraints_comments'])) { - $sql_constraints = ''; - } else { - $sql_constraints = $crlf - . $this->_exportComment() - . $this->_exportComment( - __('Constraints for dumped tables') - ) - . $this->_exportComment(); - } - } - - // comments for current table - if (! isset($GLOBALS['no_constraints_comments'])) { - $sql_constraints .= $crlf - . $this->_exportComment() - . $this->_exportComment( - __('Constraints for table') - . ' ' - . PMA_Util::backquoteCompat($table, $compat) - ) - . $this->_exportComment(); - } - - // let's do the work - $sql_constraints_query .= 'ALTER TABLE ' - . PMA_Util::backquoteCompat($table, $compat) - . $crlf; - $sql_constraints .= 'ALTER TABLE ' - . PMA_Util::backquoteCompat($table, $compat) - . $crlf; - $sql_drop_foreign_keys .= 'ALTER TABLE ' - . PMA_Util::backquoteCompat($db, $compat) . '.' - . PMA_Util::backquoteCompat($table, $compat) - . $crlf; - - $first = true; - for ($j = $i; $j < $sql_count; $j++) { - if (preg_match( - '@CONSTRAINT|FOREIGN[\s]+KEY@', - $sql_lines[$j] - )) { - if (! $first) { - $sql_constraints .= $crlf; - } - if (strpos($sql_lines[$j], 'CONSTRAINT') === false) { - $tmp_str = preg_replace( - '/(FOREIGN[\s]+KEY)/', - 'ADD \1', - $sql_lines[$j] - ); - $sql_constraints_query .= $tmp_str; - $sql_constraints .= $tmp_str; - } else { - $tmp_str = preg_replace( - '/(CONSTRAINT)/', - 'ADD \1', - $sql_lines[$j] - ); - $sql_constraints_query .= $tmp_str; - $sql_constraints .= $tmp_str; - preg_match( - '/(CONSTRAINT)([\s])([\S]*)([\s])/', - $sql_lines[$j], - $matches - ); - if (! $first) { - $sql_drop_foreign_keys .= ', '; - } - $sql_drop_foreign_keys .= 'DROP FOREIGN KEY ' - . $matches[3]; - } - $first = false; - } else { - break; - } - } - $sql_constraints .= ';' . $crlf; - $sql_constraints_query .= ';'; - - $create_query = implode( - $crlf, - array_slice($sql_lines, 0, $i) - ) - . $crlf - . implode( - $crlf, - array_slice($sql_lines, $j, $sql_count - 1) - ); - unset($sql_lines); - } - } - $schema_create .= $create_query; - } - - // remove a possible "AUTO_INCREMENT = value" clause - // that could be there starting with MySQL 5.0.24 - // in Drizzle it's useless as it contains the value given at table - // creation time - $schema_create = preg_replace( - '/AUTO_INCREMENT\s*=\s*([0-9])+/', - '', - $schema_create - ); - - $schema_create .= ($compat != 'MSSQL') ? $auto_increment : ''; - - $GLOBALS['dbi']->freeResult($result); - return $schema_create . ($add_semicolon ? ';' . $crlf : ''); - } // end of the 'getTableDef()' function - - /** - * Returns $table's comments, relations etc. - * - * @param string $db database name - * @param string $table table name - * @param string $crlf end of line sequence - * @param bool $do_relation whether to include relation comments - * @param bool $do_mime whether to include mime comments - * - * @return string resulting comments - */ - private function _getTableComments( - $db, - $table, - $crlf, - $do_relation = false, - $do_mime = false - ) { - global $cfgRelation, $sql_backquotes; - - $schema_create = ''; - - // Check if we can use Relations - if ($do_relation && ! empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if ($res_rel && count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - if ($do_mime && $cfgRelation['mimework']) { - if (! ($mime_map = PMA_getMIME($db, $table, true))) { - unset($mime_map); - } - } - - if (isset($mime_map) && count($mime_map) > 0) { - $schema_create .= $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment( - __('MIME TYPES FOR TABLE'). ' ' - . PMA_Util::backquote($table, $sql_backquotes) . ':' - ); - @reset($mime_map); - foreach ($mime_map as $mime_field => $mime) { - $schema_create .= - $this->_exportComment( - ' ' - . PMA_Util::backquote($mime_field, $sql_backquotes) - ) - . $this->_exportComment( - ' ' - . PMA_Util::backquote( - $mime['mimetype'], - $sql_backquotes - ) - ); - } - $schema_create .= $this->_exportComment(); - } - - if ($have_rel) { - $schema_create .= $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment( - __('RELATIONS FOR TABLE') . ' ' - . PMA_Util::backquote($table, $sql_backquotes) - . ':' - ); - foreach ($res_rel as $rel_field => $rel) { - $schema_create .= - $this->_exportComment( - ' ' - . PMA_Util::backquote($rel_field, $sql_backquotes) - ) - . $this->_exportComment( - ' ' - . PMA_Util::backquote( - $rel['foreign_table'], - $sql_backquotes - ) - . ' -> ' - . PMA_Util::backquote( - $rel['foreign_field'], - $sql_backquotes - ) - ); - } - $schema_create .= $this->_exportComment(); - } - - return $schema_create; - - } // end of the '_getTableComments()' function - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table','triggers','create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $relation whether to include relation comments - * @param bool $comments whether to include the pmadb-style column - * comments as comments in the structure; this is - * deprecated but the parameter is left here - * because export.php calls exportStructure() - * also for other export types which use this - * parameter - * @param bool $mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - public function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $relation = false, - $comments = false, - $mime = false, - $dates = false - ) { - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - - $formatted_table_name = (isset($GLOBALS['sql_backquotes'])) - ? PMA_Util::backquoteCompat($table, $compat) - : '\'' . $table . '\''; - $dump = $this->_possibleCRLF() - . $this->_exportComment(str_repeat('-', 56)) - . $this->_possibleCRLF() - . $this->_exportComment(); - - switch($export_mode) { - case 'create_table': - $dump .= $this->_exportComment( - __('Table structure for table') . ' '. $formatted_table_name - ); - $dump .= $this->_exportComment(); - $dump .= $this->getTableDef($db, $table, $crlf, $error_url, $dates); - $dump .= $this->_getTableComments($db, $table, $crlf, $relation, $mime); - break; - case 'triggers': - $dump = ''; - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - if ($triggers) { - $dump .= $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment( - __('Triggers') . ' ' . $formatted_table_name - ) - . $this->_exportComment(); - $delimiter = '//'; - foreach ($triggers as $trigger) { - $dump .= $trigger['drop'] . ';' . $crlf; - $dump .= 'DELIMITER ' . $delimiter . $crlf; - $dump .= $trigger['create']; - $dump .= 'DELIMITER ;' . $crlf; - } - } - break; - case 'create_view': - if (empty($GLOBALS['sql_views_as_tables'])) { - $dump .= - $this->_exportComment( - __('Structure for view') - . ' ' - . $formatted_table_name - ) - . $this->_exportComment(); - // delete the stand-in table previously created (if any) - if ($export_type != 'table') { - $dump .= 'DROP TABLE IF EXISTS ' - . PMA_Util::backquote($table) . ';' . $crlf; - } - $dump .= $this->getTableDef( - $db, $table, $crlf, $error_url, $dates, true, true - ); - } else { - $dump .= - $this->_exportComment( - sprintf( - __('Structure for view %s exported as a table'), - $formatted_table_name - ) - ) - . $this->_exportComment(); - // delete the stand-in table previously created (if any) - if ($export_type != 'table') { - $dump .= 'DROP TABLE IF EXISTS ' - . PMA_Util::backquote($table) . ';' . $crlf; - } - $dump .= $this->_getTableDefForView( - $db, $table, $crlf, true - ); - } - break; - case 'stand_in': - $dump .= - $this->_exportComment( - __('Stand-in structure for view') . ' ' . $formatted_table_name - ) - . $this->_exportComment(); - // export a stand-in definition to resolve view dependencies - $dump .= $this->getTableDefStandIn($db, $table, $crlf); - } // end switch - - // this one is built by getTableDef() to use in table copy/move - // but not in the case of export - unset($GLOBALS['sql_constraints_query']); - - return PMA_exportOutputHandler($dump); - } - - /** - * Outputs the content of a table in SQL format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $current_row, $sql_backquotes; - - if (isset($GLOBALS['sql_compatibility'])) { - $compat = $GLOBALS['sql_compatibility']; - } else { - $compat = 'NONE'; - } - - $formatted_table_name = (isset($GLOBALS['sql_backquotes'])) - ? PMA_Util::backquoteCompat($table, $compat) - : '\'' . $table . '\''; - - // Do not export data for a VIEW, unless asked to export the view as a table - // (For a VIEW, this is called only when exporting a single VIEW) - if (PMA_Table::isView($db, $table) - && empty($GLOBALS['sql_views_as_tables']) - ) { - $head = $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment('VIEW ' . ' ' . $formatted_table_name) - . $this->_exportComment(__('Data:') . ' ' . __('None')) - . $this->_exportComment() - . $this->_possibleCRLF(); - - if (! PMA_exportOutputHandler($head)) { - return false; - } - return true; - } - - // analyze the query to get the true column names, not the aliases - // (this fixes an undefined index, also if Complete inserts - // are used, we did not get the true column name in case of aliases) - $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($sql_query)); - - $result = $GLOBALS['dbi']->tryQuery( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - // a possible error: the table has crashed - $tmp_error = $GLOBALS['dbi']->getError(); - if ($tmp_error) { - return PMA_exportOutputHandler( - $this->_exportComment( - __('Error reading data:') . ' (' . $tmp_error . ')' - ) - ); - } - - if ($result != false) { - $fields_cnt = $GLOBALS['dbi']->numFields($result); - - // Get field information - $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); - $field_flags = array(); - for ($j = 0; $j < $fields_cnt; $j++) { - $field_flags[$j] = $GLOBALS['dbi']->fieldFlags($result, $j); - } - - for ($j = 0; $j < $fields_cnt; $j++) { - if (isset($analyzed_sql[0]['select_expr'][$j]['column'])) { - $field_set[$j] = PMA_Util::backquoteCompat( - $analyzed_sql[0]['select_expr'][$j]['column'], - $compat, - $sql_backquotes - ); - } else { - $field_set[$j] = PMA_Util::backquoteCompat( - $fields_meta[$j]->name, - $compat, - $sql_backquotes - ); - } - } - - if (isset($GLOBALS['sql_type']) - && $GLOBALS['sql_type'] == 'UPDATE' - ) { - // update - $schema_insert = 'UPDATE '; - if (isset($GLOBALS['sql_ignore'])) { - $schema_insert .= 'IGNORE '; - } - // avoid EOL blank - $schema_insert .= PMA_Util::backquoteCompat( - $table, - $compat, - $sql_backquotes - ) . ' SET'; - } else { - // insert or replace - if (isset($GLOBALS['sql_type']) - && $GLOBALS['sql_type'] == 'REPLACE' - ) { - $sql_command = 'REPLACE'; - } else { - $sql_command = 'INSERT'; - } - - // delayed inserts? - if (isset($GLOBALS['sql_delayed'])) { - $insert_delayed = ' DELAYED'; - } else { - $insert_delayed = ''; - } - - // insert ignore? - if (isset($GLOBALS['sql_type']) - && $GLOBALS['sql_type'] == 'INSERT' - && isset($GLOBALS['sql_ignore']) - ) { - $insert_delayed .= ' IGNORE'; - } - //truncate table before insert - if (isset($GLOBALS['sql_truncate']) - && $GLOBALS['sql_truncate'] - && $sql_command == 'INSERT' - ) { - $truncate = 'TRUNCATE TABLE ' - . PMA_Util::backquoteCompat( - $table, - $compat, - $sql_backquotes - ) . ";"; - $truncatehead = $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment( - __('Truncate table before insert') . ' ' - . $formatted_table_name - ) - . $this->_exportComment() - . $crlf; - PMA_exportOutputHandler($truncatehead); - PMA_exportOutputHandler($truncate); - } else { - $truncate = ''; - } - - // scheme for inserting fields - if ($GLOBALS['sql_insert_syntax'] == 'complete' - || $GLOBALS['sql_insert_syntax'] == 'both' - ) { - $fields = implode(', ', $field_set); - $schema_insert = $sql_command . $insert_delayed .' INTO ' - . PMA_Util::backquoteCompat( - $table, - $compat, - $sql_backquotes - ) - // avoid EOL blank - . ' (' . $fields . ') VALUES'; - } else { - $schema_insert = $sql_command . $insert_delayed .' INTO ' - . PMA_Util::backquoteCompat( - $table, - $compat, - $sql_backquotes - ) - . ' VALUES'; - } - } - - //\x08\\x09, not required - $search = array("\x00", "\x0a", "\x0d", "\x1a"); - $replace = array('\0', '\n', '\r', '\Z'); - $current_row = 0; - $query_size = 0; - if (($GLOBALS['sql_insert_syntax'] == 'extended' - || $GLOBALS['sql_insert_syntax'] == 'both') - && (! isset($GLOBALS['sql_type']) - || $GLOBALS['sql_type'] != 'UPDATE') - ) { - $separator = ','; - $schema_insert .= $crlf; - } else { - $separator = ';'; - } - - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - if ($current_row == 0) { - $head = $this->_possibleCRLF() - . $this->_exportComment() - . $this->_exportComment( - __('Dumping data for table') . ' ' - . $formatted_table_name - ) - . $this->_exportComment() - . $crlf; - if (! PMA_exportOutputHandler($head)) { - return false; - } - } - // We need to SET IDENTITY_INSERT ON for MSSQL - if (isset($GLOBALS['sql_compatibility']) - && $GLOBALS['sql_compatibility'] == 'MSSQL' - && $current_row == 0 - ) { - if (! PMA_exportOutputHandler( - 'SET IDENTITY_INSERT ' - . PMA_Util::backquoteCompat( - $table, - $compat - ) - . ' ON ;'.$crlf - )) { - return false; - } - } - $current_row++; - for ($j = 0; $j < $fields_cnt; $j++) { - // NULL - if (! isset($row[$j]) || is_null($row[$j])) { - $values[] = 'NULL'; - } elseif ($fields_meta[$j]->numeric - && $fields_meta[$j]->type != 'timestamp' - && ! $fields_meta[$j]->blob - ) { - // a number - // timestamp is numeric on some MySQL 4.1, BLOBs are - // sometimes numeric - $values[] = $row[$j]; - } elseif (stristr($field_flags[$j], 'BINARY') - && $fields_meta[$j]->blob - && isset($GLOBALS['sql_hex_for_blob']) - ) { - // a true BLOB - // - mysqldump only generates hex data when the --hex-blob - // option is used, for fields having the binary attribute - // no hex is generated - // - a TEXT field returns type blob but a real blob - // returns also the 'binary' flag - - // empty blobs need to be different, but '0' is also empty - // :-( - if (empty($row[$j]) && $row[$j] != '0') { - $values[] = '\'\''; - } else { - $values[] = '0x' . bin2hex($row[$j]); - } - } elseif ($fields_meta[$j]->type == 'bit') { - // detection of 'bit' works only on mysqli extension - $values[] = "b'" . PMA_Util::sqlAddSlashes( - PMA_Util::printableBitValue( - $row[$j], $fields_meta[$j]->length - ) - ) - . "'"; - } else { - // something else -> treat as a string - $values[] = '\'' - . str_replace( - $search, $replace, - PMA_Util::sqlAddSlashes($row[$j]) - ) - . '\''; - } // end if - } // end for - - // should we make update? - if (isset($GLOBALS['sql_type']) - && $GLOBALS['sql_type'] == 'UPDATE' - ) { - - $insert_line = $schema_insert; - for ($i = 0; $i < $fields_cnt; $i++) { - if (0 == $i) { - $insert_line .= ' '; - } - if ($i > 0) { - // avoid EOL blank - $insert_line .= ','; - } - $insert_line .= $field_set[$i] . ' = ' . $values[$i]; - } - - list($tmp_unique_condition, $tmp_clause_is_unique) - = PMA_Util::getUniqueCondition( - $result, - $fields_cnt, - $fields_meta, - $row - ); - $insert_line .= ' WHERE ' . $tmp_unique_condition; - unset($tmp_unique_condition, $tmp_clause_is_unique); - - } else { - - // Extended inserts case - if ($GLOBALS['sql_insert_syntax'] == 'extended' - || $GLOBALS['sql_insert_syntax'] == 'both' - ) { - if ($current_row == 1) { - $insert_line = $schema_insert . '(' - . implode(', ', $values) . ')'; - } else { - $insert_line = '(' . implode(', ', $values) . ')'; - $sql_max_size = $GLOBALS['sql_max_query_size']; - if (isset($sql_max_size) - && $sql_max_size > 0 - && $query_size + strlen($insert_line) > $sql_max_size - ) { - if (! PMA_exportOutputHandler(';' . $crlf)) { - return false; - } - $query_size = 0; - $current_row = 1; - $insert_line = $schema_insert . $insert_line; - } - } - $query_size += strlen($insert_line); - // Other inserts case - } else { - $insert_line = $schema_insert - . '(' - . implode(', ', $values) - . ')'; - } - } - unset($values); - - if (! PMA_exportOutputHandler( - ($current_row == 1 ? '' : $separator . $crlf) - . $insert_line - )) { - return false; - } - - } // end while - - if ($current_row > 0) { - if (! PMA_exportOutputHandler(';' . $crlf)) { - return false; - } - } - - // We need to SET IDENTITY_INSERT OFF for MSSQL - if (isset($GLOBALS['sql_compatibility']) - && $GLOBALS['sql_compatibility'] == 'MSSQL' - && $current_row > 0 - ) { - $outputSucceeded = PMA_exportOutputHandler( - $crlf . 'SET IDENTITY_INSERT ' - . PMA_Util::backquoteCompat($table, $compat) - . ' OFF;' . $crlf - ); - if (! $outputSucceeded) { - return false; - } - } - } // end if ($result != false) - $GLOBALS['dbi']->freeResult($result); - - return true; - } // end of the 'exportData()' function - - /** - * Make a create table statement compatible with MSSQL - * - * @param string $create_query MySQL create table statement - * - * @return string MSSQL compatible create table statement - */ - private function _makeCreateTableMSSQLCompatible($create_query) - { - // In MSSQL - // 1. No 'IF NOT EXISTS' in CREATE TABLE - // 2. DATE field doesn't exists, we will use DATETIME instead - // 3. UNSIGNED attribute doesn't exist - // 4. No length on INT, TINYINT, SMALLINT, BIGINT and no precision on - // FLOAT fields - // 5. No KEY and INDEX inside CREATE TABLE - // 6. DOUBLE field doesn't exists, we will use FLOAT instead - - $create_query = preg_replace( - "/^CREATE TABLE IF NOT EXISTS/", - 'CREATE TABLE', - $create_query - ); - // first we need to replace all lines ended with '" DATE ...,\n' - // last preg_replace preserve us from situation with date text - // inside DEFAULT field value - $create_query = preg_replace( - "/\" date DEFAULT NULL(,)?\n/", - '" datetime DEFAULT NULL$1' . "\n", - $create_query - ); - $create_query = preg_replace( - "/\" date NOT NULL(,)?\n/", - '" datetime NOT NULL$1' . "\n", - $create_query - ); - $create_query = preg_replace( - '/" date NOT NULL DEFAULT \'([^\'])/', - '" datetime NOT NULL DEFAULT \'$1', - $create_query - ); - - // next we need to replace all lines ended with ') UNSIGNED ...,' - // last preg_replace preserve us from situation with unsigned text - // inside DEFAULT field value - $create_query = preg_replace( - "/\) unsigned NOT NULL(,)?\n/", - ') NOT NULL$1' . "\n", - $create_query - ); - $create_query = preg_replace( - "/\) unsigned DEFAULT NULL(,)?\n/", - ') DEFAULT NULL$1' . "\n", - $create_query - ); - $create_query = preg_replace( - '/\) unsigned NOT NULL DEFAULT \'([^\'])/', - ') NOT NULL DEFAULT \'$1', - $create_query - ); - - // we need to replace all lines ended with - // '" INT|TINYINT([0-9]{1,}) ...,' last preg_replace preserve us - // from situation with int([0-9]{1,}) text inside DEFAULT field - // value - $create_query = preg_replace( - '/" (int|tinyint|smallint|bigint)\([0-9]+\) DEFAULT NULL(,)?\n/', - '" $1 DEFAULT NULL$2' . "\n", - $create_query - ); - $create_query = preg_replace( - '/" (int|tinyint|smallint|bigint)\([0-9]+\) NOT NULL(,)?\n/', - '" $1 NOT NULL$2' . "\n", - $create_query - ); - $create_query = preg_replace( - '/" (int|tinyint|smallint|bigint)\([0-9]+\) NOT NULL DEFAULT \'([^\'])/', - '" $1 NOT NULL DEFAULT \'$2', - $create_query - ); - - // we need to replace all lines ended with - // '" FLOAT|DOUBLE([0-9,]{1,}) ...,' - // last preg_replace preserve us from situation with - // float([0-9,]{1,}) text inside DEFAULT field value - $create_query = preg_replace( - '/" (float|double)(\([0-9]+,[0-9,]+\))? DEFAULT NULL(,)?\n/', - '" float DEFAULT NULL$3' . "\n", - $create_query - ); - $create_query = preg_replace( - '/" (float|double)(\([0-9,]+,[0-9,]+\))? NOT NULL(,)?\n/', - '" float NOT NULL$3' . "\n", - $create_query - ); - $create_query = preg_replace( - '/" (float|double)(\([0-9,]+,[0-9,]+\))? NOT NULL DEFAULT \'([^\'])/', - '" float NOT NULL DEFAULT \'$3', - $create_query - ); - - // @todo remove indexes from CREATE TABLE - - return $create_query; - } -} diff --git a/pma12111211/libraries/plugins/export/ExportTexytext.class.php b/pma12111211/libraries/plugins/export/ExportTexytext.class.php deleted file mode 100644 index 1e6efa0d..00000000 --- a/pma12111211/libraries/plugins/export/ExportTexytext.class.php +++ /dev/null @@ -1,576 +0,0 @@ -setProperties(); - } - - /** - * Sets the export Texy! text properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/RadioPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - include_once "$props/options/items/TextPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('Texy! text'); - $exportPluginProperties->setExtension('txt'); - $exportPluginProperties->setMimeType('text/plain'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // what to dump (structure/data/both) main group - $dumpWhat = new OptionsPropertyMainGroup(); - $dumpWhat->setName("general_opts"); - $dumpWhat->setText(__('Dump table')); - // create primary items and add them to the group - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $dumpWhat->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dumpWhat); - - // data options main group - $dataOptions = new OptionsPropertyMainGroup(); - $dataOptions->setName("data"); - $dataOptions->setText(__('Data dump options')); - $dataOptions->setForce('structure'); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Put columns names in the first row')); - $dataOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName('null'); - $leaf->setText(__('Replace NULL with:')); - $dataOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($dataOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return PMA_exportOutputHandler( - '===' . __('Database') . ' ' . $db . "\n\n" - ); - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - /** - * Outputs the content of a table in NHibernate format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - global $what; - - if (! PMA_exportOutputHandler( - '== ' . __('Dumping data for table') . ' ' . $table . "\n\n" - )) { - return false; - } - - // Gets the data from the database - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $fields_cnt = $GLOBALS['dbi']->numFields($result); - - // If required, get fields name at the first line - if (isset($GLOBALS[$what . '_columns'])) { - $text_output = "|------\n"; - for ($i = 0; $i < $fields_cnt; $i++) { - $text_output .= '|' - . htmlspecialchars( - stripslashes($GLOBALS['dbi']->fieldName($result, $i)) - ); - } // end for - $text_output .= "\n|------\n"; - if (! PMA_exportOutputHandler($text_output)) { - return false; - } - } // end if - - // Format the data - while ($row = $GLOBALS['dbi']->fetchRow($result)) { - $text_output = ''; - for ($j = 0; $j < $fields_cnt; $j++) { - if (! isset($row[$j]) || is_null($row[$j])) { - $value = $GLOBALS[$what . '_null']; - } elseif ($row[$j] == '0' || $row[$j] != '') { - $value = $row[$j]; - } else { - $value = ' '; - } - $text_output .= '|' - . str_replace( - '|', '|', htmlspecialchars($value) - ); - } // end for - $text_output .= "\n"; - if (! PMA_exportOutputHandler($text_output)) { - return false; - } - } // end while - $GLOBALS['dbi']->freeResult($result); - - return true; - } - - /** - * Returns a stand-in CREATE definition to resolve view dependencies - * - * @param string $db the database name - * @param string $view the view name - * @param string $crlf the end of line sequence - * - * @return string resulting definition - */ - function getTableDefStandIn($db, $view, $crlf) - { - $text_output = ''; - - /** - * Get the unique keys in the table - */ - $unique_keys = array(); - $keys = $GLOBALS['dbi']->getTableIndexes($db, $view); - foreach ($keys as $key) { - if ($key['Non_unique'] == 0) { - $unique_keys[] = $key['Column_name']; - } - } - - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - /** - * Displays the table structure - */ - - $text_output .= "|------\n" - . '|' . __('Column') - . '|' . __('Type') - . '|' . __('Null') - . '|' . __('Default') - . "\n|------\n"; - - $columns = $GLOBALS['dbi']->getColumns($db, $view); - foreach ($columns as $column) { - $text_output .= $this->formatOneColumnDefinition($column, $unique_keys); - $text_output .= "\n"; - } // end foreach - - return $text_output; - } - - /** - * Returns $table's CREATE definition - * - * @param string $db the database name - * @param string $table the table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * $this->exportStructure() also for other - * export types which use this parameter - * @param bool $do_mime whether to include mime comments - * @param bool $show_dates whether to include creation/update/check dates - * @param bool $add_semicolon whether to add semicolon and end-of-line - * at the end - * @param bool $view whether we're handling a view - * - * @return string resulting schema - */ - function getTableDef( - $db, - $table, - $crlf, - $error_url, - $do_relation, - $do_comments, - $do_mime, - $show_dates = false, - $add_semicolon = true, - $view = false - ) { - global $cfgRelation; - - $text_output = ''; - - /** - * Get the unique keys in the table - */ - $unique_keys = array(); - $keys = $GLOBALS['dbi']->getTableIndexes($db, $table); - foreach ($keys as $key) { - if ($key['Non_unique'] == 0) { - $unique_keys[] = $key['Column_name']; - } - } - - /** - * Gets fields properties - */ - $GLOBALS['dbi']->selectDb($db); - - // Check if we can use Relations - if ($do_relation && ! empty($cfgRelation['relation'])) { - // Find which tables are related with the current one and write it in - // an array - $res_rel = PMA_getForeigners($db, $table); - - if ($res_rel && count($res_rel) > 0) { - $have_rel = true; - } else { - $have_rel = false; - } - } else { - $have_rel = false; - } // end if - - /** - * Displays the table structure - */ - - $columns_cnt = 4; - if ($do_relation && $have_rel) { - $columns_cnt++; - } - if ($do_comments && $cfgRelation['commwork']) { - $columns_cnt++; - } - if ($do_mime && $cfgRelation['mimework']) { - $columns_cnt++; - } - - $text_output .= "|------\n"; - $text_output .= '|' . __('Column'); - $text_output .= '|' . __('Type'); - $text_output .= '|' . __('Null'); - $text_output .= '|' . __('Default'); - if ($do_relation && $have_rel) { - $text_output .= '|' . __('Links to'); - } - if ($do_comments) { - $text_output .= '|' . __('Comments'); - $comments = PMA_getComments($db, $table); - } - if ($do_mime && $cfgRelation['mimework']) { - $text_output .= '|' . htmlspecialchars('MIME'); - $mime_map = PMA_getMIME($db, $table, true); - } - $text_output .= "\n|------\n"; - - $columns = $GLOBALS['dbi']->getColumns($db, $table); - foreach ($columns as $column) { - $text_output .= $this->formatOneColumnDefinition($column, $unique_keys); - $field_name = $column['Field']; - - if ($do_relation && $have_rel) { - $text_output .= '|' - . (isset($res_rel[$field_name]) - ? htmlspecialchars( - $res_rel[$field_name]['foreign_table'] - . ' (' . $res_rel[$field_name]['foreign_field'] . ')' - ) - : ''); - } - if ($do_comments && $cfgRelation['commwork']) { - $text_output .= '|' - . (isset($comments[$field_name]) - ? htmlspecialchars($comments[$field_name]) - : ''); - } - if ($do_mime && $cfgRelation['mimework']) { - $text_output .= '|' - . (isset($mime_map[$field_name]) - ? htmlspecialchars( - str_replace('_', '/', $mime_map[$field_name]['mimetype']) - ) - : ''); - } - - $text_output .= "\n"; - } // end foreach - - return $text_output; - } // end of the '$this->getTableDef()' function - - /** - * Outputs triggers - * - * @param string $db database name - * @param string $table table name - * - * @return string Formatted triggers list - */ - function getTriggers($db, $table) - { - $text_output = "|------\n"; - $text_output .= '|' . __('Column'); - $dump = "|------\n"; - $dump .= '|' . __('Name'); - $dump .= '|' . __('Time'); - $dump .= '|' . __('Event'); - $dump .= '|' . __('Definition'); - $dump .= "\n|------\n"; - - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - - foreach ($triggers as $trigger) { - $dump .= '|' . $trigger['name']; - $dump .= '|' . $trigger['action_timing']; - $dump .= '|' . $trigger['event_manipulation']; - $dump .= '|' . - str_replace( - '|', - '|', - htmlspecialchars($trigger['definition']) - ); - $dump .= "\n"; - } - - return $dump; - } - - /** - * Outputs table's structure - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $export_mode 'create_table', 'triggers', 'create_view', - * 'stand_in' - * @param string $export_type 'server', 'database', 'table' - * @param bool $do_relation whether to include relation comments - * @param bool $do_comments whether to include the pmadb-style column - * comments as comments in the structure; - * this is deprecated but the parameter is - * left here because export.php calls - * $this->exportStructure() also for other - * export types which use this parameter - * @param bool $do_mime whether to include mime comments - * @param bool $dates whether to include creation/update/check dates - * - * @return bool Whether it succeeded - */ - function exportStructure( - $db, - $table, - $crlf, - $error_url, - $export_mode, - $export_type, - $do_relation = false, - $do_comments = false, - $do_mime = false, - $dates = false - ) { - $dump = ''; - - switch($export_mode) { - case 'create_table': - $dump .= '== ' . __('Table structure for table') . ' ' .$table . "\n\n"; - $dump .= $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, - $do_mime, $dates - ); - break; - case 'triggers': - $dump = ''; - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - if ($triggers) { - $dump .= '== ' . __('Triggers') . ' ' .$table . "\n\n"; - $dump .= $this->getTriggers($db, $table); - } - break; - case 'create_view': - $dump .= '== ' . __('Structure for view') . ' ' .$table . "\n\n"; - $dump .= $this->getTableDef( - $db, $table, $crlf, $error_url, $do_relation, $do_comments, - $do_mime, $dates, true, true - ); - break; - case 'stand_in': - $dump .= '== ' . __('Stand-in structure for view') - . ' ' .$table . "\n\n"; - // export a stand-in definition to resolve view dependencies - $dump .= $this->getTableDefStandIn($db, $table, $crlf); - } // end switch - - return PMA_exportOutputHandler($dump); - } - - /** - * Formats the definition for one column - * - * @param array $column info about this column - * @param array $unique_keys unique keys for this table - * - * @return string Formatted column definition - */ - function formatOneColumnDefinition( - $column, $unique_keys - ) { - $extracted_columnspec - = PMA_Util::extractColumnSpec($column['Type']); - $type = $extracted_columnspec['print_type']; - if (empty($type)) { - $type = ' '; - } - - if (! isset($column['Default'])) { - if ($column['Null'] != 'NO') { - $column['Default'] = 'NULL'; - } - } - - $fmt_pre = ''; - $fmt_post = ''; - if (in_array($column['Field'], $unique_keys)) { - $fmt_pre = '**' . $fmt_pre; - $fmt_post = $fmt_post . '**'; - } - if ($column['Key']=='PRI') { - $fmt_pre = '//' . $fmt_pre; - $fmt_post = $fmt_post . '//'; - } - $definition = '|' - . $fmt_pre . htmlspecialchars($column['Field']) . $fmt_post; - $definition .= '|' . htmlspecialchars($type); - $definition .= '|' - . (($column['Null'] == '' || $column['Null'] == 'NO') - ? __('No') : __('Yes')); - $definition .= '|' - . htmlspecialchars( - isset($column['Default']) ? $column['Default'] : '' - ); - return $definition; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/export/ExportXml.class.php b/pma12111211/libraries/plugins/export/ExportXml.class.php deleted file mode 100644 index e36b1103..00000000 --- a/pma12111211/libraries/plugins/export/ExportXml.class.php +++ /dev/null @@ -1,546 +0,0 @@ -setProperties(); - } - - /** - * Initialize the local variables that are used for export PDF - * - * @return void - */ - protected function initSpecificVariables() - { - global $table, $tables; - $this->_setTable($table); - $this->_setTables($tables); - } - - /** - * Sets the export XML properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - - // create the export plugin property item - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('XML'); - $exportPluginProperties->setExtension('xml'); - $exportPluginProperties->setMimeType('text/xml'); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // export structure main group - $structure = new OptionsPropertyMainGroup(); - $structure->setName("structure"); - $structure->setText(__('Object creation options (all are recommended)')); - // create primary items and add them to the group - if (! PMA_DRIZZLE) { - $leaf = new BoolPropertyItem(); - $leaf->setName("export_functions"); - $leaf->setText(__('Functions')); - $structure->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("export_procedures"); - $leaf->setText(__('Procedures')); - $structure->addProperty($leaf); - } - $leaf = new BoolPropertyItem(); - $leaf->setName("export_tables"); - $leaf->setText(__('Tables')); - $structure->addProperty($leaf); - if (! PMA_DRIZZLE) { - $leaf = new BoolPropertyItem(); - $leaf->setName("export_triggers"); - $leaf->setText(__('Triggers')); - $structure->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("export_views"); - $leaf->setText(__('Views')); - $structure->addProperty($leaf); - } - $exportSpecificOptions->addProperty($structure); - - // data main group - $data = new OptionsPropertyMainGroup(); - $data->setName("data"); - $data->setText(__('Data dump options')); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("export_contents"); - $leaf->setText(__('Export contents')); - $data->addProperty($leaf); - $exportSpecificOptions->addProperty($data); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header. It is the first method to be called, so all - * the required variables are initialized here. - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - $this->initSpecificVariables(); - global $crlf, $cfg, $db; - $table = $this->_getTable(); - $tables = $this->_getTables(); - - $export_struct = isset($GLOBALS['xml_export_functions']) - || isset($GLOBALS['xml_export_procedures']) - || isset($GLOBALS['xml_export_tables']) - || isset($GLOBALS['xml_export_triggers']) - || isset($GLOBALS['xml_export_views']); - $export_data = isset($GLOBALS['xml_export_contents']) ? true : false; - - if ($GLOBALS['output_charset_conversion']) { - $charset = $GLOBALS['charset_of_file']; - } else { - $charset = 'utf-8'; - } - - $head = '' . $crlf - . '' . $crlf . $crlf; - - $head .= '' . $crlf; - - if ($export_struct) { - if (PMA_DRIZZLE) { - $result = $GLOBALS['dbi']->fetchResult( - "SELECT - 'utf8' AS DEFAULT_CHARACTER_SET_NAME, - DEFAULT_COLLATION_NAME - FROM data_dictionary.SCHEMAS - WHERE SCHEMA_NAME = '" - . PMA_Util::sqlAddSlashes($db) . "'" - ); - } else { - $result = $GLOBALS['dbi']->fetchResult( - 'SELECT `DEFAULT_CHARACTER_SET_NAME`, `DEFAULT_COLLATION_NAME`' - . ' FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`' - . ' = \''.PMA_Util::sqlAddSlashes($db).'\' LIMIT 1' - ); - } - $db_collation = $result[0]['DEFAULT_COLLATION_NAME']; - $db_charset = $result[0]['DEFAULT_CHARACTER_SET_NAME']; - - $head .= ' ' . $crlf; - $head .= ' ' . $crlf; - $head .= ' ' . $crlf; - - if (count($tables) == 0) { - $tables[] = $table; - } - - foreach ($tables as $table) { - // Export tables and views - $result = $GLOBALS['dbi']->fetchResult( - 'SHOW CREATE TABLE ' . PMA_Util::backquote($db) . '.' - . PMA_Util::backquote($table), - 0 - ); - $tbl = $result[$table][1]; - - $is_view = PMA_Table::isView($db, $table); - - if ($is_view) { - $type = 'view'; - } else { - $type = 'table'; - } - - if ($is_view && ! isset($GLOBALS['xml_export_views'])) { - continue; - } - - if (! $is_view && ! isset($GLOBALS['xml_export_tables'])) { - continue; - } - - $head .= ' ' - . $crlf; - - $tbl = " " . htmlspecialchars($tbl); - $tbl = str_replace("\n", "\n ", $tbl); - - $head .= $tbl . ';' . $crlf; - $head .= ' ' . $crlf; - - if (isset($GLOBALS['xml_export_triggers']) - && $GLOBALS['xml_export_triggers'] - ) { - // Export triggers - $triggers = $GLOBALS['dbi']->getTriggers($db, $table); - if ($triggers) { - foreach ($triggers as $trigger) { - $code = $trigger['create']; - $head .= ' ' . $crlf; - - // Do some formatting - $code = substr(rtrim($code), 0, -3); - $code = " " . htmlspecialchars($code); - $code = str_replace("\n", "\n ", $code); - - $head .= $code . $crlf; - $head .= ' ' . $crlf; - } - - unset($trigger); - unset($triggers); - } - } - } - - if (isset($GLOBALS['xml_export_functions']) - && $GLOBALS['xml_export_functions'] - ) { - // Export functions - $functions = $GLOBALS['dbi']->getProceduresOrFunctions( - $db, 'FUNCTION' - ); - if ($functions) { - foreach ($functions as $function) { - $head .= ' ' . $crlf; - - // Do some formatting - $sql = $GLOBALS['dbi']->getDefinition( - $db, 'FUNCTION', $function - ); - $sql = rtrim($sql); - $sql = " " . htmlspecialchars($sql); - $sql = str_replace("\n", "\n ", $sql); - - $head .= $sql . $crlf; - $head .= ' ' . $crlf; - } - - unset($function); - unset($functions); - } - } - - if (isset($GLOBALS['xml_export_procedures']) - && $GLOBALS['xml_export_procedures'] - ) { - // Export procedures - $procedures = $GLOBALS['dbi']->getProceduresOrFunctions( - $db, 'PROCEDURE' - ); - if ($procedures) { - foreach ($procedures as $procedure) { - $head .= ' ' . $crlf; - - // Do some formatting - $sql = $GLOBALS['dbi']->getDefinition( - $db, 'PROCEDURE', $procedure - ); - $sql = rtrim($sql); - $sql = " " . htmlspecialchars($sql); - $sql = str_replace("\n", "\n ", $sql); - - $head .= $sql . $crlf; - $head .= ' ' . $crlf; - } - - unset($procedure); - unset($procedures); - } - } - - unset($result); - - $head .= ' ' . $crlf; - $head .= ' ' . $crlf; - - if ($export_data) { - $head .= $crlf; - } - } - - return PMA_exportOutputHandler($head); - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - $foot = ''; - - return PMA_exportOutputHandler($foot); - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - global $crlf; - - if (isset($GLOBALS['xml_export_contents']) - && $GLOBALS['xml_export_contents'] - ) { - $head = ' ' . $crlf - . ' ' . $crlf; - - return PMA_exportOutputHandler($head); - } else { - return true; - } - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - global $crlf; - - if (isset($GLOBALS['xml_export_contents']) - && $GLOBALS['xml_export_contents'] - ) { - return PMA_exportOutputHandler(' ' . $crlf); - } else { - return true; - } - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in XML format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData ($db, $table, $crlf, $error_url, $sql_query) - { - if (isset($GLOBALS['xml_export_contents']) - && $GLOBALS['xml_export_contents'] - ) { - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - - $columns_cnt = $GLOBALS['dbi']->numFields($result); - $columns = array(); - for ($i = 0; $i < $columns_cnt; $i++) { - $columns[$i] = stripslashes($GLOBALS['dbi']->fieldName($result, $i)); - } - unset($i); - - $buffer = ' ' . $crlf; - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - - while ($record = $GLOBALS['dbi']->fetchRow($result)) { - $buffer = ' ' . $crlf; - for ($i = 0; $i < $columns_cnt; $i++) { - // If a cell is NULL, still export it to preserve - // the XML structure - if (! isset($record[$i]) || is_null($record[$i])) { - $record[$i] = 'NULL'; - } - $buffer .= ' ' - . htmlspecialchars((string)$record[$i]) - . '' . $crlf; - } - $buffer .= '
            ' . $crlf; - - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - } - $GLOBALS['dbi']->freeResult($result); - } - - return true; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the table name - * - * @return string - */ - private function _getTable() - { - return $this->_table; - } - - /** - * Sets the table name - * - * @param string $table table name - * - * @return void - */ - private function _setTable($table) - { - $this->_table = $table; - } - - /** - * Gets the table names - * - * @return array - */ - private function _getTables() - { - return $this->_tables; - } - - /** - * Sets the table names - * - * @param array $tables table names - * - * @return void - */ - private function _setTables($tables) - { - $this->_tables = $tables; - } -} -?> diff --git a/pma12111211/libraries/plugins/export/ExportYaml.class.php b/pma12111211/libraries/plugins/export/ExportYaml.class.php deleted file mode 100644 index a59fb351..00000000 --- a/pma12111211/libraries/plugins/export/ExportYaml.class.php +++ /dev/null @@ -1,216 +0,0 @@ -setProperties(); - } - - /** - * Sets the export YAML properties - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ExportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/HiddenPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('YAML'); - $exportPluginProperties->setExtension('yml'); - $exportPluginProperties->setMimeType('text/yaml'); - $exportPluginProperties->setForceFile(true); - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new HiddenPropertyItem(); - $leaf->setName("structure_or_data"); - $generalOptions->addProperty($leaf); - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - PMA_exportOutputHandler( - '%YAML 1.1' . $GLOBALS['crlf'] . '---' . $GLOBALS['crlf'] - ); - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - PMA_exportOutputHandler('...' . $GLOBALS['crlf']); - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - return true; - } - - /** - * Outputs the content of a table in JSON format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - $result = $GLOBALS['dbi']->query( - $sql_query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - - $columns_cnt = $GLOBALS['dbi']->numFields($result); - for ($i = 0; $i < $columns_cnt; $i++) { - $columns[$i] = stripslashes($GLOBALS['dbi']->fieldName($result, $i)); - } - unset($i); - - $buffer = ''; - $record_cnt = 0; - while ($record = $GLOBALS['dbi']->fetchRow($result)) { - $record_cnt++; - - // Output table name as comment if this is the first record of the table - if ($record_cnt == 1) { - $buffer = '# ' . $db . '.' . $table . $crlf; - $buffer .= '-' . $crlf; - } else { - $buffer = '-' . $crlf; - } - - for ($i = 0; $i < $columns_cnt; $i++) { - if (! isset($record[$i])) { - continue; - } - - $column = $columns[$i]; - - if (is_null($record[$i])) { - $buffer .= ' ' . $column . ': null' . $crlf; - continue; - } - - if (is_numeric($record[$i])) { - $buffer .= ' ' . $column . ': ' . $record[$i] . $crlf; - continue; - } - - $record[$i] = str_replace( - array('\\', '"', "\n", "\r"), - array('\\\\', '\"', '\n', '\r'), - $record[$i] - ); - $buffer .= ' ' . $column . ': "' . $record[$i] . '"' . $crlf; - } - - if (! PMA_exportOutputHandler($buffer)) { - return false; - } - } - $GLOBALS['dbi']->freeResult($result); - - return true; - } // end getTableYAML -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/export/PMA_ExportPdf.class.php b/pma12111211/libraries/plugins/export/PMA_ExportPdf.class.php deleted file mode 100644 index 29c823d8..00000000 --- a/pma12111211/libraries/plugins/export/PMA_ExportPdf.class.php +++ /dev/null @@ -1,426 +0,0 @@ -y; - } - $current_page = $this->page; - if ((($y + $h) > $this->PageBreakTrigger) - AND (! $this->InFooter) - AND ($this->AcceptPageBreak()) - ) { - if ($addpage) { - //Automatic page break - $x = $this->x; - $this->AddPage($this->CurOrientation); - $this->y = $this->dataY; - $oldpage = $this->page - 1; - - $this_page_orm = $this->pagedim[$this->page]['orm']; - $old_page_orm = $this->pagedim[$oldpage]['orm']; - $this_page_olm = $this->pagedim[$this->page]['olm']; - $old_page_olm = $this->pagedim[$oldpage]['olm']; - if ($this->rtl) { - if ($this_page_orm!= $old_page_orm) { - $this->x = $x - ($this_page_orm - $old_page_orm); - } else { - $this->x = $x; - } - } else { - if ($this_page_olm != $old_page_olm) { - $this->x = $x + ($this_page_olm - $old_page_olm); - } else { - $this->x = $x; - } - } - } - return true; - } - if ($current_page != $this->page) { - // account for columns mode - return true; - } - return false; - } - - /** - * This method is used to render the page header. - * - * @return void - */ - function Header() - { - global $maxY; - // We don't want automatic page breaks while generating header - // as this can lead to infinite recursion as auto generated page - // will want header as well causing another page break - // FIXME: Better approach might be to try to compact the content - $this->SetAutoPageBreak(false); - // Check if header for this page already exists - if (! isset($this->headerset[$this->page])) { - $fullwidth = 0; - foreach ($this->tablewidths as $width) { - $fullwidth += $width; - } - $this->SetY(($this->tMargin) - ($this->FontSizePt / $this->k) * 5); - $this->cellFontSize = $this->FontSizePt ; - $this->SetFont( - PMA_PDF_FONT, - '', - ($this->titleFontSize - ? $this->titleFontSize - : $this->FontSizePt) - ); - $this->Cell(0, $this->FontSizePt, $this->titleText, 0, 1, 'C'); - $this->SetFont(PMA_PDF_FONT, '', $this->cellFontSize); - $this->SetY(($this->tMargin) - ($this->FontSizePt / $this->k) * 2.5); - $this->Cell( - 0, - $this->FontSizePt, - __('Database:') . ' ' . $this->currentDb . ', ' - . __('Table:') . ' ' . $this->currentTable, - 0, 1, 'L' - ); - $l = ($this->lMargin); - foreach ($this->colTitles as $col => $txt) { - $this->SetXY($l, ($this->tMargin)); - $this->MultiCell( - $this->tablewidths[$col], - $this->FontSizePt, - $txt - ); - $l += $this->tablewidths[$col] ; - $maxY = ($maxY < $this->getY()) ? $this->getY() : $maxY ; - } - $this->SetXY($this->lMargin, $this->tMargin); - $this->setFillColor(200, 200, 200); - $l = ($this->lMargin); - foreach ($this->colTitles as $col => $txt) { - $this->SetXY($l, $this->tMargin); - $this->cell( - $this->tablewidths[$col], - $maxY-($this->tMargin), - '', - 1, - 0, - 'L', - 1 - ); - $this->SetXY($l, $this->tMargin); - $this->MultiCell( - $this->tablewidths[$col], - $this->FontSizePt, - $txt, - 0, - 'C' - ); - $l += $this->tablewidths[$col]; - } - $this->setFillColor(255, 255, 255); - // set headerset - $this->headerset[$this->page] = 1; - } - - $this->dataY = $maxY; - $this->SetAutoPageBreak(true); - } - - /** - * Generate table - * - * @param int $lineheight Height of line - * - * @return void - */ - function morepagestable($lineheight = 8) - { - // some things to set and 'remember' - $l = $this->lMargin; - $startheight = $h = $this->dataY; - $startpage = $currpage = $this->page; - - // calculate the whole width - $fullwidth = 0; - foreach ($this->tablewidths as $width) { - $fullwidth += $width; - } - - // Now let's start to write the table - $row = 0; - $tmpheight = array(); - $maxpage = $this->page; - - while ($data = $GLOBALS['dbi']->fetchRow($this->results)) { - $this->page = $currpage; - // write the horizontal borders - $this->Line($l, $h, $fullwidth+$l, $h); - // write the content and remember the height of the highest col - foreach ($data as $col => $txt) { - $this->page = $currpage; - $this->SetXY($l, $h); - if ($this->tablewidths[$col] > 0) { - $this->MultiCell( - $this->tablewidths[$col], - $lineheight, - $txt, - 0, - $this->colAlign[$col] - ); - $l += $this->tablewidths[$col]; - } - - if (! isset($tmpheight[$row.'-'.$this->page])) { - $tmpheight[$row.'-'.$this->page] = 0; - } - if ($tmpheight[$row.'-'.$this->page] < $this->GetY()) { - $tmpheight[$row.'-'.$this->page] = $this->GetY(); - } - if ($this->page > $maxpage) { - $maxpage = $this->page; - } - unset($data[$col]); - } - - // get the height we were in the last used page - $h = $tmpheight[$row.'-'.$maxpage]; - // set the "pointer" to the left margin - $l = $this->lMargin; - // set the $currpage to the last page - $currpage = $maxpage; - unset($data[$row]); - $row++; - } - // draw the borders - // we start adding a horizontal line on the last page - $this->page = $maxpage; - $this->Line($l, $h, $fullwidth+$l, $h); - // now we start at the top of the document and walk down - for ($i = $startpage; $i <= $maxpage; $i++) { - $this->page = $i; - $l = $this->lMargin; - $t = ($i == $startpage) ? $startheight : $this->tMargin; - $lh = ($i == $maxpage) ? $h : $this->h-$this->bMargin; - $this->Line($l, $t, $l, $lh); - foreach ($this->tablewidths as $width) { - $l += $width; - $this->Line($l, $t, $l, $lh); - } - } - // set it to the last page, if not it'll cause some problems - $this->page = $maxpage; - } - - /** - * Sets a set of attributes. - * - * @param array $attr array containing the attributes - * - * @return void - */ - function setAttributes($attr = array()) - { - foreach ($attr as $key => $val) { - $this->$key = $val ; - } - } - - /** - * Defines the top margin. - * The method can be called before creating the first page. - * - * @param float $topMargin the margin - * - * @return void - */ - function setTopMargin($topMargin) - { - $this->tMargin = $topMargin; - } - - /** - * MySQL report - * - * @param string $query Query to execute - * - * @return void - */ - function mysqlReport($query) - { - unset($this->tablewidths); - unset($this->colTitles); - unset($this->titleWidth); - unset($this->colFits); - unset($this->display_column); - unset($this->colAlign); - - /** - * Pass 1 for column widths - */ - $this->results = $GLOBALS['dbi']->query( - $query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $this->numFields = $GLOBALS['dbi']->numFields($this->results); - $this->fields = $GLOBALS['dbi']->getFieldsMeta($this->results); - - // sColWidth = starting col width (an average size width) - $availableWidth = $this->w - $this->lMargin - $this->rMargin; - $this->sColWidth = $availableWidth / $this->numFields; - $totalTitleWidth = 0; - - // loop through results header and set initial - // col widths/ titles/ alignment - // if a col title is less than the starting col width, - // reduce that column size - $colFits = array(); - for ($i = 0; $i < $this->numFields; $i++) { - $stringWidth = $this->getstringwidth($this->fields[$i]->name) + 6 ; - // save the real title's width - $titleWidth[$i] = $stringWidth; - $totalTitleWidth += $stringWidth; - - // set any column titles less than the start width to - // the column title width - if ($stringWidth < $this->sColWidth) { - $colFits[$i] = $stringWidth ; - } - $this->colTitles[$i] = $this->fields[$i]->name; - $this->display_column[$i] = true; - - switch ($this->fields[$i]->type) { - case 'int': - $this->colAlign[$i] = 'R'; - break; - case 'blob': - case 'tinyblob': - case 'mediumblob': - case 'longblob': - /** - * @todo do not deactivate completely the display - * but show the field's name and [BLOB] - */ - if (stristr($this->fields[$i]->flags, 'BINARY')) { - $this->display_column[$i] = false; - unset($this->colTitles[$i]); - } - $this->colAlign[$i] = 'L'; - break; - default: - $this->colAlign[$i] = 'L'; - } - } - - // title width verification - if ($totalTitleWidth > $availableWidth) { - $adjustingMode = true; - } else { - $adjustingMode = false; - // we have enough space for all the titles at their - // original width so use the true title's width - foreach ($titleWidth as $key => $val) { - $colFits[$key] = $val; - } - } - - // loop through the data; any column whose contents - // is greater than the column size is resized - /** - * @todo force here a LIMIT to avoid reading all rows - */ - while ($row = $GLOBALS['dbi']->fetchRow($this->results)) { - foreach ($colFits as $key => $val) { - $stringWidth = $this->getstringwidth($row[$key]) + 6 ; - if ($adjustingMode && ($stringWidth > $this->sColWidth)) { - // any column whose data's width is bigger than - // the start width is now discarded - unset($colFits[$key]); - } else { - // if data's width is bigger than the current column width, - // enlarge the column (but avoid enlarging it if the - // data's width is very big) - if ($stringWidth > $val - && $stringWidth < ($this->sColWidth * 3) - ) { - $colFits[$key] = $stringWidth ; - } - } - } - } - - $totAlreadyFitted = 0; - foreach ($colFits as $key => $val) { - // set fitted columns to smallest size - $this->tablewidths[$key] = $val; - // to work out how much (if any) space has been freed up - $totAlreadyFitted += $val; - } - - if ($adjustingMode) { - $surplus = (sizeof($colFits) * $this->sColWidth) - $totAlreadyFitted; - $surplusToAdd = $surplus / ($this->numFields - sizeof($colFits)); - } else { - $surplusToAdd = 0; - } - - for ($i = 0; $i < $this->numFields; $i++) { - if (! in_array($i, array_keys($colFits))) { - $this->tablewidths[$i] = $this->sColWidth + $surplusToAdd; - } - if ($this->display_column[$i] == false) { - $this->tablewidths[$i] = 0; - } - } - - ksort($this->tablewidths); - - $GLOBALS['dbi']->freeResult($this->results); - - // Pass 2 - - $this->results = $GLOBALS['dbi']->query( - $query, null, PMA_DatabaseInterface::QUERY_UNBUFFERED - ); - $this->setY($this->tMargin); - $this->AddPage(); - $this->SetFont(PMA_PDF_FONT, '', 9); - $this->morepagestable($this->FontSizePt); - $GLOBALS['dbi']->freeResult($this->results); - - } // end of mysqlReport function - -} // end of PMA_Export_PDF class -?> diff --git a/pma12111211/libraries/plugins/export/README b/pma12111211/libraries/plugins/export/README deleted file mode 100644 index 68d5a26f..00000000 --- a/pma12111211/libraries/plugins/export/README +++ /dev/null @@ -1,276 +0,0 @@ -This directory holds export plugins for phpMyAdmin. Any new plugin should -basically follow the structure presented here. Official plugins need to -have str* messages with their definition in language files, but if you build -some plugins for your use, you can directly use texts in plugin. - -setProperties(); - } - - // optional - declare global variables and use getters later - /** - * Initialize the local variables that are used specific for export SQL - * - * @global type $global_variable_name - * [..] - * - * @return void - */ - protected function initSpecificVariables() - { - global $global_variable_name; - $this->_setGlobalVariableName($global_variable_name); - } - - /** - * Sets the export plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - // set properties - $props = 'libraries/properties/'; - // include the main class for properties for the export plug-ins - include_once "$props/plugins/ExportPluginProperties.class.php"; - // include the group properties classes - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - // include the needed single property items - include_once "$props/options/items/RadioPropertyItem.class.php"; - - $exportPluginProperties = new ExportPluginProperties(); - $exportPluginProperties->setText('[name]'); // the name of your plug-in - $exportPluginProperties->setExtension('[ext]'); // extension this plug-in can handle - $exportPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $exportPluginProperties - // this will be shown as "Format specific options" - $exportSpecificOptions = new OptionsPropertyRootGroup(); - $exportSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - - // optional : - // create primary items and add them to the group - // type - one of the classes listed in libraries/properties/options/items/ - // name - form element name - // text - description in GUI - // size - size of text element - // len - maximal size of input - // values - possible values of the item - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $generalOptions->addProperty($leaf); - - // add the main group to the root group - $exportSpecificOptions->addProperty($generalOptions); - - // set the options for the export plugin property item - $exportPluginProperties->setOptions($exportSpecificOptions); - $this->properties = $exportPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Outputs export header - * - * @return bool Whether it succeeded - */ - public function exportHeader () - { - // implementation - return true; - } - - /** - * Outputs export footer - * - * @return bool Whether it succeeded - */ - public function exportFooter () - { - // implementation - return true; - } - - /** - * Outputs database header - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBHeader ($db) - { - // implementation - return true; - } - - /** - * Outputs database footer - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBFooter ($db) - { - // implementation - return true; - } - - /** - * Outputs CREATE DATABASE statement - * - * @param string $db Database name - * - * @return bool Whether it succeeded - */ - public function exportDBCreate($db) - { - // implementation - return true; - } - - /** - * Outputs the content of a table in [Name] format - * - * @param string $db database name - * @param string $table table name - * @param string $crlf the end of line sequence - * @param string $error_url the url to go back in case of error - * @param string $sql_query SQL query for obtaining data - * - * @return bool Whether it succeeded - */ - public function exportData($db, $table, $crlf, $error_url, $sql_query) - { - // implementation; - return true; - } - - // optional - implement other methods defined in ExportPlugin.class.php: - // - exportRoutines() - // - exportStructure() - // - getTableDefStandIn() - // - getTriggers() - - // optional - implement other private methods in order to avoid - // having huge methods or avoid duplicate code. Make use of them - // as well as of the getters and setters declared both here - // and in the ExportPlugin class - - - // optional: - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Getter description - * - * @return type - */ - private function _getMyOptionalVariable() - { - return $this->_myOptionalVariable; - } - - /** - * Setter description - * - * @param type $my_optional_variable description - * - * @return void - */ - private function _setMyOptionalVariable($my_optional_variable) - { - $this->_myOptionalVariable = $my_optional_variable; - } - - /** - * Getter description - * - * @return type - */ - private function _getGlobalVariableName() - { - return $this->_globalVariableName; - } - - /** - * Setter description - * - * @param type $global_variable_name description - * - * @return void - */ - private function _setGlobalVariableName($global_variable_name) - { - $this->_globalVariableName = $global_variable_name; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/export/TableProperty.class.php b/pma12111211/libraries/plugins/export/TableProperty.class.php deleted file mode 100644 index cf7c6fcb..00000000 --- a/pma12111211/libraries/plugins/export/TableProperty.class.php +++ /dev/null @@ -1,286 +0,0 @@ -name = trim($row[0]); - $this->type = trim($row[1]); - $this->nullable = trim($row[2]); - $this->key = trim($row[3]); - $this->defaultValue = trim($row[4]); - $this->ext = trim($row[5]); - } - - /** - * Gets the pure type - * - * @return string type - */ - function getPureType() - { - $pos = strpos($this->type, "("); - if ($pos > 0) { - return substr($this->type, 0, $pos); - } - return $this->type; - } - - /** - * Tells whether the key is null or not - * - * @return bool true if the key is not null, false otherwise - */ - function isNotNull() - { - return $this->nullable == "NO" ? "true" : "false"; - } - - /** - * Tells whether the key is unique or not - * - * @return bool true if the key is unique, false otherwise - */ - function isUnique() - { - return $this->key == "PRI" || $this->key == "UNI" ? "true" : "false"; - } - - /** - * Gets the .NET primitive type - * - * @return string type - */ - function getDotNetPrimitiveType() - { - if (strpos($this->type, "int") === 0) { - return "int"; - } - if (strpos($this->type, "long") === 0) { - return "long"; - } - if (strpos($this->type, "char") === 0) { - return "string"; - } - if (strpos($this->type, "varchar") === 0) { - return "string"; - } - if (strpos($this->type, "text") === 0) { - return "string"; - } - if (strpos($this->type, "longtext") === 0) { - return "string"; - } - if (strpos($this->type, "tinyint") === 0) { - return "bool"; - } - if (strpos($this->type, "datetime") === 0) { - return "DateTime"; - } - return "unknown"; - } - - /** - * Gets the .NET object type - * - * @return string type - */ - function getDotNetObjectType() - { - if (strpos($this->type, "int") === 0) { - return "Int32"; - } - if (strpos($this->type, "long") === 0) { - return "Long"; - } - if (strpos($this->type, "char") === 0) { - return "String"; - } - if (strpos($this->type, "varchar") === 0) { - return "String"; - } - if (strpos($this->type, "text") === 0) { - return "String"; - } - if (strpos($this->type, "longtext") === 0) { - return "String"; - } - if (strpos($this->type, "tinyint") === 0) { - return "Boolean"; - } - if (strpos($this->type, "datetime") === 0) { - return "DateTime"; - } - return "Unknown"; - } - - /** - * Gets the index name - * - * @return string containing the name of the index - */ - function getIndexName() - { - if (strlen($this->key) > 0) { - return "index=\"" - . htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8') - . "\""; - } - return ""; - } - - /** - * Tells whether the key is primary or not - * - * @return bool true if the key is primary, false otherwise - */ - function isPK() - { - return $this->key=="PRI"; - } - - /** - * Formats a string for C# - * - * @param string $text string to be formatted - * - * @return string formatted text - */ - function formatCs($text) - { - $text = str_replace( - "#name#", - ExportCodegen::cgMakeIdentifier($this->name, false), - $text - ); - return $this->format($text); - } - - /** - * Formats a string for XML - * - * @param string $text string to be formatted - * - * @return string formatted text - */ - function formatXml($text) - { - $text = str_replace( - "#name#", - htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8'), - $text - ); - $text = str_replace( - "#indexName#", - $this->getIndexName(), - $text - ); - return $this->format($text); - } - - /** - * Formats a string - * - * @param string $text string to be formatted - * - * @return string formatted text - */ - function format($text) - { - $text = str_replace( - "#ucfirstName#", - ExportCodegen::cgMakeIdentifier($this->name), - $text - ); - $text = str_replace( - "#dotNetPrimitiveType#", - $this->getDotNetPrimitiveType(), - $text - ); - $text = str_replace( - "#dotNetObjectType#", - $this->getDotNetObjectType(), - $text - ); - $text = str_replace( - "#type#", - $this->getPureType(), - $text - ); - $text = str_replace( - "#notNull#", - $this->isNotNull(), - $text - ); - $text = str_replace( - "#unique#", - $this->isUnique(), - $text - ); - return $text; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/import/AbstractImportCsv.class.php b/pma12111211/libraries/plugins/import/AbstractImportCsv.class.php deleted file mode 100644 index fbc89176..00000000 --- a/pma12111211/libraries/plugins/import/AbstractImportCsv.class.php +++ /dev/null @@ -1,90 +0,0 @@ -setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $importPluginProperties - // this will be shown as "Format specific options" - $importSpecificOptions = new OptionsPropertyRootGroup(); - $importSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - - // create common items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("replace"); - $leaf->setText(__('Replace table data with file')); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("terminated"); - $leaf->setText(__('Columns separated with:')); - $leaf->setSize(2); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("enclosed"); - $leaf->setText(__('Columns enclosed with:')); - $leaf->setSize(2); - $leaf->setLen(2); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("escaped"); - $leaf->setText(__('Columns escaped with:')); - $leaf->setSize(2); - $leaf->setLen(2); - $generalOptions->addProperty($leaf); - $leaf = new TextPropertyItem(); - $leaf->setName("new_line"); - $leaf->setText(__('Lines terminated with:')); - $leaf->setSize(2); - $generalOptions->addProperty($leaf); - - // add the main group to the root group - $importSpecificOptions->addProperty($generalOptions); - - // set the options for the import plugin property item - $importPluginProperties->setOptions($importSpecificOptions); - $this->properties = $importPluginProperties; - - return $generalOptions; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/import/ImportCsv.class.php b/pma12111211/libraries/plugins/import/ImportCsv.class.php deleted file mode 100644 index 8e067d9d..00000000 --- a/pma12111211/libraries/plugins/import/ImportCsv.class.php +++ /dev/null @@ -1,608 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $this->_setAnalyze(false); - - if ($GLOBALS['plugin_param'] !== 'table') { - $this->_setAnalyze(true); - } - - $generalOptions = parent::setProperties(); - $this->properties->setText('CSV'); - $this->properties->setExtension('csv'); - - if ($GLOBALS['plugin_param'] !== 'table') { - $leaf = new BoolPropertyItem(); - $leaf->setName("col_names"); - $leaf->setText( - __( - 'The first line of the file contains the table column names' - . ' (if this is unchecked, the first line will become part' - . ' of the data)' - ) - ); - $generalOptions->addProperty($leaf); - } else { - $hint = new PMA_Message( - __( - 'If the data in each row of the file is not' - . ' in the same order as in the database, list the corresponding' - . ' column names here. Column names must be separated by commas' - . ' and not enclosed in quotations.' - ) - ); - $leaf = new TextPropertyItem(); - $leaf->setName("columns"); - $leaf->setText( - __('Column names: ') - . PMA_Util::showHint($hint) - ); - $generalOptions->addProperty($leaf); - } - - $leaf = new BoolPropertyItem(); - $leaf->setName("ignore"); - $leaf->setText(__('Do not abort on INSERT error')); - $generalOptions->addProperty($leaf); - - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $db, $table, $csv_terminated, $csv_enclosed, $csv_escaped, - $csv_new_line, $csv_columns, $err_url; - // $csv_replace and $csv_ignore should have been here, - // but we use directly from $_POST - global $error, $timeout_passed, $finished, $message; - - $replacements = array( - '\\n' => "\n", - '\\t' => "\t", - '\\r' => "\r", - ); - $csv_terminated = strtr($csv_terminated, $replacements); - $csv_enclosed = strtr($csv_enclosed, $replacements); - $csv_escaped = strtr($csv_escaped, $replacements); - $csv_new_line = strtr($csv_new_line, $replacements); - - $param_error = false; - if (strlen($csv_terminated) != 1) { - $message = PMA_Message::error( - __('Invalid parameter for CSV import: %s') - ); - $message->addParam(__('Columns terminated with'), false); - $error = true; - $param_error = true; - // The default dialog of MS Excel when generating a CSV produces a - // semi-colon-separated file with no chance of specifying the - // enclosing character. Thus, users who want to import this file - // tend to remove the enclosing character on the Import dialog. - // I could not find a test case where having no enclosing characters - // confuses this script. - // But the parser won't work correctly with strings so we allow just - // one character. - } elseif (strlen($csv_enclosed) > 1) { - $message = PMA_Message::error( - __('Invalid parameter for CSV import: %s') - ); - $message->addParam(__('Columns enclosed with'), false); - $error = true; - $param_error = true; - } elseif (strlen($csv_escaped) != 1) { - $message = PMA_Message::error( - __('Invalid parameter for CSV import: %s') - ); - $message->addParam(__('Columns escaped with'), false); - $error = true; - $param_error = true; - } elseif (strlen($csv_new_line) != 1 && $csv_new_line != 'auto') { - $message = PMA_Message::error( - __('Invalid parameter for CSV import: %s') - ); - $message->addParam(__('Lines terminated with'), false); - $error = true; - $param_error = true; - } - - // If there is an error in the parameters entered, - // indicate that immediately. - if ($param_error) { - PMA_Util::mysqlDie($message->getMessage(), '', '', $err_url); - } - - $buffer = ''; - $required_fields = 0; - - if (! $this->_getAnalyze()) { - if (isset($_POST['csv_replace'])) { - $sql_template = 'REPLACE'; - } else { - $sql_template = 'INSERT'; - if (isset($_POST['csv_ignore'])) { - $sql_template .= ' IGNORE'; - } - } - $sql_template .= ' INTO ' . PMA_Util::backquote($table); - - $tmp_fields = $GLOBALS['dbi']->getColumns($db, $table); - - if (empty($csv_columns)) { - $fields = $tmp_fields; - } else { - $sql_template .= ' ('; - $fields = array(); - $tmp = preg_split('/,( ?)/', $csv_columns); - foreach ($tmp as $key => $val) { - if (count($fields) > 0) { - $sql_template .= ', '; - } - /* Trim also `, if user already included backquoted fields */ - $val = trim($val, " \t\r\n\0\x0B`"); - $found = false; - foreach ($tmp_fields as $field) { - if ($field['Field'] == $val) { - $found = true; - break; - } - } - if (! $found) { - $message = PMA_Message::error( - __( - 'Invalid column (%s) specified! Ensure that columns' - . ' names are spelled correctly, separated by commas' - . ', and not enclosed in quotes.' - ) - ); - $message->addParam($val); - $error = true; - break; - } - $fields[] = $field; - $sql_template .= PMA_Util::backquote($val); - } - $sql_template .= ') '; - } - - $required_fields = count($fields); - - $sql_template .= ' VALUES ('; - } - - // Defaults for parser - $i = 0; - $len = 0; - $lastlen = null; - $line = 1; - $lasti = -1; - $values = array(); - $csv_finish = false; - - $tempRow = array(); - $rows = array(); - $col_names = array(); - $tables = array(); - - $col_count = 0; - $max_cols = 0; - - while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) { - $data = PMA_importGetNextChunk(); - if ($data === false) { - // subtract data we didn't handle yet and stop processing - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - // Handle rest of buffer - } else { - // Append new data to buffer - $buffer .= $data; - unset($data); - - // Force a trailing new line at EOF to prevent parsing problems - if ($finished && $buffer) { - $finalch = substr($buffer, -1); - if ($csv_new_line == 'auto' - && $finalch != "\r" - && $finalch != "\n" - ) { - $buffer .= "\n"; - } elseif ($csv_new_line != 'auto' - && $finalch != $csv_new_line - ) { - $buffer .= $csv_new_line; - } - } - - // Do not parse string when we're not at the end - // and don't have new line inside - if (($csv_new_line == 'auto' - && strpos($buffer, "\r") === false - && strpos($buffer, "\n") === false) - || ($csv_new_line != 'auto' - && strpos($buffer, $csv_new_line) === false) - ) { - continue; - } - } - - // Current length of our buffer - $len = strlen($buffer); - // Currently parsed char - $ch = $buffer[$i]; - while ($i < $len) { - // Deadlock protection - if ($lasti == $i && $lastlen == $len) { - $message = PMA_Message::error( - __('Invalid format of CSV input on line %d.') - ); - $message->addParam($line); - $error = true; - break; - } - $lasti = $i; - $lastlen = $len; - - // This can happen with auto EOL and \r at the end of buffer - if (! $csv_finish) { - // Grab empty field - if ($ch == $csv_terminated) { - if ($i == $len - 1) { - break; - } - $values[] = ''; - $i++; - $ch = $buffer[$i]; - continue; - } - - // Grab one field - $fallbacki = $i; - if ($ch == $csv_enclosed) { - if ($i == $len - 1) { - break; - } - $need_end = true; - $i++; - $ch = $buffer[$i]; - } else { - $need_end = false; - } - $fail = false; - $value = ''; - while (($need_end - && ( $ch != $csv_enclosed || $csv_enclosed == $csv_escaped )) - || ( ! $need_end - && ! ( $ch == $csv_terminated - || $ch == $csv_new_line - || ( $csv_new_line == 'auto' - && ( $ch == "\r" || $ch == "\n" ) ) ) ) - ) { - if ($ch == $csv_escaped) { - if ($i == $len - 1) { - $fail = true; - break; - } - $i++; - $ch = $buffer[$i]; - if ($csv_enclosed == $csv_escaped - && ($ch == $csv_terminated - || $ch == $csv_new_line - || ($csv_new_line == 'auto' - && ($ch == "\r" || $ch == "\n"))) - ) { - break; - } - } - $value .= $ch; - if ($i == $len - 1) { - if (! $finished) { - $fail = true; - } - break; - } - $i++; - $ch = $buffer[$i]; - } - - // unquoted NULL string - if (false === $need_end && $value === 'NULL') { - $value = null; - } - - if ($fail) { - $i = $fallbacki; - $ch = $buffer[$i]; - break; - } - // Need to strip trailing enclosing char? - if ($need_end && $ch == $csv_enclosed) { - if ($finished && $i == $len - 1) { - $ch = null; - } elseif ($i == $len - 1) { - $i = $fallbacki; - $ch = $buffer[$i]; - break; - } else { - $i++; - $ch = $buffer[$i]; - } - } - // Are we at the end? - if ($ch == $csv_new_line - || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n")) - || ($finished && $i == $len - 1) - ) { - $csv_finish = true; - } - // Go to next char - if ($ch == $csv_terminated) { - if ($i == $len - 1) { - $i = $fallbacki; - $ch = $buffer[$i]; - break; - } - $i++; - $ch = $buffer[$i]; - } - // If everything went okay, store value - $values[] = $value; - } - - // End of line - if ($csv_finish - || $ch == $csv_new_line - || ($csv_new_line == 'auto' && ($ch == "\r" || $ch == "\n")) - ) { - if ($csv_new_line == 'auto' && $ch == "\r") { // Handle "\r\n" - if ($i >= ($len - 2) && ! $finished) { - break; // We need more data to decide new line - } - if ($buffer[$i + 1] == "\n") { - $i++; - } - } - // We didn't parse value till the end of line, so there was - // empty one - if (! $csv_finish) { - $values[] = ''; - } - - if ($this->_getAnalyze()) { - foreach ($values as $val) { - $tempRow[] = $val; - ++$col_count; - } - - if ($col_count > $max_cols) { - $max_cols = $col_count; - } - $col_count = 0; - - $rows[] = $tempRow; - $tempRow = array(); - } else { - // Do we have correct count of values? - if (count($values) != $required_fields) { - - // Hack for excel - if ($values[count($values) - 1] == ';') { - unset($values[count($values) - 1]); - } else { - $message = PMA_Message::error( - __( - 'Invalid column count in CSV input' - . ' on line %d.' - ) - ); - $message->addParam($line); - $error = true; - break; - } - } - - $first = true; - $sql = $sql_template; - foreach ($values as $key => $val) { - if (! $first) { - $sql .= ', '; - } - if ($val === null) { - $sql .= 'NULL'; - } else { - $sql .= '\'' - . PMA_Util::sqlAddSlashes($val) - . '\''; - } - - $first = false; - } - $sql .= ')'; - - /** - * @todo maybe we could add original line to verbose - * SQL in comment - */ - PMA_importRunQuery($sql, $sql); - } - - $line++; - $csv_finish = false; - $values = array(); - $buffer = substr($buffer, $i + 1); - $len = strlen($buffer); - $i = 0; - $lasti = -1; - $ch = $buffer[0]; - } - } // End of parser loop - } // End of import loop - - if ($this->_getAnalyze()) { - /* Fill out all rows */ - $num_rows = count($rows); - for ($i = 0; $i < $num_rows; ++$i) { - for ($j = count($rows[$i]); $j < $max_cols; ++$j) { - $rows[$i][] = 'NULL'; - } - } - - if (isset($_REQUEST['csv_col_names'])) { - $col_names = array_splice($rows, 0, 1); - $col_names = $col_names[0]; - } - - if ((isset($col_names) && count($col_names) != $max_cols) - || ! isset($col_names) - ) { - // Fill out column names - for ($i = 0; $i < $max_cols; ++$i) { - $col_names[] = 'COL '.($i+1); - } - } - - if (strlen($db)) { - $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); - $tbl_name = 'TABLE '.(count($result) + 1); - } else { - $tbl_name = 'TBL_NAME'; - } - - $tables[] = array($tbl_name, $col_names, $rows); - - /* Obtain the best-fit MySQL types for each column */ - $analyses = array(); - $analyses[] = PMA_analyzeTable($tables[0]); - - /** - * string $db_name (no backquotes) - * - * array $table = array(table_name, array() column_names, array()() rows) - * array $tables = array of "$table"s - * - * array $analysis = array(array() column_types, array() column_sizes) - * array $analyses = array of "$analysis"s - * - * array $create = array of SQL strings - * - * array $options = an associative array of options - */ - - /* Set database name to the currently selected one, if applicable */ - if (strlen($db)) { - $db_name = $db; - $options = array('create_db' => false); - } else { - $db_name = 'CSV_DB'; - $options = null; - } - - /* Non-applicable parameters */ - $create = null; - - /* Created and execute necessary SQL statements from data */ - PMA_buildSQL($db_name, $tables, $analyses, $create, $options); - - unset($tables); - unset($analyses); - } - - // Commit any possible data in buffers - PMA_importRunQuery(); - - if (count($values) != 0 && ! $error) { - $message = PMA_Message::error( - __('Invalid format of CSV input on line %d.') - ); - $message->addParam($line); - $error = true; - } - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Returns true if the table should be analyzed, false otherwise - * - * @return bool - */ - private function _getAnalyze() - { - return $this->_analyze; - } - - /** - * Sets to true if the table should be analyzed, false otherwise - * - * @param bool $analyze status - * - * @return void - */ - private function _setAnalyze($analyze) - { - $this->_analyze = $analyze; - } -} diff --git a/pma12111211/libraries/plugins/import/ImportLdi.class.php b/pma12111211/libraries/plugins/import/ImportLdi.class.php deleted file mode 100644 index 1277938b..00000000 --- a/pma12111211/libraries/plugins/import/ImportLdi.class.php +++ /dev/null @@ -1,174 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - if ($GLOBALS['cfg']['Import']['ldi_local_option'] == 'auto') { - $GLOBALS['cfg']['Import']['ldi_local_option'] = false; - - $result = $GLOBALS['dbi']->tryQuery( - 'SHOW VARIABLES LIKE \'local\\_infile\';' - ); - if ($result != false && $GLOBALS['dbi']->numRows($result) > 0) { - $tmp = $GLOBALS['dbi']->fetchRow($result); - if ($tmp[1] == 'ON') { - $GLOBALS['cfg']['Import']['ldi_local_option'] = true; - } - } - $GLOBALS['dbi']->freeResult($result); - unset($result); - } - - $generalOptions = parent::setProperties(); - $this->properties->setText('CSV using LOAD DATA'); - $this->properties->setExtension('ldi'); - - $leaf = new TextPropertyItem(); - $leaf->setName("columns"); - $leaf->setText(__('Column names: ')); - $generalOptions->addProperty($leaf); - - $leaf = new BoolPropertyItem(); - $leaf->setName("ignore"); - $leaf->setText(__('Do not abort on INSERT error')); - $generalOptions->addProperty($leaf); - - $leaf = new BoolPropertyItem(); - $leaf->setName("local_option"); - $leaf->setText(__('Use LOCAL keyword')); - $generalOptions->addProperty($leaf); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $finished, $import_file, $compression, $charset_conversion, $table; - global $ldi_local_option, $ldi_replace, $ldi_ignore, $ldi_terminated, - $ldi_enclosed, $ldi_escaped, $ldi_new_line, $skip_queries, $ldi_columns; - - if ($import_file == 'none' - || $compression != 'none' - || $charset_conversion - ) { - // We handle only some kind of data! - $GLOBALS['message'] = PMA_Message::error( - __('This plugin does not support compressed imports!') - ); - $GLOBALS['error'] = true; - return; - } - - $sql = 'LOAD DATA'; - if (isset($ldi_local_option)) { - $sql .= ' LOCAL'; - } - $sql .= ' INFILE \'' . PMA_Util::sqlAddSlashes($import_file) . '\''; - if (isset($ldi_replace)) { - $sql .= ' REPLACE'; - } elseif (isset($ldi_ignore)) { - $sql .= ' IGNORE'; - } - $sql .= ' INTO TABLE ' . PMA_Util::backquote($table); - - if (strlen($ldi_terminated) > 0) { - $sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\''; - } - if (strlen($ldi_enclosed) > 0) { - $sql .= ' ENCLOSED BY \'' - . PMA_Util::sqlAddSlashes($ldi_enclosed) . '\''; - } - if (strlen($ldi_escaped) > 0) { - $sql .= ' ESCAPED BY \'' - . PMA_Util::sqlAddSlashes($ldi_escaped) . '\''; - } - if (strlen($ldi_new_line) > 0) { - if ($ldi_new_line == 'auto') { - $ldi_new_line - = (PMA_Util::whichCrlf() == "\n") - ? '\n' - : '\r\n'; - } - $sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\''; - } - if ($skip_queries > 0) { - $sql .= ' IGNORE ' . $skip_queries . ' LINES'; - $skip_queries = 0; - } - if (strlen($ldi_columns) > 0) { - $sql .= ' ('; - $tmp = preg_split('/,( ?)/', $ldi_columns); - $cnt_tmp = count($tmp); - for ($i = 0; $i < $cnt_tmp; $i++) { - if ($i > 0) { - $sql .= ', '; - } - /* Trim also `, if user already included backquoted fields */ - $sql .= PMA_Util::backquote( - trim($tmp[$i], " \t\r\n\0\x0B`") - ); - } // end for - $sql .= ')'; - } - - PMA_importRunQuery($sql, $sql); - PMA_importRunQuery(); - $finished = true; - } -} diff --git a/pma12111211/libraries/plugins/import/ImportMediawiki.class.php b/pma12111211/libraries/plugins/import/ImportMediawiki.class.php deleted file mode 100644 index b7cd3beb..00000000 --- a/pma12111211/libraries/plugins/import/ImportMediawiki.class.php +++ /dev/null @@ -1,573 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $this->_setAnalyze(false); - if ($GLOBALS['plugin_param'] !== 'table') { - $this->_setAnalyze(true); - } - - $props = 'libraries/properties/'; - include_once "$props/plugins/ImportPluginProperties.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText(__('MediaWiki Table')); - $importPluginProperties->setExtension('txt'); - $importPluginProperties->setMimeType('text/plain'); - $importPluginProperties->setOptions(array()); - $importPluginProperties->setOptionsText(__('Options')); - - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $error, $timeout_passed, $finished; - - // Defaults for parser - - // The buffer that will be used to store chunks read from the imported file - $buffer = ''; - - // Used as storage for the last part of the current chunk data - // Will be appended to the first line of the next chunk, if there is one - $last_chunk_line = ''; - - // Remembers whether the current buffer line is part of a comment - $inside_comment = false; - // Remembers whether the current buffer line is part of a data comment - $inside_data_comment = false; - // Remembers whether the current buffer line is part of a structure comment - $inside_structure_comment = false; - - // MediaWiki only accepts "\n" as row terminator - $mediawiki_new_line = "\n"; - - // Initialize the name of the current table - $cur_table_name = ""; - - while (! $finished && ! $error && ! $timeout_passed ) { - $data = PMA_importGetNextChunk(); - - if ($data === false) { - // Subtract data we didn't handle yet and stop processing - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - // Handle rest of buffer - } else { - // Append new data to buffer - $buffer = $data; - unset($data); - // Don't parse string if we're not at the end - // and don't have a new line inside - if ( strpos($buffer, $mediawiki_new_line) === false ) { - continue; - } - } - - // Because of reading chunk by chunk, the first line from the buffer - // contains only a portion of an actual line from the imported file. - // Therefore, we have to append it to the last line from the previous - // chunk. If we are at the first chunk, $last_chunk_line should be empty. - $buffer = $last_chunk_line . $buffer; - - // Process the buffer line by line - $buffer_lines = explode($mediawiki_new_line, $buffer); - - $full_buffer_lines_count = count($buffer_lines); - // If the reading is not finalised, the final line of the current chunk - // will not be complete - if (! $finished) { - $full_buffer_lines_count -= 1; - $last_chunk_line = $buffer_lines[$full_buffer_lines_count]; - } - - for ($line_nr = 0; $line_nr < $full_buffer_lines_count; ++ $line_nr) { - $cur_buffer_line = trim($buffer_lines[$line_nr]); - - // If the line is empty, go to the next one - if ( $cur_buffer_line === '' ) { - continue; - } - - $first_character = $cur_buffer_line[0]; - $matches = array(); - - // Check beginnning of comment - if (! strcmp(substr($cur_buffer_line, 0, 4), "")) { - // Only data comments are closed. The structure comments - // will be closed when a data comment begins (in order to - // skip structure tables) - if ($inside_data_comment) { - $inside_data_comment = false; - } - - // End comments that are not related to table structure - if (! $inside_structure_comment) { - $inside_comment = false; - } - } else { - // Check table name - $match_table_name = array(); - if (preg_match( - "/^Table data for `(.*)`$/", - $cur_buffer_line, - $match_table_name - ) - ) { - $cur_table_name = $match_table_name[1]; - $inside_data_comment = true; - - // End ignoring structure rows - if ($inside_structure_comment) { - $inside_structure_comment = false; - } - } elseif (preg_match( - "/^Table structure for `(.*)`$/", - $cur_buffer_line, - $match_table_name - ) - ) { - // The structure comments will be ignored - $inside_structure_comment = true; - } - } - continue; - } elseif (preg_match('/^\{\|(.*)$/', $cur_buffer_line, $matches)) { - // Check start of table - - // This will store all the column info on all rows from - // the current table read from the buffer - $cur_temp_table = array(); - - // Will be used as storage for the current row in the buffer - // Once all its columns are read, it will be added to - // $cur_temp_table and then it will be emptied - $cur_temp_line = array(); - - // Helps us differentiate the header columns - // from the normal columns - $in_table_header = false; - // End processing because the current line does not - // contain any column information - } elseif (substr($cur_buffer_line, 0, 2) === '|-' - || substr($cur_buffer_line, 0, 2) === '|+' - || substr($cur_buffer_line, 0, 2) === '|}' - ) { - // Check begin row or end table - - // Add current line to the values storage - if (! empty($cur_temp_line)) { - // If the current line contains header cells - // ( marked with '!' ), - // it will be marked as table header - if ( $in_table_header ) { - // Set the header columns - $cur_temp_table_headers = $cur_temp_line; - } else { - // Normal line, add it to the table - $cur_temp_table [] = $cur_temp_line; - } - } - - // Empty the temporary buffer - $cur_temp_line = array(); - - // No more processing required at the end of the table - if (substr($cur_buffer_line, 0, 2) === '|}') { - $current_table = array( - $cur_table_name, - $cur_temp_table_headers, - $cur_temp_table - ); - - // Import the current table data into the database - $this->_importDataOneTable($current_table); - - // Reset table name - $cur_table_name = ""; - } - // What's after the row tag is now only attributes - - } elseif (($first_character === '|') || ($first_character === '!')) { - // Check cell elements - - // Header cells - if ($first_character === '!') { - // Mark as table header, but treat as normal row - $cur_buffer_line = str_replace('!!', '||', $cur_buffer_line); - // Will be used to set $cur_temp_line as table header - $in_table_header = true; - } else { - $in_table_header = false; - } - - // Loop through each table cell - $cells = $this->_explodeMarkup($cur_buffer_line); - foreach ($cells as $cell) { - // A cell could contain both parameters and data - $cell_data = explode('|', $cell, 2); - - // A '|' inside an invalid link should not - // be mistaken as delimiting cell parameters - if (strpos($cell_data[0], '[[') === true ) { - if (count($cell_data) == 1) { - $cell = $cell_data[0]; - } else { - $cell = $cell_data[1]; - } - } - - // Delete the beginning of the column, if there is one - $cell = trim($cell); - $col_start_chars = array( "|", "!"); - foreach ($col_start_chars as $col_start_char) { - if (strpos($cell, $col_start_char) === 0) { - $cell = trim(substr($cell, 1)); - } - } - - // Add the cell to the row - $cur_temp_line [] = $cell; - } // foreach $cells - } else { - // If it's none of the above, then the current line has a bad - // format - $message = PMA_Message::error( - __('Invalid format of mediawiki input on line:
            %s.') - ); - $message->addParam($cur_buffer_line); - $error = true; - } - } // End treating full buffer lines - } // while - finished parsing buffer - } - - /** - * Imports data from a single table - * - * @param array $table containing all table info: - * - * $table[0] - string containing table name - * $table[1] - array[] of table headers - * $table[2] - array[][] of table content rows - * - * - * @global bool $analyze whether to scan for column types - * - * @return void - */ - private function _importDataOneTable ($table) - { - $analyze = $this->_getAnalyze(); - if ($analyze) { - // Set the table name - $this->_setTableName($table[0]); - - // Set generic names for table headers if they don't exist - $this->_setTableHeaders($table[1], $table[2][0]); - - // Create the tables array to be used in PMA_buildSQL() - $tables = array(); - $tables [] = array($table[0], $table[1], $table[2]); - - // Obtain the best-fit MySQL types for each column - $analyses = array(); - $analyses [] = PMA_analyzeTable($tables[0]); - - $this->_executeImportTables($tables, $analyses); - } - - // Commit any possible data in buffers - PMA_importRunQuery(); - } - - /** - * Sets the table name - * - * @param string &$table_name reference to the name of the table - * - * @return void - */ - private function _setTableName(&$table_name) - { - if (empty($table_name)) { - $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); - // todo check if the name below already exists - $table_name = 'TABLE '.(count($result) + 1); - } - } - - /** - * Set generic names for table headers, if they don't exist - * - * @param array &$table_headers reference to the array containing the headers - * of a table - * @param array $table_row array containing the first content row - * - * @return void - */ - private function _setTableHeaders(&$table_headers, $table_row) - { - if (empty($table_headers)) { - // The first table row should contain the number of columns - // If they are not set, generic names will be given (COL 1, COL 2, etc) - $num_cols = count($table_row); - for ($i = 0; $i < $num_cols; ++ $i) { - $table_headers [$i] = 'COL '. ($i + 1); - } - } - } - - /** - * Sets the database name and additional options and calls PMA_buildSQL() - * Used in PMA_importDataAllTables() and $this->_importDataOneTable() - * - * @param array &$tables structure: - * array( - * array(table_name, array() column_names, array()() rows) - * ) - * @param array &$analyses structure: - * $analyses = array( - * array(array() column_types, array() column_sizes) - * ) - * - * @global string $db name of the database to import in - * - * @return void - */ - private function _executeImportTables(&$tables, &$analyses) - { - global $db; - - // $db_name : The currently selected database name, if applicable - // No backquotes - // $options : An associative array of options - if (strlen($db)) { - $db_name = $db; - $options = array('create_db' => false); - } else { - $db_name = 'mediawiki_DB'; - $options = null; - } - - // Array of SQL strings - // Non-applicable parameters - $create = null; - - // Create and execute necessary SQL statements from data - PMA_buildSQL($db_name, $tables, $analyses, $create, $options); - - unset($tables); - unset($analyses); - } - - - /** - * Replaces all instances of the '||' separator between delimiters - * in a given string - * - * @param string $start_delim start delimiter - * @param string $end_delim end delimiter - * @param string $replace the string to be replaced with - * @param string $subject the text to be replaced - * - * @return string with replacements - */ - private function _delimiterReplace($start_delim, $end_delim, $replace, $subject) - { - // String that will be returned - $cleaned = ""; - // Possible states of current character - $inside_tag = false; - $inside_attribute = false; - // Attributes can be declared with either " or ' - $start_attribute_character = false; - - // The full separator is "||"; - // This rembembers if the previous character was '|' - $partial_separator = false; - - // Parse text char by char - for ($i = 0; $i < strlen($subject); $i ++) { - $cur_char = $subject[$i]; - // Check for separators - if ($cur_char == '|') { - // If we're not inside a tag, then this is part of a real separator, - // so we append it to the current segment - if (! $inside_attribute) { - $cleaned .= $cur_char; - if ($partial_separator) { - $inside_tag = false; - $inside_attribute = false; - } - } elseif ($partial_separator) { - // If we are inside a tag, we replace the current char with - // the placeholder and append that to the current segment - $cleaned .= $replace; - } - - // If the previous character was also '|', then this ends a - // full separator. If not, this may be the beginning of one - $partial_separator = ! $partial_separator; - } else { - // If we're inside a tag attribute and the current character is - // not '|', but the previous one was, it means that the single '|' - // was not appended, so we append it now - if ($partial_separator && $inside_attribute) { - $cleaned .= "|"; - } - // If the char is different from "|", no separator can be formed - $partial_separator = false; - - // any other character should be appended to the current segment - $cleaned .= $cur_char; - - if ($cur_char == '<' && ! $inside_attribute) { - // start of a tag - $inside_tag = true; - } elseif ($cur_char == '>' && ! $inside_attribute) { - // end of a tag - $inside_tag = false; - } elseif (($cur_char == '"' || $cur_char == "'") && $inside_tag) { - // start or end of an attribute - if (! $inside_attribute) { - $inside_attribute = true; - // remember the attribute`s declaration character (" or ') - $start_attribute_character = $cur_char; - } else { - if ($cur_char == $start_attribute_character) { - $inside_attribute = false; - // unset attribute declaration character - $start_attribute_character = false; - } - } - } - } - } // end for each character in $subject - - return $cleaned; - } - - /** - * Separates a string into items, similarly to explode - * Uses the '||' separator (which is standard in the mediawiki format) - * and ignores any instances of it inside markup tags - * Used in parsing buffer lines containing data cells - * - * @param string $text text to be split - * - * @return array - */ - private function _explodeMarkup($text) - { - $separator = "||"; - $placeholder = "\x00"; - - // Remove placeholder instances - $text = str_replace($placeholder, '', $text); - - // Replace instances of the separator inside HTML-like - // tags with the placeholder - $cleaned = $this->_delimiterReplace("<", ">", $placeholder, $text); - // Explode, then put the replaced separators back in - $items = explode($separator, $cleaned); - foreach ($items as $i => $str) { - $items[$i] = str_replace($placeholder, $separator, $str); - } - - return $items; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Returns true if the table should be analyzed, false otherwise - * - * @return bool - */ - private function _getAnalyze() - { - return $this->_analyze; - } - - /** - * Sets to true if the table should be analyzed, false otherwise - * - * @param bool $analyze status - * - * @return void - */ - private function _setAnalyze($analyze) - { - $this->_analyze = $analyze; - } -} diff --git a/pma12111211/libraries/plugins/import/ImportOds.class.php b/pma12111211/libraries/plugins/import/ImportOds.class.php deleted file mode 100644 index 2b07e88e..00000000 --- a/pma12111211/libraries/plugins/import/ImportOds.class.php +++ /dev/null @@ -1,415 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ImportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText('OpenDocument Spreadsheet'); - $importPluginProperties->setExtension('ods'); - $importPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $importPluginProperties - // this will be shown as "Format specific options" - $importSpecificOptions = new OptionsPropertyRootGroup(); - $importSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new BoolPropertyItem(); - $leaf->setName("col_names"); - $leaf->setText( - __( - 'The first line of the file contains the table column names' - . ' (if this is unchecked, the first line will become part' - . ' of the data)' - ) - ); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("empty_rows"); - $leaf->setText(__('Do not import empty rows')); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("recognize_percentages"); - $leaf->setText( - __( - 'Import percentages as proper decimals (ex. 12.00% to .12)' - ) - ); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("recognize_currency"); - $leaf->setText(__('Import currencies (ex. $5.00 to 5.00)')); - $generalOptions->addProperty($leaf); - - // add the main group to the root group - $importSpecificOptions->addProperty($generalOptions); - - // set the options for the import plugin property item - $importPluginProperties->setOptions($importSpecificOptions); - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $db, $error, $timeout_passed, $finished; - - $i = 0; - $len = 0; - $buffer = ""; - - /** - * Read in the file via PMA_importGetNextChunk so that - * it can process compressed files - */ - while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) { - $data = PMA_importGetNextChunk(); - if ($data === false) { - /* subtract data we didn't handle yet and stop processing */ - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - /* Handle rest of buffer */ - } else { - /* Append new data to buffer */ - $buffer .= $data; - unset($data); - } - } - - unset($data); - - /** - * Disable loading of external XML entities. - */ - libxml_disable_entity_loader(); - - /** - * Load the XML string - * - * The option LIBXML_COMPACT is specified because it can - * result in increased performance without the need to - * alter the code in any way. It's basically a freebee. - */ - $xml = simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT); - - unset($buffer); - - if ($xml === false) { - $sheets = array(); - $GLOBALS['message'] = PMA_Message::error( - __( - 'The XML file specified was either malformed or incomplete.' - . ' Please correct the issue and try again.' - ) - ); - $GLOBALS['error'] = true; - } else { - $root = $xml->children('office', true)->{'body'}->{'spreadsheet'}; - if (empty($root)) { - $sheets = array(); - $GLOBALS['message'] = PMA_Message::error( - __('Could not parse OpenDocument Spreadsheet!') - ); - $GLOBALS['error'] = true; - } else { - $sheets = $root->children('table', true); - } - } - - $tables = array(); - - $max_cols = 0; - - $col_count = 0; - $col_names = array(); - - $tempRow = array(); - $tempRows = array(); - $rows = array(); - - /* Iterate over tables */ - foreach ($sheets as $sheet) { - $col_names_in_first_row = isset($_REQUEST['ods_col_names']); - - /* Iterate over rows */ - foreach ($sheet as $row) { - $type = $row->getName(); - if (! strcmp('table-row', $type)) { - /* Iterate over columns */ - foreach ($row as $cell) { - $text = $cell->children('text', true); - $cell_attrs = $cell->attributes('office', true); - - if (count($text) != 0) { - $attr = $cell->attributes('table', true); - $num_repeat = (int) $attr['number-columns-repeated']; - $num_iterations = $num_repeat ? $num_repeat : 1; - - for ($k = 0; $k < $num_iterations; $k++) { - if ($_REQUEST['ods_recognize_percentages'] - && ! strcmp( - 'percentage', - $cell_attrs['value-type'] - ) - ) { - $value = (double)$cell_attrs['value']; - } elseif ($_REQUEST['ods_recognize_currency'] - && !strcmp('currency', $cell_attrs['value-type']) - ) { - $value = (double)$cell_attrs['value']; - } else { - /* We need to concatenate all paragraphs */ - $values = array(); - foreach ($text as $paragraph) { - $values[] = (string)$paragraph; - } - $value = implode("\n", $values); - } - if (! $col_names_in_first_row) { - $tempRow[] = $value; - } else { - $col_names[] = $value; - } - - ++$col_count; - } - } else { - /* Number of blank columns repeated */ - if ($col_count < count($row->children('table', true)) - 1 - ) { - $attr = $cell->attributes('table', true); - $num_null = (int)$attr['number-columns-repeated']; - - if ($num_null) { - if (! $col_names_in_first_row) { - for ($i = 0; $i < $num_null; ++$i) { - $tempRow[] = 'NULL'; - ++$col_count; - } - } else { - for ($i = 0; $i < $num_null; ++$i) { - $col_names[] = PMA_getColumnAlphaName( - $col_count + 1 - ); - ++$col_count; - } - } - } else { - if (! $col_names_in_first_row) { - $tempRow[] = 'NULL'; - } else { - $col_names[] = PMA_getColumnAlphaName( - $col_count + 1 - ); - } - - ++$col_count; - } - } - } - } - - /* Find the widest row */ - if ($col_count > $max_cols) { - $max_cols = $col_count; - } - - /* Don't include a row that is full of NULL values */ - if (! $col_names_in_first_row) { - if ($_REQUEST['ods_empty_rows']) { - foreach ($tempRow as $cell) { - if (strcmp('NULL', $cell)) { - $tempRows[] = $tempRow; - break; - } - } - } else { - $tempRows[] = $tempRow; - } - } - - $col_count = 0; - $col_names_in_first_row = false; - $tempRow = array(); - } - } - - /* Skip over empty sheets */ - if (count($tempRows) == 0 || count($tempRows[0]) == 0) { - $col_names = array(); - $tempRow = array(); - $tempRows = array(); - continue; - } - - /** - * Fill out each row as necessary to make - * every one exactly as wide as the widest - * row. This included column names. - */ - - /* Fill out column names */ - for ($i = count($col_names); $i < $max_cols; ++$i) { - $col_names[] = PMA_getColumnAlphaName($i + 1); - } - - /* Fill out all rows */ - $num_rows = count($tempRows); - for ($i = 0; $i < $num_rows; ++$i) { - for ($j = count($tempRows[$i]); $j < $max_cols; ++$j) { - $tempRows[$i][] = 'NULL'; - } - } - - /* Store the table name so we know where to place the row set */ - $tbl_attr = $sheet->attributes('table', true); - $tables[] = array((string)$tbl_attr['name']); - - /* Store the current sheet in the accumulator */ - $rows[] = array((string)$tbl_attr['name'], $col_names, $tempRows); - $tempRows = array(); - $col_names = array(); - $max_cols = 0; - } - - unset($tempRow); - unset($tempRows); - unset($col_names); - unset($sheets); - unset($xml); - - /** - * Bring accumulated rows into the corresponding table - */ - $num_tbls = count($tables); - for ($i = 0; $i < $num_tbls; ++$i) { - for ($j = 0; $j < count($rows); ++$j) { - if (! strcmp($tables[$i][TBL_NAME], $rows[$j][TBL_NAME])) { - if (! isset($tables[$i][COL_NAMES])) { - $tables[$i][] = $rows[$j][COL_NAMES]; - } - - $tables[$i][ROWS] = $rows[$j][ROWS]; - } - } - } - - /* No longer needed */ - unset($rows); - - /* Obtain the best-fit MySQL types for each column */ - $analyses = array(); - - $len = count($tables); - for ($i = 0; $i < $len; ++$i) { - $analyses[] = PMA_analyzeTable($tables[$i]); - } - - /** - * string $db_name (no backquotes) - * - * array $table = array(table_name, array() column_names, array()() rows) - * array $tables = array of "$table"s - * - * array $analysis = array(array() column_types, array() column_sizes) - * array $analyses = array of "$analysis"s - * - * array $create = array of SQL strings - * - * array $options = an associative array of options - */ - - /* Set database name to the currently selected one, if applicable */ - if (strlen($db)) { - $db_name = $db; - $options = array('create_db' => false); - } else { - $db_name = 'ODS_DB'; - $options = null; - } - - /* Non-applicable parameters */ - $create = null; - - /* Created and execute necessary SQL statements from data */ - PMA_buildSQL($db_name, $tables, $analyses, $create, $options); - - unset($tables); - unset($analyses); - - /* Commit any possible data in buffers */ - PMA_importRunQuery(); - } -} diff --git a/pma12111211/libraries/plugins/import/ImportShp.class.php b/pma12111211/libraries/plugins/import/ImportShp.class.php deleted file mode 100644 index 7a4c0c83..00000000 --- a/pma12111211/libraries/plugins/import/ImportShp.class.php +++ /dev/null @@ -1,335 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ImportPluginProperties.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText(__('ESRI Shape File')); - $importPluginProperties->setExtension('shp'); - $importPluginProperties->setOptions(array()); - $importPluginProperties->setOptionsText(__('Options')); - - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $db, $error, $finished, $compression, - $import_file, $local_import_file, $message; - - $GLOBALS['finished'] = false; - - $shp = new PMA_ShapeFile(1); - // If the zip archive has more than one file, - // get the correct content to the buffer from .shp file. - if ($compression == 'application/zip' - && PMA_getNoOfFilesInZip($import_file) > 1 - ) { - $zip_content = PMA_getZipContents($import_file, '/^.*\.shp$/i'); - $GLOBALS['import_text'] = $zip_content['data']; - } - - $temp_dbf_file = false; - // We need dbase extension to handle .dbf file - if (extension_loaded('dbase')) { - // If we can extract the zip archive to 'TempDir' - // and use the files in it for import - if ($compression == 'application/zip' - && ! empty($GLOBALS['cfg']['TempDir']) - && is_writable($GLOBALS['cfg']['TempDir']) - ) { - $dbf_file_name = PMA_findFileFromZipArchive( - '/^.*\.dbf$/i', $import_file - ); - // If the corresponding .dbf file is in the zip archive - if ($dbf_file_name) { - // Extract the .dbf file and point to it. - $extracted = PMA_zipExtract( - $import_file, - realpath($GLOBALS['cfg']['TempDir']), - array($dbf_file_name) - ); - if ($extracted) { - $dbf_file_path = realpath($GLOBALS['cfg']['TempDir']) - . (PMA_IS_WINDOWS ? '\\' : '/') . $dbf_file_name; - $temp_dbf_file = true; - // Replace the .dbf with .*, as required - // by the bsShapeFiles library. - $file_name = substr( - $dbf_file_path, 0, strlen($dbf_file_path) - 4 - ) . '.*'; - $shp->FileName = $file_name; - } - } - } elseif (! empty($local_import_file) - && ! empty($GLOBALS['cfg']['UploadDir']) - && $compression == 'none' - ) { - // If file is in UploadDir, use .dbf file in the same UploadDir - // to load extra data. - // Replace the .shp with .*, - // so the bsShapeFiles library correctly locates .dbf file. - $file_name = substr($import_file, 0, strlen($import_file) - 4) - . '.*'; - $shp->FileName = $file_name; - } - } - - // Load data - $shp->loadFromFile(''); - if ($shp->lastError != "") { - $error = true; - $message = PMA_Message::error( - __('There was an error importing the ESRI shape file: "%s".') - ); - $message->addParam($shp->lastError); - return; - } - - // Delete the .dbf file extracted to 'TempDir' - if ($temp_dbf_file - && isset($dbf_file_path) - && file_exists($dbf_file_path) - ) { - unlink($dbf_file_path); - } - - $esri_types = array( - 0 => 'Null Shape', - 1 => 'Point', - 3 => 'PolyLine', - 5 => 'Polygon', - 8 => 'MultiPoint', - 11 => 'PointZ', - 13 => 'PolyLineZ', - 15 => 'PolygonZ', - 18 => 'MultiPointZ', - 21 => 'PointM', - 23 => 'PolyLineM', - 25 => 'PolygonM', - 28 => 'MultiPointM', - 31 => 'MultiPatch', - ); - - switch ($shp->shapeType) { - // ESRI Null Shape - case 0: - break; - // ESRI Point - case 1: - $gis_type = 'point'; - break; - // ESRI PolyLine - case 3: - $gis_type = 'multilinestring'; - break; - // ESRI Polygon - case 5: - $gis_type = 'multipolygon'; - break; - // ESRI MultiPoint - case 8: - $gis_type = 'multipoint'; - break; - default: - $error = true; - if (! isset($esri_types[$shp->shapeType])) { - $message = PMA_Message::error( - __( - 'You tried to import an invalid file or the imported file' - . ' contains invalid data' - ) - ); - } else { - $message = PMA_Message::error( - __('MySQL Spatial Extension does not support ESRI type "%s".') - ); - $message->addParam($esri_types[$shp->shapeType]); - } - return; - } - - if (isset($gis_type)) { - include_once './libraries/gis/pma_gis_factory.php'; - $gis_obj = PMA_GIS_Factory::factory($gis_type); - } else { - $gis_obj = null; - } - - $num_rows = count($shp->records); - // If .dbf file is loaded, the number of extra data columns - $num_data_cols = isset($shp->DBFHeader) ? count($shp->DBFHeader) : 0; - - $rows = array(); - $col_names = array(); - if ($num_rows != 0) { - foreach ($shp->records as $record) { - $tempRow = array(); - if ($gis_obj == null) { - $tempRow[] = null; - } else { - $tempRow[] = "GeomFromText('" - . $gis_obj->getShape($record->SHPData) . "')"; - } - - if (isset($shp->DBFHeader)) { - foreach ($shp->DBFHeader as $c) { - $cell = trim($record->DBFData[$c[0]]); - - if (! strcmp($cell, '')) { - $cell = 'NULL'; - } - - $tempRow[] = $cell; - } - } - $rows[] = $tempRow; - } - } - - if (count($rows) == 0) { - $error = true; - $message = PMA_Message::error( - __('The imported file does not contain any data') - ); - return; - } - - // Column names for spatial column and the rest of the columns, - // if they are available - $col_names[] = 'SPATIAL'; - for ($n = 0; $n < $num_data_cols; $n++) { - $col_names[] = $shp->DBFHeader[$n][0]; - } - - // Set table name based on the number of tables - if (strlen($db)) { - $result = $GLOBALS['dbi']->fetchResult('SHOW TABLES'); - $table_name = 'TABLE '.(count($result) + 1); - } else { - $table_name = 'TBL_NAME'; - } - $tables = array(array($table_name, $col_names, $rows)); - - // Use data from shape file to chose best-fit MySQL types for each column - $analyses = array(); - $analyses[] = PMA_analyzeTable($tables[0]); - - $table_no = 0; $spatial_col = 0; - $analyses[$table_no][TYPES][$spatial_col] = GEOMETRY; - $analyses[$table_no][FORMATTEDSQL][$spatial_col] = true; - - // Set database name to the currently selected one, if applicable - if (strlen($db)) { - $db_name = $db; - $options = array('create_db' => false); - } else { - $db_name = 'SHP_DB'; - $options = null; - } - - // Created and execute necessary SQL statements from data - $null_param = null; - PMA_buildSQL($db_name, $tables, $analyses, $null_param, $options); - - unset($tables); - unset($analyses); - - $finished = true; - $error = false; - - // Commit any possible data in buffers - PMA_importRunQuery(); - } - - /** - * Returns specified number of bytes from the buffer. - * Buffer automatically fetches next chunk of data when the buffer - * falls short. - * Sets $eof when $GLOBALS['finished'] is set and the buffer falls short. - * - * @param int $length number of bytes - * - * @return string - */ - public static function readFromBuffer($length) - { - global $buffer, $eof; - - if (strlen($buffer) < $length) { - if ($GLOBALS['finished']) { - $eof = true; - } else { - $buffer .= PMA_importGetNextChunk(); - } - } - $result = substr($buffer, 0, $length); - $buffer = substr($buffer, $length); - return $result; - } -} diff --git a/pma12111211/libraries/plugins/import/ImportSql.class.php b/pma12111211/libraries/plugins/import/ImportSql.class.php deleted file mode 100644 index 4ae9024a..00000000 --- a/pma12111211/libraries/plugins/import/ImportSql.class.php +++ /dev/null @@ -1,447 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ImportPluginProperties.class.php"; - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - include_once "$props/options/items/SelectPropertyItem.class.php"; - include_once "$props/options/items/BoolPropertyItem.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText('SQL'); - $importPluginProperties->setExtension('sql'); - $importPluginProperties->setOptionsText(__('Options')); - - $compats = $GLOBALS['dbi']->getCompatibilities(); - if (count($compats) > 0) { - $values = array(); - foreach ($compats as $val) { - $values[$val] = $val; - } - - // create the root group that will be the options field for - // $importPluginProperties - // this will be shown as "Format specific options" - $importSpecificOptions = new OptionsPropertyRootGroup(); - $importSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - // create primary items and add them to the group - $leaf = new SelectPropertyItem(); - $leaf->setName("compatibility"); - $leaf->setText(__('SQL compatibility mode:')); - $leaf->setValues($values); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'Server_SQL_mode', - ) - ); - $generalOptions->addProperty($leaf); - $leaf = new BoolPropertyItem(); - $leaf->setName("no_auto_value_on_zero"); - $leaf->setText( - __('Do not use AUTO_INCREMENT for zero values') - ); - $leaf->setDoc( - array( - 'manual_MySQL_Database_Administration', - 'Server_SQL_mode', - 'sqlmode_no_auto_value_on_zero' - ) - ); - $generalOptions->addProperty($leaf); - - // add the main group to the root group - $importSpecificOptions->addProperty($generalOptions); - // set the options for the import plugin property item - $importPluginProperties->setOptions($importSpecificOptions); - } - - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @param array &$sql_data 2-element array with sql data - * - * @return void - */ - public function doImport(&$sql_data = array()) - { - global $error, $timeout_passed; - - $buffer = ''; - // Defaults for parser - $sql = ''; - $start_pos = 0; - $i = 0; - $len= 0; - $big_value = 2147483647; - // include the space because it's mandatory - $delimiter_keyword = 'DELIMITER '; - $length_of_delimiter_keyword = strlen($delimiter_keyword); - - if (isset($_POST['sql_delimiter'])) { - $sql_delimiter = $_POST['sql_delimiter']; - } else { - $sql_delimiter = ';'; - } - - // Handle compatibility options - $sql_modes = array(); - if (isset($_REQUEST['sql_compatibility']) - && 'NONE' != $_REQUEST['sql_compatibility'] - ) { - $sql_modes[] = $_REQUEST['sql_compatibility']; - } - if (isset($_REQUEST['sql_no_auto_value_on_zero'])) { - $sql_modes[] = 'NO_AUTO_VALUE_ON_ZERO'; - } - if (count($sql_modes) > 0) { - $GLOBALS['dbi']->tryQuery( - 'SET SQL_MODE="' . implode(',', $sql_modes) . '"' - ); - } - unset($sql_modes); - - /** - * will be set in PMA_importGetNextChunk() - * - * @global boolean $GLOBALS['finished'] - */ - $GLOBALS['finished'] = false; - - while (! ($GLOBALS['finished'] && $i >= $len) - && ! $error - && ! $timeout_passed - ) { - $data = PMA_importGetNextChunk(); - if ($data === false) { - // subtract data we didn't handle yet and stop processing - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - // Handle rest of buffer - } else { - // Append new data to buffer - $buffer .= $data; - // free memory - unset($data); - // Do not parse string when we're not at the end - // and don't have ; inside - if ((strpos($buffer, $sql_delimiter, $i) === false) - && ! $GLOBALS['finished'] - ) { - continue; - } - } - - // Convert CR (but not CRLF) to LF otherwise all queries - // may not get executed on some platforms - $buffer = preg_replace("/\r($|[^\n])/", "\n$1", $buffer); - - // Current length of our buffer - $len = strlen($buffer); - - // Grab some SQL queries out of it - while ($i < $len) { - $found_delimiter = false; - // Find first interesting character - $old_i = $i; - // this is about 7 times faster that looking for each sequence i - // one by one with strpos() - $match = preg_match( - '/(\'|"|#|-- |\/\*|`|(?i)(? unclosed quote, - // but we handle it as end of query - if ($GLOBALS['finished']) { - $endq = true; - $i = $len - 1; - } - $found_delimiter = false; - break; - } - // Was not the quote escaped? - $j = $pos - 1; - while ($buffer[$j] == '\\') { - $j--; - } - // Even count means it was not escaped - $endq = (((($pos - 1) - $j) % 2) == 0); - // Skip the string - $i = $pos; - - if ($first_sql_delimiter < $pos) { - $found_delimiter = false; - } - } - if (! $endq) { - break; - } - $i++; - // Aren't we at the end? - if ($GLOBALS['finished'] && $i == $len) { - $i--; - } else { - continue; - } - } - - // Not enough data to decide - if ((($i == ($len - 1) && ($ch == '-' || $ch == '/')) - || ($i == ($len - 2) && (($ch == '-' && $buffer[$i + 1] == '-') - || ($ch == '/' && $buffer[$i + 1] == '*')))) - && ! $GLOBALS['finished'] - ) { - break; - } - - // Comments - if ($ch == '#' - || ($i < ($len - 1) && $ch == '-' && $buffer[$i + 1] == '-' - && (($i < ($len - 2) && $buffer[$i + 2] <= ' ') - || ($i == ($len - 1) && $GLOBALS['finished']))) - || ($i < ($len - 1) && $ch == '/' && $buffer[$i + 1] == '*') - ) { - // Copy current string to SQL - if ($start_pos != $i) { - $sql .= substr($buffer, $start_pos, $i - $start_pos); - } - // Skip the rest - $start_of_comment = $i; - // do not use PHP_EOL here instead of "\n", because the export - // file might have been produced on a different system - $i = strpos($buffer, $ch == '/' ? '*/' : "\n", $i); - // didn't we hit end of string? - if ($i === false) { - if ($GLOBALS['finished']) { - $i = $len - 1; - } else { - break; - } - } - // Skip * - if ($ch == '/') { - $i++; - } - // Skip last char - $i++; - // We need to send the comment part in case we are defining - // a procedure or function and comments in it are valuable - $sql .= substr( - $buffer, - $start_of_comment, - $i - $start_of_comment - ); - // Next query part will start here - $start_pos = $i; - // Aren't we at the end? - if ($i == $len) { - $i--; - } else { - continue; - } - } - // Change delimiter, if redefined, and skip it - // (don't send to server!) - if (($i + $length_of_delimiter_keyword < $len) - && strtoupper( - substr($buffer, $i, $length_of_delimiter_keyword) - ) == $delimiter_keyword - ) { - // look for EOL on the character immediately after 'DELIMITER ' - // (see previous comment about PHP_EOL) - $new_line_pos = strpos( - $buffer, - "\n", - $i + $length_of_delimiter_keyword - ); - // it might happen that there is no EOL - if (false === $new_line_pos) { - $new_line_pos = $len; - } - $sql_delimiter = substr( - $buffer, - $i + $length_of_delimiter_keyword, - $new_line_pos - $i - $length_of_delimiter_keyword - ); - $i = $new_line_pos + 1; - // Next query part will start here - $start_pos = $i; - continue; - } - - // End of SQL - if ($found_delimiter - || ($GLOBALS['finished'] - && ($i == $len - 1)) - ) { - $tmp_sql = $sql; - if ($start_pos < $len) { - $length_to_grab = $i - $start_pos; - - if (! $found_delimiter) { - $length_to_grab++; - } - $tmp_sql .= substr($buffer, $start_pos, $length_to_grab); - unset($length_to_grab); - } - // Do not try to execute empty SQL - if (! preg_match('/^([\s]*;)*$/', trim($tmp_sql))) { - $sql = $tmp_sql; - PMA_importRunQuery( - $sql, - substr($buffer, 0, $i + strlen($sql_delimiter)), - false, - $sql_data - ); - $buffer = substr($buffer, $i + strlen($sql_delimiter)); - // Reset parser: - $len = strlen($buffer); - $sql = ''; - $i = 0; - $start_pos = 0; - // Any chance we will get a complete query? - //if ((strpos($buffer, ';') === false) - //&& ! $GLOBALS['finished']) { - if (strpos($buffer, $sql_delimiter) === false - && ! $GLOBALS['finished'] - ) { - break; - } - } else { - $i++; - $start_pos = $i; - } - } - } // End of parser loop - } // End of import loop - // Commit any possible data in buffers - PMA_importRunQuery('', substr($buffer, 0, $len), false, $sql_data); - PMA_importRunQuery('', '', false, $sql_data); - } -} diff --git a/pma12111211/libraries/plugins/import/ImportXml.class.php b/pma12111211/libraries/plugins/import/ImportXml.class.php deleted file mode 100644 index 7c7afa09..00000000 --- a/pma12111211/libraries/plugins/import/ImportXml.class.php +++ /dev/null @@ -1,379 +0,0 @@ -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - $props = 'libraries/properties/'; - include_once "$props/plugins/ImportPluginProperties.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText(__('XML')); - $importPluginProperties->setExtension('xml'); - $importPluginProperties->setMimeType('text/xml'); - $importPluginProperties->setOptions(array()); - $importPluginProperties->setOptionsText(__('Options')); - - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - global $error, $timeout_passed, $finished, $db; - - $i = 0; - $len = 0; - $buffer = ""; - - /** - * Read in the file via PMA_importGetNextChunk so that - * it can process compressed files - */ - while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) { - $data = PMA_importGetNextChunk(); - if ($data === false) { - /* subtract data we didn't handle yet and stop processing */ - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - /* Handle rest of buffer */ - } else { - /* Append new data to buffer */ - $buffer .= $data; - unset($data); - } - } - - unset($data); - - /** - * Disable loading of external XML entities. - */ - libxml_disable_entity_loader(); - - /** - * Load the XML string - * - * The option LIBXML_COMPACT is specified because it can - * result in increased performance without the need to - * alter the code in any way. It's basically a freebee. - */ - $xml = simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT); - - unset($buffer); - - /** - * The XML was malformed - */ - if ($xml === false) { - PMA_Message::error( - __( - 'The XML file specified was either malformed or incomplete.' - . ' Please correct the issue and try again.' - ) - )->display(); - unset($xml); - $GLOBALS['finished'] = false; - return; - } - - /** - * Table accumulator - */ - $tables = array(); - /** - * Row accumulator - */ - $rows = array(); - - /** - * Temp arrays - */ - $tempRow = array(); - $tempCells = array(); - - /** - * CREATE code included (by default: no) - */ - $struct_present = false; - - /** - * Analyze the data in each table - */ - $namespaces = $xml->getNameSpaces(true); - - /** - * Get the database name, collation and charset - */ - $db_attr = $xml->children($namespaces['pma']) - ->{'structure_schemas'}->{'database'}; - - if ($db_attr instanceof SimpleXMLElement) { - $db_attr = $db_attr->attributes(); - $db_name = (string)$db_attr['name']; - $collation = (string)$db_attr['collation']; - $charset = (string)$db_attr['charset']; - } else { - /** - * If the structure section is not present - * get the database name from the data section - */ - $db_attr = $xml->children()->attributes(); - $db_name = (string)$db_attr['name']; - $collation = null; - $charset = null; - } - - /** - * The XML was malformed - */ - if ($db_name === null) { - PMA_Message::error( - __( - 'The XML file specified was either malformed or incomplete.' - . ' Please correct the issue and try again.' - ) - )->display(); - unset($xml); - $GLOBALS['finished'] = false; - return; - } - - /** - * Retrieve the structure information - */ - if (isset($namespaces['pma'])) { - /** - * Get structures for all tables - */ - $struct = $xml->children($namespaces['pma']); - - $create = array(); - - foreach ($struct as $val1) { - foreach ($val1 as $val2) { - // Need to select the correct database for the creation of - // tables, views, triggers, etc. - /** - * @todo Generating a USE here blocks importing of a table - * into another database. - */ - $attrs = $val2->attributes(); - $create[] = "USE " - . PMA_Util::backquote( - $attrs["name"] - ); - - foreach ($val2 as $val3) { - /** - * Remove the extra cosmetic spacing - */ - $val3 = str_replace(" ", "", (string)$val3); - $create[] = $val3; - } - } - } - - $struct_present = true; - } - - /** - * Move down the XML tree to the actual data - */ - $xml = $xml->children()->children(); - - $data_present = false; - - /** - * Only attempt to analyze/collect data if there is data present - */ - if ($xml && @count($xml->children())) { - $data_present = true; - - /** - * Process all database content - */ - foreach ($xml as $v1) { - $tbl_attr = $v1->attributes(); - - $isInTables = false; - for ($i = 0; $i < count($tables); ++$i) { - if (! strcmp($tables[$i][TBL_NAME], (string)$tbl_attr['name'])) { - $isInTables = true; - break; - } - } - - if ($isInTables == false) { - $tables[] = array((string)$tbl_attr['name']); - } - - foreach ($v1 as $v2) { - $row_attr = $v2->attributes(); - if (! array_search((string)$row_attr['name'], $tempRow)) { - $tempRow[] = (string)$row_attr['name']; - } - $tempCells[] = (string)$v2; - } - - $rows[] = array((string)$tbl_attr['name'], $tempRow, $tempCells); - - $tempRow = array(); - $tempCells = array(); - } - - unset($tempRow); - unset($tempCells); - unset($xml); - - /** - * Bring accumulated rows into the corresponding table - */ - $num_tbls = count($tables); - for ($i = 0; $i < $num_tbls; ++$i) { - for ($j = 0; $j < count($rows); ++$j) { - if (! strcmp($tables[$i][TBL_NAME], $rows[$j][TBL_NAME])) { - if (! isset($tables[$i][COL_NAMES])) { - $tables[$i][] = $rows[$j][COL_NAMES]; - } - - $tables[$i][ROWS][] = $rows[$j][ROWS]; - } - } - } - - unset($rows); - - if (! $struct_present) { - $analyses = array(); - - $len = count($tables); - for ($i = 0; $i < $len; ++$i) { - $analyses[] = PMA_analyzeTable($tables[$i]); - } - } - } - - unset($xml); - unset($tempCells); - unset($rows); - - /** - * Only build SQL from data if there is data present - */ - if ($data_present) { - /** - * Set values to NULL if they were not present - * to maintain PMA_buildSQL() call integrity - */ - if (! isset($analyses)) { - $analyses = null; - if (! $struct_present) { - $create = null; - } - } - } - - /** - * string $db_name (no backquotes) - * - * array $table = array(table_name, array() column_names, array()() rows) - * array $tables = array of "$table"s - * - * array $analysis = array(array() column_types, array() column_sizes) - * array $analyses = array of "$analysis"s - * - * array $create = array of SQL strings - * - * array $options = an associative array of options - */ - - /* Set database name to the currently selected one, if applicable */ - if (strlen($db)) { - /* Override the database name in the XML file, if one is selected */ - $db_name = $db; - $options = array('create_db' => false); - } else { - if ($db_name === null) { - $db_name = 'XML_DB'; - } - - /* Set database collation/charset */ - $options = array( - 'db_collation' => $collation, - 'db_charset' => $charset, - ); - } - - /* Created and execute necessary SQL statements from data */ - PMA_buildSQL($db_name, $tables, $analyses, $create, $options); - - unset($analyses); - unset($tables); - unset($create); - - /* Commit any possible data in buffers */ - PMA_importRunQuery(); - } -} diff --git a/pma12111211/libraries/plugins/import/README b/pma12111211/libraries/plugins/import/README deleted file mode 100644 index 815cf2b6..00000000 --- a/pma12111211/libraries/plugins/import/README +++ /dev/null @@ -1,172 +0,0 @@ -This directory holds import plugins for phpMyAdmin. Any new plugin should -basically follow the structure presented here. The messages must use our -gettext mechanism, see http://wiki.phpmyadmin.net/pma/Gettext_for_developers. - -setProperties(); - } - - /** - * Sets the import plugin properties. - * Called in the constructor. - * - * @return void - */ - protected function setProperties() - { - // set properties - $props = 'libraries/properties/'; - // include the main class for properties for the import plug-ins - include_once "$props/plugins/ImportPluginProperties.class.php"; - // include the group properties classes - include_once "$props/options/groups/OptionsPropertyRootGroup.class.php"; - include_once "$props/options/groups/OptionsPropertyMainGroup.class.php"; - // include the needed single property items - include_once "$props/options/items/RadioPropertyItem.class.php"; - - $importPluginProperties = new ImportPluginProperties(); - $importPluginProperties->setText('[name]'); // the name of your plug-in - $importPluginProperties->setExtension('[ext]'); // extension this plug-in can handle - $importPluginProperties->setOptionsText(__('Options')); - - // create the root group that will be the options field for - // $importPluginProperties - // this will be shown as "Format specific options" - $importSpecificOptions = new OptionsPropertyRootGroup(); - $importSpecificOptions->setName("Format Specific Options"); - - // general options main group - $generalOptions = new OptionsPropertyMainGroup(); - $generalOptions->setName("general_opts"); - - // optional : - // create primary items and add them to the group - // type - one of the classes listed in libraries/properties/options/items/ - // name - form element name - // text - description in GUI - // size - size of text element - // len - maximal size of input - // values - possible values of the item - $leaf = new RadioPropertyItem(); - $leaf->setName("structure_or_data"); - $leaf->setValues( - array( - 'structure' => __('structure'), - 'data' => __('data'), - 'structure_and_data' => __('structure and data') - ) - ); - $generalOptions->addProperty($leaf); - - // add the main group to the root group - $importSpecificOptions->addProperty($generalOptions); - - // set the options for the import plugin property item - $importPluginProperties->setOptions($importSpecificOptions); - $this->properties = $importPluginProperties; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @return void - */ - public function update (SplSubject $subject) - { - } - - /** - * Handles the whole import logic - * - * @return void - */ - public function doImport() - { - // get globals (others are optional) - global $error, $timeout_passed, $finished; - - $buffer = ''; - while (! ($finished && $i >= $len) && ! $error && ! $timeout_passed) { - $data = PMA_importGetNextChunk(); - if ($data === false) { - // subtract data we didn't handle yet and stop processing - $GLOBALS['offset'] -= strlen($buffer); - break; - } elseif ($data === true) { - // Handle rest of buffer - } else { - // Append new data to buffer - $buffer .= $data; - } - // PARSE $buffer here, post sql queries using: - PMA_importRunQuery($sql, $verbose_sql_with_comments); - } // End of import loop - // Commit any possible data in buffers - PMA_importRunQuery(); - } - - - // optional: - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Getter description - * - * @return type - */ - private function _getMyOptionalVariable() - { - return $this->_myOptionalVariable; - } - - /** - * Setter description - * - * @param type $my_optional_variable description - * - * @return void - */ - private function _setMyOptionalVariable($my_optional_variable) - { - $this->_myOptionalVariable = $my_optional_variable; - } -} -?> diff --git a/pma12111211/libraries/plugins/import/ShapeFile.class.php b/pma12111211/libraries/plugins/import/ShapeFile.class.php deleted file mode 100644 index bad27515..00000000 --- a/pma12111211/libraries/plugins/import/ShapeFile.class.php +++ /dev/null @@ -1,102 +0,0 @@ -_loadHeaders(); - $this->_loadRecords(); - if ($this->_isDbaseLoaded()) { - $this->_closeDBFFile(); - } - } - - /** - * Loads metadata from the ESRI shape file header - * - * @return void - * @see ShapeFile::_loadHeaders() - */ - function _loadHeaders() - { - ImportShp::readFromBuffer(24); - $this->fileLength = loadData("N", ImportShp::readFromBuffer(4)); - - ImportShp::readFromBuffer(4); - $this->shapeType = loadData("V", ImportShp::readFromBuffer(4)); - - $this->boundingBox = array(); - $this->boundingBox["xmin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->boundingBox["ymin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->boundingBox["xmax"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->boundingBox["ymax"] = loadData("d", ImportShp::readFromBuffer(8)); - - if ($this->_isDbaseLoaded() && $this->_openDBFFile()) { - $this->DBFHeader = $this->_loadDBFHeader(); - } - } - - /** - * Loads geometry data from the ESRI shape file - * - * @return boolean|void - * @see ShapeFile::_loadRecords() - */ - function _loadRecords() - { - global $eof; - ImportShp::readFromBuffer(32); - while (true) { - $record = new PMA_ShapeRecord(-1); - $record->loadFromFile($this->SHPFile, $this->DBFFile); - if ($record->lastError != "") { - return false; - } - if ($eof) { - break; - } - - $this->records[] = $record; - } - } -} -?> diff --git a/pma12111211/libraries/plugins/import/ShapeRecord.class.php b/pma12111211/libraries/plugins/import/ShapeRecord.class.php deleted file mode 100644 index 7317c00a..00000000 --- a/pma12111211/libraries/plugins/import/ShapeRecord.class.php +++ /dev/null @@ -1,161 +0,0 @@ -DBFFile = $DBFFile; - $this->_loadHeaders(); - - switch ($this->shapeType) { - case 0: - $this->_loadNullRecord(); - break; - case 1: - $this->_loadPointRecord(); - break; - case 3: - $this->_loadPolyLineRecord(); - break; - case 5: - $this->_loadPolygonRecord(); - break; - case 8: - $this->_loadMultiPointRecord(); - break; - default: - $this->setError( - sprintf( - __("Geometry type '%s' is not supported by MySQL."), - $this->shapeType - ) - ); - break; - } - if (extension_loaded('dbase') && isset($this->DBFFile)) { - $this->_loadDBFData(); - } - } - - /** - * Loads metadata from the ESRI shape record header - * - * @return void - * @see ShapeRecord::_loadHeaders() - */ - function _loadHeaders() - { - $this->recordNumber = loadData("N", ImportShp::readFromBuffer(4)); - ImportShp::readFromBuffer(4); - $this->shapeType = loadData("V", ImportShp::readFromBuffer(4)); - } - - /** - * Loads data from a point record - * - * @return array - * @see ShapeRecord::_loadPoint() - */ - function _loadPoint() - { - $data = array(); - - $data["x"] = loadData("d", ImportShp::readFromBuffer(8)); - $data["y"] = loadData("d", ImportShp::readFromBuffer(8)); - - return $data; - } - - /** - * Loads data from a multipoint record - * - * @return void - * @see ShapeRecord::_loadMultiPointRecord() - */ - function _loadMultiPointRecord() - { - $this->SHPData = array(); - $this->SHPData["xmin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["ymin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["xmax"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["ymax"] = loadData("d", ImportShp::readFromBuffer(8)); - - $this->SHPData["numpoints"] = loadData("V", ImportShp::readFromBuffer(4)); - - for ($i = 0; $i <= $this->SHPData["numpoints"]; $i++) { - $this->SHPData["points"][] = $this->_loadPoint(); - } - } - - /** - * Loads data from a polyline record - * - * @return void - * @see ShapeRecord::_loadPolyLineRecord() - */ - function _loadPolyLineRecord() - { - $this->SHPData = array(); - $this->SHPData["xmin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["ymin"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["xmax"] = loadData("d", ImportShp::readFromBuffer(8)); - $this->SHPData["ymax"] = loadData("d", ImportShp::readFromBuffer(8)); - - $this->SHPData["numparts"] = loadData("V", ImportShp::readFromBuffer(4)); - $this->SHPData["numpoints"] = loadData("V", ImportShp::readFromBuffer(4)); - - for ($i = 0; $i < $this->SHPData["numparts"]; $i++) { - $this->SHPData["parts"][$i] = loadData( - "V", ImportShp::readFromBuffer(4) - ); - } - - $readPoints = 0; - reset($this->SHPData["parts"]); - while (list($partIndex, $partData) = each($this->SHPData["parts"])) { - if (! isset($this->SHPData["parts"][$partIndex]["points"]) - || !is_array($this->SHPData["parts"][$partIndex]["points"]) - ) { - $this->SHPData["parts"][$partIndex] = array(); - $this->SHPData["parts"][$partIndex]["points"] = array(); - } - while (! in_array($readPoints, $this->SHPData["parts"]) - && ($readPoints < ($this->SHPData["numpoints"])) - ) { - $this->SHPData["parts"][$partIndex]["points"][] - = $this->_loadPoint(); - $readPoints++; - } - } - } -} -?> diff --git a/pma12111211/libraries/plugins/import/upload/UploadApc.class.php b/pma12111211/libraries/plugins/import/upload/UploadApc.class.php deleted file mode 100644 index 3ddb7a7f..00000000 --- a/pma12111211/libraries/plugins/import/upload/UploadApc.class.php +++ /dev/null @@ -1,84 +0,0 @@ - $id, - 'finished' => false, - 'percent' => 0, - 'total' => 0, - 'complete' => 0, - 'plugin' => UploadApc::getIdKey() - ); - } - $ret = $_SESSION[$SESSION_KEY][$id]; - - if (! PMA_Import_apcCheck() || $ret['finished']) { - return $ret; - } - $status = apc_fetch('upload_' . $id); - - if ($status) { - $ret['finished'] = (bool)$status['done']; - $ret['total'] = $status['total']; - $ret['complete'] = $status['current']; - - if ($ret['total'] > 0) { - $ret['percent'] = $ret['complete'] / $ret['total'] * 100; - } - - if ($ret['percent'] == 100) { - $ret['finished'] = (bool)true; - } - - $_SESSION[$SESSION_KEY][$id] = $ret; - } - - return $ret; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/import/upload/UploadNoplugin.class.php b/pma12111211/libraries/plugins/import/upload/UploadNoplugin.class.php deleted file mode 100644 index 90148ded..00000000 --- a/pma12111211/libraries/plugins/import/upload/UploadNoplugin.class.php +++ /dev/null @@ -1,64 +0,0 @@ - $id, - 'finished' => false, - 'percent' => 0, - 'total' => 0, - 'complete' => 0, - 'plugin' => UploadNoplugin::getIdKey() - ); - } - $ret = $_SESSION[$SESSION_KEY][$id]; - - return $ret; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/import/upload/UploadProgress.class.php b/pma12111211/libraries/plugins/import/upload/UploadProgress.class.php deleted file mode 100644 index d7647b32..00000000 --- a/pma12111211/libraries/plugins/import/upload/UploadProgress.class.php +++ /dev/null @@ -1,94 +0,0 @@ - $id, - 'finished' => false, - 'percent' => 0, - 'total' => 0, - 'complete' => 0, - 'plugin' => UploadProgress::getIdKey() - ); - } - $ret = $_SESSION[$SESSION_KEY][$id]; - - if (! PMA_Import_progressCheck() || $ret['finished']) { - return $ret; - } - - $status = uploadprogress_get_info($id); - - if ($status) { - if ($status['bytes_uploaded'] == $status['bytes_total']) { - $ret['finished'] = true; - } else { - $ret['finished'] = false; - } - $ret['total'] = $status['bytes_total']; - $ret['complete'] = $status['bytes_uploaded']; - - if ($ret['total'] > 0) { - $ret['percent'] = $ret['complete'] / $ret['total'] * 100; - } - } else { - $ret = array( - 'id' => $id, - 'finished' => true, - 'percent' => 100, - 'total' => $ret['total'], - 'complete' => $ret['total'], - 'plugin' => UploadProgress::getIdKey() - ); - } - - $_SESSION[$SESSION_KEY][$id] = $ret; - return $ret; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/import/upload/UploadSession.class.php b/pma12111211/libraries/plugins/import/upload/UploadSession.class.php deleted file mode 100644 index d9bdd531..00000000 --- a/pma12111211/libraries/plugins/import/upload/UploadSession.class.php +++ /dev/null @@ -1,96 +0,0 @@ - $id, - 'finished' => false, - 'percent' => 0, - 'total' => 0, - 'complete' => 0, - 'plugin' => UploadSession::getIdKey() - ); - } - $ret = $_SESSION[$SESSION_KEY][$id]; - - if (! PMA_Import_sessionCheck() || $ret['finished']) { - return $ret; - } - - $status = false; - $sessionkey = ini_get('session.upload_progress.prefix') . $id; - - if (isset($_SESSION[$sessionkey])) { - $status = $_SESSION[$sessionkey]; - } - - if ($status) { - $ret['finished'] = $status['done']; - $ret['total'] = $status['content_length']; - $ret['complete'] = $status['bytes_processed']; - - if ($ret['total'] > 0) { - $ret['percent'] = $ret['complete'] / $ret['total'] * 100; - } - } else { - $ret = array( - 'id' => $id, - 'finished' => true, - 'percent' => 100, - 'total' => $ret['total'], - 'complete' => $ret['total'], - 'plugin' => UploadSession::getIdKey() - ); - } - - $_SESSION[$SESSION_KEY][$id] = $ret; - - return $ret; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Application_Octetstream_Download.class.php b/pma12111211/libraries/plugins/transformations/Application_Octetstream_Download.class.php deleted file mode 100644 index 069eda71..00000000 --- a/pma12111211/libraries/plugins/transformations/Application_Octetstream_Download.class.php +++ /dev/null @@ -1,43 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Application_Octetstream_Hex.class.php b/pma12111211/libraries/plugins/transformations/Application_Octetstream_Hex.class.php deleted file mode 100644 index f6f42974..00000000 --- a/pma12111211/libraries/plugins/transformations/Application_Octetstream_Hex.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Image_JPEG_Inline.class.php b/pma12111211/libraries/plugins/transformations/Image_JPEG_Inline.class.php deleted file mode 100644 index 501205a9..00000000 --- a/pma12111211/libraries/plugins/transformations/Image_JPEG_Inline.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Image_JPEG_Link.class.php b/pma12111211/libraries/plugins/transformations/Image_JPEG_Link.class.php deleted file mode 100644 index ca3c1d18..00000000 --- a/pma12111211/libraries/plugins/transformations/Image_JPEG_Link.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Image_PNG_Inline.class.php b/pma12111211/libraries/plugins/transformations/Image_PNG_Inline.class.php deleted file mode 100644 index 40b709d8..00000000 --- a/pma12111211/libraries/plugins/transformations/Image_PNG_Inline.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/README b/pma12111211/libraries/plugins/transformations/README deleted file mode 100644 index 7d7a1255..00000000 --- a/pma12111211/libraries/plugins/transformations/README +++ /dev/null @@ -1,4 +0,0 @@ -TRANSFORMATION USAGE (Garvin Hicking, ) -==================== - -See the documentation for complete instructions on how to use transformation plugins. diff --git a/pma12111211/libraries/plugins/transformations/TEMPLATE b/pma12111211/libraries/plugins/transformations/TEMPLATE deleted file mode 100644 index 6f116ce8..00000000 --- a/pma12111211/libraries/plugins/transformations/TEMPLATE +++ /dev/null @@ -1,46 +0,0 @@ - diff --git a/pma12111211/libraries/plugins/transformations/TEMPLATE_ABSTRACT b/pma12111211/libraries/plugins/transformations/TEMPLATE_ABSTRACT deleted file mode 100644 index 5cc1d26b..00000000 --- a/pma12111211/libraries/plugins/transformations/TEMPLATE_ABSTRACT +++ /dev/null @@ -1,89 +0,0 @@ -mimetype contains the original MimeType of the field (i.e. 'text/plain', 'image/jpeg' etc.) - - return $buffer; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the TransformationName of the specific plugin - * - * @return string - */ - public static function getName() - { - return "[TransformationName]"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Append.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Append.class.php deleted file mode 100644 index 567c2cc6..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Append.class.php +++ /dev/null @@ -1,45 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Dateformat.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Dateformat.class.php deleted file mode 100644 index 70db98ae..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Dateformat.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_External.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_External.class.php deleted file mode 100644 index 18da6131..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_External.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Formatted.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Formatted.class.php deleted file mode 100644 index 3942a93e..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Formatted.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Imagelink.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Imagelink.class.php deleted file mode 100644 index 670e52e8..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Imagelink.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Link.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Link.class.php deleted file mode 100644 index d1b17d5e..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Link.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Longtoipv4.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Longtoipv4.class.php deleted file mode 100644 index 9f58a45e..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Longtoipv4.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Sql.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Sql.class.php deleted file mode 100644 index 1987ba91..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Sql.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/Text_Plain_Substring.class.php b/pma12111211/libraries/plugins/transformations/Text_Plain_Substring.class.php deleted file mode 100644 index 051ae51c..00000000 --- a/pma12111211/libraries/plugins/transformations/Text_Plain_Substring.class.php +++ /dev/null @@ -1,44 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/AppendTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/AppendTransformationsPlugin.class.php deleted file mode 100644 index 86bb0be7..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/AppendTransformationsPlugin.class.php +++ /dev/null @@ -1,84 +0,0 @@ - diff --git a/pma12111211/libraries/plugins/transformations/abstract/DateFormatTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/DateFormatTransformationsPlugin.class.php deleted file mode 100644 index b6879346..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/DateFormatTransformationsPlugin.class.php +++ /dev/null @@ -1,178 +0,0 @@ -type == 'int') { - $timestamp = $buffer; - - // Detect TIMESTAMP(6 | 8 | 10 | 12 | 14) - // TIMESTAMP (2 | 4) not supported here. - // (Note: prior to MySQL 4.1, TIMESTAMP has a display size - // for example TIMESTAMP(8) means YYYYMMDD) - } else if (preg_match('/^(\d{2}){3,7}$/', $buffer)) { - - if (strlen($buffer) == 14 || strlen($buffer) == 8) { - $offset = 4; - } else { - $offset = 2; - } - - $d = array(); - $d['year'] = substr($buffer, 0, $offset); - $d['month'] = substr($buffer, $offset, 2); - $d['day'] = substr($buffer, $offset + 2, 2); - $d['hour'] = substr($buffer, $offset + 4, 2); - $d['minute'] = substr($buffer, $offset + 6, 2); - $d['second'] = substr($buffer, $offset + 8, 2); - - if (checkdate($d['month'], $d['day'], $d['year'])) { - $timestamp = mktime( - $d['hour'], - $d['minute'], - $d['second'], - $d['month'], - $d['day'], - $d['year'] - ); - } - // If all fails, assume one of the dozens of valid strtime() syntaxes - // (http://www.gnu.org/manual/tar-1.12/html_chapter/tar_7.html) - } else { - if (preg_match('/^[0-9]\d{1,9}$/', $buffer)) { - $timestamp = (int)$buffer; - } else { - $timestamp = strtotime($buffer); - } - } - - // If all above failed, maybe it's a Unix timestamp already? - if ($timestamp < 0 && preg_match('/^[1-9]\d{1,9}$/', $buffer)) { - $timestamp = $buffer; - } - - // Reformat a valid timestamp - if ($timestamp >= 0) { - $timestamp -= $options[0] * 60 * 60; - $source = $buffer; - if ($options[2] == 'local') { - $text = PMA_Util::localisedDate( - $timestamp, - $options[1] - ); - } elseif ($options[2] == 'utc') { - $text = gmdate($options[1], $timestamp); - } else { - $text = 'INVALID DATE TYPE'; - } - $buffer = '' . $text . ''; - } - - return $buffer; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Date Format"; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php deleted file mode 100644 index 134fb7fb..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php +++ /dev/null @@ -1,110 +0,0 @@ - $val) { - if ($val->name == $options[1]) { - $pos = $key; - break; - } - } - if (isset($pos)) { - $cn = $row[$pos]; - } - } - if (empty($cn)) { - $cn = 'binary_file.dat'; - } - } - - return sprintf( - '%s', - $options['wrapper_link'], - urlencode($cn), - htmlspecialchars($cn), - htmlspecialchars($cn) - ); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Download"; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php deleted file mode 100644 index 86ba1acc..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php +++ /dev/null @@ -1,182 +0,0 @@ -= 4.3.0 - $newstring = ''; - $descriptorspec = array( - 0 => array("pipe", "r"), - 1 => array("pipe", "w") - ); - $process = proc_open($program . ' ' . $poptions, $descriptorspec, $pipes); - if (is_resource($process)) { - fwrite($pipes[0], $buffer); - fclose($pipes[0]); - - while (!feof($pipes[1])) { - $newstring .= fgets($pipes[1], 1024); - } - fclose($pipes[1]); - // we don't currently use the return value - proc_close($process); - } - - if ($options[2] == 1 || $options[2] == '2') { - $retstring = htmlspecialchars($newstring); - } else { - $retstring = $newstring; - } - - return $retstring; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "External"; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/FormattedTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/FormattedTransformationsPlugin.class.php deleted file mode 100644 index 7a39e45a..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/FormattedTransformationsPlugin.class.php +++ /dev/null @@ -1,80 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php deleted file mode 100644 index 2809837b..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php +++ /dev/null @@ -1,91 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/ImageLinkTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/ImageLinkTransformationsPlugin.class.php deleted file mode 100644 index d5059fdf..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/ImageLinkTransformationsPlugin.class.php +++ /dev/null @@ -1,87 +0,0 @@ - '[BLOB]' - ); - return PMA_Transformation_globalHtmlReplace( - $buffer, - $transform_options - ); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "ImageLink"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/abstract/InlineTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/InlineTransformationsPlugin.class.php deleted file mode 100644 index e6c9ca82..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/InlineTransformationsPlugin.class.php +++ /dev/null @@ -1,101 +0,0 @@ - '[__BUFFER__]' - ); - } else { - $transform_options = array ( - 'string' => '[__BUFFER__]' - ); - } - return PMA_Transformation_globalHtmlReplace( - $buffer, - $transform_options - ); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Inline"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php deleted file mode 100644 index d1431ce4..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php +++ /dev/null @@ -1,83 +0,0 @@ - 4294967295) { - return $buffer; - } - - return long2ip($buffer); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Long To IPv4"; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php deleted file mode 100644 index 991f54d7..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php +++ /dev/null @@ -1,82 +0,0 @@ - diff --git a/pma12111211/libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php deleted file mode 100644 index b6fb75af..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php +++ /dev/null @@ -1,118 +0,0 @@ -substr( - $buffer, $options[0], $options[1] - ); - } else { - $newtext = $GLOBALS['PMA_String']->substr($buffer, $options[0]); - } - - $length = strlen($newtext); - $baselength = strlen($buffer); - if ($length != $baselength) { - if ($options[0] != 0) { - $newtext = $options[2] . $newtext; - } - - if (($length + $options[0]) != $baselength) { - $newtext .= $options[2]; - } - } - - return $newtext; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Substring"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/abstract/TextImageLinkTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/TextImageLinkTransformationsPlugin.class.php deleted file mode 100644 index a1824c93..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/TextImageLinkTransformationsPlugin.class.php +++ /dev/null @@ -1,96 +0,0 @@ - '' - . $buffer . '' - ); - - $buffer = PMA_Transformation_globalHtmlReplace( - $buffer, - $transform_options - ); - - return $buffer; - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "Image Link"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/abstract/TextLinkTransformationsPlugin.class.php b/pma12111211/libraries/plugins/transformations/abstract/TextLinkTransformationsPlugin.class.php deleted file mode 100644 index da8fb59d..00000000 --- a/pma12111211/libraries/plugins/transformations/abstract/TextLinkTransformationsPlugin.class.php +++ /dev/null @@ -1,98 +0,0 @@ - '' - . htmlspecialchars(isset($options[1]) ? $options[1] : $buffer) - . '' - ); - - return PMA_Transformation_globalHtmlReplace( - $buffer, - $transform_options - ); - } - - /** - * This method is called when any PluginManager to which the observer - * is attached calls PluginManager::notify() - * - * @param SplSubject $subject The PluginManager notifying the observer - * of an update. - * - * @todo implement - * @return void - */ - public function update (SplSubject $subject) - { - ; - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the transformation name of the specific plugin - * - * @return string - */ - public static function getName() - { - return "TextLink"; - } -} -?> diff --git a/pma12111211/libraries/plugins/transformations/generator_main_class.sh b/pma12111211/libraries/plugins/transformations/generator_main_class.sh deleted file mode 100644 index 05876671..00000000 --- a/pma12111211/libraries/plugins/transformations/generator_main_class.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# -# Shell script that creates only the main class for a new transformation -# plug-in, using a template -# -# $1: MIMEType -# $2: MIMESubtype -# $3: Transformation Name - -if [ $# != 3 ] -then - echo -e "Usage: ./generator_main_class.sh MIMEType MIMESubtype TransformationName\n" - exit 65 -fi - -./generator_plugin.sh "$1" "$2" "$3" "--generate_only_main_class" \ No newline at end of file diff --git a/pma12111211/libraries/plugins/transformations/generator_plugin.sh b/pma12111211/libraries/plugins/transformations/generator_plugin.sh deleted file mode 100644 index 225a2cb9..00000000 --- a/pma12111211/libraries/plugins/transformations/generator_plugin.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -# -# Shell script that creates a new transformation plug-in (both main and -# abstract class) using a template. -# -# The 'description' parameter will add a new entry in the language file. -# Watch out for special escaping. -# -# $1: MIMEType -# $2: MIMESubtype -# $3: Transformation Name -# $4: (optional) Description - -echo $# -if [ $# -ne 3 -a $# -ne 4 ]; then - echo -e "Usage: ./generator_plugin.sh MIMEType MIMESubtype TransformationName [Description]\n" - exit 65 -fi - -# make sure that the MIME Type, MIME Subtype and Transformation names -# are in the correct format - -# make all names lowercase -MT="`echo $1 | tr [:upper:] [:lower:]`" -MS="`echo $2 | tr [:upper:] [:lower:]`" -TN="`echo $3 | tr [:upper:] [:lower:]`" -# make first letter uppercase -MT="${MT^}" -MS="${MS^}" -TN="${TN^}" -# make the first letter after each underscore uppercase -MT="`echo $MT`" -MT="`echo $MT | sed -e 's/_./\U&\E/g'`" -MS="`echo $MS`" -MS="`echo $MS | sed -e 's/_./\U&\E/g'`" -TN="`echo $TN`" -TN="`echo $TN | sed -e 's/_./\U&\E/g'`" - -# define the name of the main class file and of its template -ClassFile=$MT\_$MS\_$TN.class.php -Template=TEMPLATE -# define the name of the abstract class file and its template -AbstractClassFile=abstract/"$TN"TransformationsPlugin.class.php -AbstractTemplate=TEMPLATE_ABSTRACT -# replace template names with argument names -sed "s/\[MIMEType]/$MT/; s/\[MIMESubtype\]/$MS/; s/\[TransformationName\]/$TN/;" < $Template > $ClassFile -echo "Created $ClassFile" - -GenerateAbstractClass=1 -if [ -n $4 ]; then - if [ "$4" == "--generate_only_main_class" ]; then - if [ -e $AbstractClassFile ]; then - GenerateAbstractClass=0 - fi - fi -fi - -if [ $GenerateAbstractClass -eq 1 ]; then - # replace template names with argument names - sed "s/\[TransformationName\]/$TN/; s/Description of the transformation./$4/;" < $AbstractTemplate > $AbstractClassFile - echo "Created $AbstractClassFile" -fi - -echo "" \ No newline at end of file diff --git a/pma12111211/libraries/pmd_common.php b/pma12111211/libraries/pmd_common.php deleted file mode 100644 index 65839910..00000000 --- a/pma12111211/libraries/pmd_common.php +++ /dev/null @@ -1,284 +0,0 @@ -getTablesFull($GLOBALS['db']); - // seems to be needed later - $GLOBALS['dbi']->selectDb($GLOBALS['db']); - $i = 0; - foreach ($tables as $one_table) { - $GLOBALS['PMD']['TABLE_NAME'][$i] - = $GLOBALS['db'] . "." . $one_table['TABLE_NAME']; - $GLOBALS['PMD']['OWNER'][$i] = $GLOBALS['db']; - $GLOBALS['PMD']['TABLE_NAME_SMALL'][$i] = $one_table['TABLE_NAME']; - - $GLOBALS['PMD_URL']['TABLE_NAME'][$i] - = urlencode($GLOBALS['db'] . "." . $one_table['TABLE_NAME']); - $GLOBALS['PMD_URL']['OWNER'][$i] = urlencode($GLOBALS['db']); - $GLOBALS['PMD_URL']['TABLE_NAME_SMALL'][$i] - = urlencode($one_table['TABLE_NAME']); - - $GLOBALS['PMD_OUT']['TABLE_NAME'][$i] = htmlspecialchars( - $GLOBALS['db'] . "." . $one_table['TABLE_NAME'], ENT_QUOTES - ); - $GLOBALS['PMD_OUT']['OWNER'][$i] = htmlspecialchars( - $GLOBALS['db'], ENT_QUOTES - ); - $GLOBALS['PMD_OUT']['TABLE_NAME_SMALL'][$i] = htmlspecialchars( - $one_table['TABLE_NAME'], ENT_QUOTES - ); - - $GLOBALS['PMD']['TABLE_TYPE'][$i] = strtoupper($one_table['ENGINE']); - - $DF = PMA_getDisplayField($GLOBALS['db'], $one_table['TABLE_NAME']); - if ($DF != '') { - $retval[$GLOBALS['PMD_URL']["TABLE_NAME_SMALL"][$i]] = urlencode($DF); - } - - $i++; - } - - return $retval; -} - -/** - * retrieves table column info - * - * @return array table column nfo - */ -function get_columns_info() -{ - $GLOBALS['dbi']->selectDb($GLOBALS['db']); - $tab_column = array(); - for ($i = 0, $cnt = count($GLOBALS['PMD']["TABLE_NAME"]); $i < $cnt; $i++) { - $fields_rs = $GLOBALS['dbi']->query( - $GLOBALS['dbi']->getColumnsSql( - $GLOBALS['db'], - $GLOBALS['PMD']["TABLE_NAME_SMALL"][$i], - null, - true - ), - null, - PMA_DatabaseInterface::QUERY_STORE - ); - $tbl_name_i = $GLOBALS['PMD']['TABLE_NAME'][$i]; - $j = 0; - while ($row = $GLOBALS['dbi']->fetchAssoc($fields_rs)) { - $tab_column[$tbl_name_i]['COLUMN_ID'][$j] = $j; - $tab_column[$tbl_name_i]['COLUMN_NAME'][$j] = $row['Field']; - $tab_column[$tbl_name_i]['TYPE'][$j] = $row['Type']; - $tab_column[$tbl_name_i]['NULLABLE'][$j] = $row['Null']; - $j++; - } - } - return $tab_column; -} - -/** - * returns JavaScript code for intializing vars - * - * @return string JavaScript code - */ -function get_script_contr() -{ - $GLOBALS['dbi']->selectDb($GLOBALS['db']); - $con["C_NAME"] = array(); - $i = 0; - $alltab_rs = $GLOBALS['dbi']->query( - 'SHOW TABLES FROM ' . PMA_Util::backquote($GLOBALS['db']), - null, - PMA_DatabaseInterface::QUERY_STORE - ); - while ($val = @$GLOBALS['dbi']->fetchRow($alltab_rs)) { - $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'internal'); - //echo "
            internal ".$GLOBALS['db']." - ".$val[0]." - "; - //print_r($row); - if ($row !== false) { - foreach ($row as $field => $value) { - $con['C_NAME'][$i] = ''; - $con['DTN'][$i] = urlencode($GLOBALS['db'] . "." . $val[0]); - $con['DCN'][$i] = urlencode($field); - $con['STN'][$i] = urlencode( - $value['foreign_db'] . "." . $value['foreign_table'] - ); - $con['SCN'][$i] = urlencode($value['foreign_field']); - $i++; - } - } - $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'foreign'); - //echo "
            INNO "; - //print_r($row); - if ($row !== false) { - foreach ($row as $field => $value) { - $con['C_NAME'][$i] = ''; - $con['DTN'][$i] = urlencode($GLOBALS['db'].".".$val[0]); - $con['DCN'][$i] = urlencode($field); - $con['STN'][$i] = urlencode( - $value['foreign_db'].".".$value['foreign_table'] - ); - $con['SCN'][$i] = urlencode($value['foreign_field']); - $i++; - } - } - } - - $ti = 0; - $retval = array(); - for ($i = 0, $cnt = count($con["C_NAME"]); $i < $cnt; $i++) { - $c_name_i = $con['C_NAME'][$i]; - $dtn_i = $con['DTN'][$i]; - $retval[$ti] = array(); - $retval[$ti][$c_name_i] = array(); - if (in_array($dtn_i, $GLOBALS['PMD_URL']["TABLE_NAME"]) - && in_array($con['STN'][$i], $GLOBALS['PMD_URL']["TABLE_NAME"]) - ) { - $retval[$ti][$c_name_i][$dtn_i] = array(); - $retval[$ti][$c_name_i][$dtn_i][$con['DCN'][$i]] = array( - 0 => $con['STN'][$i], - 1 => $con['SCN'][$i] - ); - } - $ti++; - } - return $retval; -} - -/** - * Returns UNIQUE and PRIMARY indices - * - * @return array unique or primary indices - */ -function get_pk_or_unique_keys() -{ - return get_all_keys(true); -} - -/** - * returns all indices - * - * @param bool $unique_only whether to include only unique ones - * - * @return array indices - */ -function get_all_keys($unique_only = false) -{ - include_once './libraries/Index.class.php'; - - $keys = array(); - - foreach ($GLOBALS['PMD']['TABLE_NAME_SMALL'] as $I => $table) { - $schema = $GLOBALS['PMD']['OWNER'][$I]; - // for now, take into account only the first index segment - foreach (PMA_Index::getFromTable($table, $schema) as $index) { - if ($unique_only && ! $index->isUnique()) { - continue; - } - $columns = $index->getColumns(); - foreach ($columns as $column_name => $dummy) { - $keys[$schema . '.' .$table . '.' . $column_name] = 1; - } - } - } - return $keys; -} - -/** - * Return script to create j_tab and h_tab arrays - * - * @return string - */ -function get_script_tabs() -{ - $retval = array( - 'j_tabs' => array(), - 'h_tabs' => array() - ); - - for ($i = 0, $cnt = count($GLOBALS['PMD']['TABLE_NAME']); $i < $cnt; $i++) { - $j = 0; - if (PMA_Util::isForeignKeySupported($GLOBALS['PMD']['TABLE_TYPE'][$i])) { - $j = 1; - } - $retval['j_tabs'][$GLOBALS['PMD_URL']['TABLE_NAME'][$i]] = $j; - $retval['h_tabs'][$GLOBALS['PMD_URL']['TABLE_NAME'][$i]] = 1; - } - return $retval; -} - -/** - * Returns table position - * - * @return array table positions and sizes - */ -function get_tab_pos() -{ - $cfgRelation = PMA_getRelationsParam(); - - if (! $cfgRelation['designerwork']) { - return null; - } - - $query = " - SELECT CONCAT_WS('.', `db_name`, `table_name`) AS `name`, - `x` AS `X`, - `y` AS `Y`, - `v` AS `V`, - `h` AS `H` - FROM " . PMA_Util::backquote($cfgRelation['db']) - . "." . PMA_Util::backquote($cfgRelation['designer_coords']); - $tab_pos = $GLOBALS['dbi']->fetchResult( - $query, - 'name', - null, - $GLOBALS['controllink'], - PMA_DatabaseInterface::QUERY_STORE - ); - return count($tab_pos) ? $tab_pos : null; -} - -/** - * Prepares XML output for js/pmd/ajax.js to display a message - * - */ -function PMD_return_upd($b, $ret) -{ - // not sure where this was defined... - global $K; - - header("Content-Type: text/xml; charset=utf-8"); - header("Cache-Control: no-cache"); - die(''); -} -?> diff --git a/pma12111211/libraries/properties/PropertyItem.class.php b/pma12111211/libraries/properties/PropertyItem.class.php deleted file mode 100644 index 83a5b263..00000000 --- a/pma12111211/libraries/properties/PropertyItem.class.php +++ /dev/null @@ -1,49 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/OptionsPropertyGroup.class.php b/pma12111211/libraries/properties/options/OptionsPropertyGroup.class.php deleted file mode 100644 index fe2fe40f..00000000 --- a/pma12111211/libraries/properties/options/OptionsPropertyGroup.class.php +++ /dev/null @@ -1,102 +0,0 @@ -getProperties() == null - && in_array($property, $this->getProperties(), true) - ) { - return; - } - $this->_properties [] = $property; - } - - /** - * Removes a property from the group of properties - * - * @param OptionsPropertyItem $property the property instance to be removed - * from the group - * - * @return void - */ - public function removeProperty($property) - { - $this->_properties = array_udiff( - $this->getProperties(), - array($property), - function ($a, $b) { - return ($a === $b ) ? 0 : 1; - } - ); - } - - - /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ - - - /** - * Gets the instance of the class - * - * @return array - */ - public function getGroup() - { - return $this; - } - - /** - * Gets the group of properties - * - * @return array - */ - public function getProperties() - { - return $this->_properties; - } - - /** - * Gets the number of properties - * - * @return int - */ - public function getNrOfProperties() - { - return count($this->_properties); - } -} -?> diff --git a/pma12111211/libraries/properties/options/OptionsPropertyItem.class.php b/pma12111211/libraries/properties/options/OptionsPropertyItem.class.php deleted file mode 100644 index a1718a2f..00000000 --- a/pma12111211/libraries/properties/options/OptionsPropertyItem.class.php +++ /dev/null @@ -1,127 +0,0 @@ -_name; - } - - /** - * Sets the name - * - * @param string $name name - * - * @return void - */ - public function setName($name) - { - $this->_name = $name; - } - - /** - * Gets the text - * - * @return string - */ - public function getText() - { - return $this->_text; - } - - /** - * Sets the text - * - * @param string $text text - * - * @return void - */ - public function setText($text) - { - $this->_text = $text; - } - - /** - * Gets the force parameter - * - * @return string - */ - public function getForce() - { - return $this->_force; - } - - /** - * Sets the force paramter - * - * @param string $force force parameter - * - * @return void - */ - public function setForce($force) - { - $this->_force = $force; - } - - /** - * Returns the property type ( either "options", or "plugin" ). - * - * @return string - */ - public function getPropertyType() - { - return "options"; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/OptionsPropertyOneItem.class.php b/pma12111211/libraries/properties/options/OptionsPropertyOneItem.class.php deleted file mode 100644 index e19c15cd..00000000 --- a/pma12111211/libraries/properties/options/OptionsPropertyOneItem.class.php +++ /dev/null @@ -1,172 +0,0 @@ -_force; - } - - /** - * Sets the force parameter - * - * @param bool $force force parameter - * - * @return void - */ - public function setForce($force) - { - $this->_force = $force; - } - - /** - * Gets the values - * - * @return string - */ - public function getValues() - { - return $this->_values; - } - - /** - * Sets the values - * - * @param array $values values - * - * @return void - */ - public function setValues($values) - { - $this->_values = $values; - } - - /** - * Gets the type of the newline character - * - * @return string - */ - public function getDoc() - { - return $this->_doc; - } - - /** - * Sets the doc - * - * @param string $doc doc - * - * @return void - */ - public function setDoc($doc) - { - $this->_doc = $doc; - } - - /** - * Gets the length - * - * @return int - */ - public function getLen() - { - return $this->_len; - } - - /** - * Sets the length - * - * @param int $len length - * - * @return void - */ - public function setLen($len) - { - $this->_len = $len; - } - - /** - * Gets the size - * - * @return int - */ - public function getSize() - { - return $this->_size; - } - - /** - * Sets the size - * - * @param int $size size - * - * @return void - */ - public function setSize($size) - { - $this->_size = $size; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php b/pma12111211/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php deleted file mode 100644 index 4e69aa7a..00000000 --- a/pma12111211/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php b/pma12111211/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php deleted file mode 100644 index a081744f..00000000 --- a/pma12111211/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/groups/OptionsPropertySubgroup.class.php b/pma12111211/libraries/properties/options/groups/OptionsPropertySubgroup.class.php deleted file mode 100644 index 0eeb5243..00000000 --- a/pma12111211/libraries/properties/options/groups/OptionsPropertySubgroup.class.php +++ /dev/null @@ -1,68 +0,0 @@ -_subgroupHeader; - } - - /** - * Sets the subgroup header - * - * @param string $subgroupHeader subgroup header - * - * @return void - */ - public function setSubgroupHeader($subgroupHeader) - { - $this->_subgroupHeader = $subgroupHeader; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/BoolPropertyItem.class.php b/pma12111211/libraries/properties/options/items/BoolPropertyItem.class.php deleted file mode 100644 index f33067fc..00000000 --- a/pma12111211/libraries/properties/options/items/BoolPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/DocPropertyItem.class.php b/pma12111211/libraries/properties/options/items/DocPropertyItem.class.php deleted file mode 100644 index 55aff614..00000000 --- a/pma12111211/libraries/properties/options/items/DocPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/HiddenPropertyItem.class.php b/pma12111211/libraries/properties/options/items/HiddenPropertyItem.class.php deleted file mode 100644 index 53bfe465..00000000 --- a/pma12111211/libraries/properties/options/items/HiddenPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/MessageOnlyPropertyItem.class.php b/pma12111211/libraries/properties/options/items/MessageOnlyPropertyItem.class.php deleted file mode 100644 index 98f2e709..00000000 --- a/pma12111211/libraries/properties/options/items/MessageOnlyPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/NumberPropertyItem.class.php b/pma12111211/libraries/properties/options/items/NumberPropertyItem.class.php deleted file mode 100644 index 7c687c75..00000000 --- a/pma12111211/libraries/properties/options/items/NumberPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/pma12111211/libraries/properties/options/items/RadioPropertyItem.class.php b/pma12111211/libraries/properties/options/items/RadioPropertyItem.class.php deleted file mode 100644 index 4d8ed7a2..00000000 --- a/pma12111211/libraries/properties/options/items/RadioPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/SelectPropertyItem.class.php b/pma12111211/libraries/properties/options/items/SelectPropertyItem.class.php deleted file mode 100644 index 28460c95..00000000 --- a/pma12111211/libraries/properties/options/items/SelectPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/options/items/TextPropertyItem.class.php b/pma12111211/libraries/properties/options/items/TextPropertyItem.class.php deleted file mode 100644 index 9339cdf0..00000000 --- a/pma12111211/libraries/properties/options/items/TextPropertyItem.class.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/properties/plugins/ExportPluginProperties.class.php b/pma12111211/libraries/properties/plugins/ExportPluginProperties.class.php deleted file mode 100644 index 61708971..00000000 --- a/pma12111211/libraries/properties/plugins/ExportPluginProperties.class.php +++ /dev/null @@ -1,214 +0,0 @@ -_text; - } - - /** - * Sets the text - * - * @param string $text text - * - * @return void - */ - public function setText($text) - { - $this->_text = $text; - } - - /** - * Gets the extension - * - * @return string - */ - public function getExtension() - { - return $this->_extension; - } - - /** - * Sets the extension - * - * @param string $extension extension - * - * @return void - */ - public function setExtension($extension) - { - $this->_extension = $extension; - } - - /** - * Gets the options - * - * @return OptionsPropertyRootGroup - */ - public function getOptions() - { - return $this->_options; - } - - /** - * Sets the options - * - * @param OptionsPropertyRootGroup $options options - * - * @return void - */ - public function setOptions($options) - { - $this->_options = $options; - } - - /** - * Gets the options text - * - * @return string - */ - public function getOptionsText() - { - return $this->_optionsText; - } - - /** - * Sets the options text - * - * @param string $optionsText optionsText - * - * @return void - */ - public function setOptionsText($optionsText) - { - $this->_optionsText = $optionsText; - } - - /** - * Gets the MIME type - * - * @return string - */ - public function getMimeType() - { - return $this->_mimeType; - } - - /** - * Sets the MIME type - * - * @param string $mimeType MIME type - * - * @return void - */ - public function setMimeType($mimeType) - { - $this->_mimeType = $mimeType; - } - - /** - * Gets the force file parameter - * - * @return bool - */ - public function getForceFile() - { - return $this->_forceFile; - } - - /** - * Sets the force file parameter - * - * @param bool $forceFile the force file parameter - * - * @return void - */ - public function setForceFile($forceFile) - { - $this->_forceFile = $forceFile; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/properties/plugins/ImportPluginProperties.class.php b/pma12111211/libraries/properties/plugins/ImportPluginProperties.class.php deleted file mode 100644 index 65c3092c..00000000 --- a/pma12111211/libraries/properties/plugins/ImportPluginProperties.class.php +++ /dev/null @@ -1,184 +0,0 @@ -_text; - } - - /** - * Sets the text - * - * @param string $text text - * - * @return void - */ - public function setText($text) - { - $this->_text = $text; - } - - /** - * Gets the extension - * - * @return string - */ - public function getExtension() - { - return $this->_extension; - } - - /** - * Sets the extension - * - * @param string $extension extension - * - * @return void - */ - public function setExtension($extension) - { - $this->_extension = $extension; - } - - /** - * Gets the options - * - * @return OptionsPropertyRootGroup - */ - public function getOptions() - { - return $this->_options; - } - - /** - * Sets the options - * - * @param OptionsPropertyRootGroup $options options - * - * @return void - */ - public function setOptions($options) - { - $this->_options = $options; - } - - /** - * Gets the options text - * - * @return string - */ - public function getOptionsText() - { - return $this->_optionsText; - } - - /** - * Sets the options text - * - * @param string $optionsText options text - * - * @return void - */ - public function setOptionsText($optionsText) - { - $this->_optionsText = $optionsText; - } - - /** - * Gets the MIME type - * - * @return string - */ - public function getMimeType() - { - return $this->_mimeType; - } - - /** - * Sets the MIME type - * - * @param string $mimeType MIME type - * - * @return void - */ - public function setMimeType($mimeType) - { - $this->_mimeType = $mimeType; - } -} -?> \ No newline at end of file diff --git a/pma12111211/libraries/properties/plugins/PluginPropertyItem.class.php b/pma12111211/libraries/properties/plugins/PluginPropertyItem.class.php deleted file mode 100644 index af46be22..00000000 --- a/pma12111211/libraries/properties/plugins/PluginPropertyItem.class.php +++ /dev/null @@ -1,36 +0,0 @@ - \ No newline at end of file diff --git a/pma12111211/libraries/relation.lib.php b/pma12111211/libraries/relation.lib.php deleted file mode 100644 index d49ec141..00000000 --- a/pma12111211/libraries/relation.lib.php +++ /dev/null @@ -1,1497 +0,0 @@ -query( - $sql, - $GLOBALS['controllink'], - $options, - $cache_affected_rows - ); - } else { - $result = @$GLOBALS['dbi']->tryQuery( - $sql, - $GLOBALS['controllink'], - $options, - $cache_affected_rows - ); - } // end if... else... - - if ($result) { - return $result; - } else { - return false; - } -} // end of the "PMA_queryAsControlUser()" function - -/** - * Returns current relation parameters - * - * @return array $cfgRelation - */ -function PMA_getRelationsParam() -{ - // avoid breakage if pmadb got unconfigured after login - if (! defined('TESTSUITE') && empty($GLOBALS['cfg']['Server']['pmadb'])) { - unset($_SESSION['relation'][$GLOBALS['server']]); - } - if (empty($_SESSION['relation'][$GLOBALS['server']])) { - $_SESSION['relation'][$GLOBALS['server']] = PMA_checkRelationsParam(); - } - - // just for BC but needs to be before PMA_getRelationsParamDiagnostic() - // which uses it - $GLOBALS['cfgRelation'] = $_SESSION['relation'][$GLOBALS['server']]; - - return $_SESSION['relation'][$GLOBALS['server']]; -} - -/** - * prints out diagnostic info for pma relation feature - * - * @param array $cfgRelation Relation configuration - * - * @return string - */ -function PMA_getRelationsParamDiagnostic($cfgRelation) -{ - $retval = ''; - - $messages['error'] = '' - . __('not OK') - . '' - . ' [ ' - . __('Documentation') - . ' ]'; - - $messages['ok'] = '' - . _pgettext('Correctly working', 'OK') - . ''; - - $messages['enabled'] = '' . __('Enabled') . ''; - $messages['disabled'] = '' . __('Disabled') . ''; - - if (false === $GLOBALS['cfg']['Server']['pmadb']) { - $retval .= 'PMA Database ... ' - . sprintf($messages['error'], 'pmadb') - . '
            ' . "\n" - . __('General relation features') - . ' ' . __('Disabled') - . '' . "\n"; - } else { - $retval .= '' . "\n"; - $retval .= PMA_getDiagMessageForParameter( - 'pmadb', - $GLOBALS['cfg']['Server']['pmadb'], - $messages, - 'pmadb' - ); - $retval .= PMA_getDiagMessageForParameter( - 'relation', - isset($cfgRelation['relation']), - $messages, - 'relation' - ); - $retval .= PMA_getDiagMessageForFeature( - __('General relation features'), - 'relwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'table_info', - isset($cfgRelation['table_info']), - $messages, - 'table_info' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Display Features'), - 'displaywork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'table_coords', - isset($cfgRelation['table_coords']), - $messages, - 'table_coords' - ); - $retval .= PMA_getDiagMessageForParameter( - 'pdf_pages', - isset($cfgRelation['pdf_pages']), - $messages, - 'pdf_pages' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Creation of PDFs'), - 'pdfwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'column_info', - isset($cfgRelation['column_info']), - $messages, - 'column_info' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Displaying Column Comments'), - 'commwork', - $messages, - false - ); - $retval .= PMA_getDiagMessageForFeature( - __('Browser transformation'), - 'mimework', - $messages - ); - if ($cfgRelation['commwork'] && ! $cfgRelation['mimework']) { - $retval .= ''; - } - $retval .= PMA_getDiagMessageForParameter( - 'bookmarktable', - isset($cfgRelation['bookmark']), - $messages, - 'bookmark' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Bookmarked SQL query'), - 'bookmarkwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'history', - isset($cfgRelation['history']), - $messages, - 'history' - ); - $retval .= PMA_getDiagMessageForFeature( - __('SQL history'), - 'historywork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'designer_coords', - isset($cfgRelation['designer_coords']), - $messages, - 'designer_coords' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Designer'), - 'designerwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'recent', - isset($cfgRelation['recent']), - $messages, - 'recent' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Persistent recently used tables'), - 'recentwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'table_uiprefs', - isset($cfgRelation['table_uiprefs']), - $messages, - 'table_uiprefs' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Persistent tables\' UI preferences'), - 'uiprefswork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'tracking', - isset($cfgRelation['tracking']), - $messages, - 'tracking' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Tracking'), - 'trackingwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'userconfig', - isset($cfgRelation['userconfig']), - $messages, - 'userconfig' - ); - $retval .= PMA_getDiagMessageForFeature( - __('User preferences'), - 'userconfigwork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'users', - isset($cfgRelation['users']), - $messages, - 'users' - ); - $retval .= PMA_getDiagMessageForParameter( - 'usergroups', - isset($cfgRelation['usergroups']), - $messages, - 'usergroups' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Configurable menus'), - 'menuswork', - $messages - ); - $retval .= PMA_getDiagMessageForParameter( - 'navigationhiding', - isset($cfgRelation['navigationhiding']), - $messages, - 'navigationhiding' - ); - $retval .= PMA_getDiagMessageForFeature( - __('Hide/show navigation items'), - 'navwork', - $messages - ); - $retval .= '
            '; - $retval .= __('Please see the documentation on how to update your column_comments table.'); - $retval .= '
            ' . "\n"; - - $retval .= '

            ' . __('Quick steps to setup advanced features:') . '

            '; - $retval .= '
              '; - $retval .= '
            • '; - $retval .= __( - 'Create the needed tables with the ' - . 'examples/create_tables.sql.' - ); - $retval .= ' ' . PMA_Util::showDocu('setup', 'linked-tables'); - $retval .= '
            • '; - $retval .= '
            • '; - $retval .= __('Create a pma user and give access to these tables.'); - $retval .= ' ' . PMA_Util::showDocu('config', 'cfg_Servers_controluser'); - $retval .= '
            • '; - $retval .= '
            • '; - $retval .= __( - 'Enable advanced features in configuration file ' - . '(config.inc.php), for example by ' - . 'starting from config.sample.inc.php.' - ); - $retval .= ' ' . PMA_Util::showDocu('setup', 'quick-install'); - $retval .= '
            • '; - $retval .= '
            • '; - $retval .= __( - 'Re-login to phpMyAdmin to load the updated configuration file.' - ); - $retval .= '
            • '; - $retval .= '
            '; - } - - return $retval; -} - -/** - * prints out one diagnostic message for a feature - * - * @param string $feature_name feature name in a message string - * @param string $relation_parameter the $GLOBALS['cfgRelation'] parameter to check - * @param array $messages utility messages - * @param boolean $skip_line whether to skip a line after the message - * - * @return string - */ -function PMA_getDiagMessageForFeature($feature_name, - $relation_parameter, $messages, $skip_line = true -) { - $retval = ' ' . $feature_name . ': '; - if ($GLOBALS['cfgRelation'][$relation_parameter]) { - $retval .= $messages['enabled']; - } else { - $retval .= $messages['disabled']; - } - $retval .= ''; - if ($skip_line) { - $retval .= ' '; - } - return $retval; -} - -/** - * prints out one diagnostic message for a configuration parameter - * - * @param string $parameter config parameter name to display - * @param boolean $relation_parameter_set whether this parameter is set - * @param array $messages utility messages - * @param string $doc_anchor anchor in documentation - * - * @return string - */ -function PMA_getDiagMessageForParameter($parameter, - $relation_parameter_set, $messages, $doc_anchor -) { - $retval = ''; - $retval .= '$cfg[\'Servers\'][$i][\'' . $parameter . '\'] ... '; - $retval .= ''; - if ($relation_parameter_set) { - $retval .= $messages['ok']; - } else { - $retval .= sprintf( - $messages['error'], - PMA_Util::getDocuLink('config', 'cfg_Servers_' . $doc_anchor) - ); - } - $retval .= '' . "\n"; - return $retval; -} - - -/** - * Defines the relation parameters for the current user - * just a copy of the functions used for relations ;-) - * but added some stuff to check what will work - * - * @access protected - * @return array the relation parameters for the current user - */ -function PMA_checkRelationsParam() -{ - $cfgRelation = array(); - $cfgRelation['relwork'] = false; - $cfgRelation['displaywork'] = false; - $cfgRelation['bookmarkwork'] = false; - $cfgRelation['pdfwork'] = false; - $cfgRelation['commwork'] = false; - $cfgRelation['mimework'] = false; - $cfgRelation['historywork'] = false; - $cfgRelation['recentwork'] = false; - $cfgRelation['uiprefswork'] = false; - $cfgRelation['trackingwork'] = false; - $cfgRelation['designerwork'] = false; - $cfgRelation['userconfigwork'] = false; - $cfgRelation['menuswork'] = false; - $cfgRelation['navwork'] = false; - $cfgRelation['allworks'] = false; - $cfgRelation['user'] = null; - $cfgRelation['db'] = null; - - if ($GLOBALS['server'] == 0 - || empty($GLOBALS['cfg']['Server']['pmadb']) - || ! $GLOBALS['dbi']->selectDb($GLOBALS['cfg']['Server']['pmadb'], $GLOBALS['controllink']) - ) { - // No server selected -> no bookmark table - // we return the array with the falses in it, - // to avoid some 'Unitialized string offset' errors later - $GLOBALS['cfg']['Server']['pmadb'] = false; - return $cfgRelation; - } - - - $cfgRelation['user'] = $GLOBALS['cfg']['Server']['user']; - $cfgRelation['db'] = $GLOBALS['cfg']['Server']['pmadb']; - - // Now I just check if all tables that i need are present so I can for - // example enable relations but not pdf... - // I was thinking of checking if they have all required columns but I - // fear it might be too slow - - $tab_query = 'SHOW TABLES FROM ' - . PMA_Util::backquote( - $GLOBALS['cfg']['Server']['pmadb'] - ); - $tab_rs = PMA_queryAsControlUser( - $tab_query, false, PMA_DatabaseInterface::QUERY_STORE - ); - - if (! $tab_rs) { - // query failed ... ? - //$GLOBALS['cfg']['Server']['pmadb'] = false; - return $cfgRelation; - } - - while ($curr_table = @$GLOBALS['dbi']->fetchRow($tab_rs)) { - if ($curr_table[0] == $GLOBALS['cfg']['Server']['bookmarktable']) { - $cfgRelation['bookmark'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['relation']) { - $cfgRelation['relation'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_info']) { - $cfgRelation['table_info'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_coords']) { - $cfgRelation['table_coords'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['designer_coords']) { - $cfgRelation['designer_coords'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['column_info']) { - $cfgRelation['column_info'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['pdf_pages']) { - $cfgRelation['pdf_pages'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['history']) { - $cfgRelation['history'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['recent']) { - $cfgRelation['recent'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_uiprefs']) { - $cfgRelation['table_uiprefs'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['tracking']) { - $cfgRelation['tracking'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['userconfig']) { - $cfgRelation['userconfig'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['users']) { - $cfgRelation['users'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['usergroups']) { - $cfgRelation['usergroups'] = $curr_table[0]; - } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['navigationhiding']) { - $cfgRelation['navigationhiding'] = $curr_table[0]; - } - } // end while - $GLOBALS['dbi']->freeResult($tab_rs); - - if (isset($cfgRelation['relation'])) { - $cfgRelation['relwork'] = true; - if (isset($cfgRelation['table_info'])) { - $cfgRelation['displaywork'] = true; - } - } - - if (isset($cfgRelation['table_coords']) && isset($cfgRelation['pdf_pages'])) { - $cfgRelation['pdfwork'] = true; - } - - if (isset($cfgRelation['column_info'])) { - $cfgRelation['commwork'] = true; - $cfgRelation['mimework'] = true; - } - - if (isset($cfgRelation['history'])) { - $cfgRelation['historywork'] = true; - } - - if (isset($cfgRelation['recent'])) { - $cfgRelation['recentwork'] = true; - } - - if (isset($cfgRelation['table_uiprefs'])) { - $cfgRelation['uiprefswork'] = true; - } - - if (isset($cfgRelation['tracking'])) { - $cfgRelation['trackingwork'] = true; - } - - if (isset($cfgRelation['userconfig'])) { - $cfgRelation['userconfigwork'] = true; - } - - // we do not absolutely need that the internal relations or the PDF - // schema feature be activated - if (isset($cfgRelation['designer_coords'])) { - $cfgRelation['designerwork'] = true; - } - - if (isset($cfgRelation['bookmark'])) { - $cfgRelation['bookmarkwork'] = true; - } - - if (isset($cfgRelation['users']) && isset($cfgRelation['usergroups'])) { - $cfgRelation['menuswork'] = true; - } - - if (isset($cfgRelation['navigationhiding'])) { - $cfgRelation['navwork'] = true; - } - - if ($cfgRelation['relwork'] && $cfgRelation['displaywork'] - && $cfgRelation['pdfwork'] && $cfgRelation['commwork'] - && $cfgRelation['mimework'] && $cfgRelation['historywork'] - && $cfgRelation['recentwork'] && $cfgRelation['uiprefswork'] - && $cfgRelation['trackingwork'] && $cfgRelation['userconfigwork'] - && $cfgRelation['bookmarkwork'] && $cfgRelation['designerwork'] - && $cfgRelation['menuswork'] && $cfgRelation['navwork'] - ) { - $cfgRelation['allworks'] = true; - } - - return $cfgRelation; -} // end of the 'PMA_getRelationsParam()' function - -/** - * Gets all Relations to foreign tables for a given table or - * optionally a given column in a table - * - * @param string $db the name of the db to check for - * @param string $table the name of the table to check for - * @param string $column the name of the column to check for - * @param string $source the source for foreign key information - * - * @return array db,table,column - * - * @access public - */ -function PMA_getForeigners($db, $table, $column = '', $source = 'both') -{ - $cfgRelation = PMA_getRelationsParam(); - $foreign = array(); - - if ($cfgRelation['relwork'] && ($source == 'both' || $source == 'internal')) { - $rel_query = ' - SELECT `master_field`, - `foreign_db`, - `foreign_table`, - `foreign_field` - FROM ' . PMA_Util::backquote($cfgRelation['db']) - . '.' . PMA_Util::backquote($cfgRelation['relation']) . ' - WHERE `master_db` = \'' . PMA_Util::sqlAddSlashes($db) . '\' - AND `master_table` = \'' . PMA_Util::sqlAddSlashes($table) . '\' '; - if (strlen($column)) { - $rel_query .= ' AND `master_field` = ' - . '\'' . PMA_Util::sqlAddSlashes($column) . '\''; - } - $foreign = $GLOBALS['dbi']->fetchResult( - $rel_query, 'master_field', null, $GLOBALS['controllink'] - ); - } - - if (($source == 'both' || $source == 'foreign') && strlen($table)) { - - $show_create_table_query = 'SHOW CREATE TABLE ' - . PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table); - $show_create_table = $GLOBALS['dbi']->fetchValue($show_create_table_query, 0, 1); - $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); - - foreach ($analyzed_sql[0]['foreign_keys'] as $one_key) { - // The analyzer may return more than one column name in the - // index list or the ref_index_list; if this happens, - // the current logic just discards the whole index; having - // more than one index field is currently unsupported (see FAQ 3.6) - if (count($one_key['index_list']) == 1) { - foreach ($one_key['index_list'] as $i => $field) { - // If a foreign key is defined in the 'internal' source (pmadb) - // and as a native foreign key, we won't get it twice - // if $source='both' because we use $field as key - - // The parser looks for a CONSTRAINT clause just before - // the FOREIGN KEY clause. It finds it (as output from - // SHOW CREATE TABLE) in MySQL 4.0.13, but not in older - // versions like 3.23.58. - // In those cases, the FOREIGN KEY parsing will put numbers - // like -1, 0, 1... instead of the constraint number. - - if (isset($one_key['constraint'])) { - $foreign[$field]['constraint'] = $one_key['constraint']; - } - - if (isset($one_key['ref_db_name'])) { - $foreign[$field]['foreign_db'] = $one_key['ref_db_name']; - } else { - $foreign[$field]['foreign_db'] = $db; - } - $foreign[$field]['foreign_table'] = $one_key['ref_table_name']; - $foreign[$field]['foreign_field'] = $one_key['ref_index_list'][$i]; - if (isset($one_key['on_delete'])) { - $foreign[$field]['on_delete'] = $one_key['on_delete']; - } - if (isset($one_key['on_update'])) { - $foreign[$field]['on_update'] = $one_key['on_update']; - } - } - } - } - } - - /** - * Emulating relations for some information_schema and data_dictionary tables - */ - $is_information_schema = strtolower($db) == 'information_schema'; - $is_data_dictionary = PMA_DRIZZLE && strtolower($db) == 'data_dictionary'; - if (($is_information_schema || $is_data_dictionary) - && ($source == 'internal' || $source == 'both') - ) { - if ($is_information_schema) { - $relations_key = 'information_schema_relations'; - include_once './libraries/information_schema_relations.lib.php'; - } else { - $relations_key = 'data_dictionary_relations'; - include_once './libraries/data_dictionary_relations.lib.php'; - } - if (isset($GLOBALS[$relations_key][$table])) { - foreach ($GLOBALS[$relations_key][$table] as $field => $relations) { - if ((! strlen($column) || $column == $field) - && (! isset($foreign[$field]) || ! strlen($foreign[$field])) - ) { - $foreign[$field] = $relations; - } - } - } - } - - return $foreign; -} // end of the 'PMA_getForeigners()' function - -/** - * Gets the display field of a table - * - * @param string $db the name of the db to check for - * @param string $table the name of the table to check for - * - * @return string field name - * - * @access public - */ -function PMA_getDisplayField($db, $table) -{ - $cfgRelation = PMA_getRelationsParam(); - - /** - * Try to fetch the display field from DB. - */ - if ($cfgRelation['displaywork']) { - $disp_query = ' - SELECT `display_field` - FROM ' . PMA_Util::backquote($cfgRelation['db']) - . '.' . PMA_Util::backquote($cfgRelation['table_info']) . ' - WHERE `db_name` = \'' . PMA_Util::sqlAddSlashes($db) . '\' - AND `table_name` = \'' . PMA_Util::sqlAddSlashes($table) . '\''; - - $row = $GLOBALS['dbi']->fetchSingleRow( - $disp_query, 'ASSOC', $GLOBALS['controllink'] - ); - if (isset($row['display_field'])) { - return $row['display_field']; - } - } - - /** - * Emulating the display field for some information_schema tables. - */ - if ($db == 'information_schema') { - switch ($table) { - case 'CHARACTER_SETS': - return 'DESCRIPTION'; - case 'TABLES': - return 'TABLE_COMMENT'; - } - } - - /** - * No Luck... - */ - return false; - -} // end of the 'PMA_getDisplayField()' function - -/** - * Gets the comments for all columns of a table or the db itself - * - * @param string $db the name of the db to check for - * @param string $table the name of the table to check for - * - * @return array [column_name] = comment - * - * @access public - */ -function PMA_getComments($db, $table = '') -{ - $comments = array(); - - if ($table != '') { - // MySQL native column comments - $columns = $GLOBALS['dbi']->getColumns($db, $table, null, true); - if ($columns) { - foreach ($columns as $column) { - if (! empty($column['Comment'])) { - $comments[$column['Field']] = $column['Comment']; - } - } - } - } else { - $comments[] = PMA_getDbComment($db); - } - - return $comments; -} // end of the 'PMA_getComments()' function - -/** - * Gets the comment for a db - * - * @param string $db the name of the db to check for - * - * @return string comment - * - * @access public - */ -function PMA_getDbComment($db) -{ - $cfgRelation = PMA_getRelationsParam(); - $comment = ''; - - if ($cfgRelation['commwork']) { - // pmadb internal db comment - $com_qry = " - SELECT `comment` - FROM " . PMA_Util::backquote($cfgRelation['db']) - . "." . PMA_Util::backquote($cfgRelation['column_info']) . " - WHERE db_name = '" . PMA_Util::sqlAddSlashes($db) . "' - AND table_name = '' - AND column_name = '(db_comment)'"; - $com_rs = PMA_queryAsControlUser( - $com_qry, true, PMA_DatabaseInterface::QUERY_STORE - ); - - if ($com_rs && $GLOBALS['dbi']->numRows($com_rs) > 0) { - $row = $GLOBALS['dbi']->fetchAssoc($com_rs); - $comment = $row['comment']; - } - $GLOBALS['dbi']->freeResult($com_rs); - } - - return $comment; -} // end of the 'PMA_getDbComment()' function - -/** - * Gets the comment for a db - * - * @access public - * - * @return string comment - */ -function PMA_getDbComments() -{ - $cfgRelation = PMA_getRelationsParam(); - $comments = array(); - - if ($cfgRelation['commwork']) { - // pmadb internal db comment - $com_qry = " - SELECT `db_name`, `comment` - FROM " . PMA_Util::backquote($cfgRelation['db']) - . "." . PMA_Util::backquote($cfgRelation['column_info']) . " - WHERE `column_name` = '(db_comment)'"; - $com_rs = PMA_queryAsControlUser( - $com_qry, true, PMA_DatabaseInterface::QUERY_STORE - ); - - if ($com_rs && $GLOBALS['dbi']->numRows($com_rs) > 0) { - while ($row = $GLOBALS['dbi']->fetchAssoc($com_rs)) { - $comments[$row['db_name']] = $row['comment']; - } - } - $GLOBALS['dbi']->freeResult($com_rs); - } - - return $comments; -} // end of the 'PMA_getDbComments()' function - -/** - * Set a database comment to a certain value. - * - * @param string $db the name of the db - * @param string $comment the value of the column - * - * @return boolean true, if comment-query was made. - * - * @access public - */ -function PMA_setDbComment($db, $comment = '') -{ - $cfgRelation = PMA_getRelationsParam(); - - if (! $cfgRelation['commwork']) { - return false; - } - - if (strlen($comment)) { - $upd_query = 'INSERT INTO ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['column_info']) - . ' (`db_name`, `table_name`, `column_name`, `comment`)' - . ' VALUES (\'' - . PMA_Util::sqlAddSlashes($db) - . "', '', '(db_comment)', '" - . PMA_Util::sqlAddSlashes($comment) - . "') " - . ' ON DUPLICATE KEY UPDATE ' - . "`comment` = '" . PMA_Util::sqlAddSlashes($comment) . "'"; - } else { - $upd_query = 'DELETE FROM ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['column_info']) - . ' WHERE `db_name` = \'' . PMA_Util::sqlAddSlashes($db) . '\' - AND `table_name` = \'\' - AND `column_name` = \'(db_comment)\''; - } - - if (isset($upd_query)) { - return PMA_queryAsControlUser($upd_query); - } - - return false; -} // end of 'PMA_setDbComment()' function - -/** - * Set a SQL history entry - * - * @param string $db the name of the db - * @param string $table the name of the table - * @param string $username the username - * @param string $sqlquery the sql query - * - * @return void - * - * @access public - */ -function PMA_setHistory($db, $table, $username, $sqlquery) -{ - // Prevent to run this automatically on Footer class destroying in testsuite - if (defined('TESTSUITE') - || strlen($sqlquery) > $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] - ) { - return; - } - - $cfgRelation = PMA_getRelationsParam(); - - if (! isset($_SESSION['sql_history'])) { - $_SESSION['sql_history'] = array(); - } - - $key = md5($sqlquery . $db . $table); - - if (isset($_SESSION['sql_history'][$key])) { - unset($_SESSION['sql_history'][$key]); - } - - $_SESSION['sql_history'][$key] = array( - 'db' => $db, - 'table' => $table, - 'sqlquery' => $sqlquery, - ); - - if (count($_SESSION['sql_history']) > $GLOBALS['cfg']['QueryHistoryMax']) { - // history should not exceed a maximum count - array_shift($_SESSION['sql_history']); - } - - if (! $cfgRelation['historywork'] || ! $GLOBALS['cfg']['QueryHistoryDB']) { - return; - } - - PMA_queryAsControlUser( - 'INSERT INTO ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['history']) . ' - (`username`, - `db`, - `table`, - `timevalue`, - `sqlquery`) - VALUES - (\'' . PMA_Util::sqlAddSlashes($username) . '\', - \'' . PMA_Util::sqlAddSlashes($db) . '\', - \'' . PMA_Util::sqlAddSlashes($table) . '\', - NOW(), - \'' . PMA_Util::sqlAddSlashes($sqlquery) . '\')' - ); -} // end of 'PMA_setHistory()' function - -/** - * Gets a SQL history entry - * - * @param string $username the username - * - * @return array list of history items - * - * @access public - */ -function PMA_getHistory($username) -{ - $cfgRelation = PMA_getRelationsParam(); - - /** - * if db-based history is disabled but there exists a session-based - * history, use it - */ - if (! $GLOBALS['cfg']['QueryHistoryDB'] && isset($_SESSION['sql_history'])) { - return array_reverse($_SESSION['sql_history']); - } - - if (! $cfgRelation['historywork']) { - return false; - } - - $hist_query = ' - SELECT `db`, - `table`, - `sqlquery` - FROM ' . PMA_Util::backquote($cfgRelation['db']) - . '.' . PMA_Util::backquote($cfgRelation['history']) . ' - WHERE `username` = \'' . PMA_Util::sqlAddSlashes($username) . '\' - ORDER BY `id` DESC'; - - return $GLOBALS['dbi']->fetchResult($hist_query, null, null, $GLOBALS['controllink']); -} // end of 'PMA_getHistory()' function - -/** - * purges SQL history - * - * deletes entries that exceeds $cfg['QueryHistoryMax'], oldest first, for the - * given user - * - * @param string $username the username - * - * @return void - * - * @access public - */ -function PMA_purgeHistory($username) -{ - $cfgRelation = PMA_getRelationsParam(); - if (! $GLOBALS['cfg']['QueryHistoryDB'] || ! $cfgRelation['historywork']) { - return; - } - - if (! $cfgRelation['historywork']) { - return; - } - - $search_query = ' - SELECT `timevalue` - FROM ' . PMA_Util::backquote($cfgRelation['db']) - . '.' . PMA_Util::backquote($cfgRelation['history']) . ' - WHERE `username` = \'' . PMA_Util::sqlAddSlashes($username) . '\' - ORDER BY `timevalue` DESC - LIMIT ' . $GLOBALS['cfg']['QueryHistoryMax'] . ', 1'; - - if ($max_time = $GLOBALS['dbi']->fetchValue($search_query, 0, 0, $GLOBALS['controllink'])) { - PMA_queryAsControlUser( - 'DELETE FROM ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['history']) . ' - WHERE `username` = \'' . PMA_Util::sqlAddSlashes($username) . '\' - AND `timevalue` <= \'' . $max_time . '\'' - ); - } -} // end of 'PMA_purgeHistory()' function - -/** - * Prepares the dropdown for one mode - * - * @param array $foreign the keys and values for foreigns - * @param string $data the current data of the dropdown - * @param string $mode the needed mode - * - * @return array the '; - } elseif ($mode == 'id-content') { - $reloptions[] = $reloption . '>' - . htmlspecialchars($key) . ' - ' . $value . ''; - } elseif ($mode == 'id-only') { - $reloptions[] = $reloption . '>' - . htmlspecialchars($key) . ''; - } - } // end foreach - - return $reloptions; -} // end of 'PMA_buildForeignDropdown' function - -/** - * Outputs dropdown with values of foreign fields - * - * @param array $disp_row array of the displayed row - * @param string $foreign_field the foreign field - * @param string $foreign_display the foreign field to display - * @param string $data the current data of the dropdown (field in row) - * @param int $max maximum number of items in the dropdown - * - * @return string the '; - $top_count = count($top); - if ($max == -1 || $top_count < $max) { - $ret .= implode('', $top); - if ($foreign_display && $top_count > 0) { - // this empty option is to visually mark the beginning of the - // second series of values (bottom) - $ret .= ''; - } - } - if ($foreign_display) { - $ret .= implode('', $bottom); - } - - return $ret; -} // end of 'PMA_foreignDropdown()' function - -/** - * Gets foreign keys in preparation for a drop-down selector - * - * @param array $foreigners array of the foreign keys - * @param string $field the foreign field name - * @param bool $override_total whether to override the total - * @param string $foreign_filter a possible filter - * @param string $foreign_limit a possible LIMIT clause - * - * @return array data about the foreign keys - * - * @access public - */ - -function PMA_getForeignData( - $foreigners, $field, $override_total, $foreign_filter, $foreign_limit -) { - // we always show the foreign field in the drop-down; if a display - // field is defined, we show it besides the foreign field - $foreign_link = false; - if ($foreigners && isset($foreigners[$field])) { - $foreigner = $foreigners[$field]; - $foreign_db = $foreigner['foreign_db']; - $foreign_table = $foreigner['foreign_table']; - $foreign_field = $foreigner['foreign_field']; - - // Count number of rows in the foreign table. Currently we do - // not use a drop-down if more than ForeignKeyMaxLimit rows in the - // foreign table, - // for speed reasons and because we need a better interface for this. - // - // We could also do the SELECT anyway, with a LIMIT, and ensure that - // the current value of the field is one of the choices. - - $the_total = PMA_Table::countRecords($foreign_db, $foreign_table, true); - - if ($override_total == true - || $the_total < $GLOBALS['cfg']['ForeignKeyMaxLimit'] - ) { - // foreign_display can be false if no display field defined: - $foreign_display = PMA_getDisplayField($foreign_db, $foreign_table); - - $f_query_main = 'SELECT ' . PMA_Util::backquote($foreign_field) - . (($foreign_display == false) ? '' : ', ' . PMA_Util::backquote($foreign_display)); - $f_query_from = ' FROM ' . PMA_Util::backquote($foreign_db) - . '.' . PMA_Util::backquote($foreign_table); - $f_query_filter = empty($foreign_filter) ? '' : ' WHERE ' - . PMA_Util::backquote($foreign_field) - . ' LIKE "%' . PMA_Util::sqlAddSlashes($foreign_filter, true) . '%"' - . (($foreign_display == false) ? '' : ' OR ' . PMA_Util::backquote($foreign_display) - . ' LIKE "%' . PMA_Util::sqlAddSlashes($foreign_filter, true) . '%"' - ); - $f_query_order = ($foreign_display == false) ? '' :' ORDER BY ' - . PMA_Util::backquote($foreign_table) . '.' - . PMA_Util::backquote($foreign_display); - $f_query_limit = isset($foreign_limit) ? $foreign_limit : ''; - - if (!empty($foreign_filter)) { - $res = $GLOBALS['dbi']->query( - 'SELECT COUNT(*)' . $f_query_from . $f_query_filter - ); - if ($res) { - $the_total = $GLOBALS['dbi']->fetchValue($res); - @$GLOBALS['dbi']->freeResult($res); - } else { - $the_total = 0; - } - } - - $disp = $GLOBALS['dbi']->query( - $f_query_main . $f_query_from . $f_query_filter - . $f_query_order . $f_query_limit - ); - if ($disp && $GLOBALS['dbi']->numRows($disp) > 0) { - // If a resultset has been created, pre-cache it in the $disp_row - // array. This helps us from not needing to use mysql_data_seek by - // accessing a pre-cached PHP array. Usually those resultsets are - // not that big, so a performance hit should not be expected. - $disp_row = array(); - while ($single_disp_row = @$GLOBALS['dbi']->fetchAssoc($disp)) { - $disp_row[] = $single_disp_row; - } - @$GLOBALS['dbi']->freeResult($disp); - } - } else { - $disp_row = null; - $foreign_link = true; - } - } // end if $foreigners - - $foreignData['foreign_link'] = $foreign_link; - $foreignData['the_total'] = isset($the_total) ? $the_total : null; - $foreignData['foreign_display'] = ( - isset($foreign_display) ? $foreign_display : null - ); - $foreignData['disp_row'] = isset($disp_row) ? $disp_row : null; - $foreignData['foreign_field'] = isset($foreign_field) ? $foreign_field : null; - return $foreignData; -} // end of 'PMA_getForeignData()' function - -/** - * Finds all related tables - * - * @param array $all_tables All the involved tables - * @param string $master The master table to form the LEFT JOIN clause - * - * @return string LEFT JOIN - * @access private - */ -function PMA_getRelatives($all_tables, $master) -{ - $fromclause = ''; - $emerg = ''; - - // The list of tables that we still couldn't connect - $remaining_tables = $all_tables; - unset($remaining_tables[$master]); - // The list of allready connected tables - $known_tables[$master] = $master; - $run = 0; - while (count($remaining_tables) > 0) { - // Whether to go from master to foreign or vice versa - if ($run % 2 == 0) { - $from = 'master'; - $to = 'foreign'; - } else { - $from = 'foreign'; - $to = 'master'; - } - $in_know = '(\'' . implode('\', \'', $known_tables) . '\')'; - $in_left = '(\'' . implode('\', \'', $remaining_tables) . '\')'; - $rel_query = 'SELECT *' - . ' FROM ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) - . '.' . PMA_Util::backquote($GLOBALS['cfgRelation']['relation']) - . ' WHERE ' . $from . '_db = \'' . PMA_Util::sqlAddSlashes($GLOBALS['db']) . '\'' - . ' AND ' . $to . '_db = \'' . PMA_Util::sqlAddSlashes($GLOBALS['db']) . '\'' - . ' AND ' . $from . '_table IN ' . $in_know - . ' AND ' . $to . '_table IN ' . $in_left; - $relations = @$GLOBALS['dbi']->query($rel_query, $GLOBALS['controllink']); - while ($row = $GLOBALS['dbi']->fetchAssoc($relations)) { - $found_table = $row[$to . '_table']; - if (isset($remaining_tables[$found_table])) { - $fromclause - .= "\n" . ' LEFT JOIN ' - . PMA_Util::backquote($GLOBALS['db']) . '.' . PMA_Util::backquote($row[$to . '_table']) . ' ON ' - . PMA_Util::backquote($row[$from . '_table']) . '.' - . PMA_Util::backquote($row[$from . '_field']) . ' = ' - . PMA_Util::backquote($row[$to . '_table']) . '.' - . PMA_Util::backquote($row[$to . '_field']) . ' '; - $known_tables[$found_table] = $found_table; - unset($remaining_tables[$found_table]); - } - } // end while - $run++; - if ($run > 5) { - foreach ($remaining_tables as $table) { - $emerg .= ', ' . PMA_Util::backquote($table); - unset($remaining_tables[$table]); - } - } - } // end while - $fromclause = $emerg . $fromclause; - return $fromclause; -} // end of the "PMA_getRelatives()" function - -/** - * Rename a field in relation tables - * - * usually called after a column in a table was renamed - * - * @param string $db database name - * @param string $table table name - * @param string $field old field name - * @param string $new_name new field name - * - * @return void - */ -function PMA_REL_renameField($db, $table, $field, $new_name) -{ - $cfgRelation = PMA_getRelationsParam(); - - if ($cfgRelation['displaywork']) { - $table_query = 'UPDATE ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['table_info']) - . ' SET display_field = \'' . PMA_Util::sqlAddSlashes($new_name) . '\'' - . ' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND table_name = \'' . PMA_Util::sqlAddSlashes($table) . '\'' - . ' AND display_field = \'' . PMA_Util::sqlAddSlashes($field) . '\''; - PMA_queryAsControlUser($table_query); - } - - if ($cfgRelation['relwork']) { - $table_query = 'UPDATE ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['relation']) - . ' SET master_field = \'' . PMA_Util::sqlAddSlashes($new_name) . '\'' - . ' WHERE master_db = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND master_table = \'' . PMA_Util::sqlAddSlashes($table) . '\'' - . ' AND master_field = \'' . PMA_Util::sqlAddSlashes($field) . '\''; - PMA_queryAsControlUser($table_query); - - $table_query = 'UPDATE ' - . PMA_Util::backquote($cfgRelation['db']) . '.' - . PMA_Util::backquote($cfgRelation['relation']) - . ' SET foreign_field = \'' . PMA_Util::sqlAddSlashes($new_name) . '\'' - . ' WHERE foreign_db = \'' . PMA_Util::sqlAddSlashes($db) . '\'' - . ' AND foreign_table = \'' . PMA_Util::sqlAddSlashes($table) . '\'' - . ' AND foreign_field = \'' . PMA_Util::sqlAddSlashes($field) . '\''; - PMA_queryAsControlUser($table_query); - - } // end if relwork -} - - -/** - * Performs SQL query used for renaming table. - * - * @param string $table Relation table to use - * @param string $source_db Source database name - * @param string $target_db Target database name - * @param string $source_table Source table name - * @param string $target_table Target table name - * @param string $db_field Name of database field - * @param string $table_field Name of table field - * - * @return void - */ -function PMA_REL_renameSingleTable($table, - $source_db, $target_db, - $source_table, $target_table, - $db_field, $table_field -) { - $query = 'UPDATE ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($GLOBALS['cfgRelation'][$table]) - . ' SET ' - . $db_field . ' = \'' . PMA_Util::sqlAddSlashes($target_db) . '\', ' - . $table_field . ' = \'' . PMA_Util::sqlAddSlashes($target_table) . '\'' - . ' WHERE ' - . $db_field . ' = \'' . PMA_Util::sqlAddSlashes($source_db) . '\'' - . ' AND ' - . $table_field . ' = \'' . PMA_Util::sqlAddSlashes($source_table) . '\''; - PMA_queryAsControlUser($query); -} - - -/** - * Rename a table in relation tables - * - * usually called after table has been moved - * - * @param string $source_db Source database name - * @param string $target_db Target database name - * @param string $source_table Source table name - * @param string $target_table Target table name - * - * @return void - */ -function PMA_REL_renameTable($source_db, $target_db, $source_table, $target_table) -{ - // Move old entries from PMA-DBs to new table - if ($GLOBALS['cfgRelation']['commwork']) { - PMA_REL_renameSingleTable( - 'column_info', - $source_db, $target_db, - $source_table, $target_table, - 'db_name', 'table_name' - ); - } - - // updating bookmarks is not possible since only a single table is - // moved, and not the whole DB. - - if ($GLOBALS['cfgRelation']['displaywork']) { - PMA_REL_renameSingleTable( - 'table_info', - $source_db, $target_db, - $source_table, $target_table, - 'db_name', 'table_name' - ); - } - - if ($GLOBALS['cfgRelation']['relwork']) { - PMA_REL_renameSingleTable( - 'relation', - $source_db, $target_db, - $source_table, $target_table, - 'foreign_db', 'foreign_table' - ); - - PMA_REL_renameSingleTable( - 'relation', - $source_db, $target_db, - $source_table, $target_table, - 'master_db', 'master_table' - ); - } - - /** - * @todo Can't get moving PDFs the right way. The page numbers - * always get screwed up independently from duplication because the - * numbers do not seem to be stored on a per-database basis. Would - * the author of pdf support please have a look at it? - */ - - if ($GLOBALS['cfgRelation']['pdfwork']) { - PMA_REL_renameSingleTable( - 'table_coords', - $source_db, $target_db, - $source_table, $target_table, - 'db_name', 'table_name' - ); - } - - if ($GLOBALS['cfgRelation']['designerwork']) { - PMA_REL_renameSingleTable( - 'designer_coords', - $source_db, $target_db, - $source_table, $target_table, - 'db_name', 'table_name' - ); - } -} - -/** - * Create a PDF page - * - * @param string $newpage name of the new PDF page - * @param array $cfgRelation Relation configuration - * @param string $db database name - * - * @return string $pdf_page_number - */ -function PMA_REL_createPage($newpage, $cfgRelation, $db) -{ - if (! isset($newpage) || $newpage == '') { - $newpage = __('no description'); - } - $ins_query = 'INSERT INTO ' - . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' - . PMA_Util::backquote($cfgRelation['pdf_pages']) - . ' (db_name, page_descr)' - . ' VALUES (\'' - . PMA_Util::sqlAddSlashes($db) . '\', \'' - . PMA_Util::sqlAddSlashes($newpage) . '\')'; - PMA_queryAsControlUser($ins_query, false); - - return $GLOBALS['dbi']->insertId( - isset($GLOBALS['controllink']) ? $GLOBALS['controllink'] : '' - ); -} -?> diff --git a/pma12111211/libraries/relation_cleanup.lib.php b/pma12111211/libraries/relation_cleanup.lib.php deleted file mode 100644 index 52d8812f..00000000 --- a/pma12111211/libraries/relation_cleanup.lib.php +++ /dev/null @@ -1,183 +0,0 @@ - diff --git a/pma12111211/libraries/replication.inc.php b/pma12111211/libraries/replication.inc.php deleted file mode 100644 index 777a17cf..00000000 --- a/pma12111211/libraries/replication.inc.php +++ /dev/null @@ -1,288 +0,0 @@ -fetchResult('SHOW MASTER STATUS'); - -/** - * get slave replication from server - */ -$server_slave_replication = $GLOBALS['dbi']->fetchResult('SHOW SLAVE STATUS'); - -/** - * replication types - */ -$replication_types = array('master', 'slave'); - - -/** - * define variables for master status - */ -$master_variables = array( - 'File', - 'Position', - 'Binlog_Do_DB', - 'Binlog_Ignore_DB', -); - -/** - * Define variables for slave status - */ -$slave_variables = array( - 'Slave_IO_State', - 'Master_Host', - 'Master_User', - 'Master_Port', - 'Connect_Retry', - 'Master_Log_File', - 'Read_Master_Log_Pos', - 'Relay_Log_File', - 'Relay_Log_Pos', - 'Relay_Master_Log_File', - 'Slave_IO_Running', - 'Slave_SQL_Running', - 'Replicate_Do_DB', - 'Replicate_Ignore_DB', - 'Replicate_Do_Table', - 'Replicate_Ignore_Table', - 'Replicate_Wild_Do_Table', - 'Replicate_Wild_Ignore_Table', - 'Last_Errno', - 'Last_Error', - 'Skip_Counter', - 'Exec_Master_Log_Pos', - 'Relay_Log_Space', - 'Until_Condition', - 'Until_Log_File', - 'Until_Log_Pos', - 'Master_SSL_Allowed', - 'Master_SSL_CA_File', - 'Master_SSL_CA_Path', - 'Master_SSL_Cert', - 'Master_SSL_Cipher', - 'Master_SSL_Key', - 'Seconds_Behind_Master', -); -/** - * define important variables, which need to be watched for - * correct running of replication in slave mode - * - * @usedby PMA_getHtmlForReplicationStatusTable() - */ -// TODO change to regexp or something, to allow for negative match. -// To e.g. highlight 'Last_Error' -// -$slave_variables_alerts = array( - 'Slave_IO_Running' => 'No', - 'Slave_SQL_Running' => 'No', -); -$slave_variables_oks = array( - 'Slave_IO_Running' => 'Yes', - 'Slave_SQL_Running' => 'Yes', -); - -// check which replication is available and -// set $server_{master/slave}_status and assign values - -// replication info is more easily passed to functions -/* - * @todo use $replication_info everywhere instead of the generated variable names - */ -$replication_info = array(); - -foreach ($replication_types as $type) { - if (count(${"server_{$type}_replication"}) > 0) { - ${"server_{$type}_status"} = true; - $replication_info[$type]['status'] = true; - } else { - ${"server_{$type}_status"} = false; - $replication_info[$type]['status'] = false; - } - if (${"server_{$type}_status"}) { - if ($type == "master") { - ${"server_{$type}_Do_DB"} = explode( - ",", $server_master_replication[0]["Binlog_Do_DB"] - ); - $replication_info[$type]['Do_DB'] = ${"server_{$type}_Do_DB"}; - - ${"server_{$type}_Ignore_DB"} = explode( - ",", $server_master_replication[0]["Binlog_Ignore_DB"] - ); - $replication_info[$type]['Ignore_DB'] = ${"server_{$type}_Ignore_DB"}; - } elseif ($type == "slave") { - ${"server_{$type}_Do_DB"} = explode( - ",", $server_slave_replication[0]["Replicate_Do_DB"] - ); - if (! empty(${"server_{$type}_Do_DB"})) { - $replication_info[$type]['Do_DB'] = ${"server_{$type}_Do_DB"}; - } - - ${"server_{$type}_Ignore_DB"} = explode( - ",", $server_slave_replication[0]["Replicate_Ignore_DB"] - ); - $replication_info[$type]['Ignore_DB'] = ${"server_{$type}_Ignore_DB"}; - - ${"server_{$type}_Do_Table"} = explode( - ",", $server_slave_replication[0]["Replicate_Do_Table"] - ); - $replication_info[$type]['Do_Table'] = ${"server_{$type}_Do_Table"}; - - ${"server_{$type}_Ignore_Table"} = explode( - ",", $server_slave_replication[0]["Replicate_Ignore_Table"] - ); - $replication_info[$type]['Ignore_Table'] - = ${"server_{$type}_Ignore_Table"}; - - ${"server_{$type}_Wild_Do_Table"} = explode( - ",", $server_slave_replication[0]["Replicate_Wild_Do_Table"] - ); - $replication_info[$type]['Wild_Do_Table'] - = ${"server_{$type}_Wild_Do_Table"}; - - ${"server_{$type}_Wild_Ignore_Table"} = explode( - ",", $server_slave_replication[0]["Replicate_Wild_Ignore_Table"] - ); - $replication_info[$type]['Wild_Ignore_Table'] - = ${"server_{$type}_Wild_Ignore_Table"}; - } - } -} - -/** - * Extracts database or table name from string - * - * @param string $string contains "dbname.tablename" - * @param string $what what to extract (db|table) - * - * @return $string the extracted part - */ -function PMA_extractDbOrTable($string, $what = 'db') -{ - $list = explode(".", $string); - if ('db' == $what) { - return $list[0]; - } else { - return $list[1]; - } -} - -/** - * Configures replication slave - * - * @param string $action possible values: START or STOP - * @param string $control default: null, - * possible values: SQL_THREAD or IO_THREAD or null. - * If it is set to null, it controls both - * SQL_THREAD and IO_THREAD - * @param mixed $link mysql link - * - * @return mixed output of DatabaseInterface::tryQuery - */ -function PMA_Replication_Slave_control($action, $control = null, $link = null) -{ - $action = strtoupper($action); - $control = strtoupper($control); - - if ($action != "START" && $action != "STOP") { - return -1; - } - if ($control != "SQL_THREAD" && $control != "IO_THREAD" && $control != null) { - return -1; - } - - return $GLOBALS['dbi']->tryQuery($action . " SLAVE " . $control . ";", $link); -} - -/** - * Changes master for replication slave - * - * @param string $user replication user on master - * @param string $password password for the user - * @param string $host master's hostname or IP - * @param int $port port, where mysql is running - * @param array $pos position of mysql replication, - * array should contain fields File and Position - * @param bool $stop shall we stop slave? - * @param bool $start shall we start slave? - * @param mixed $link mysql link - * - * @return string output of CHANGE MASTER mysql command - */ -function PMA_Replication_Slave_changeMaster($user, $password, $host, $port, - $pos, $stop = true, $start = true, $link = null -) { - if ($stop) { - PMA_Replication_Slave_control("STOP", null, $link); - } - - $out = $GLOBALS['dbi']->tryQuery( - 'CHANGE MASTER TO ' . - 'MASTER_HOST=\'' . $host . '\',' . - 'MASTER_PORT=' . ($port * 1) . ',' . - 'MASTER_USER=\'' . $user . '\',' . - 'MASTER_PASSWORD=\'' . $password . '\',' . - 'MASTER_LOG_FILE=\'' . $pos["File"] . '\',' . - 'MASTER_LOG_POS=' . $pos["Position"] . ';', $link - ); - - if ($start) { - PMA_Replication_Slave_control("START", null, $link); - } - - return $out; -} - -/** - * This function provides connection to remote mysql server - * - * @param string $user mysql username - * @param string $password password for the user - * @param string $host mysql server's hostname or IP - * @param int $port mysql remote port - * @param string $socket path to unix socket - * - * @return mixed $link mysql link on success - */ -function PMA_Replication_connectToMaster( - $user, $password, $host = null, $port = null, $socket = null -) { - $server = array(); - $server["host"] = $host; - $server["port"] = $port; - $server["socket"] = $socket; - - // 5th parameter set to true means that it's an auxiliary connection - // and we must not go back to login page if it fails - return $GLOBALS['dbi']->connect($user, $password, false, $server, true); -} -/** - * Fetches position and file of current binary log on master - * - * @param mixed $link mysql link - * - * @return array an array containing File and Position in MySQL replication - * on master server, useful for PMA_Replication_Slave_changeMaster - */ -function PMA_Replication_Slave_binLogMaster($link = null) -{ - $data = $GLOBALS['dbi']->fetchResult('SHOW MASTER STATUS', null, null, $link); - $output = array(); - - if (! empty($data)) { - $output["File"] = $data[0]["File"]; - $output["Position"] = $data[0]["Position"]; - } - return $output; -} -?> diff --git a/pma12111211/libraries/replication_gui.lib.php b/pma12111211/libraries/replication_gui.lib.php deleted file mode 100644 index 7c5af7b6..00000000 --- a/pma12111211/libraries/replication_gui.lib.php +++ /dev/null @@ -1,1071 +0,0 @@ -getDisplay(); - $_SESSION['replication']['sr_action_status'] = 'unknown'; - } elseif ($_SESSION['replication']['sr_action_status'] == 'success') { - $success_message = $_SESSION['replication']['sr_action_info']; - $html .= PMA_Message::success($success_message)->getDisplay(); - $_SESSION['replication']['sr_action_status'] = 'unknown'; - } - } - return $html; -} - -/** - * returns HTML for master replication - * - * @return String HTML code - */ -function PMA_getHtmlForMasterReplication() -{ - $html = ''; - if (! isset($_REQUEST['repl_clear_scr'])) { - $html .= '
            '; - $html .= '' . __('Master replication') . ''; - $html .= __('This server is configured as master in a replication process.'); - $html .= '
              '; - $html .= '
            • '; - $html .= __('Show master status') . ''; - $html .= PMA_getHtmlForReplicationStatusTable('master', true, false); - $html .= '
            • '; - - $html .= '
            • '; - $html .= __('Show connected slaves') . ''; - $html .= PMA_getHtmlForReplicationSlavesTable(true); - $html .= '
            • '; - - $_url_params = $GLOBALS['url_params']; - $_url_params['mr_adduser'] = true; - $_url_params['repl_clear_scr'] = true; - - $html .= '
            • '; - $html .= __('Add slave replication user') . '
            • '; - } - - // Display 'Add replication slave user' form - if (isset($_REQUEST['mr_adduser'])) { - $html .= PMA_getHtmlForReplicationMasterAddSlaveuser(); - } elseif (! isset($_REQUEST['repl_clear_scr'])) { - $html .= "
            "; - $html .= "
            "; - } - - return $html; -} - -/** - * returns HTML for master replication configuration - * - * @return String HTML code - */ -function PMA_getHtmlForMasterConfiguration() -{ - $html = '
            '; - $html .= '' . __('Master configuration') . ''; - $html .= __( - 'This server is not configured as master server in a ' - . 'replication process. You can choose from either replicating ' - . 'all databases and ignoring certain (useful if you want to replicate ' - . 'majority of databases) or you can choose to ignore all databases by ' - . 'default and allow only certain databases to be replicated. ' - . 'Please select the mode:' - ) . '

            '; - - $html .= ''; - $html .= '

            '; - $html .= __('Please select databases:') . '
            '; - $html .= PMA_getHtmlForReplicationDbMultibox(); - $html .= '

            '; - $html .= __( - 'Now, add the following lines at the end of [mysqld] section' - . ' in your my.cnf and please restart the MySQL server afterwards.' - ). '
            '; - $html .= '
            ';
            -    $html .= __(
            -        'Once you restarted MySQL server, please click on Go button. '
            -        . 'Afterwards, you should see a message informing you, that this server'
            -        . ' is configured as master.'
            -    );
            -    $html .= '
            '; - $html .= '
            '; - $html .= '
            '; - $html .= PMA_URL_getHiddenInputs('', ''); - $html .= ' '; - $html .= '
            '; - $html .= '
            '; - - return $html; -} - -/** - * returns HTML for slave replication configuration - * - * @param bool $server_slave_status Whether it is Master or Slave - * @param Array $server_slave_replication Slave replication - * - * @return String HTML code - */ -function PMA_getHtmlForSlaveConfiguration( - $server_slave_status, $server_slave_replication -) { - $html = '
            '; - $html .= '' . __('Slave replication') . ''; - if ($server_slave_status) { - $html .= '
            '; - - $_url_params = $GLOBALS['url_params']; - $_url_params['sr_take_action'] = true; - $_url_params['sr_slave_server_control'] = true; - - if ($server_slave_replication[0]['Slave_IO_Running'] == 'No') { - $_url_params['sr_slave_action'] = 'start'; - } else { - $_url_params['sr_slave_action'] = 'stop'; - } - - $_url_params['sr_slave_control_parm'] = 'IO_THREAD'; - $slave_control_io_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - if ($server_slave_replication[0]['Slave_SQL_Running'] == 'No') { - $_url_params['sr_slave_action'] = 'start'; - } else { - $_url_params['sr_slave_action'] = 'stop'; - } - - $_url_params['sr_slave_control_parm'] = 'SQL_THREAD'; - $slave_control_sql_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - if ($server_slave_replication[0]['Slave_IO_Running'] == 'No' - || $server_slave_replication[0]['Slave_SQL_Running'] == 'No' - ) { - $_url_params['sr_slave_action'] = 'start'; - } else { - $_url_params['sr_slave_action'] = 'stop'; - } - - $_url_params['sr_slave_control_parm'] = null; - $slave_control_full_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - $_url_params['sr_slave_action'] = 'reset'; - $slave_control_reset_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - $_url_params = $GLOBALS['url_params']; - $_url_params['sr_slave_skip_error'] = true; - $slave_skip_error_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - if ($server_slave_replication[0]['Slave_SQL_Running'] == 'No') { - $html .= PMA_Message::error( - __('Slave SQL Thread not running!') - )->getDisplay(); - } - if ($server_slave_replication[0]['Slave_IO_Running'] == 'No') { - $html .= PMA_Message::error( - __('Slave IO Thread not running!') - )->getDisplay(); - } - - $_url_params = $GLOBALS['url_params']; - $_url_params['sl_configure'] = true; - $_url_params['repl_clear_scr'] = true; - - $reconfiguremaster_link = 'server_replication.php' - . PMA_URL_getCommon($_url_params); - - $html .= __('Server is configured as slave in a replication process. Would you like to:'); - $html .= '
            '; - $html .= ''; - $html .= '
            '; - - } elseif (! isset($_REQUEST['sl_configure'])) { - $_url_params = $GLOBALS['url_params']; - $_url_params['sl_configure'] = true; - $_url_params['repl_clear_scr'] = true; - - $html .= sprintf( - __( - 'This server is not configured as slave in a replication process. ' - . 'Would you like to configure it?' - ), - 'server_replication.php' . PMA_URL_getCommon($_url_params) - ); - } - $html .= '
            '; - - return $html; -} - -/** - * returns HTML for Slave Error Management - * - * @param String $slave_skip_error_link error link - * - * @return String HTML code - */ -function PMA_getHtmlForSlaveErrorManagement($slave_skip_error_link) -{ - $html = ''; - $html .= __('Error management:') . ''; - $html .= ' '; - return $html; -} - -/** - * returns HTML for not configure for a server replication - * - * @return String HTML code - */ -function PMA_getHtmlForNotServerReplication() -{ - $_url_params = $GLOBALS['url_params']; - $_url_params['mr_configure'] = true; - - $html = '
            '; - $html .= '' . __('Master replication') . ''; - $html .= sprintf( - __( - 'This server is not configured as master in a replication process. ' - . 'Would you like to configure it?' - ), - 'server_replication.php' . PMA_URL_getCommon($_url_params) - ); - $html .= '
            '; - return $html; -} - -/** - * returns HTML code for selecting databases - * - * @return String HTML code - */ -function PMA_getHtmlForReplicationDbMultibox() -{ - $multi_values = ''; - $multi_values .= ''; - $multi_values .= '
            '; - $multi_values .= __('Uncheck All') . ''; - - return $multi_values; -} - -/** - * returns HTML for changing master - * - * @param String $submitname - submit button name - * - * @return String HTML code - */ - -function PMA_getHtmlForReplicationChangeMaster($submitname) -{ - $html = ''; - list($username_length, $hostname_length) - = PMA_replicationGetUsernameHostnameLength(); - - $html .= '
            '; - $html .= PMA_URL_getHiddenInputs('', ''); - $html .= '
            '; - $html .= ' ' . __('Slave configuration'); - $html .= ' - ' . __('Change or reconfigure master server') . ''; - $html .= __( - 'Make sure, you have unique server-id in your configuration file (my.cnf). ' - . 'If not, please add the following line into [mysqld] section:' - ); - $html .= '
            '; - $html .= '
            server-id=' . time() . '
            '; - - $html .= PMA_getHtmlForAddUserInputDiv( - array('text'=>__('User name:'), 'for'=>"text_username"), - array( - 'type'=>'text', - 'name'=>'username', - 'id'=>'text_username', - 'maxlength'=>$username_length, - 'title'=>__('User name'), - 'required'=>'required' - ) - ); - - $html .= PMA_getHtmlForAddUserInputDiv( - array('text'=>__('Password:'), 'for'=>"text_pma_pw"), - array( - 'type'=>'password', - 'name'=>'pma_pw', - 'id'=>'text_pma_pw', - 'title'=>__('Password'), - 'required'=>'required' - ) - ); - - $html .= PMA_getHtmlForAddUserInputDiv( - array('text'=>__('Host:'), 'for'=>"text_hostname"), - array( - 'type'=>'text', - 'name'=>'hostname', - 'id'=>'text_hostname', - 'maxlength'=>$hostname_length, - 'value'=>'', - 'required'=>'required' - ) - ); - - $html .= PMA_getHtmlForAddUserInputDiv( - array('text'=>__('Port:'), 'for'=>"text_port"), - array( - 'type'=>'number', - 'name'=>'text_port', - 'id'=>'text_port', - 'maxlength'=>6, - 'value'=>'3306', - 'required'=>'required' - ) - ); - - $html .= '
            '; - $html .= ' '; - $html .= '
            '; - - return $html; -} - -/** - * returns HTML code for Add user input div - * - * @param Array $label_array label tag elements - * @param Array $input_array input tag elements - * - * @return String HTML code - */ -function PMA_getHtmlForAddUserInputDiv($label_array, $input_array) -{ - $html = '
            '; - $html .= ' '; - - $html .= ' $value) { - $html .= ' ' . $key . '="' . $value. '" '; - } - $html .= ' />'; - $html .= '
            '; - return $html; -} - -/** - * This function returns html code for table with replication status. - * - * @param string $type either master or slave - * @param boolean $hidden if true, then default style is set to hidden, - * default value false - * @param boolean $title if true, then title is displayed, default true - * - * @return String HTML code - */ -function PMA_getHtmlForReplicationStatusTable($type, $hidden = false, $title = true) -{ - global ${"{$type}_variables"}; - global ${"{$type}_variables_alerts"}; - global ${"{$type}_variables_oks"}; - global ${"server_{$type}_replication"}; - global ${"strReplicationStatus_{$type}"}; - - $html = ''; - - // TODO check the Masters server id? - // seems to default to '1' when queried via SHOW VARIABLES , - // but resulted in error on the master when slave connects - // [ERROR] Error reading packet from server: Misconfigured master - // - server id was not set ( server_errno=1236) - // [ERROR] Got fatal error 1236: 'Misconfigured master - // - server id was not set' from master when reading data from binary log - // - //$server_id = $GLOBALS['dbi']->fetchValue( - // "SHOW VARIABLES LIKE 'server_id'", 0, 1 - //); - - $html .= '
            '; - - if ($title) { - if ($type == 'master') { - $html .= '

            '; - $html .= __('Master status') . '

            '; - } else { - $html .= '

            '; - $html .= __('Slave status') . '

            '; - } - } else { - $html .= '
            '; - } - - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - - $odd_row = true; - foreach (${"{$type}_variables"} as $variable) { - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - - $odd_row = ! $odd_row; - } - - $html .= ' '; - $html .= '
            ' . __('Variable') . '' . __('Value') . '
            '; - $html .= $variable; - $html .= ' '; - - - // TODO change to regexp or something, to allow for negative match - if (isset(${"{$type}_variables_alerts"}[$variable]) - && ${"{$type}_variables_alerts"}[$variable] == ${"server_{$type}_replication"}[0][$variable] - ) { - $html .= ''; - - } elseif (isset(${"{$type}_variables_oks"}[$variable]) - && ${"{$type}_variables_oks"}[$variable] - == ${"server_{$type}_replication"}[0][$variable] - ) { - $html .= ''; - } else { - $html .= ''; - } - // allow wrapping long table lists into multiple lines - static $variables_wrap = array( - 'Replicate_Do_DB', 'Replicate_Ignore_DB', - 'Replicate_Do_Table', 'Replicate_Ignore_Table', - 'Replicate_Wild_Do_Table', 'Replicate_Wild_Ignore_Table'); - if (in_array($variable, $variables_wrap)) { - $html .= str_replace( - ',', - ', ', - ${"server_{$type}_replication"}[0][$variable] - ); - } else { - $html .= ${"server_{$type}_replication"}[0][$variable]; - } - $html .= ''; - - $html .= '
            '; - $html .= '
            '; - $html .= '
            '; - - return $html; -} - -/** - * returns html code for table with slave users connected to this master - * - * @param boolean $hidden - if true, then default style is set to hidden, - * - default value false - * - * @return string - */ -function PMA_getHtmlForReplicationSlavesTable($hidden = false) -{ - $html = ''; - // Fetch data - $data = $GLOBALS['dbi']->fetchResult('SHOW SLAVE HOSTS', null, null); - - $html .= '
            '; - $html .= '
            '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - - $odd_row = true; - foreach ($data as $slave) { - $html .= ' '; - $html .= ' '; - $html .= ' '; - $html .= ' '; - - $odd_row = ! $odd_row; - } - - $html .= ' '; - $html .= '
            ' . __('Server ID') . '' . __('Host') . '
            ' . $slave['Server_id'] . '' . $slave['Host'] . '
            '; - $html .= '
            '; - $html .= PMA_Message::notice( - __( - 'Only slaves started with the ' - . '--report-host=host_name option are visible in this list.' - ) - )->getDisplay(); - $html .= '
            '; - $html .= '
            '; - - return $html; -} - -/** - * get the correct username and hostname lengths for this MySQL server - * - * @return array username length, hostname length - */ - -function PMA_replicationGetUsernameHostnameLength() -{ - $fields_info = $GLOBALS['dbi']->getColumns('mysql', 'user'); - $username_length = 16; - $hostname_length = 41; - foreach ($fields_info as $val) { - if ($val['Field'] == 'User') { - strtok($val['Type'], '()'); - $v = strtok('()'); - if (is_int($v)) { - $username_length = $v; - } - } elseif ($val['Field'] == 'Host') { - strtok($val['Type'], '()'); - $v = strtok('()'); - if (is_int($v)) { - $hostname_length = $v; - } - } - } - return array($username_length, $hostname_length); -} - -/** - * returns html code to add a replication slave user to the master - * - * @return String HTML code - */ -function PMA_getHtmlForReplicationMasterAddSlaveuser() -{ - $html = ''; - list($username_length, $hostname_length) - = PMA_replicationGetUsernameHostnameLength(); - - if (isset($_REQUEST['username']) && strlen($_REQUEST['username']) === 0) { - $GLOBALS['pred_username'] = 'any'; - } - $html .= '
            '; - $html .= '
            ' . __('Add slave replication user') . '' - . PMA_getHtmlForAddUserLoginForm($username_length) - . '
            ' - . '' - . '' - . ' ' - . '' - . '' - . ' ' - . '' - . '
            ' - . '' - . '' - . ' ' - . '' - . '' - . '
            '; - - return $html; -} - -/** - * returns HTML for TableInfoForm - * - * @param int $hostname_length Selected hostname length - * - * @return String HTML code - */ -function PMA_getHtmlForTableInfoForm($hostname_length) -{ - $html = ' ' - . ' ' - . ' ' - . '
            ' - . '' - . PMA_Util::showHint( - __( - 'When Host table is used, this field is ignored ' - . 'and values stored in Host table are used instead.' - ) - ) - . '
            ' - . '
            ' - . '' - . '' - . ' ' - . '' - . '' - . '
            ' - . '
            ' - . '' - . ' ' - . '' - . '
            ' - . '
            ' - . '' - . '' - . ' ' - . '' - . '' - . '
            ' - . ''; - $html .= ''; - return $html; -} - -/** - * handle control requests - * - * @return NULL - */ -function PMA_handleControlRequest() -{ - if (isset($_REQUEST['sr_take_action'])) { - $refresh = false; - $result = null; - $messageSuccess = null; - $messageError = null; - - if (isset($_REQUEST['slave_changemaster'])) { - $result = PMA_handleRequestForSlaveChangeMaster(); - } elseif (isset($_REQUEST['sr_slave_server_control'])) { - $result = PMA_handleRequestForSlaveServerControl(); - $refresh = true; - - switch ($_REQUEST['sr_slave_action']) { - case 'start': - $messageSuccess = __('Replication started successfully.'); - $messageError = __('Error starting replication.'); - break; - - case 'stop': - $messageSuccess = __('Replication stopped successfully.'); - $messageError = __('Error stopping replication.'); - break; - - case 'reset': - $messageSuccess = __('Replication resetting successfully.'); - $messageError = __('Error resetting replication.'); - break; - - default: - $messageSuccess = __('Success.'); - $messageError = __('Error.'); - break; - } - } elseif (isset($_REQUEST['sr_slave_skip_error'])) { - $result = PMA_handleRequestForSlaveSkipError(); - } - - if ($refresh) { - $response = PMA_Response::getInstance(); - if ($response->isAjax()) { - $response->isSuccess($result); - $response->addJSON( - 'message', - $result ? PMA_Message::success($messageSuccess) : PMA_Message::error($messageError) - ); - } else { - PMA_sendHeaderLocation( - $GLOBALS['cfg']['PmaAbsoluteUri'] . 'server_replication.php' - . PMA_URL_getCommon($GLOBALS['url_params'], '&') - ); - } - } - unset($refresh); - } -} -/** - * handle control requests for Slave Change Master - * - * @return boolean - */ -function PMA_handleRequestForSlaveChangeMaster() -{ - $_SESSION['replication']['m_username'] = $sr['username'] - = PMA_Util::sqlAddSlashes($_REQUEST['username']); - $_SESSION['replication']['m_password'] = $sr['pma_pw'] - = PMA_Util::sqlAddSlashes($_REQUEST['pma_pw']); - $_SESSION['replication']['m_hostname'] = $sr['hostname'] - = PMA_Util::sqlAddSlashes($_REQUEST['hostname']); - $_SESSION['replication']['m_port'] = $sr['port'] - = PMA_Util::sqlAddSlashes($_REQUEST['port']); - $_SESSION['replication']['m_correct'] = ''; - $_SESSION['replication']['sr_action_status'] = 'error'; - $_SESSION['replication']['sr_action_info'] = __('Unknown error'); - - // Attempt to connect to the new master server - $link_to_master = PMA_Replication_connectToMaster( - $sr['username'], $sr['pma_pw'], $sr['hostname'], $sr['port'] - ); - - if (! $link_to_master) { - $_SESSION['replication']['sr_action_status'] = 'error'; - $_SESSION['replication']['sr_action_info'] = sprintf( - __('Unable to connect to master %s.'), - htmlspecialchars($sr['hostname']) - ); - } else { - // Read the current master position - $position = PMA_Replication_Slave_binLogMaster($link_to_master); - - if (empty($position)) { - $_SESSION['replication']['sr_action_status'] = 'error'; - $_SESSION['replication']['sr_action_info'] - = __( - 'Unable to read master log position. ' - . 'Possible privilege problem on master.' - ); - } else { - $_SESSION['replication']['m_correct'] = true; - - if (! PMA_Replication_Slave_changeMaster( - $sr['username'], - $sr['pma_pw'], - $sr['hostname'], - $sr['port'], - $position, - true, - false - ) - ) { - $_SESSION['replication']['sr_action_status'] = 'error'; - $_SESSION['replication']['sr_action_info'] - = __('Unable to change master'); - } else { - $_SESSION['replication']['sr_action_status'] = 'success'; - $_SESSION['replication']['sr_action_info'] = sprintf( - __('Master server changed successfully to %s'), - htmlspecialchars($sr['hostname']) - ); - } - } - } - - return $_SESSION['replication']['sr_action_status'] === 'success'; -} - -/** - * handle control requests for Slave Server Control - * - * @return boolean - */ -function PMA_handleRequestForSlaveServerControl() -{ - if (empty($_REQUEST['sr_slave_control_parm'])) { - $_REQUEST['sr_slave_control_parm'] = null; - } - if ($_REQUEST['sr_slave_action'] == 'reset') { - $qStop = PMA_Replication_Slave_control("STOP"); - $qReset = $GLOBALS['dbi']->tryQuery("RESET SLAVE;"); - $qStart = PMA_Replication_Slave_control("START"); - - $result = ($qStop !== false && $qStop !== -1 && - $qReset !== false && $qReset !== -1 && - $qStart !== false && $qStart !== -1); - } else { - $qControl = PMA_Replication_Slave_control( - $_REQUEST['sr_slave_action'], - $_REQUEST['sr_slave_control_parm'] - ); - - $result = ($qControl !== false && $qControl !== -1); - } - - return $result; -} - -/** - * handle control requests for Slave Skip Error - * - * @return boolean - */ -function PMA_handleRequestForSlaveSkipError() -{ - $count = 1; - if (isset($_REQUEST['sr_skip_errors_count'])) { - $count = $_REQUEST['sr_skip_errors_count'] * 1; - } - - $qStop = PMA_Replication_Slave_control("STOP"); - $qSkip = $GLOBALS['dbi']->tryQuery("SET GLOBAL SQL_SLAVE_SKIP_COUNTER = ".$count.";"); - $qStart = PMA_Replication_Slave_control("START"); - - $result = ($qStop !== false && $qStop !== -1 && - $qSkip !== false && $qSkip !== -1 && - $qStart !== false && $qStart !== -1); - - return $result; -} -?> diff --git a/pma12111211/libraries/rte/rte_events.lib.php b/pma12111211/libraries/rte/rte_events.lib.php deleted file mode 100644 index 77065970..00000000 --- a/pma12111211/libraries/rte/rte_events.lib.php +++ /dev/null @@ -1,637 +0,0 @@ - array('ENABLE', - 'DISABLE', - 'DISABLE ON SLAVE'), - 'display' => array('ENABLED', - 'DISABLED', - 'SLAVESIDE_DISABLED') - ); - $event_type = array('RECURRING', - 'ONE TIME'); - $event_interval = array('YEAR', - 'QUARTER', - 'MONTH', - 'DAY', - 'HOUR', - 'MINUTE', - 'WEEK', - 'SECOND', - 'YEAR_MONTH', - 'DAY_HOUR', - 'DAY_MINUTE', - 'DAY_SECOND', - 'HOUR_MINUTE', - 'HOUR_SECOND', - 'MINUTE_SECOND'); -} - -/** - * Main function for the events functionality - * - * @return void - */ -function PMA_EVN_main() -{ - global $db; - - PMA_EVN_setGlobals(); - /** - * Process all requests - */ - PMA_EVN_handleEditor(); - PMA_EVN_handleExport(); - /** - * Display a list of available events - */ - $columns = "`EVENT_NAME`, `EVENT_TYPE`, `STATUS`"; - $where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "'"; - $query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` " - . "WHERE $where ORDER BY `EVENT_NAME` ASC;"; - $items = $GLOBALS['dbi']->fetchResult($query); - echo PMA_RTE_getList('event', $items); - /** - * Display a link for adding a new event, if - * the user has the privileges and a link to - * toggle the state of the event scheduler. - */ - echo PMA_EVN_getFooterLinks(); -} // end PMA_EVN_main() - -/** - * Handles editor requests for adding or editing an item - * - * @return void - */ -function PMA_EVN_handleEditor() -{ - global $_REQUEST, $_POST, $errors, $db; - - if (! empty($_REQUEST['editor_process_add']) - || ! empty($_REQUEST['editor_process_edit']) - ) { - $sql_query = ''; - - $item_query = PMA_EVN_getQueryFromRequest(); - - if (! count($errors)) { // set by PMA_RTN_getQueryFromRequest() - // Execute the created query - if (! empty($_REQUEST['editor_process_edit'])) { - // Backup the old trigger, in case something goes wrong - $create_item = $GLOBALS['dbi']->getDefinition( - $db, - 'EVENT', - $_REQUEST['item_original_name'] - ); - $drop_item = "DROP EVENT " - . PMA_Util::backquote($_REQUEST['item_original_name']) . ";\n"; - $result = $GLOBALS['dbi']->tryQuery($drop_item); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($drop_item) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $result = $GLOBALS['dbi']->tryQuery($item_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($item_query) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - // We dropped the old item, but were unable to create - // the new one. Try to restore the backup query - $result = $GLOBALS['dbi']->tryQuery($create_item); - if (! $result) { - // OMG, this is really bad! We dropped the query, - // failed to create a new one - // and now even the backup query does not execute! - // This should not happen, but we better handle - // this just in case. - $errors[] = __( - 'Sorry, we failed to restore the dropped event.' - ) - . '
            ' - . __('The backed up query was:') - . "\"" . htmlspecialchars($create_item) . "\"" - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } - } else { - $message = PMA_Message::success( - __('Event %1$s has been modified.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $drop_item . $item_query; - } - } - } else { - // 'Add a new item' mode - $result = $GLOBALS['dbi']->tryQuery($item_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($item_query) - ) - . '

            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $message = PMA_Message::success( - __('Event %1$s has been created.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $item_query; - } - } - } - - if (count($errors)) { - $message = PMA_Message::error(__('One or more errors have occurred while processing your request:')); - $message->addString('
              '); - foreach ($errors as $string) { - $message->addString('
            • ' . $string . '
            • '); - } - $message->addString('
            '); - } - - $output = PMA_Util::getMessage($message, $sql_query); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - if ($message->isSuccess()) { - $columns = "`EVENT_NAME`, `EVENT_TYPE`, `STATUS`"; - $where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' " - . "AND EVENT_NAME='" - . PMA_Util::sqlAddSlashes($_REQUEST['item_name']) . "'"; - $query = "SELECT " . $columns - . " FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE " . $where. ";"; - $event = $GLOBALS['dbi']->fetchSingleRow($query); - $response->addJSON( - 'name', - htmlspecialchars(strtoupper($_REQUEST['item_name'])) - ); - $response->addJSON('new_row', PMA_EVN_getRowForList($event)); - $response->addJSON('insert', ! empty($event)); - $response->addJSON('message', $output); - } else { - $response->isSuccess(false); - $response->addJSON('message', $message); - } - exit; - } - } - /** - * Display a form used to add/edit a trigger, if necessary - */ - if (count($errors) - || (empty($_REQUEST['editor_process_add']) - && empty($_REQUEST['editor_process_edit']) - && (! empty($_REQUEST['add_item']) - || ! empty($_REQUEST['edit_item']) - || ! empty($_REQUEST['item_changetype']))) - ) { // FIXME: this must be simpler than that - $operation = ''; - if (! empty($_REQUEST['item_changetype'])) { - $operation = 'change'; - } - // Get the data for the form (if any) - if (! empty($_REQUEST['add_item'])) { - $title = PMA_RTE_getWord('add'); - $item = PMA_EVN_getDataFromRequest(); - $mode = 'add'; - } else if (! empty($_REQUEST['edit_item'])) { - $title = __("Edit event"); - if (! empty($_REQUEST['item_name']) - && empty($_REQUEST['editor_process_edit']) - && empty($_REQUEST['item_changetype']) - ) { - $item = PMA_EVN_getDataFromName($_REQUEST['item_name']); - if ($item !== false) { - $item['item_original_name'] = $item['item_name']; - } - } else { - $item = PMA_EVN_getDataFromRequest(); - } - $mode = 'edit'; - } - if ($item !== false) { - // Show form - $editor = PMA_EVN_getEditorForm($mode, $operation, $item); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->addJSON('message', $editor); - $response->addJSON('title', $title); - } else { - echo "\n\n

            $title

            \n\n$editor"; - unset($_POST); - } - exit; - } else { - $message = __('Error in processing request:') . ' '; - $message .= sprintf( - PMA_RTE_getWord('not_found'), - htmlspecialchars(PMA_Util::backquote($_REQUEST['item_name'])), - htmlspecialchars(PMA_Util::backquote($db)) - ); - $message = PMA_message::error($message); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } else { - $message->display(); - } - } - } -} // end PMA_EVN_handleEditor() - -/** - * This function will generate the values that are required to for the editor - * - * @return array Data necessary to create the editor. - */ -function PMA_EVN_getDataFromRequest() -{ - $retval = array(); - $indices = array('item_name', - 'item_original_name', - 'item_status', - 'item_execute_at', - 'item_interval_value', - 'item_interval_field', - 'item_starts', - 'item_ends', - 'item_definition', - 'item_preserve', - 'item_comment', - 'item_definer'); - foreach ($indices as $index) { - $retval[$index] = isset($_REQUEST[$index]) ? $_REQUEST[$index] : ''; - } - $retval['item_type'] = 'ONE TIME'; - $retval['item_type_toggle'] = 'RECURRING'; - if (isset($_REQUEST['item_type']) && $_REQUEST['item_type'] == 'RECURRING') { - $retval['item_type'] = 'RECURRING'; - $retval['item_type_toggle'] = 'ONE TIME'; - } - return $retval; -} // end PMA_EVN_getDataFromRequest() - -/** - * This function will generate the values that are required to complete - * the "Edit event" form given the name of a event. - * - * @param string $name The name of the event. - * - * @return array Data necessary to create the editor. - */ -function PMA_EVN_getDataFromName($name) -{ - global $db; - - $retval = array(); - $columns = "`EVENT_NAME`, `STATUS`, `EVENT_TYPE`, `EXECUTE_AT`, " - . "`INTERVAL_VALUE`, `INTERVAL_FIELD`, `STARTS`, `ENDS`, " - . "`EVENT_DEFINITION`, `ON_COMPLETION`, `DEFINER`, `EVENT_COMMENT`"; - $where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' " - . "AND EVENT_NAME='" . PMA_Util::sqlAddSlashes($name) . "'"; - $query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE $where;"; - $item = $GLOBALS['dbi']->fetchSingleRow($query); - if (! $item) { - return false; - } - $retval['item_name'] = $item['EVENT_NAME']; - $retval['item_status'] = $item['STATUS']; - $retval['item_type'] = $item['EVENT_TYPE']; - if ($retval['item_type'] == 'RECURRING') { - $retval['item_type_toggle'] = 'ONE TIME'; - } else { - $retval['item_type_toggle'] = 'RECURRING'; - } - $retval['item_execute_at'] = $item['EXECUTE_AT']; - $retval['item_interval_value'] = $item['INTERVAL_VALUE']; - $retval['item_interval_field'] = $item['INTERVAL_FIELD']; - $retval['item_starts'] = $item['STARTS']; - $retval['item_ends'] = $item['ENDS']; - $retval['item_preserve'] = ''; - if ($item['ON_COMPLETION'] == 'PRESERVE') { - $retval['item_preserve'] = " checked='checked'"; - } - $retval['item_definition'] = $item['EVENT_DEFINITION']; - $retval['item_definer'] = $item['DEFINER']; - $retval['item_comment'] = $item['EVENT_COMMENT']; - - return $retval; -} // end PMA_EVN_getDataFromName() - -/** - * Displays a form used to add/edit an event - * - * @param string $mode If the editor will be used edit an event - * or add a new one: 'edit' or 'add'. - * @param string $operation If the editor was previously invoked with - * JS turned off, this will hold the name of - * the current operation - * @param array $item Data for the event returned by - * PMA_EVN_getDataFromRequest() or - * PMA_EVN_getDataFromName() - * - * @return string HTML code for the editor. - */ -function PMA_EVN_getEditorForm($mode, $operation, $item) -{ - global $db, $table, $event_status, $event_type, $event_interval; - - // Escape special characters - $need_escape = array( - 'item_original_name', - 'item_name', - 'item_type', - 'item_execute_at', - 'item_interval_value', - 'item_starts', - 'item_ends', - 'item_definition', - 'item_definer', - 'item_comment' - ); - foreach ($need_escape as $index) { - $item[$index] = htmlentities($item[$index], ENT_QUOTES); - } - $original_data = ''; - if ($mode == 'edit') { - $original_data = "\n"; - } - // Handle some logic first - if ($operation == 'change') { - if ($item['item_type'] == 'RECURRING') { - $item['item_type'] = 'ONE TIME'; - $item['item_type_toggle'] = 'RECURRING'; - } else { - $item['item_type'] = 'RECURRING'; - $item['item_type_toggle'] = 'ONE TIME'; - } - } - if ($item['item_type'] == 'ONE TIME') { - $isrecurring_class = ' hide'; - $isonetime_class = ''; - } else { - $isrecurring_class = ''; - $isonetime_class = ' hide'; - } - // Create the output - $retval = ""; - $retval .= "\n\n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= $original_data; - $retval .= PMA_URL_getHiddenInputs($db, $table) . "\n"; - $retval .= "
            \n"; - $retval .= "" . __('Details') . "\n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - - return $retval; -} // end PMA_RTN_getRowForList() - -/** - * Creates the contents for a row in the list of triggers - * - * @param array $trigger An array of routine data - * @param string $rowclass Empty or one of ['even'|'odd'] - * - * @return string HTML code of a cell for the list of triggers - */ -function PMA_TRI_getRowForList($trigger, $rowclass = '') -{ - global $ajax_class, $url_query, $db, $table, $titles; - - $retval = " \n"; - $retval .= " \n"; - if (empty($table)) { - $retval .= " \n"; - } - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - - return $retval; -} // end PMA_TRI_getRowForList() - -/** - * Creates the contents for a row in the list of events - * - * @param array $event An array of routine data - * @param string $rowclass Empty or one of ['even'|'odd'] - * - * @return string HTML code of a cell for the list of events - */ -function PMA_EVN_getRowForList($event, $rowclass = '') -{ - global $ajax_class, $url_query, $db, $titles; - - $sql_drop = sprintf( - 'DROP EVENT IF EXISTS %s', - PMA_Util::backquote($event['EVENT_NAME']) - ); - - $retval = " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - - return $retval; -} // end PMA_EVN_getRowForList() - -?> diff --git a/pma12111211/libraries/rte/rte_main.inc.php b/pma12111211/libraries/rte/rte_main.inc.php deleted file mode 100644 index 9abb9a30..00000000 --- a/pma12111211/libraries/rte/rte_main.inc.php +++ /dev/null @@ -1,96 +0,0 @@ -getTables($db))) { - include_once './libraries/tbl_common.inc.php'; - } else { - $table = ''; - include_once './libraries/db_common.inc.php'; - include_once './libraries/db_info.inc.php'; - } -} else { - /** - * Since we did not include some libraries, we need - * to manually select the required database and - * create the missing $url_query variable - */ - if (strlen($db)) { - $GLOBALS['dbi']->selectDb($db); - if (! isset($url_query)) { - $url_query = PMA_URL_getCommon($db, $table); - } - } -} - -/** - * Generate the conditional classes that will - * be used to attach jQuery events to links - */ -$ajax_class = array( - 'add' => '', - 'edit' => '', - 'exec' => '', - 'drop' => '', - 'export' => '' -); -$ajax_class = array( - 'add' => 'class="ajax add_anchor"', - 'edit' => 'class="ajax edit_anchor"', - 'exec' => 'class="ajax exec_anchor"', - 'drop' => 'class="ajax drop_anchor"', - 'export' => 'class="ajax export_anchor"' -); - -/** - * Create labels for the list - */ -$titles = PMA_Util::buildActionTitles(); - -/** - * Keep a list of errors that occurred while - * processing an 'Add' or 'Edit' operation. - */ -$errors = array(); - - -/** - * Call the appropriate main function - */ -switch ($_PMA_RTE) { -case 'RTN': - $type = null; - if (isset($_REQUEST['type'])) { - $type = $_REQUEST['type']; - } - PMA_RTN_main($type); - break; -case 'TRI': - PMA_TRI_main(); - break; -case 'EVN': - PMA_EVN_main(); - break; -} - -?> diff --git a/pma12111211/libraries/rte/rte_routines.lib.php b/pma12111211/libraries/rte/rte_routines.lib.php deleted file mode 100644 index 9aa9f69f..00000000 --- a/pma12111211/libraries/rte/rte_routines.lib.php +++ /dev/null @@ -1,1702 +0,0 @@ -fetchResult( - "SELECT $columns FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE $where;" - ); - echo PMA_RTE_getList('routine', $items); - /** - * Display the form for adding a new routine, if the user has the privileges. - */ - echo PMA_RTN_getFooterLinks(); - /** - * Display a warning for users with PHP's old "mysql" extension. - */ - if ($GLOBALS['cfg']['Server']['extension'] === 'mysql') { - trigger_error( - __( - 'You are using PHP\'s deprecated \'mysql\' extension, ' - . 'which is not capable of handling multi queries. ' - . '[strong]The execution of some stored routines may fail![/strong] ' - . 'Please use the improved \'mysqli\' extension to ' - . 'avoid any problems.' - ), - E_USER_WARNING - ); - } -} // end PMA_RTN_main() - -/** - * This function parses a string containing one parameter of a routine, - * as returned by PMA_RTN_parseAllParameters() and returns an array containing - * the information about this parameter. - * - * @param string $value A string containing one parameter of a routine - * - * @return array Parsed information about the input parameter - */ -function PMA_RTN_parseOneParameter($value) -{ - global $param_directions; - - $retval = array(0 => '', - 1 => '', - 2 => '', - 3 => '', - 4 => ''); - $parsed_param = PMA_SQP_parse($value); - $pos = 0; - if (in_array(strtoupper($parsed_param[$pos]['data']), $param_directions)) { - $retval[0] = strtoupper($parsed_param[0]['data']); - $pos++; - } - if ($parsed_param[$pos]['type'] == 'alpha_identifier' - || $parsed_param[$pos]['type'] == 'quote_backtick' - ) { - $retval[1] = PMA_Util::unQuote( - $parsed_param[$pos]['data'] - ); - $pos++; - } - $depth = 0; - $param_length = ''; - $param_opts = array(); - for ($i=$pos; $i<$parsed_param['len']; $i++) { - if (($parsed_param[$i]['type'] == 'alpha_columnType' - || $parsed_param[$i]['type'] == 'alpha_functionName') && $depth == 0 - ) { - $retval[2] = strtoupper($parsed_param[$i]['data']); - } else if ($parsed_param[$i]['type'] == 'punct_bracket_open_round' - && $depth == 0 - ) { - $depth = 1; - } else if ($parsed_param[$i]['type'] == 'punct_bracket_close_round' - && $depth == 1 - ) { - $depth = 0; - } else if ($depth == 1) { - $param_length .= $parsed_param[$i]['data']; - } else if ($parsed_param[$i]['type'] == 'alpha_reservedWord' - && strtoupper($parsed_param[$i]['data']) == 'CHARSET' && $depth == 0 - ) { - if ($parsed_param[$i+1]['type'] == 'alpha_charset' - || $parsed_param[$i+1]['type'] == 'alpha_identifier' - ) { - $param_opts[] = strtolower($parsed_param[$i+1]['data']); - } - } else if ($parsed_param[$i]['type'] == 'alpha_columnAttrib' - && $depth == 0 - ) { - $param_opts[] = strtoupper($parsed_param[$i]['data']); - } - } - $retval[3] = $param_length; - sort($param_opts); - $retval[4] = implode(' ', $param_opts); - - return $retval; -} // end PMA_RTN_parseOneParameter() - -/** - * This function looks through the contents of a parsed - * SHOW CREATE [PROCEDURE | FUNCTION] query and extracts - * information about the routine's parameters. - * - * @param array $parsed_query Parsed query, returned by by PMA_SQP_parse() - * @param string $routine_type Routine type: 'PROCEDURE' or 'FUNCTION' - * - * @return array Information about the parameteres of a routine. - */ -function PMA_RTN_parseAllParameters($parsed_query, $routine_type) -{ - $retval = array(); - $retval['num'] = 0; - - // First get the list of parameters from the query - $buffer = ''; - $params = array(); - $fetching = false; - $depth = 0; - for ($i=0; $i<$parsed_query['len']; $i++) { - if ($parsed_query[$i]['type'] == 'alpha_reservedWord' - && $parsed_query[$i]['data'] == $routine_type - ) { - $fetching = true; - } else if ($fetching == true - && $parsed_query[$i]['type'] == 'punct_bracket_open_round' - ) { - $depth++; - if ($depth > 1) { - $buffer .= $parsed_query[$i]['data'] . ' '; - } - } else if ($fetching == true - && $parsed_query[$i]['type'] == 'punct_bracket_close_round' - ) { - $depth--; - if ($depth > 0) { - $buffer .= $parsed_query[$i]['data'] . ' '; - } else { - break; - } - } else if ($parsed_query[$i]['type'] == 'punct_listsep' && $depth == 1) { - $params[] = $buffer; - $retval['num']++; - $buffer = ''; - } else if ($fetching == true && $depth > 0) { - $buffer .= $parsed_query[$i]['data'] . ' '; - } - } - if (! empty($buffer)) { - $params[] = $buffer; - $retval['num']++; - } - // Now parse each parameter individually - foreach ($params as $key => $value) { - list($retval['dir'][], - $retval['name'][], - $retval['type'][], - $retval['length'][], - $retval['opts'][]) = PMA_RTN_parseOneParameter($value); - } - // Since some indices of $retval may be still undefined, we fill - // them each with an empty array to avoid E_ALL errors in PHP. - foreach (array('dir', 'name', 'type', 'length', 'opts') as $key => $index) { - if (! isset($retval[$index])) { - $retval[$index] = array(); - } - } - - return $retval; -} // end PMA_RTN_parseAllParameters() - -/** - * This function looks through the contents of a parsed - * SHOW CREATE [PROCEDURE | FUNCTION] query and extracts - * information about the routine's definer. - * - * @param array $parsed_query Parsed query, returned by PMA_SQP_parse() - * - * @return string The definer of a routine. - */ -function PMA_RTN_parseRoutineDefiner($parsed_query) -{ - $retval = ''; - $fetching = false; - for ($i=0; $i<$parsed_query['len']; $i++) { - if ($parsed_query[$i]['type'] == 'alpha_reservedWord' - && $parsed_query[$i]['data'] == 'DEFINER' - ) { - $fetching = true; - } else if ($fetching == true - && $parsed_query[$i]['type'] != 'quote_backtick' - && substr($parsed_query[$i]['type'], 0, 5) != 'punct' - ) { - break; - } else if ($fetching == true - && $parsed_query[$i]['type'] == 'quote_backtick' - ) { - $retval .= PMA_Util::unQuote( - $parsed_query[$i]['data'] - ); - } else if ($fetching == true && $parsed_query[$i]['type'] == 'punct_user') { - $retval .= $parsed_query[$i]['data']; - } - } - return $retval; -} // end PMA_RTN_parseRoutineDefiner() - -/** - * Handles editor requests for adding or editing an item - * - * @return void - */ -function PMA_RTN_handleEditor() -{ - global $_GET, $_POST, $_REQUEST, $GLOBALS, $db, $errors; - - if (! empty($_REQUEST['editor_process_add']) - || ! empty($_REQUEST['editor_process_edit']) - ) { - /** - * Handle a request to create/edit a routine - */ - $sql_query = ''; - $routine_query = PMA_RTN_getQueryFromRequest(); - if (! count($errors)) { // set by PMA_RTN_getQueryFromRequest() - // Execute the created query - if (! empty($_REQUEST['editor_process_edit'])) { - $isProcOrFunc = in_array( - $_REQUEST['item_original_type'], - array('PROCEDURE', 'FUNCTION') - ); - if (!$isProcOrFunc) { - $errors[] = sprintf( - __('Invalid routine type: "%s"'), - htmlspecialchars($_REQUEST['item_original_type']) - ); - } else { - // Backup the old routine, in case something goes wrong - $create_routine = $GLOBALS['dbi']->getDefinition( - $db, $_REQUEST['item_original_type'], - $_REQUEST['item_original_name'] - ); - $drop_routine = "DROP {$_REQUEST['item_original_type']} " - . PMA_Util::backquote($_REQUEST['item_original_name']) - . ";\n"; - $result = $GLOBALS['dbi']->tryQuery($drop_routine); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($drop_routine) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $result = $GLOBALS['dbi']->tryQuery($routine_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($routine_query) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - // We dropped the old routine, - // but were unable to create the new one - // Try to restore the backup query - $result = $GLOBALS['dbi']->tryQuery($create_routine); - if (! $result) { - // OMG, this is really bad! We dropped the query, - // failed to create a new one - // and now even the backup query does not execute! - // This should not happen, but we better handle - // this just in case. - $errors[] = __( - 'Sorry, we failed to restore' - . ' the dropped routine.' - ) - . '
            ' - . __('The backed up query was:') - . "\"" . htmlspecialchars($create_routine) . "\"" - . '
            ' - . __('MySQL said: ') - . $GLOBALS['dbi']->getError(null); - } - } else { - $message = PMA_Message::success( - __('Routine %1$s has been modified.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $drop_routine . $routine_query; - } - } - } - } else { - // 'Add a new routine' mode - $result = $GLOBALS['dbi']->tryQuery($routine_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($routine_query) - ) - . '

            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $message = PMA_Message::success( - __('Routine %1$s has been created.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $routine_query; - } - } - } - - if (count($errors)) { - $message = PMA_Message::error( - __( - 'One or more errors have occurred while' - . ' processing your request:' - ) - ); - $message->addString('
              '); - foreach ($errors as $string) { - $message->addString('
            • ' . $string . '
            • '); - } - $message->addString('
            '); - } - - $output = PMA_Util::getMessage($message, $sql_query); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - if ($message->isSuccess()) { - $columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`," - . " `DTD_IDENTIFIER`, `ROUTINE_DEFINITION`"; - $where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' " - . "AND ROUTINE_NAME='" - . PMA_Util::sqlAddSlashes($_REQUEST['item_name']) . "'" - . "AND ROUTINE_TYPE='" - . PMA_Util::sqlAddSlashes($_REQUEST['item_type']) . "'"; - $routine = $GLOBALS['dbi']->fetchSingleRow( - "SELECT $columns FROM `INFORMATION_SCHEMA`.`ROUTINES`" - . " WHERE $where;" - ); - $response->addJSON( - 'name', htmlspecialchars(strtoupper($_REQUEST['item_name'])) - ); - $response->addJSON('new_row', PMA_RTN_getRowForList($routine)); - $response->addJSON('insert', ! empty($routine)); - $response->addJSON('message', $output); - } else { - $response->isSuccess(false); - $response->addJSON('message', $output); - } - exit; - } - } - - /** - * Display a form used to add/edit a routine, if necessary - */ - // FIXME: this must be simpler than that - if (count($errors) - || ( empty($_REQUEST['editor_process_add']) - && empty($_REQUEST['editor_process_edit']) - && (! empty($_REQUEST['add_item']) || ! empty($_REQUEST['edit_item']) - || ! empty($_REQUEST['routine_addparameter']) - || ! empty($_REQUEST['routine_removeparameter']) - || ! empty($_REQUEST['routine_changetype']))) - ) { - // Handle requests to add/remove parameters and changing routine type - // This is necessary when JS is disabled - $operation = ''; - if (! empty($_REQUEST['routine_addparameter'])) { - $operation = 'add'; - } else if (! empty($_REQUEST['routine_removeparameter'])) { - $operation = 'remove'; - } else if (! empty($_REQUEST['routine_changetype'])) { - $operation = 'change'; - } - // Get the data for the form (if any) - if (! empty($_REQUEST['add_item'])) { - $title = PMA_RTE_getWord('add'); - $routine = PMA_RTN_getDataFromRequest(); - $mode = 'add'; - } else if (! empty($_REQUEST['edit_item'])) { - $title = __("Edit routine"); - if (! $operation && ! empty($_REQUEST['item_name']) - && empty($_REQUEST['editor_process_edit']) - ) { - $routine = PMA_RTN_getDataFromName( - $_REQUEST['item_name'], $_REQUEST['item_type'] - ); - if ($routine !== false) { - $routine['item_original_name'] = $routine['item_name']; - $routine['item_original_type'] = $routine['item_type']; - } - } else { - $routine = PMA_RTN_getDataFromRequest(); - } - $mode = 'edit'; - } - if ($routine !== false) { - // Show form - $editor = PMA_RTN_getEditorForm($mode, $operation, $routine); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->addJSON('message', $editor); - $response->addJSON('title', $title); - $response->addJSON('param_template', PMA_RTN_getParameterRow()); - $response->addJSON('type', $routine['item_type']); - } else { - echo "\n\n

            $title

            \n\n$editor"; - } - exit; - } else { - $message = __('Error in processing request:') . ' '; - $message .= sprintf( - PMA_RTE_getWord('not_found'), - htmlspecialchars(PMA_Util::backquote($_REQUEST['item_name'])), - htmlspecialchars(PMA_Util::backquote($db)) - ); - $message = PMA_message::error($message); - if ($GLOBALS['is_ajax_request']) { - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } else { - $message->display(); - } - } - } -} // end PMA_RTN_handleEditor() - -/** - * This function will generate the values that are required to - * complete the editor form. It is especially necessary to handle - * the 'Add another parameter', 'Remove last parameter' and - * 'Change routine type' functionalities when JS is disabled. - * - * @return array Data necessary to create the routine editor. - */ -function PMA_RTN_getDataFromRequest() -{ - global $_REQUEST, $param_directions, $param_sqldataaccess; - - $retval = array(); - $indices = array('item_name', - 'item_original_name', - 'item_returnlength', - 'item_returnopts_num', - 'item_returnopts_text', - 'item_definition', - 'item_comment', - 'item_definer'); - foreach ($indices as $key => $index) { - $retval[$index] = isset($_REQUEST[$index]) ? $_REQUEST[$index] : ''; - } - - $retval['item_type'] = 'PROCEDURE'; - $retval['item_type_toggle'] = 'FUNCTION'; - if (isset($_REQUEST['item_type']) && $_REQUEST['item_type'] == 'FUNCTION') { - $retval['item_type'] = 'FUNCTION'; - $retval['item_type_toggle'] = 'PROCEDURE'; - } - $retval['item_original_type'] = 'PROCEDURE'; - if (isset($_REQUEST['item_original_type']) - && $_REQUEST['item_original_type'] == 'FUNCTION' - ) { - $retval['item_original_type'] = 'FUNCTION'; - } - $retval['item_num_params'] = 0; - $retval['item_param_dir'] = array(); - $retval['item_param_name'] = array(); - $retval['item_param_type'] = array(); - $retval['item_param_length'] = array(); - $retval['item_param_opts_num'] = array(); - $retval['item_param_opts_text'] = array(); - if ( isset($_REQUEST['item_param_name']) - && isset($_REQUEST['item_param_type']) - && isset($_REQUEST['item_param_length']) - && isset($_REQUEST['item_param_opts_num']) - && isset($_REQUEST['item_param_opts_text']) - && is_array($_REQUEST['item_param_name']) - && is_array($_REQUEST['item_param_type']) - && is_array($_REQUEST['item_param_length']) - && is_array($_REQUEST['item_param_opts_num']) - && is_array($_REQUEST['item_param_opts_text']) - ) { - if ($_REQUEST['item_type'] == 'PROCEDURE') { - $retval['item_param_dir'] = $_REQUEST['item_param_dir']; - foreach ($retval['item_param_dir'] as $key => $value) { - if (! in_array($value, $param_directions, true)) { - $retval['item_param_dir'][$key] = ''; - } - } - } - $retval['item_param_name'] = $_REQUEST['item_param_name']; - $retval['item_param_type'] = $_REQUEST['item_param_type']; - foreach ($retval['item_param_type'] as $key => $value) { - if (! in_array($value, PMA_Util::getSupportedDatatypes(), true)) { - $retval['item_param_type'][$key] = ''; - } - } - $retval['item_param_length'] = $_REQUEST['item_param_length']; - $retval['item_param_opts_num'] = $_REQUEST['item_param_opts_num']; - $retval['item_param_opts_text'] = $_REQUEST['item_param_opts_text']; - $retval['item_num_params'] = max( - count($retval['item_param_name']), - count($retval['item_param_type']), - count($retval['item_param_length']), - count($retval['item_param_opts_num']), - count($retval['item_param_opts_text']) - ); - } - $retval['item_returntype'] = ''; - if (isset($_REQUEST['item_returntype']) - && in_array($_REQUEST['item_returntype'], PMA_Util::getSupportedDatatypes()) - ) { - $retval['item_returntype'] = $_REQUEST['item_returntype']; - } - - $retval['item_isdeterministic'] = ''; - if (isset($_REQUEST['item_isdeterministic']) - && strtolower($_REQUEST['item_isdeterministic']) == 'on' - ) { - $retval['item_isdeterministic'] = " checked='checked'"; - } - $retval['item_securitytype_definer'] = ''; - $retval['item_securitytype_invoker'] = ''; - if (isset($_REQUEST['item_securitytype'])) { - if ($_REQUEST['item_securitytype'] === 'DEFINER') { - $retval['item_securitytype_definer'] = " selected='selected'"; - } else if ($_REQUEST['item_securitytype'] === 'INVOKER') { - $retval['item_securitytype_invoker'] = " selected='selected'"; - } - } - $retval['item_sqldataaccess'] = ''; - if (isset($_REQUEST['item_sqldataaccess']) - && in_array($_REQUEST['item_sqldataaccess'], $param_sqldataaccess, true) - ) { - $retval['item_sqldataaccess'] = $_REQUEST['item_sqldataaccess']; - } - - return $retval; -} // end function PMA_RTN_getDataFromRequest() - -/** - * This function will generate the values that are required to complete - * the "Edit routine" form given the name of a routine. - * - * @param string $name The name of the routine. - * @param string $type Type of routine (ROUTINE|PROCEDURE) - * @param bool $all Whether to return all data or just - * the info about parameters. - * - * @return array Data necessary to create the routine editor. - */ -function PMA_RTN_getDataFromName($name, $type, $all = true) -{ - global $db; - - $retval = array(); - - // Build and execute the query - $fields = "SPECIFIC_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, " - . "ROUTINE_DEFINITION, IS_DETERMINISTIC, SQL_DATA_ACCESS, " - . "ROUTINE_COMMENT, SECURITY_TYPE"; - $where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' " - . "AND SPECIFIC_NAME='" . PMA_Util::sqlAddSlashes($name) . "'" - . "AND ROUTINE_TYPE='" . PMA_Util::sqlAddSlashes($type) . "'"; - $query = "SELECT $fields FROM INFORMATION_SCHEMA.ROUTINES WHERE $where;"; - - $routine = $GLOBALS['dbi']->fetchSingleRow($query); - - if (! $routine) { - return false; - } - - // Get required data - $retval['item_name'] = $routine['SPECIFIC_NAME']; - $retval['item_type'] = $routine['ROUTINE_TYPE']; - $parsed_query = PMA_SQP_parse( - $GLOBALS['dbi']->getDefinition( - $db, - $routine['ROUTINE_TYPE'], - $routine['SPECIFIC_NAME'] - ) - ); - $params = PMA_RTN_parseAllParameters($parsed_query, $routine['ROUTINE_TYPE']); - $retval['item_num_params'] = $params['num']; - $retval['item_param_dir'] = $params['dir']; - $retval['item_param_name'] = $params['name']; - $retval['item_param_type'] = $params['type']; - $retval['item_param_length'] = $params['length']; - $retval['item_param_opts_num'] = $params['opts']; - $retval['item_param_opts_text'] = $params['opts']; - - // Get extra data - if ($all) { - if ($retval['item_type'] == 'FUNCTION') { - $retval['item_type_toggle'] = 'PROCEDURE'; - } else { - $retval['item_type_toggle'] = 'FUNCTION'; - } - $retval['item_returntype'] = ''; - $retval['item_returnlength'] = ''; - $retval['item_returnopts_num'] = ''; - $retval['item_returnopts_text'] = ''; - if (! empty($routine['DTD_IDENTIFIER'])) { - if (strlen($routine['DTD_IDENTIFIER']) > 63) { - // If the DTD_IDENTIFIER string from INFORMATION_SCHEMA is - // at least 64 characters, then it may actually have been - // chopped because that column is a varchar(64), so we will - // parse the output of SHOW CREATE query to get accurate - // information about the return variable. - $dtd = ''; - $fetching = false; - for ($i=0; $i<$parsed_query['len']; $i++) { - if ($parsed_query[$i]['type'] == 'alpha_reservedWord' - && strtoupper($parsed_query[$i]['data']) == 'RETURNS' - ) { - $fetching = true; - } else if ($fetching == true - && $parsed_query[$i]['type'] == 'alpha_reservedWord' - ) { - // We will not be looking for options such as UNSIGNED - // or ZEROFILL because there is no way that a numeric - // field's DTD_IDENTIFIER can be longer than 64 - // characters. We can safely assume that the return - // datatype is either ENUM or SET, so we only look - // for CHARSET. - $word = strtoupper($parsed_query[$i]['data']); - if ($word == 'CHARSET' - && ($parsed_query[$i+1]['type'] == 'alpha_charset' - || $parsed_query[$i+1]['type'] == 'alpha_identifier') - ) { - $dtd .= $word . ' ' . $parsed_query[$i+1]['data']; - } - break; - } else if ($fetching == true) { - $dtd .= $parsed_query[$i]['data'] . ' '; - } - } - $routine['DTD_IDENTIFIER'] = $dtd; - } - $returnparam = PMA_RTN_parseOneParameter($routine['DTD_IDENTIFIER']); - $retval['item_returntype'] = $returnparam[2]; - $retval['item_returnlength'] = $returnparam[3]; - $retval['item_returnopts_num'] = $returnparam[4]; - $retval['item_returnopts_text'] = $returnparam[4]; - } - $retval['item_definer'] = PMA_RTN_parseRoutineDefiner($parsed_query); - $retval['item_definition'] = $routine['ROUTINE_DEFINITION']; - $retval['item_isdeterministic'] = ''; - if ($routine['IS_DETERMINISTIC'] == 'YES') { - $retval['item_isdeterministic'] = " checked='checked'"; - } - $retval['item_securitytype_definer'] = ''; - $retval['item_securitytype_invoker'] = ''; - if ($routine['SECURITY_TYPE'] == 'DEFINER') { - $retval['item_securitytype_definer'] = " selected='selected'"; - } else if ($routine['SECURITY_TYPE'] == 'INVOKER') { - $retval['item_securitytype_invoker'] = " selected='selected'"; - } - $retval['item_sqldataaccess'] = $routine['SQL_DATA_ACCESS']; - $retval['item_comment'] = $routine['ROUTINE_COMMENT']; - } - - return $retval; -} // PMA_RTN_getDataFromName() - -/** - * Creates one row for the parameter table used in the routine editor. - * - * @param array $routine Data for the routine returned by - * PMA_RTN_getDataFromRequest() or - * PMA_RTN_getDataFromName() - * @param mixed $index Either a numeric index of the row being processed - * or NULL to create a template row for AJAX request - * @param string $class Class used to hide the direction column, if the - * row is for a stored function. - * - * @return string HTML code of one row of parameter table for the editor. - */ -function PMA_RTN_getParameterRow($routine = array(), $index = null, $class = '') -{ - global $param_directions, $param_opts_num, $titles; - - if ($index === null) { - // template row for AJAX request - $i = 0; - $index = '%s'; - $drop_class = ''; - $routine = array( - 'item_param_dir' => array(0 => ''), - 'item_param_name' => array(0 => ''), - 'item_param_type' => array(0 => ''), - 'item_param_length' => array(0 => ''), - 'item_param_opts_num' => array(0 => ''), - 'item_param_opts_text' => array(0 => '') - ); - } else if (! empty($routine)) { - // regular row for routine editor - $drop_class = ' hide'; - $i = $index; - } else { - // No input data. This shouldn't happen, - // but better be safe than sorry. - return ''; - } - - // Create the output - $retval = ""; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - - return $retval; -} // end PMA_RTN_getParameterRow() - -/** - * Displays a form used to add/edit a routine - * - * @param string $mode If the editor will be used edit a routine - * or add a new one: 'edit' or 'add'. - * @param string $operation If the editor was previously invoked with - * JS turned off, this will hold the name of - * the current operation - * @param array $routine Data for the routine returned by - * PMA_RTN_getDataFromRequest() or - * PMA_RTN_getDataFromName() - * - * @return string HTML code for the editor. - */ -function PMA_RTN_getEditorForm($mode, $operation, $routine) -{ - global $db, $errors, $param_sqldataaccess, $param_opts_num; - - // Escape special characters - $need_escape = array( - 'item_original_name', - 'item_name', - 'item_returnlength', - 'item_definition', - 'item_definer', - 'item_comment' - ); - foreach ($need_escape as $key => $index) { - $routine[$index] = htmlentities($routine[$index], ENT_QUOTES, 'UTF-8'); - } - for ($i=0; $i<$routine['item_num_params']; $i++) { - $routine['item_param_name'][$i] = htmlentities( - $routine['item_param_name'][$i], - ENT_QUOTES - ); - $routine['item_param_length'][$i] = htmlentities( - $routine['item_param_length'][$i], - ENT_QUOTES - ); - } - - // Handle some logic first - if ($operation == 'change') { - if ($routine['item_type'] == 'PROCEDURE') { - $routine['item_type'] = 'FUNCTION'; - $routine['item_type_toggle'] = 'PROCEDURE'; - } else { - $routine['item_type'] = 'PROCEDURE'; - $routine['item_type_toggle'] = 'FUNCTION'; - } - } else if ($operation == 'add' - || ($routine['item_num_params'] == 0 && $mode == 'add' && ! $errors) - ) { - $routine['item_param_dir'][] = ''; - $routine['item_param_name'][] = ''; - $routine['item_param_type'][] = ''; - $routine['item_param_length'][] = ''; - $routine['item_param_opts_num'][] = ''; - $routine['item_param_opts_text'][] = ''; - $routine['item_num_params']++; - } else if ($operation == 'remove') { - unset($routine['item_param_dir'][$routine['item_num_params']-1]); - unset($routine['item_param_name'][$routine['item_num_params']-1]); - unset($routine['item_param_type'][$routine['item_num_params']-1]); - unset($routine['item_param_length'][$routine['item_num_params']-1]); - unset($routine['item_param_opts_num'][$routine['item_num_params']-1]); - unset($routine['item_param_opts_text'][$routine['item_num_params']-1]); - $routine['item_num_params']--; - } - $disable_remove_parameter = ''; - if (! $routine['item_num_params']) { - $disable_remove_parameter = " color: gray;' disabled='disabled"; - } - $original_routine = ''; - if ($mode == 'edit') { - $original_routine = "\n" - . "\n"; - } - $isfunction_class = ''; - $isprocedure_class = ''; - $isfunction_select = ''; - $isprocedure_select = ''; - if ($routine['item_type'] == 'PROCEDURE') { - $isfunction_class = ' hide'; - $isprocedure_select = " selected='selected'"; - } else { - $isprocedure_class = ' hide'; - $isfunction_select = " selected='selected'"; - } - - // Create the output - $retval = ""; - $retval .= "\n\n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= $original_routine; - $retval .= PMA_URL_getHiddenInputs($db) . "\n"; - $retval .= "
            \n"; - $retval .= "" . __('Details') . "\n"; - $retval .= "
            " . __('Event name') . "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "
            " . __('Event type') . "\n"; - if ($GLOBALS['is_ajax_request']) { - $retval .= " \n"; - } else { - $retval .= " \n"; - $retval .= " {$item['item_type']}\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " $value) { - $selected = ""; - if (! empty($item['item_interval_field']) - && $item['item_interval_field'] == $value - ) { - $selected = " selected='selected'"; - } - $retval .= "$value"; - } - $retval .= " \n"; - $retval .= "
            " . _pgettext('Start of recurring event', 'Start'); - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "
            " . __('On completion preserve') . "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - } - $retval .= "\n\n"; - $retval .= "\n\n"; - - return $retval; -} // end PMA_EVN_getEditorForm() - -/** - * Composes the query necessary to create an event from an HTTP request. - * - * @return string The CREATE EVENT query. - */ -function PMA_EVN_getQueryFromRequest() -{ - global $_REQUEST, $errors, $event_status, $event_type, $event_interval; - - $query = 'CREATE '; - if (! empty($_REQUEST['item_definer'])) { - if (strpos($_REQUEST['item_definer'], '@') !== false) { - $arr = explode('@', $_REQUEST['item_definer']); - $query .= 'DEFINER=' . PMA_Util::backquote($arr[0]); - $query .= '@' . PMA_Util::backquote($arr[1]) . ' '; - } else { - $errors[] = __('The definer must be in the "username@hostname" format'); - } - } - $query .= 'EVENT '; - if (! empty($_REQUEST['item_name'])) { - $query .= PMA_Util::backquote($_REQUEST['item_name']) . ' '; - } else { - $errors[] = __('You must provide an event name'); - } - $query .= 'ON SCHEDULE '; - if (! empty($_REQUEST['item_type']) - && in_array($_REQUEST['item_type'], $event_type) - ) { - if ($_REQUEST['item_type'] == 'RECURRING') { - if (! empty($_REQUEST['item_interval_value']) - && !empty($_REQUEST['item_interval_field']) - && in_array($_REQUEST['item_interval_field'], $event_interval) - ) { - $query .= 'EVERY ' . intval($_REQUEST['item_interval_value']) . ' '; - $query .= $_REQUEST['item_interval_field'] . ' '; - } else { - $errors[] = __('You must provide a valid interval value for the event.'); - } - if (! empty($_REQUEST['item_starts'])) { - $query .= "STARTS '" - . PMA_Util::sqlAddSlashes($_REQUEST['item_starts']) . "' "; - } - if (! empty($_REQUEST['item_ends'])) { - $query .= "ENDS '" - . PMA_Util::sqlAddSlashes($_REQUEST['item_ends']) . "' "; - } - } else { - if (! empty($_REQUEST['item_execute_at'])) { - $query .= "AT '" - . PMA_Util::sqlAddSlashes($_REQUEST['item_execute_at']) . "' "; - } else { - $errors[] = __('You must provide a valid execution time for the event.'); - } - } - } else { - $errors[] = __('You must provide a valid type for the event.'); - } - $query .= 'ON COMPLETION '; - if (empty($_REQUEST['item_preserve'])) { - $query .= 'NOT '; - } - $query .= 'PRESERVE '; - if (! empty($_REQUEST['item_status'])) { - foreach ($event_status['display'] as $key => $value) { - if ($value == $_REQUEST['item_status']) { - $query .= $event_status['query'][$key] . ' '; - break; - } - } - } - if (! empty($_REQUEST['item_comment'])) { - $query .= "COMMENT '" . PMA_Util::sqlAddslashes( - $_REQUEST['item_comment'] - ) . "' "; - } - $query .= 'DO '; - if (! empty($_REQUEST['item_definition'])) { - $query .= $_REQUEST['item_definition']; - } else { - $errors[] = __('You must provide an event definition.'); - } - - return $query; -} // end PMA_EVN_getQueryFromRequest() - -?> diff --git a/pma12111211/libraries/rte/rte_export.lib.php b/pma12111211/libraries/rte/rte_export.lib.php deleted file mode 100644 index 8fd9a7c4..00000000 --- a/pma12111211/libraries/rte/rte_export.lib.php +++ /dev/null @@ -1,122 +0,0 @@ -' - . htmlspecialchars(trim($export_data)) . ''; - $title = sprintf(PMA_RTE_getWord('export'), $item_name); - if ($GLOBALS['is_ajax_request'] == true) { - $response = PMA_Response::getInstance(); - $response->addJSON('message', $export_data); - $response->addJSON('title', $title); - exit; - } else { - echo "
            \n" - . "$title\n" - . $export_data - . "
            \n"; - } - } else { - $_db = htmlspecialchars(PMA_Util::backquote($db)); - $message = __('Error in processing request:') . ' ' - . sprintf(PMA_RTE_getWord('not_found'), $item_name, $_db); - $response = PMA_message::error($message); - if ($GLOBALS['is_ajax_request'] == true) { - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } else { - $response->display(); - } - } -} // end PMA_RTE_handleExport() - -/** - * If necessary, prepares event information and passes - * it to PMA_RTE_handleExport() for the actual export. - * - * @return void - */ -function PMA_EVN_handleExport() -{ - global $_GET, $db; - - if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) { - $item_name = $_GET['item_name']; - $export_data = $GLOBALS['dbi']->getDefinition($db, 'EVENT', $item_name); - PMA_RTE_handleExport($item_name, $export_data); - } -} // end PMA_EVN_handleExport() - -/** - * If necessary, prepares routine information and passes - * it to PMA_RTE_handleExport() for the actual export. - * - * @return void - */ -function PMA_RTN_handleExport() -{ - global $_GET, $db; - - if ( ! empty($_GET['export_item']) - && ! empty($_GET['item_name']) - && ! empty($_GET['item_type']) - ) { - if ($_GET['item_type'] == 'FUNCTION' || $_GET['item_type'] == 'PROCEDURE') { - $export_data = $GLOBALS['dbi']->getDefinition( - $db, - $_GET['item_type'], - $_GET['item_name'] - ); - PMA_RTE_handleExport($_GET['item_name'], $export_data); - } - } -} // end PMA_RTN_handleExport() - -/** - * If necessary, prepares trigger information and passes - * it to PMA_RTE_handleExport() for the actual export. - * - * @return void - */ -function PMA_TRI_handleExport() -{ - global $_GET, $db, $table; - - if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) { - $item_name = $_GET['item_name']; - $triggers = $GLOBALS['dbi']->getTriggers($db, $table, ''); - $export_data = false; - foreach ($triggers as $trigger) { - if ($trigger['name'] === $item_name) { - $export_data = $trigger['create']; - break; - } - } - PMA_RTE_handleExport($item_name, $export_data); - } -} // end PMA_TRI_handleExport() -?> diff --git a/pma12111211/libraries/rte/rte_footer.lib.php b/pma12111211/libraries/rte/rte_footer.lib.php deleted file mode 100644 index 1ae765e4..00000000 --- a/pma12111211/libraries/rte/rte_footer.lib.php +++ /dev/null @@ -1,127 +0,0 @@ -\n"; - $retval .= "
            \n"; - $retval .= "" . _pgettext('Create new procedure', 'New') . "\n"; - $retval .= " \n"; - $retval .= "
            \n"; - $retval .= "\n\n"; - - return $retval; -} // end PMA_RTE_getFooterLinks() - -/** - * Creates a fieldset for adding a new routine, if the user has the privileges. - * - * @return string HTML code with containing the fotter fieldset - */ -function PMA_RTN_getFooterLinks() -{ - return PMA_RTE_getFooterLinks('CREATE_PROCEDURE', 'CREATE ROUTINE', 'ROUTINE'); -}// end PMA_RTN_getFooterLinks() - -/** - * Creates a fieldset for adding a new trigger, if the user has the privileges. - * - * @return string HTML code with containing the fotter fieldset - */ -function PMA_TRI_getFooterLinks() -{ - return PMA_RTE_getFooterLinks('CREATE_TRIGGER', 'TRIGGER', 'TRIGGER'); -} // end PMA_TRI_getFooterLinks() - -/** - * Creates a fieldset for adding a new event, if the user has the privileges. - * - * @return string HTML code with containing the fotter fieldset - */ -function PMA_EVN_getFooterLinks() -{ - global $db, $url_query; - - /** - * For events, we show the usual 'Add event' form and also - * a form for toggling the state of the event scheduler - */ - // Init options for the event scheduler toggle functionality - $es_state = $GLOBALS['dbi']->fetchValue( - "SHOW GLOBAL VARIABLES LIKE 'event_scheduler'", - 0, - 1 - ); - $es_state = strtolower($es_state); - $options = array( - 0 => array( - 'label' => __('OFF'), - 'value' => "SET GLOBAL event_scheduler=\"OFF\"", - 'selected' => ($es_state != 'on') - ), - 1 => array( - 'label' => __('ON'), - 'value' => "SET GLOBAL event_scheduler=\"ON\"", - 'selected' => ($es_state == 'on') - ) - ); - // Generate output - $retval = "\n"; - $retval .= "
            \n"; - // show the usual footer - $retval .= PMA_RTE_getFooterLinks('CREATE_EVENT', 'EVENT', 'EVENT'); - $retval .= "
            \n"; - $retval .= " \n"; - $retval .= " " . __('Event scheduler status') . "\n"; - $retval .= " \n"; - $retval .= "
            \n"; - // show the toggle button - $retval .= PMA_Util::toggleButton( - "sql.php?$url_query&goto=db_events.php" . urlencode("?db=$db"), - 'sql_query', - $options, - 'PMA_slidingMessage(data.sql_query);' - ); - $retval .= "
            \n"; - $retval .= "
            \n"; - $retval .= "
            \n"; - $retval .= "
            "; - $retval .= "\n"; - - return $retval; -} // end PMA_EVN_getFooterLinks() - -?> diff --git a/pma12111211/libraries/rte/rte_list.lib.php b/pma12111211/libraries/rte/rte_list.lib.php deleted file mode 100644 index c7b954d6..00000000 --- a/pma12111211/libraries/rte/rte_list.lib.php +++ /dev/null @@ -1,386 +0,0 @@ -\n"; - $retval .= "
            \n"; - $retval .= " \n"; - $retval .= " " . PMA_RTE_getWord('title') . "\n"; - $retval .= " " . PMA_Util::showMySQLDocu(PMA_RTE_getWord('docu')) . "\n"; - $retval .= " \n"; - $retval .= "
            \n"; - $retval .= " " . PMA_RTE_getWord('nothing') . "\n"; - $retval .= "
            \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - // th cells with a colspan need corresponding td cells, according to W3C - switch ($type) { - case 'routine': - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; // see comment above - for ($i = 0; $i < 7; $i++) { - $retval .= " \n"; - } - break; - case 'trigger': - $retval .= " \n"; - if (empty($table)) { - $retval .= " \n"; - } - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; // see comment above - for ($i = 0; $i < (empty($table) ? 7 : 6); $i++) { - $retval .= " \n"; - } - break; - case 'event': - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; // see comment above - for ($i = 0; $i < 6; $i++) { - $retval .= " \n"; - } - break; - default: - break; - } - $retval .= " \n"; - $retval .= " \n"; - $ct = 0; - foreach ($items as $item) { - $rowclass = ($ct % 2 == 0) ? 'odd' : 'even'; - if ($GLOBALS['is_ajax_request'] && empty($_REQUEST['ajax_page_request'])) { - $rowclass .= ' ajaxInsert hide'; - } - // Get each row from the correct function - switch ($type) { - case 'routine': - $retval .= PMA_RTN_getRowForList($item, $rowclass); - break; - case 'trigger': - $retval .= PMA_TRI_getRowForList($item, $rowclass); - break; - case 'event': - $retval .= PMA_EVN_getRowForList($item, $rowclass); - break; - default: - break; - } - $ct++; - } - $retval .= "
            " . __('Name') . "" . __('Action') . "" . __('Type') . "" . __('Returns') . "
            " . __('Name') . "" . __('Table') . "" . __('Action') . "" . __('Time') . "" . __('Event') . "
            " . __('Name') . "" . __('Status') . "" . __('Action') . "" . __('Type') . "
            \n"; - $retval .= "
            \n"; - $retval .= "\n"; - - return $retval; -} // end PMA_RTE_getList() - -/** - * Creates the contents for a row in the list of routines - * - * @param array $routine An array of routine data - * @param string $rowclass Empty or one of ['even'|'odd'] - * - * @return string HTML code of a row for the list of routines - */ -function PMA_RTN_getRowForList($routine, $rowclass = '') -{ - global $ajax_class, $url_query, $db, $titles; - - $sql_drop = sprintf( - 'DROP %s IF EXISTS %s', - $routine['ROUTINE_TYPE'], - PMA_Util::backquote($routine['SPECIFIC_NAME']) - ); - $type_link = "item_type={$routine['ROUTINE_TYPE']}"; - - $retval = "
            \n"; - $retval .= " " - . htmlspecialchars($sql_drop) . "\n"; - $retval .= " \n"; - $retval .= " " - . htmlspecialchars($routine['SPECIFIC_NAME']) . "\n"; - $retval .= " \n"; - $retval .= " \n"; - if ($routine['ROUTINE_DEFINITION'] !== null - && PMA_Util::currentUserHasPrivilege('ALTER ROUTINE', $db) - && PMA_Util::currentUserHasPrivilege('CREATE ROUTINE', $db) - ) { - $retval .= ' ' . $titles['Edit'] . "\n"; - } else { - $retval .= " {$titles['NoEdit']}\n"; - } - $retval .= " \n"; - - // There is a problem with PMA_Util::currentUserHasPrivilege(): - // it does not detect all kinds of privileges, for example - // a direct privilege on a specific routine. So, at this point, - // we show the Execute link, hoping that the user has the correct rights. - // Also, information_schema might be hiding the ROUTINE_DEFINITION - // but a routine with no input parameters can be nonetheless executed. - - // Check if he routine has any input parameters. If it does, - // we will show a dialog to get values for these parameters, - // otherwise we can execute it directly. - $routine_details = PMA_RTN_getDataFromName( - $routine['SPECIFIC_NAME'], - $routine['ROUTINE_TYPE'], - false - ); - if ($routine !== false) { - $execute_action = 'execute_routine'; - for ($i=0; $i<$routine_details['item_num_params']; $i++) { - if ($routine_details['item_type'] == 'PROCEDURE' - && $routine_details['item_param_dir'][$i] == 'OUT' - ) { - continue; - } - $execute_action = 'execute_dialog'; - break; - } - $retval .= ' ' . $titles['Execute'] . "\n"; - } - - $retval .= " \n"; - $retval .= ' ' . $titles['Export'] . "\n"; - $retval .= " \n"; - if (PMA_Util::currentUserHasPrivilege('ALTER ROUTINE', $db)) { - $retval .= ' ' . $titles['Drop'] . "\n"; - } else { - $retval .= " {$titles['NoDrop']}\n"; - } - $retval .= " \n"; - $retval .= " {$routine['ROUTINE_TYPE']}\n"; - $retval .= " \n"; - $retval .= " " - . htmlspecialchars($routine['DTD_IDENTIFIER']) . "\n"; - $retval .= "
            \n"; - $retval .= " " - . htmlspecialchars($trigger['drop']) . "\n"; - $retval .= " \n"; - $retval .= " " . htmlspecialchars($trigger['name']) . "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "" - . urlencode($trigger['table']) . ""; - $retval .= " \n"; - if (PMA_Util::currentUserHasPrivilege('TRIGGER', $db, $table)) { - $retval .= ' ' . $titles['Edit'] . "\n"; - } else { - $retval .= " {$titles['NoEdit']}\n"; - } - $retval .= " \n"; - $retval .= ' ' . $titles['Export'] . "\n"; - $retval .= " \n"; - if (PMA_Util::currentUserHasPrivilege('TRIGGER', $db)) { - $retval .= ' ' . $titles['Drop'] . "\n"; - } else { - $retval .= " {$titles['NoDrop']}\n"; - } - $retval .= " \n"; - $retval .= " {$trigger['action_timing']}\n"; - $retval .= " \n"; - $retval .= " {$trigger['event_manipulation']}\n"; - $retval .= "
            \n"; - $retval .= " " - . htmlspecialchars($sql_drop) . "\n"; - $retval .= " \n"; - $retval .= " " - . htmlspecialchars($event['EVENT_NAME']) . "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " {$event['STATUS']}\n"; - $retval .= " \n"; - if (PMA_Util::currentUserHasPrivilege('EVENT', $db)) { - $retval .= ' ' . $titles['Edit'] . "\n"; - } else { - $retval .= " {$titles['NoEdit']}\n"; - } - $retval .= " \n"; - $retval .= ' ' . $titles['Export'] . "\n"; - $retval .= " \n"; - if (PMA_Util::currentUserHasPrivilege('EVENT', $db)) { - $retval .= ' ' . $titles['Drop'] . "\n"; - } else { - $retval .= " {$titles['NoDrop']}\n"; - } - $retval .= " \n"; - $retval .= " {$event['EVENT_TYPE']}\n"; - $retval .= "
            \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " ---\n"; - $retval .= PMA_generateCharsetDropdownBox( - PMA_CSDROPDOWN_CHARSET, - "item_param_opts_text[$index]", - null, - $routine['item_param_opts_text'][$i] - ); - $retval .= " ---\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " {$titles['Drop']}\n"; - $retval .= " \n"; - $retval .= "
            \n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - // parameter handling end - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= "
            " . __('Routine name') . "\n"; - $retval .= " \n"; - if ($GLOBALS['is_ajax_request']) { - $retval .= " \n"; - } else { - $retval .= "\n" - . "
            \n" - . $routine['item_type'] . "\n" - . "
            \n" - . "\n"; - } - $retval .= "
            " . __('Parameters') . "\n"; - // parameter handling start - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= " "; - for ($i=0; $i<$routine['item_num_params']; $i++) { // each parameter - $retval .= PMA_RTN_getParameterRow($routine, $i, $isprocedure_class); - } - $retval .= "
            " - . __('Direction') . "" . __('Name') . "" . __('Type') . "" . __('Length/Values') . "" . __('Options') . " 
            \n"; - $retval .= "
             \n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "
            " . __('Return type') . "
            " . __('Return length/values') . "\n"; - $retval .= "
            \n"; - $retval .= PMA_generateCharsetDropdownBox( - PMA_CSDROPDOWN_CHARSET, - "item_returnopts_text", - null, - $routine['item_returnopts_text'] - ); - $retval .= "\n
            \n"; - $retval .= "
            \n"; - $retval .= "
            ---
            \n"; - $retval .= "
            " . __('Definition') . "
            " . __('Is deterministic') . "
            " . __('Definer') . "\n"; - $retval .= "
            " . __('SQL data access') . "
            " . __('Comment') . "\n"; - $retval .= "\n"; - } - $retval .= "\n\n"; - $retval .= "\n\n"; - - return $retval; -} // end PMA_RTN_getEditorForm() - -/** - * Composes the query necessary to create a routine from an HTTP request. - * - * @return string The CREATE [ROUTINE | PROCEDURE] query. - */ -function PMA_RTN_getQueryFromRequest() -{ - global $_REQUEST, $errors, $param_sqldataaccess, $param_directions, $PMA_Types; - - $_REQUEST['item_type'] = isset($_REQUEST['item_type']) - ? $_REQUEST['item_type'] : ''; - - $query = 'CREATE '; - if (! empty($_REQUEST['item_definer'])) { - if (strpos($_REQUEST['item_definer'], '@') !== false) { - $arr = explode('@', $_REQUEST['item_definer']); - $query .= 'DEFINER=' . PMA_Util::backquote($arr[0]); - $query .= '@' . PMA_Util::backquote($arr[1]) . ' '; - } else { - $errors[] = __('The definer must be in the "username@hostname" format'); - } - } - if ($_REQUEST['item_type'] == 'FUNCTION' - || $_REQUEST['item_type'] == 'PROCEDURE' - ) { - $query .= $_REQUEST['item_type'] . ' '; - } else { - $errors[] = sprintf( - __('Invalid routine type: "%s"'), - htmlspecialchars($_REQUEST['item_type']) - ); - } - if (! empty($_REQUEST['item_name'])) { - $query .= PMA_Util::backquote($_REQUEST['item_name']); - } else { - $errors[] = __('You must provide a routine name'); - } - $params = ''; - $warned_about_dir = false; - $warned_about_name = false; - $warned_about_length = false; - - if ( ! empty($_REQUEST['item_param_name']) - && ! empty($_REQUEST['item_param_type']) - && ! empty($_REQUEST['item_param_length']) - && is_array($_REQUEST['item_param_name']) - && is_array($_REQUEST['item_param_type']) - && is_array($_REQUEST['item_param_length']) - ) { - $item_param_name = $_REQUEST['item_param_name']; - $item_param_type = $_REQUEST['item_param_type']; - $item_param_length = $_REQUEST['item_param_length']; - - for ($i=0; $i < count($item_param_name); $i++) { - if (! empty($item_param_name[$i]) - && ! empty($item_param_type[$i]) - ) { - if ($_REQUEST['item_type'] == 'PROCEDURE' - && ! empty($_REQUEST['item_param_dir'][$i]) - && in_array($_REQUEST['item_param_dir'][$i], $param_directions) - ) { - $params .= $_REQUEST['item_param_dir'][$i] . " " - . PMA_Util::backquote($item_param_name[$i]) - . " " . $item_param_type[$i]; - } else if ($_REQUEST['item_type'] == 'FUNCTION') { - $params .= PMA_Util::backquote($item_param_name[$i]) - . " " . $item_param_type[$i]; - } else if (! $warned_about_dir) { - $warned_about_dir = true; - $errors[] = sprintf( - __('Invalid direction "%s" given for parameter.'), - htmlspecialchars($_REQUEST['item_param_dir'][$i]) - ); - } - if ($item_param_length[$i] != '' - && !preg_match( - '@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|' - . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|' - . 'SERIAL|BOOLEAN)$@i', - $item_param_type[$i] - ) - ) { - $params .= "(" . $item_param_length[$i] . ")"; - } else if ($item_param_length[$i] == '' - && preg_match( - '@^(ENUM|SET|VARCHAR|VARBINARY)$@i', - $item_param_type[$i] - ) - ) { - if (! $warned_about_length) { - $warned_about_length = true; - $errors[] = __( - 'You must provide length/values for routine parameters' - . ' of type ENUM, SET, VARCHAR and VARBINARY.' - ); - } - } - if (! empty($_REQUEST['item_param_opts_text'][$i])) { - if ($PMA_Types->getTypeClass($item_param_type[$i]) == 'CHAR') { - $params .= ' CHARSET ' - . strtolower($_REQUEST['item_param_opts_text'][$i]); - } - } - if (! empty($_REQUEST['item_param_opts_num'][$i])) { - if ($PMA_Types->getTypeClass($item_param_type[$i]) == 'NUMBER') { - $params .= ' ' - . strtoupper($_REQUEST['item_param_opts_num'][$i]); - } - } - if ($i != (count($item_param_name) - 1)) { - $params .= ", "; - } - } else if (! $warned_about_name) { - $warned_about_name = true; - $errors[] = __( - 'You must provide a name and a type for each routine parameter.' - ); - break; - } - } - } - $query .= "(" . $params . ") "; - if ($_REQUEST['item_type'] == 'FUNCTION') { - $item_returntype = isset($_REQUEST['item_returntype']) - ? $_REQUEST['item_returntype'] - : null; - - if (! empty($item_returntype) - && in_array( - $item_returntype, PMA_Util::getSupportedDatatypes() - ) - ) { - $query .= "RETURNS " . $item_returntype; - } else { - $errors[] = __('You must provide a valid return type for the routine.'); - } - if (! empty($_REQUEST['item_returnlength']) - && !preg_match( - '@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|' - . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|SERIAL|BOOLEAN)$@i', - $item_returntype - ) - ) { - $query .= "(" . $_REQUEST['item_returnlength'] . ")"; - } else if (empty($_REQUEST['item_returnlength']) - && preg_match( - '@^(ENUM|SET|VARCHAR|VARBINARY)$@i', $item_returntype - ) - ) { - if (! $warned_about_length) { - $warned_about_length = true; - $errors[] = __( - 'You must provide length/values for routine parameters' - . ' of type ENUM, SET, VARCHAR and VARBINARY.' - ); - } - } - if (! empty($_REQUEST['item_returnopts_text'])) { - if ($PMA_Types->getTypeClass($item_returntype) == 'CHAR') { - $query .= ' CHARSET ' - . strtolower($_REQUEST['item_returnopts_text']); - } - } - if (! empty($_REQUEST['item_returnopts_num'])) { - if ($PMA_Types->getTypeClass($item_returntype) == 'NUMBER') { - $query .= ' ' . strtoupper($_REQUEST['item_returnopts_num']); - } - } - $query .= ' '; - } - if (! empty($_REQUEST['item_comment'])) { - $query .= "COMMENT '" . PMA_Util::sqlAddslashes($_REQUEST['item_comment']) - . "' "; - } - if (isset($_REQUEST['item_isdeterministic'])) { - $query .= 'DETERMINISTIC '; - } else { - $query .= 'NOT DETERMINISTIC '; - } - if (! empty($_REQUEST['item_sqldataaccess']) - && in_array($_REQUEST['item_sqldataaccess'], $param_sqldataaccess) - ) { - $query .= $_REQUEST['item_sqldataaccess'] . ' '; - } - if (! empty($_REQUEST['item_securitytype'])) { - if ($_REQUEST['item_securitytype'] == 'DEFINER' - || $_REQUEST['item_securitytype'] == 'INVOKER' - ) { - $query .= 'SQL SECURITY ' . $_REQUEST['item_securitytype'] . ' '; - } - } - if (! empty($_REQUEST['item_definition'])) { - $query .= $_REQUEST['item_definition']; - } else { - $errors[] = __('You must provide a routine definition.'); - } - - return $query; -} // end PMA_RTN_getQueryFromRequest() - -/** - * Handles requests for executing a routine - * - * @return void - */ -function PMA_RTN_handleExecute() -{ - global $_GET, $_POST, $_REQUEST, $GLOBALS, $db; - - /** - * Handle all user requests other than the default of listing routines - */ - if (! empty($_REQUEST['execute_routine']) && ! empty($_REQUEST['item_name'])) { - // Build the queries - $routine = PMA_RTN_getDataFromName( - $_REQUEST['item_name'], $_REQUEST['item_type'], false - ); - if ($routine !== false) { - $queries = array(); - $end_query = array(); - $args = array(); - $all_functions = $GLOBALS['PMA_Types']->getAllFunctions(); - for ($i=0; $i<$routine['item_num_params']; $i++) { - if (isset($_REQUEST['params'][$routine['item_param_name'][$i]])) { - $value = $_REQUEST['params'][$routine['item_param_name'][$i]]; - if (is_array($value)) { // is SET type - $value = implode(',', $value); - } - $value = PMA_Util::sqlAddSlashes($value); - if (! empty($_REQUEST['funcs'][$routine['item_param_name'][$i]]) - && in_array( - $_REQUEST['funcs'][$routine['item_param_name'][$i]], - $all_functions - ) - ) { - $queries[] = "SET @p$i=" - . $_REQUEST['funcs'][$routine['item_param_name'][$i]] - . "('$value');\n"; - } else { - $queries[] = "SET @p$i='$value';\n"; - } - $args[] = "@p$i"; - } else { - $args[] = "@p$i"; - } - if ($routine['item_type'] == 'PROCEDURE') { - if ($routine['item_param_dir'][$i] == 'OUT' - || $routine['item_param_dir'][$i] == 'INOUT' - ) { - $end_query[] = "@p$i AS " - . PMA_Util::backquote($routine['item_param_name'][$i]); - } - } - } - if ($routine['item_type'] == 'PROCEDURE') { - $queries[] = "CALL " . PMA_Util::backquote($routine['item_name']) - . "(" . implode(', ', $args) . ");\n"; - if (count($end_query)) { - $queries[] = "SELECT " . implode(', ', $end_query) . ";\n"; - } - } else { - $queries[] = "SELECT " . PMA_Util::backquote($routine['item_name']) - . "(" . implode(', ', $args) . ") " - . "AS " . PMA_Util::backquote($routine['item_name']) - . ";\n"; - } - - // Get all the queries as one SQL statement - $multiple_query = implode("", $queries); - - $outcome = true; - $affected = 0; - - // Execute query - if (! $GLOBALS['dbi']->tryMultiQuery($multiple_query)) { - $outcome = false; - } - - // Generate output - if ($outcome) { - - // Pass the SQL queries through the "pretty printer" - $output = PMA_Util::formatSql(implode($queries, "\n")); - - // Display results - $output .= "
            "; - $output .= sprintf( - __('Execution results of routine %s'), - PMA_Util::backquote(htmlspecialchars($routine['item_name'])) - ); - $output .= ""; - - $num_of_rusults_set_to_display = 0; - - do { - - $result = $GLOBALS['dbi']->storeResult(); - $num_rows = $GLOBALS['dbi']->numRows($result); - - if (($result !== false) && ($num_rows > 0)) { - - $output .= ""; - foreach ($GLOBALS['dbi']->getFieldsMeta($result) - as $key => $field) { - $output .= ""; - } - $output .= ""; - - $color_class = 'odd'; - - while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { - $output .= ""; - foreach ($row as $key => $value) { - if ($value === null) { - $value = 'NULL'; - } else { - $value = htmlspecialchars($value); - } - $output .= ""; - } - $output .= ""; - $color_class = ($color_class == 'odd') ? 'even' : 'odd'; - } - - $output .= "
            "; - $output .= htmlspecialchars($field->name); - $output .= "
            " - . $value . "
            "; - $num_of_rusults_set_to_display++; - $affected = $num_rows; - - } - - if (! $GLOBALS['dbi']->moreResults()) { - break; - } - - $output .= "
            "; - - $GLOBALS['dbi']->freeResult($result); - - } while ($GLOBALS['dbi']->nextResult()); - - $output .= "
            "; - - $message = __('Your SQL query has been executed successfully'); - if ($routine['item_type'] == 'PROCEDURE') { - $message .= '
            '; - - // TODO : message need to be modified according to the - // output from the routine - $message .= sprintf( - _ngettext( - '%d row affected by the last statement inside the procedure', - '%d rows affected by the last statement inside the procedure', - $affected - ), - $affected - ); - } - $message = PMA_message::success($message); - - if ($num_of_rusults_set_to_display == 0) { - $notice = __( - 'MySQL returned an empty result set (i.e. zero rows).' - ); - $output .= PMA_message::notice($notice)->getDisplay(); - } - - } else { - $output = ''; - $message = PMA_message::error( - sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($multiple_query) - ) - . '

            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null) - ); - } - - // Print/send output - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->isSuccess($message->isSuccess()); - $response->addJSON('message', $message->getDisplay() . $output); - $response->addJSON('dialog', false); - exit; - } else { - echo $message->getDisplay() . $output; - if ($message->isError()) { - // At least one query has failed, so shouldn't - // execute any more queries, so we quit. - exit; - } - unset($_POST); - // Now deliberately fall through to displaying the routines list - } - } else { - $message = __('Error in processing request:') . ' '; - $message .= sprintf( - PMA_RTE_getWord('not_found'), - htmlspecialchars(PMA_Util::backquote($_REQUEST['item_name'])), - htmlspecialchars(PMA_Util::backquote($db)) - ); - $message = PMA_message::error($message); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } else { - echo $message->getDisplay(); - unset($_POST); - } - } - } else if (! empty($_GET['execute_dialog']) && ! empty($_GET['item_name'])) { - /** - * Display the execute form for a routine. - */ - $routine = PMA_RTN_getDataFromName( - $_GET['item_name'], $_GET['item_type'], true - ); - if ($routine !== false) { - $form = PMA_RTN_getExecuteForm($routine); - if ($GLOBALS['is_ajax_request'] == true) { - $title = __("Execute routine") . " " . PMA_Util::backquote( - htmlentities($_GET['item_name'], ENT_QUOTES) - ); - $response = PMA_Response::getInstance(); - $response->addJSON('message', $form); - $response->addJSON('title', $title); - $response->addJSON('dialog', true); - } else { - echo "\n\n

            " . __("Execute routine") . "

            \n\n"; - echo $form; - } - exit; - } else if (($GLOBALS['is_ajax_request'] == true)) { - $message = __('Error in processing request:') . ' '; - $message .= sprintf( - PMA_RTE_getWord('not_found'), - htmlspecialchars(PMA_Util::backquote($_REQUEST['item_name'])), - htmlspecialchars(PMA_Util::backquote($db)) - ); - $message = PMA_message::error($message); - - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } - } -} - -/** - * Creates the HTML code that shows the routine execution dialog. - * - * @param array $routine Data for the routine returned by - * PMA_RTN_getDataFromName() - * - * @return string HTML code for the routine execution dialog. - */ -function PMA_RTN_getExecuteForm($routine) -{ - global $db, $cfg; - - // Escape special characters - $routine['item_name'] = htmlentities($routine['item_name'], ENT_QUOTES); - for ($i=0; $i<$routine['item_num_params']; $i++) { - $routine['item_param_name'][$i] = htmlentities( - $routine['item_param_name'][$i], - ENT_QUOTES - ); - } - - // Create the output - $retval = ""; - $retval .= "\n\n"; - $retval .= "
            \n"; - $retval .= "\n"; - $retval .= "\n"; - } - $retval .= "\n"; - $retval .= "\n"; - $retval .= "\n"; - if ($cfg['ShowFunctionFields']) { - $retval .= "\n"; - } - $retval .= "\n"; - $retval .= "\n"; - // Get a list of data types that are not yet supported. - $no_support_types = PMA_Util::unsupportedDatatypes(); - for ($i=0; $i<$routine['item_num_params']; $i++) { // Each parameter - if ($routine['item_type'] == 'PROCEDURE' - && $routine['item_param_dir'][$i] == 'OUT' - ) { - continue; - } - $rowclass = ($i % 2 == 0) ? 'even' : 'odd'; - $retval .= "\n\n"; - $retval .= "\n"; - $retval .= "\n"; - if ($cfg['ShowFunctionFields']) { - $retval .= "\n"; - } - // Append a class to date/time fields so that - // jQuery can attach a datepicker to them - $class = ''; - if ($routine['item_param_type'][$i] == 'DATETIME' - || $routine['item_param_type'][$i] == 'TIMESTAMP' - ) { - $class = 'datetimefield'; - } else if ($routine['item_param_type'][$i] == 'DATE') { - $class = 'datefield'; - } - $retval .= "\n"; - $retval .= "\n"; - } - $retval .= "\n
            " . __('Name') . "" . __('Type') . "" . __('Function') . "" . __('Value') . "
            {$routine['item_param_name'][$i]}{$routine['item_param_type'][$i]}\n"; - if (stristr($routine['item_param_type'][$i], 'enum') - || stristr($routine['item_param_type'][$i], 'set') - || in_array( - strtolower($routine['item_param_type'][$i]), $no_support_types - ) - ) { - $retval .= "--\n"; - } else { - $field = array( - 'True_Type' => strtolower($routine['item_param_type'][$i]), - 'Type' => '', - 'Key' => '', - 'Field' => '', - 'Default' => '', - 'first_timestamp' => false - ); - $retval .= ""; - } - $retval .= "\n"; - if (in_array($routine['item_param_type'][$i], array('ENUM', 'SET'))) { - $tokens = PMA_SQP_parse($routine['item_param_length'][$i]); - if ($routine['item_param_type'][$i] == 'ENUM') { - $input_type = 'radio'; - } else { - $input_type = 'checkbox'; - } - for ($j=0; $j<$tokens['len']; $j++) { - if ($tokens[$j]['type'] != 'punct_listsep') { - $tokens[$j]['data'] = htmlentities( - PMA_Util::unquote($tokens[$j]['data']), - ENT_QUOTES - ); - $retval .= "" - . $tokens[$j]['data'] . "
            \n"; - } - } - } else if (in_array( - strtolower($routine['item_param_type'][$i]), $no_support_types - )) { - $retval .= "\n"; - } else { - $retval .= "\n"; - } - $retval .= "
            \n"; - if ($GLOBALS['is_ajax_request'] != true) { - $retval .= "\n\n"; - $retval .= "
            \n"; - $retval .= " \n"; - $retval .= "
            \n"; - } else { - $retval .= ""; - $retval .= ""; - } - $retval .= "
            \n\n"; - $retval .= "\n\n"; - - return $retval; -} // end PMA_RTN_getExecuteForm() - -?> diff --git a/pma12111211/libraries/rte/rte_triggers.lib.php b/pma12111211/libraries/rte/rte_triggers.lib.php deleted file mode 100644 index e8157a41..00000000 --- a/pma12111211/libraries/rte/rte_triggers.lib.php +++ /dev/null @@ -1,486 +0,0 @@ -getTriggers($db, $table); - echo PMA_RTE_getList('trigger', $items); - /** - * Display a link for adding a new trigger, - * if the user has the necessary privileges - */ - echo PMA_TRI_getFooterLinks(); -} // end PMA_TRI_main() - -/** - * Handles editor requests for adding or editing an item - * - * @return void - */ -function PMA_TRI_handleEditor() -{ - global $_REQUEST, $_POST, $errors, $db, $table; - - if (! empty($_REQUEST['editor_process_add']) - || ! empty($_REQUEST['editor_process_edit']) - ) { - $sql_query = ''; - - $item_query = PMA_TRI_getQueryFromRequest(); - - if (! count($errors)) { // set by PMA_RTN_getQueryFromRequest() - // Execute the created query - if (! empty($_REQUEST['editor_process_edit'])) { - // Backup the old trigger, in case something goes wrong - $trigger = PMA_TRI_getDataFromName($_REQUEST['item_original_name']); - $create_item = $trigger['create']; - $drop_item = $trigger['drop'] . ';'; - $result = $GLOBALS['dbi']->tryQuery($drop_item); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($drop_item) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $result = $GLOBALS['dbi']->tryQuery($item_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($item_query) - ) - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - // We dropped the old item, but were unable to create the - // new one. Try to restore the backup query. - $result = $GLOBALS['dbi']->tryQuery($create_item); - if (! $result) { - // OMG, this is really bad! We dropped the query, - // failed to create a new one - // and now even the backup query does not execute! - // This should not happen, but we better handle - // this just in case. - $errors[] = __( - 'Sorry, we failed to restore the dropped trigger.' - ) - . '
            ' - . __('The backed up query was:') - . "\"" . htmlspecialchars($create_item) . "\"" - . '
            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } - } else { - $message = PMA_Message::success( - __('Trigger %1$s has been modified.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $drop_item . $item_query; - } - } - } else { - // 'Add a new item' mode - $result = $GLOBALS['dbi']->tryQuery($item_query); - if (! $result) { - $errors[] = sprintf( - __('The following query has failed: "%s"'), - htmlspecialchars($item_query) - ) - . '

            ' - . __('MySQL said: ') . $GLOBALS['dbi']->getError(null); - } else { - $message = PMA_Message::success( - __('Trigger %1$s has been created.') - ); - $message->addParam( - PMA_Util::backquote($_REQUEST['item_name']) - ); - $sql_query = $item_query; - } - } - } - - if (count($errors)) { - $message = PMA_Message::error(__('One or more errors have occurred while processing your request:')); - $message->addString('
              '); - foreach ($errors as $string) { - $message->addString('
            • ' . $string . '
            • '); - } - $message->addString('
            '); - } - - $output = PMA_Util::getMessage($message, $sql_query); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - if ($message->isSuccess()) { - $items = $GLOBALS['dbi']->getTriggers($db, $table, ''); - $trigger = false; - foreach ($items as $value) { - if ($value['name'] == $_REQUEST['item_name']) { - $trigger = $value; - } - } - $insert = false; - if (empty($table) - || ($trigger !== false && $table == $trigger['table']) - ) { - $insert = true; - $response->addJSON('new_row', PMA_TRI_getRowForList($trigger)); - $response->addJSON( - 'name', - htmlspecialchars( - strtoupper($_REQUEST['item_name']) - ) - ); - } - $response->addJSON('insert', $insert); - $response->addJSON('message', $output); - } else { - $response->addJSON('message', $message); - $response->isSuccess(false); - } - exit; - } - } - - /** - * Display a form used to add/edit a trigger, if necessary - */ - if (count($errors) - || (empty($_REQUEST['editor_process_add']) - && empty($_REQUEST['editor_process_edit']) - && (! empty($_REQUEST['add_item']) - || ! empty($_REQUEST['edit_item']))) // FIXME: this must be simpler than that - ) { - // Get the data for the form (if any) - if (! empty($_REQUEST['add_item'])) { - $title = PMA_RTE_getWord('add'); - $item = PMA_TRI_getDataFromRequest(); - $mode = 'add'; - } else if (! empty($_REQUEST['edit_item'])) { - $title = __("Edit trigger"); - if (! empty($_REQUEST['item_name']) - && empty($_REQUEST['editor_process_edit']) - ) { - $item = PMA_TRI_getDataFromName($_REQUEST['item_name']); - if ($item !== false) { - $item['item_original_name'] = $item['item_name']; - } - } else { - $item = PMA_TRI_getDataFromRequest(); - } - $mode = 'edit'; - } - if ($item !== false) { - // Show form - $editor = PMA_TRI_getEditorForm($mode, $item); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->addJSON('message', $editor); - $response->addJSON('title', $title); - } else { - echo "\n\n

            $title

            \n\n$editor"; - unset($_POST); - } - exit; - } else { - $message = __('Error in processing request:') . ' '; - $message .= sprintf( - PMA_RTE_getWord('not_found'), - htmlspecialchars(PMA_Util::backquote($_REQUEST['item_name'])), - htmlspecialchars(PMA_Util::backquote($db)) - ); - $message = PMA_message::error($message); - if ($GLOBALS['is_ajax_request']) { - $response = PMA_Response::getInstance(); - $response->isSuccess(false); - $response->addJSON('message', $message); - exit; - } else { - $message->display(); - } - } - } -} // end PMA_TRI_handleEditor() - -/** - * This function will generate the values that are required to for the editor - * - * @return array Data necessary to create the editor. - */ -function PMA_TRI_getDataFromRequest() -{ - $retval = array(); - $indices = array('item_name', - 'item_table', - 'item_original_name', - 'item_action_timing', - 'item_event_manipulation', - 'item_definition', - 'item_definer'); - foreach ($indices as $index) { - $retval[$index] = isset($_REQUEST[$index]) ? $_REQUEST[$index] : ''; - } - return $retval; -} // end PMA_TRI_getDataFromRequest() - -/** - * This function will generate the values that are required to complete - * the "Edit trigger" form given the name of a trigger. - * - * @param string $name The name of the trigger. - * - * @return array Data necessary to create the editor. - */ -function PMA_TRI_getDataFromName($name) -{ - global $db, $table, $_REQUEST; - - $temp = array(); - $items = $GLOBALS['dbi']->getTriggers($db, $table, ''); - foreach ($items as $value) { - if ($value['name'] == $name) { - $temp = $value; - } - } - if (empty($temp)) { - return false; - } else { - $retval = array(); - $retval['create'] = $temp['create']; - $retval['drop'] = $temp['drop']; - $retval['item_name'] = $temp['name']; - $retval['item_table'] = $temp['table']; - $retval['item_action_timing'] = $temp['action_timing']; - $retval['item_event_manipulation'] = $temp['event_manipulation']; - $retval['item_definition'] = $temp['definition']; - $retval['item_definer'] = $temp['definer']; - return $retval; - } -} // end PMA_TRI_getDataFromName() - -/** - * Displays a form used to add/edit a trigger - * - * @param string $mode If the editor will be used edit a trigger - * or add a new one: 'edit' or 'add'. - * @param array $item Data for the trigger returned by PMA_TRI_getDataFromRequest() - * or PMA_TRI_getDataFromName() - * - * @return string HTML code for the editor. - */ -function PMA_TRI_getEditorForm($mode, $item) -{ - global $db, $table, $event_manipulations, $action_timings; - - // Escape special characters - $need_escape = array( - 'item_original_name', - 'item_name', - 'item_definition', - 'item_definer' - ); - foreach ($need_escape as $key => $index) { - $item[$index] = htmlentities($item[$index], ENT_QUOTES, 'UTF-8'); - } - $original_data = ''; - if ($mode == 'edit') { - $original_data = "\n"; - } - $query = "SELECT `TABLE_NAME` FROM `INFORMATION_SCHEMA`.`TABLES` "; - $query .= "WHERE `TABLE_SCHEMA`='" . PMA_Util::sqlAddSlashes($db) . "' "; - $query .= "AND `TABLE_TYPE`='BASE TABLE'"; - $tables = $GLOBALS['dbi']->fetchResult($query); - - // Create the output - $retval = ""; - $retval .= "\n\n"; - $retval .= "
            \n"; - $retval .= "\n"; - $retval .= $original_data; - $retval .= PMA_URL_getHiddenInputs($db, $table) . "\n"; - $retval .= "
            \n"; - $retval .= "" . __('Details') . "\n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "\n"; - $retval .= "\n"; - $retval .= " \n"; - $retval .= "
            " . __('Trigger name') . "\n"; - $retval .= " \n"; - $retval .= " \n"; - $retval .= "
            " . _pgettext('Trigger action time', 'Time') . "
            " . __('Event') . "
            " . __('Definition') . "
            " . __('Definer') . "\n"; - $retval .= "\n"; - } - $retval .= "\n\n"; - $retval .= "\n\n"; - - return $retval; -} // end PMA_TRI_getEditorForm() - -/** - * Composes the query necessary to create a trigger from an HTTP request. - * - * @return string The CREATE TRIGGER query. - */ -function PMA_TRI_getQueryFromRequest() -{ - global $_REQUEST, $db, $errors, $action_timings, $event_manipulations; - - $query = 'CREATE '; - if (! empty($_REQUEST['item_definer'])) { - if (strpos($_REQUEST['item_definer'], '@') !== false) { - $arr = explode('@', $_REQUEST['item_definer']); - $query .= 'DEFINER=' . PMA_Util::backquote($arr[0]); - $query .= '@' . PMA_Util::backquote($arr[1]) . ' '; - } else { - $errors[] = __('The definer must be in the "username@hostname" format'); - } - } - $query .= 'TRIGGER '; - if (! empty($_REQUEST['item_name'])) { - $query .= PMA_Util::backquote($_REQUEST['item_name']) . ' '; - } else { - $errors[] = __('You must provide a trigger name'); - } - if (! empty($_REQUEST['item_timing']) - && in_array($_REQUEST['item_timing'], $action_timings) - ) { - $query .= $_REQUEST['item_timing'] . ' '; - } else { - $errors[] = __('You must provide a valid timing for the trigger'); - } - if (! empty($_REQUEST['item_event']) - && in_array($_REQUEST['item_event'], $event_manipulations) - ) { - $query .= $_REQUEST['item_event'] . ' '; - } else { - $errors[] = __('You must provide a valid event for the trigger'); - } - $query .= 'ON '; - if (! empty($_REQUEST['item_table']) - && in_array($_REQUEST['item_table'], $GLOBALS['dbi']->getTables($db)) - ) { - $query .= PMA_Util::backquote($_REQUEST['item_table']); - } else { - $errors[] = __('You must provide a valid table name'); - } - $query .= ' FOR EACH ROW '; - if (! empty($_REQUEST['item_definition'])) { - $query .= $_REQUEST['item_definition']; - } else { - $errors[] = __('You must provide a trigger definition.'); - } - - return $query; -} // end PMA_TRI_getQueryFromRequest() - -?> diff --git a/pma12111211/libraries/rte/rte_words.lib.php b/pma12111211/libraries/rte/rte_words.lib.php deleted file mode 100644 index 85210bfd..00000000 --- a/pma12111211/libraries/rte/rte_words.lib.php +++ /dev/null @@ -1,69 +0,0 @@ - __('Add routine'), - 'docu' => 'STORED_ROUTINES', - 'export' => __('Export of routine %s'), - 'human' => __('routine'), - 'no_create' => __('You do not have the necessary privileges to create a routine'), - 'not_found' => __('No routine with name %1$s found in database %2$s'), - 'nothing' => __('There are no routines to display.'), - 'title' => __('Routines'), - ); - break; - case 'TRI': - $words = array( - 'add' => __('Add trigger'), - 'docu' => 'TRIGGERS', - 'export' => __('Export of trigger %s'), - 'human' => __('trigger'), - 'no_create' => __('You do not have the necessary privileges to create a trigger'), - 'not_found' => __('No trigger with name %1$s found in database %2$s'), - 'nothing' => __('There are no triggers to display.'), - 'title' => __('Triggers'), - ); - break; - case 'EVN': - $words = array( - 'add' => __('Add event'), - 'docu' => 'EVENTS', - 'export' => __('Export of event %s'), - 'human' => __('event'), - 'no_create' => __('You do not have the necessary privileges to create an event'), - 'not_found' => __('No event with name %1$s found in database %2$s'), - 'nothing' => __('There are no events to display.'), - 'title' => __('Events'), - ); - break; - default: - $words = array(); - break; - } - - return isset($words[$index]) ? $words[$index] : ''; -} // end PMA_RTE_getWord() - -?> diff --git a/pma12111211/libraries/sanitizing.lib.php b/pma12111211/libraries/sanitizing.lib.php deleted file mode 100644 index 7e6e84db..00000000 --- a/pma12111211/libraries/sanitizing.lib.php +++ /dev/null @@ -1,191 +0,0 @@ -'; -} - -/** - * Callback function for replacing [doc@anchor] links in bb code. - * - * @param array $found Array of preg matches - * - * @return string Replaced string - */ -function PMA_replaceDocLink($found) -{ - $anchor = $found[1]; - if (strncmp('faq', $anchor, 3) == 0) { - $page = 'faq'; - } else if (strncmp('cfg', $anchor, 3) == 0) { - $page = 'cfg'; - } else { - /* Guess */ - $page = 'setup'; - } - $link = PMA_Util::getDocuLink($page, $anchor); - return ''; -} - -/** - * Sanitizes $message, taking into account our special codes - * for formatting. - * - * If you want to include result in element attribute, you should escape it. - * - * Examples: - * - *

            - * - *
            bar - * - * @param string $message the message - * @param boolean $escape whether to escape html in result - * @param boolean $safe whether string is safe (can keep < and > chars) - * - * @return string the sanitized message - */ -function PMA_sanitize($message, $escape = false, $safe = false) -{ - if (!$safe) { - $message = strtr($message, array('<' => '<', '>' => '>')); - } - - /* Interpret bb code */ - $replace_pairs = array( - '[em]' => '', - '[/em]' => '', - '[strong]' => '', - '[/strong]' => '', - '[code]' => '', - '[/code]' => '', - '[kbd]' => '', - '[/kbd]' => '', - '[br]' => '
            ', - '[/a]' => '', - '[/doc]' => '', - '[sup]' => '', - '[/sup]' => '', - // used in common.inc.php: - '[conferr]' => '