Xnova общие вопросы.

$lang это переменная, а точнее массив который вытягивается из файла языкового.
файлик предварительно должен быть подгружен при помощи функции includeLang('имя_файла'); По умолчанию доступен массив $lang из языкового файла tech.mo остальные нужно вызывать принудительно
Ну или пихать значение переменных $lang['level'] и $lang['requiments'] в файл tech.mo ...
А вообще выложи файлик в котором ковыряешься... может просто дето чёто забыл объявить...
 
вот файлик techtree.php:
Код:
<?php

/**
 * techtree.php
 *
 * @version 1.1
 * @copyright 2008 by Chlorel for XNova
 */

define('INSIDE'  , true);
define('INSTALL' , false);

$ugamela_root_path = './';
include($ugamela_root_path . 'extension.inc');
include($ugamela_root_path . 'common.' . $phpEx);

	$HeadTpl = gettemplate('techtree_head');
	$RowTpl  = gettemplate('techtree_row');
	foreach($lang['tech'] as $Element => $ElementName) {
		$parse            = array();
		$parse['tt_name'] = $ElementName;
		if (!isset($resource[$Element])) {
			$parse['Requirements']  = $lang['Requirements'];
			$page                  .= parsetemplate($HeadTpl, $parse);
		} else {
			if (isset($requeriments[$Element])) {
				$parse['required_list'] = "";
				foreach($requeriments[$Element] as $ResClass => $Level) {
					if       ( isset( $user[$resource[$ResClass]] ) &&
						 $user[$resource[$ResClass]] >= $Level) {
						$parse['required_list'] .= "<font color=\"#00ff00\">";
					} elseif ( isset($planetrow[$resource[$ResClass]] ) &&
						$planetrow[$resource[$ResClass]] >= $Level) {
						$parse['required_list'] .= "<font color=\"#00ff00\">";
					} else {
						$parse['required_list'] .= "<font color=\"#ff0000\">";
					}
					$UserResource = 0; 
if(isset($planetrow[$resource[$ResClass]]) AND $planetrow[$resource[$ResClass]]>0) { 
  $UserResource = '<font color="#00ff00">'.$planetrow[$resource[$ResClass]].'</font>'; 
}elseif(isset($user[$resource[$ResClass]]) AND $user[$resource[$ResClass]]>0) { 
  $UserResource = '<font color="#00ff00">'.$user[$resource[$ResClass]].'</font>'; 
}

$parse['required_list'] .= $lang['tech'][$ResClass] ." (". $lang['level'] ." ". $Level .') Âàø óðîâåíü: '.$UserResource; 
					$parse['required_list'] .= "</font><br>";
				}

				$parse['tt_detail']      = "<a href=\"techdetails.php?techid=". $Element ."\">" .$lang['treeinfo'] ."</a>";
			} else {
				$parse['required_list'] = "";
				$parse['tt_detail']     = "";
			}
			$parse['tt_info']   = $Element;
			$page              .= parsetemplate($RowTpl, $parse);
		}
	}
	$parse['techtree_list'] = $page;

	display(parsetemplate(gettemplate('techtree_body'), $parse), $lang['Tech']);
	

// -----------------------------------------------------------------------------------------------------------
// History version
// - 1.0 mise en conformite code avec skin XNova
// - 1.1 ajout lien pour les details des technos
// - 1.2 suppression du lien details ou il n'est pas necessaire
?>

Добавлено через 18 минут
Все ура добился того, чего хотел. В общем дело обстоит так:
После
Код:
 $UserResource = '<font color="#00ff00">'.$user[$resource[$ResClass]].'</font>'; 
}
заменяя вставляем код
Код:
if($Level == 1001)
	{
		$parse['required_list'] .= 'hello';
	} 
else {$parse['required_list'] .= $lang['tech'][$ResClass] ." (". $lang['level'] ." ". $Level .') Âàø óðîâåíü: '.$UserResource; 
					$parse['required_list'] .= "</font><br>";
				}

				$parse['tt_detail']      = "<a href=\"techdetails.php?techid=". $Element ."\">" .$lang['treeinfo'] ."</a>";}

