public static function renderPage($address) { global $MAIN_DIR; $item = tools::getPage($address); $template = file_get_contents('templates/athlas.htm'); // Если это не неведомое, не песочница и не меморизы - обрезаем сцену под коэффициент if (!tools::startswith($address, 'unknown') && !tools::startswith($address, 'common/memories') && $_SESSION['doctor_skills']['text_size']) { $item['scen'] = tools::splice_text($item['scen'], $_SESSION['doctor_skills']['text_size']); } if (!$_SESSION['labels']['memories_passed']) { $_SESSION['labels']['memories_passed'] = array(); } // Если это меморизы, и на этой странице уже были - разрешаем второй раз не читать if (strpos($_SESSION['current_page'], 'memories') && in_array($_SESSION['current_page'], $_SESSION['labels']['memories_passed'])) { $arr = tools::split_text($item['scen']); // print_r($arr); if (count($arr) > 9) { $item['scen'] = join('', array_slice($arr, 0, 5)) . "{3mm}...{3mm}" . join("", array_slice($arr, -4)); } } $out = $template; if (!$item['image']) { $item['image'] = $item['page'] . '.jpg'; } $item['athlas_page'] = ''; $sack = new cStoneSet($_SESSION['sack']); $item['sack_stones'] = $sack->getStonesText(); $heap = new cStoneSet($_SESSION['heap']); $item['heap_stones'] = $heap->getStonesText(); $patient = $_SESSION['patient']; if ($item['todos']) { $item['todos'] = "<img src='../images/question.png' class=img_question>" . $item['todos']; } foreach ($item as $key => $value) { $out = str_replace("{" . $key . "}", $value, $out); } $out = tools::replace_hiddens($out); $out = tools::replace_template_conditions($out); $out = tools::replace_page_fog($out); $out = tools::replace_template_conditions($out); // Заменяем hypno_next if (count($_SESSION['labels']['hypno_page_sequence'])) { $out = str_replace('{hypno_next}', 'Иди {page:' . $_SESSION['labels']['hypno_page_sequence'][0] . '}', $out); } else { $out = str_replace('{hypno_next}', '{hypno_end}', $out); } $out = preg_replace('~\\{awake:(.*?)\\}~', 'Перейди {page:unknown/sandbox/random_\\1}', $out); $out = preg_replace('~\\{page:(.*?)\\}~', '<div class=button><a onclick="transfer(\'\\1\');">НА СЛЕДУЮЩУЮ СТРАНИЦУ</a></div>', $out); $repl = file_get_contents($MAIN_DIR . "replacements.py"); $repl = substr($repl, strpos($repl, '{')); $repl = json_decode($repl, 1); foreach ($repl as $key => $value) { $out = str_replace("{" . $key . "}", $value, $out); } // die("<pre>".$out."</pre>"); return $out; }
} preg_match('!' . $_REQUEST['page'] . '\\s*~\\s*(.*?)\\s*~!', $page['transfer_codes'], $m); if ($m[1]) { eval($m[1] . ';'); } } if ($requested_page) { // Определяем новый адрес $new_address = explode('/', $data[0]); $new_address = array_pad($new_address, -3, ''); for ($i = 0; $i < 3; $i++) { $address[$i] = $new_address[$i] ? $new_address[$i] : $address[$i]; } $_SESSION['current_page'] = implode('/', $address); $_SESSION['current_page'] = tools::decipher_address($_SESSION['current_page']); $page = tools::getPage($_SESSION['current_page']); } // Берем новую страницу и смотрим, есть ли на ней коды if ($page['code'] && $_SESSION['page_last_code_executed'] != $_SESSION['current_page']) { eval($page['code'] . ';'); } $_SESSION['page_last_code_executed'] = $_SESSION['current_page']; // Если это - очередная страница гипносеквенса, отрезаем от гипносеквенса первый элемент if ($_SESSION['current_page'] == $_SESSION['labels']['hypno_page_sequence'][0]) { $_SESSION['labels']['hypno_page_sequence'] = array_slice($_SESSION['labels']['hypno_page_sequence'], 1); } // Костыль для эксперимента: получение бонуса if (tools::startswith($_SESSION['current_page'], 'common/experiment/death_after')) { # Определяем бонус // $bonus = $bonuses[$_SESSION['patient']['color']][$_SESSION['exp']['drug']]; $penalty_prx = 'Что-то в тебе неуловимо изменилось... <br>';