Добавлено через 36 минут
Но теперь другая беда. В tech.mo пишу:
Код:
//rases
$lang['human'] = "Только для расы людей",
$lang['workers'] = "Только для расы трудовиков",
$lang['reserchers'] = "Только для расы исследователей",
$lang['pirates'] = "Только для расы пиратов",

И оно не воспринимает это. Просто белая страничка. Может быть где-то еще надо прописать?
 
Но теперь другая беда. В tech.mo пишу:
Код:
//rases
$lang['human'] = "Только для расы людей",
$lang['workers'] = "Только для расы трудовиков",
$lang['reserchers'] = "Только для расы исследователей",
$lang['pirates'] = "Только для расы пиратов",
И оно не воспринимает это. Просто белая страничка. Может быть где-то еще надо прописать?
А где ты хочешь чтоб это отображалось? И в каком файле ты инициируешь эти переменные для отображения?
 
А где ты хочешь чтоб это отображалось? И в каком файле ты инициируешь эти переменные для отображения?
Я хочу чтобы в технологиях отображалось. Инициирую в файле techtree.php
 
Я хочу чтобы в технологиях отображалось. Инициирую в файле techtree.php
Гм... я так понимаю ты хочешь замутить общее дерево технологий для всех рас. Я бы делал для каждой расы своё индивидуальное дерево... Для интриги так сказать... К сожалению не видно в каком месте указанного тобой файла инициируются эти переменные, но если делать по твоему, то я бы объявил их по другому....
Во первых сформировал бы массив по другому:
PHP:
$lang['race']['обозначение_расы_1'] = "Только для расы людей",
$lang['race']['обозначение_расы_2'] = "Только для расы трудовиков",
$lang['race']['обозначение_расы_3'] = "Только для расы исследователей",
$lang['race']['обозначение_расы_4'] = "Только для расы пиратов",
обозначение_расы_.... по логике должно соответствовать содержимому поля в таблице users ответственному за расы... То есть если у тебя расы в таблицу пишутся как 1, 2 ,3, ... то массив должен иметь вид:
PHP:
$lang['race']['1'] = "Только для расы людей",
$lang['race']['2'] = "Только для расы трудовиков",
$lang['race']['3'] = "Только для расы исследователей",
$lang['race']['4'] = "Только для расы пиратов",
если запись вида: human, workers...
то и массив должен иметь вид:
PHP:
$lang['race']['human'] = "Только для расы людей",
$lang['race']['workers'] = "Только для расы трудовиков",
$lang['race']['reserchers'] = "Только для расы исследователей",
$lang['race']['pirates'] = "Только для расы пиратов",
Далее в цикл разбора технологии, в нужном месте вставть переменную $lang['race']['метка_расы']
 
Гм... я так понимаю ты хочешь замутить общее дерево технологий для всех рас. Я бы делал для каждой расы своё индивидуальное дерево... Для интриги так сказать... К сожалению не видно в каком месте указанного тобой файла инициируются эти переменные, но если делать по твоему, то я бы объявил их по другому....
Во первых сформировал бы массив по другому:
PHP:
$lang['race']['обозначение_расы_1'] = "Только для расы людей",
$lang['race']['обозначение_расы_2'] = "Только для расы трудовиков",
$lang['race']['обозначение_расы_3'] = "Только для расы исследователей",
$lang['race']['обозначение_расы_4'] = "Только для расы пиратов",
обозначение_расы_.... по логике должно соответствовать содержимому поля в таблице users ответственному за расы... То есть если у тебя расы в таблицу пишутся как 1, 2 ,3, ... то массив должен иметь вид:
PHP:
$lang['race']['1'] = "Только для расы людей",
$lang['race']['2'] = "Только для расы трудовиков",
$lang['race']['3'] = "Только для расы исследователей",
$lang['race']['4'] = "Только для расы пиратов",
если запись вида: human, workers...
то и массив должен иметь вид:
PHP:
$lang['race']['human'] = "Только для расы людей",
$lang['race']['workers'] = "Только для расы трудовиков",
$lang['race']['reserchers'] = "Только для расы исследователей",
$lang['race']['pirates'] = "Только для расы пиратов",
Далее в цикл разбора технологии, в нужном месте вставть переменную $lang['race']['метка_расы']
спасибо конечно за такой развернутый ответ, но я уже сам додумался в чем ошибка) Просто в конце вместо запятой, надо было поставить точку с запятой и все). И все вышло:) и по тексту твоего сообщения. Зачем усложнять делая именно массив, если можно(конечно же это зависит от количества переменных) сделать просто как я написал? А потом в techtree.php только вставить в нужное место $lang['human'] или $lang['workers'].
 
Тю блин... действительно... на синтаксис я внимания и не обратил... каюсь :(
Но массивчик я всё же сделал многоуровневый... Сложного там ничего нет, зато в будущем может пригодиться... да и наглядней как-то.. Но на вкус и цвет, как говориться, товарищей нет... :)
 
Тю блин... действительно... на синтаксис я внимания и не обратил... каюсь :(
Но массивчик я всё же сделал многоуровневый... Сложного там ничего нет, зато в будущем может пригодиться... да и наглядней как-то.. Но на вкус и цвет, как говориться, товарищей нет... :)
Плюс потом перебирать foreach легче.
 
  • Нравится
Реакции: dino
Ну если понадобится разбитие на такой массив, я конечно же сделаю. Но сейчас меня волнует другой вопрос. В floten2.php и в floten3.php
были за комментированы выбор миссии, а точнее обработки их, правда зачем это нужно было, это остается для меня вопросом. Вот вытяжка из кода, про который я говорю:
Код:
// Determinons les type de missions possibles par rapport a la planete cible
	if ($fleetmission == 15) {
		// Gestion des Exp�ditions
		$missiontype = array(15 => $lang['type_mission'][15]);
	} else {
		if ($_POST['planettype'] == "2") {
			if ($_POST['ship209'] >= 1 || $_POST['ship217'] >= 1) {
				$missiontype = array(8 => $lang['type_mission'][8]);
			} else {
				$missiontype = array();
			}
 
Ну если понадобится разбитие на такой массив, я конечно же сделаю.
Потом переделывать будет крайне неудобно... не всегда помнишь где и что на что менял..
Но сейчас меня волнует другой вопрос. В floten2.php и в floten3.php
были за комментированы выбор миссии, а точнее обработки их, правда зачем это нужно было, это остается для меня вопросом.
К сожалению не могу сказать почему этот кусок кода был закоментирован, возможно где то дальше подобную же функцию выполняет другой код... могу просто разъяснить что этот код делает: floten2.php предоставляет игроку на основе выбранного флота и цели перечень возможных миссий...
floten3.php перенимает эстафету у floten2.php и проверяет не сжульничал ли игрок (ту ли миссию выбрал, так ли загрузил флот ресами и т.д.) В случае если данные все корректные, флот благополучно отправляется в полёт...
Так вот, приведеный тобой код выполняет операцию по определению перечня миссий. Если дословно его разобрать то получится следующая конструкция:
PHP:
if ($fleetmission == 15) { //Если миссия == 15(экспедиция)
$missiontype = array(15 => $lang['type_mission'][15]); //то в массив доступных миссий добавляем соответствующую запись "экспедиция"
} else { //иначе
if ($_POST['planettype'] == "2") { //Если выбрана цель "Поле обломков" то
if ($_POST['ship209'] >= 1 || $_POST['ship217'] >= 1) { //если в составе флота есть хоть один переработчик или (тут возможны варианты ибо в XNova0.8 отсутствует корабль 217) мегапереработчик
$missiontype = array(8 => $lang['type_mission'][8]);// то в массив доступных миссий добавляем соответствующую запись "переработать"
} else { //иначе
$missiontype = array(); //очищаем массив доступных миссий
}
 
Назад
Сверху