All pastes #914107 Raw Edit

Mine

public text v1 · immutable
·published 2008-02-22 16:59 UTC
rendered paste body
<?php //building.php

/***
Potrzebna zmienna - 2500 predkosc Ogame.pl
INSERT INTO `ugml_config` ( `config_name` , `config_value` )
VALUES (
'game_speed', '2500' 
);

Kolejka Budowania
//ALTER TABLE `ugml_planets` ADD `b_building_queue` TEXT NULL ;
***/
if($login) //Si se encuentra un usuario, $login es una array
{ //Se identifica la contrase
if($login['urlaubs_modus'] == '1')
{
message($lang['tatil_error'],$lang['tatil1_Error']);
}		
if($login['password'] == md5($_POST['password']))
{
if($login['ban'] == '1')
{
message($lang['ban_error'],$lang['Login_Error']);
}
if($login['active'] == '0')
{
message($lang['active_error'],$lang['Login_Error']);
}

define('INSIDE', true);
$ugamela_root_path = './';
include($ugamela_root_path . 'extension.inc');
include($ugamela_root_path . 'common.'.$phpEx);


if(!check_user()){ header("Location: login.php"); die();}
$speed = 1.0 ;
//
// Esta funcion permite cambiar el planeta actual.
//
include($ugamela_root_path . 'includes/planet_toggle.'.$phpEx);

$planetrow = doquery("SELECT * FROM {{table}} WHERE id={$user['current_planet']}",'planets',true);




$galaxyrow = doquery("SELECT * FROM {{table}} WHERE id_planet={$planetrow['id']}",'galaxy',true);
$dpath = (!$user["dpath"]) ? DEFAULT_SKINPATH : $user["dpath"];
check_field_current($planetrow);

includeLang('tech');
includeLang('buildings');

$_GET["bau"] = intval($_GET["bau"]);



//Funciones
function echo_buildinglist(){
	/*
	  Se imprime una lista de naves y defensa en contruccion
	*/
	global $lang,$user,$planetrow,$pricelist;

	//Array del b_hangar_id
	$b_hangar_id = explode(';',$planetrow['b_hangar_id']);
  
	$a=$b=$c="";
	foreach($b_hangar_id as $n => $array){
		if($array!=''){
			$array = explode(',',$array);
			//calculamos el tiempo
			$time = get_building_time($user,$planetrow,$array[0]);
			$totaltime += $time * $array[1];
			$c .= "$time,";
			$b .= "'{$lang['tech'][$array[0]]}',";
			$a .= "{$array[1]},";
		}
	}

	$parse = $lang;
	$parse['a'] = $a;
	$parse['b'] = $b;
	$parse['c'] = $c;
	$parse['b_hangar_id_plus'] = $planetrow['b_hangar'];

	$parse['pretty_time_b_hangar'] = pretty_time($totaltime-$planetrow['b_hangar']);// //$planetrow['last_update']

	$text .= parsetemplate(gettemplate('buildings_script'), $parse);

	return $text;
}



//kademe dusurtme by sercankd
if(in_array($_GET["destroy"],$reslist['build']) && $planetrow[$resource[$_GET['destroy']]] > 0 and $_GET["destroy"] != 46 and $_GET["destroy"] != 41 and $_GET["destroy"] != 33){
check_field_current($planetrow);
  $costs = get_building_price($user,$planetrow,$_GET["destroy"]);
    $planetrow['metal']-=$costs['metal']*0.25;
    $planetrow['crystal']-=$costs['crystal']*0.25;
    $planetrow['deuterium']-=$costs['deuterium']*0.25;
    $planetrow['points_points']-=($costs['metal']*0.25)+($costs['crystal']*0.25)+($costs['deuterium']*0.25);
    $user['points_builds']-=($costs['metal']*0.25)+($costs['crystal']*0.25)+($costs['deuterium']*0.25);
  doquery("UPDATE {{table}} SET `{$resource[$_GET['destroy']]}`={$resource[$_GET['destroy']]}-1 WHERE id='{$planetrow['id']}'",'planets');
  doquery("UPDATE {{table}} SET metal='{$planetrow['metal']}',crystal='{$planetrow['crystal']}',deuterium='{$planetrow['deuterium']}',points='{$planetrow['points_points']}'WHERE id='{$planetrow['id']}'",'planets');
  doquery("UPDATE {{table}} SET points_builds='{$user['points_builds']}' WHERE `id`=".$user["id"].";","users");
  $planetrow = doquery("SELECT * FROM {{table}} WHERE id={$user['current_planet']}",'planets',true);
}


if($planetrow["b_building_id"] != 0){
    if($planetrow["b_building"] <= time()){
        $planetrow[$resource[$planetrow["b_building_id"]]]++;
        //$cost_metal = floor($pricelist[$planetrow["b_building_id"]]['metal'] * pow($pricelist[$planetrow["b_building_id"]]['factor'],$planetrow[$resource[$planetrow["b_building_id"]]]+1));
        //$cost_crystal = floor($pricelist[$planetrow["b_building_id"]]['crystal'] * pow($pricelist[$planetrow["b_building_id"]]['factor'],$planetrow[$resource[$planetrow["b_building_id"]]]+1));
        doquery("UPDATE {{table}} SET
            `{$resource[$planetrow["b_building_id"]]}`='{$planetrow[$resource[$planetrow["b_building_id"]]]}',
            b_building_id=0
            WHERE id='{$planetrow["id"]}'",'planets');
        $planetrow["b_building_id"] = 0;
    }else{
        $building = true;
    }
}

function echo_buildingqueue(){
	/*
	  Se imprime una lista de naves y defensa en contruccion
	*/
	global $lang,$user,$planetrow,$pricelist;

	//Array del b_hangar_id
	$b_building_id = explode(';',$planetrow['b_building_queue']);
  
	$a=$b=$c="";
	foreach($b_hangar_id as $n => $array){
		if($array!=''){
			$array = explode(',',$array);
			//calculamos el tiempo
			$time = get_building_time($user,$planetrow,$array[0]);
			$totaltime += $time * $array[1];
			$c .= "$time,";
			$b .= "'{$lang['tech'][$array[0]]}',";
			$a .= "{$array[1]},";
		}
	}

	$parse = $lang;
	$parse['a'] = $a;
	$parse['b'] = $b;
	$parse['c'] = $c;
	$parse['b_hangar_id_plus'] = $planetrow['b_hangar'];

	$parse['pretty_time_b_hangar'] = pretty_time($totaltime-$planetrow['b_hangar']);// //$planetrow['last_update']

	$text .= parsetemplate(gettemplate('buildings_script'), $parse);

	return $text;
}


if($user["b_tech_planet"] != 0){//technology...
	/*
	  Hacemos el query para mantenerlo porque se va a utilizar mas adelante para dar la referencia
	  pero en vano es el query, si el planeta es el mismo que el actual :P
	*/
	if($user["b_tech_planet"] != $planetrow["id"]){
		$tech_planetrow = doquery("SELECT * FROM {{table}} WHERE id = '{$user['b_tech_planet']}'","planets",true);
	}
	if($tech_planetrow){$planet = $tech_planetrow;}else{$planet = $planetrow;}
	
	if($planet["b_tech"] <= time() && $planet["b_tech_id"] != 0){
		
		$user[$resource[$planet["b_tech_id"]]]++;
		doquery("UPDATE {{table}} SET
			b_tech_id=0
			WHERE id='{$planet["id"]}'","planets");
		doquery("UPDATE {{table}} SET
			`{$resource[$planet["b_tech_id"]]}`='{$user[$resource[$planet["b_tech_id"]]]}',
			points_tech2=points_tech2+1,
			b_tech_planet=0
			WHERE `id`=".$user["id"].";","users");
		$planet["b_tech_id"] = 0;
		
		if(isset($tech_planetrow)){$tech_planetrow = $planet;}else{$planetrow = $planet;}
		
	}elseif($planet["b_tech_id"] == 0){
		/*
		  Esto es para corregir algunos fallos o un posible problema al cancelar una investigacion
		*/
		doquery("UPDATE {{table}} SET b_tech_planet=0  WHERE id='{$user['id']}'","users");
	}else{ $teching = true;}

}

if ($_GET['mode'] == "tech")
	$_GET['mode'] = "research";

switch ($_GET["mode"]){

case 'fleet':{//------------------------------------------------------------
	//modo POST
	if(isset($_POST['fmenge'])){
		$ally_points=0;
		foreach($_POST['fmenge'] as $a => $b){
			/*
			Lo que se hara a continuacion es totalmente insano y muy loco...
			
			Bueno, se procede a crear una array con la produccion de los
			elementos elegidos, y se comprobara si se tiene el suficiente
			recurso para poder comprarlo
			*/

			$a = intval($a);
			$b = intval($b);

			if($b != 0){
				//se comprueba que este disponible, para evitar hacks
				if(is_tech_available($user,$planetrow,$a)){
					//Se procede a comprobar cuantos recursos requiere esa cantidad de
					//elementos
					//version 1.0
					unset($builds);
					while($b != 0){
						
						$is_buyeable = true;
						$costMetal=0;
						$costCrystal=0;
						$costDeuterium=0;
						$costEnergy=0;
						
						if($pricelist[$a]['metal'] != 0){
							$costMetal = $pricelist[$a]['metal'];
							if($costMetal > $planetrow["metal"]){ $is_buyeable = false;}
						}
						if($pricelist[$a]['crystal'] != 0){
							$costCrystal = $pricelist[$a]['crystal'];
							if($costCrystal > $planetrow["crystal"] && $is_buyeable){ $is_buyeable = false;}
						}
						if($pricelist[$a]['deuterium'] != 0){
							$costDeuterium = $pricelist[$a]['deuterium'];
							if($costDeuterium > $planetrow["deuterium"] && $is_buyeable){$is_buyeable = false;}
						}
						if($pricelist[$a]['energy'] != 0){
							$costEnergy = $pricelist[$a]['energy'];
							if($costEnergy > $planetrow["energy_max"] && $is_buyeable){$is_buyeable = false;}
						}
						if($is_buyeable){
							//Se agrega a una array donde se contiene todo lo que se pudo
							//comprar
							$builds[$a]++;
							$user['points_fleet2']++;
							$ally['ally_points_fleet2']++;
							$planetrow["metal"] -= $costMetal;
							$planetrow["crystal"] -= $costCrystal;
							$planetrow["deuterium"] -= $costDeuterium;
							$points_points = $costMetal+$costCrystal+$costDeuterium;
							$user["points_fleet_old"] += $points_points;
							$ally_fleet_old += $points_points;
							$b--;//un contador menos...
						}else{
							$b=0;//para romper el loop
						}
					}
					//ahora que ya quitamos los recursos, que se actualizan solos ademas!
					//se procede a crear la array de produccion
					if (isset($builds)){
						foreach($builds as $a => $b){
							$planetrow['b_hangar_id'] .= "$a,$b;";
						}
					}
				}
			}
			
		}
		//agregamos los puntos
		doquery("UPDATE {{table}} SET
		points_fleet_old='{$user['points_fleet_old']}',
		points_fleet2={$user['points_fleet2']}
		WHERE id={$user['id']}","users");
		//para alianza
		if($user['ally_id']!=0){
			//agregamos los puntos
			doquery("UPDATE {{table}} SET
			ally_points_fleet_old=ally_points_fleet_old+'{$ally_fleet_old}',
			ally_points_fleet2=ally_points_fleet2+{$user['points_fleet2']}
			WHERE id={$user['ally_id']}","alliance");
		}
	}

	if($planetrow[$resource[21]] == 0){
		message($lang['need_hangar'],"Schiffswerft");
	}

	//luego del post
	//
	//--[Comienza normalmente]----------------------------------------------
	//
	$tabindex = 0;

	foreach($lang['tech'] as $i => $n){//investigacion
		
		if($i > 201&&$i <= 399){
			
			if(!is_tech_available($user,$planetrow,$i)){
				$buildlist .= "</tr>\n";
			}else{
				//Funciona ^_^
				$buildlist .= "<tr><td class=l><a href=infos.{$phpEx}?gid=$i><img border=0 src=\"{$dpath}gebaeude/$i.gif\" align=top width=120 height=120></a></td>";
				//obtenemos el nivel del edificio
				$building_level = $planetrow[$resource[$i]];
				//Muestra el nivel actual de la mina
				//die($user[$resource[$i]]);
					$nivel = ($building_level == 0) ? "" : " (Suan: ".pretty_number($building_level).")";
				//Descripcion
				$buildlist .= "<td class=l><a href=infos.{$phpEx}?gid=$i>$n</a>$nivel<br>{$lang['res']['descriptions'][$i]}<br>\n";
				
				$is_buyeable = is_buyeable($user,$planetrow,$i,false);
				$buildlist .= price($user,$planetrow,$i,false);
				
				/*
				Calculo del tiempo de produccion
				[(Cris+Met)/2500]*[1/(Nivel f.robots+1)]* 0,5^NivelFabrica Nanos. 
				*/
				$time = get_building_time($user,$planetrow,$i);
				//metodo temporal para mostrar el formato tiempo...
				$buildlist .= building_time($time);
				
				$buildlist .= "<td class=k>";
				
				//Muestra la opcion a elegir para construir o ampliar un edificio
				if($is_buyeable){
					$tabindex++;
					$buildlist .= "<input type=text name=fmenge[$i] alt='{$lang['tech'][$i]}' size=9 maxlength=20 value=0 tabindex=$tabindex>";
				}
			}
		}
	}

	if($planetrow['b_hangar_id']!='') $buildinglist .= echo_buildinglist();

	$parse = $lang;
	$parse['buildlist'] = $buildlist;
	$parse['buildinglist'] = $buildinglist;
	//fragmento de template
	$page .= parsetemplate(gettemplate('buildings_fleet'), $parse);

	display($page,$lang['Research']);

}

case 'research':{//---------------------------------------------------------
	/*
	  Investigacion
	  Este codigo es similar en todo este php
	*/

	if(isset($_GET["bau"]) && in_array($_GET["bau"],$reslist['tech'])){
		//if(is_buyable($user,$planetrow,$bau)) error("No se puede investigar esa tecnologia.","Investigar");
		//nueva configuracion :D
		if($planetrow["b_building_id"] == 31 &&
			$game_config['allow_invetigate_while_lab_is_update']!=1)
		{
			message($lang['cant_invetigate_while_lab_is_update'],"Forschungen");
		}
		
		
		
		if(!is_numeric($_GET['bau'])) { die(); }
if(is_tech_available($user,$planetrow,$_GET["bau"]) &&
$user["b_tech_planet"]==0 &&
is_buyable($user,$planetrow,$_GET["bau"]))
		{
		//establecemos que se investiga.
		$planetrow["b_tech_id"] = $_GET["bau"];
		//indicamos el tiempo de investigacion.y establecemos el tiempo de
		//especulacion de cuando termine la investigacion.
		$planetrow["b_tech"] = time()+get_building_time($user,$planetrow,$_GET["bau"]);
		//actualizamos e indicamos donde se esta haciendo la investigacion.
		$user["b_tech_planet"] = $planetrow["id"];
		//ahora se restan los recursos
		$costs = get_building_price($user,$planetrow,$_GET["bau"]);
		//descontamos, solo en vista
		$planetrow['metal']-=$costs['metal'];
		$planetrow['crystal']-=$costs['crystal'];
		$planetrow['deuterium']-=$costs['deuterium'];
		$points_points=$costs['metal']+$costs['crystal']+$costs['deuterium'];
		$planetrow['points']+=$points_points;
		//queries
		doquery("UPDATE {{table}} SET b_tech_id={$planetrow['b_tech_id']},
			b_tech={$planetrow['b_tech']},
			metal={$planetrow['metal']},
			crystal={$planetrow['crystal']},
			deuterium={$planetrow['deuterium']},
			points={$planetrow['points']}
			WHERE id={$planetrow['id']}","planets");
		doquery("UPDATE {{table}} SET
			b_tech_planet={$user['b_tech_planet']},
			points_tech_old=points_tech_old+{$points_points}
			WHERE id={$user['id']}","users");
		if($user['ally_id']!=0){
			//agregamos los puntos
			doquery("UPDATE {{table}} SET
			ally_points_tech_old=ally_points+{$points_points}
			WHERE id={$user['ally_id']}","alliance");
		}
		//listo
		$planet = $planetrow;
		$teching = true;
		}
	}
	elseif(isset($_GET["unbau"]) && in_array($_GET["unbau"], $reslist['tech'])){

	//checheamos la tecnologia...
    if($user["b_tech_planet"] != 0){// && $planetrow["b_tech_id"] == $unbau
		
      if($user["b_tech_planet"] != $planetrow["id"]){
        $tech_planetrow = doquery("SELECT * FROM {{table}} WHERE id = '".$user["b_tech_planet"]."'","planets",true);
      }
      
      if(isset($tech_planetrow)){$planet = $tech_planetrow;}else{$planet = $planetrow;}
      //if($planet["b_tech"] <= time()){
      
      if($planet["b_tech_id"] == $_GET["unbau"]){
        
        $planet["b_tech_id"] = 0;
        $user["b_tech_planet"] = 0;
        
		$costs = get_building_price($user,$planetrow,$_GET["unbau"]);
		//descontamos, solo en vista
		$planet['metal']+=$costs['metal'];
		$planet['crystal']+=$costs['crystal'];
		$planet['deuterium']+=$costs['deuterium'];
		$points_points = $costs['metal']+$costs['crystal']+$costs['deuterium'];
		$planetrow['points']-=$points_points;
        
        //doquery("UPDATE {{table}} SET b_tech_id=0  WHERE `id`=".$planet["id"].";","planets");
        doquery("UPDATE {{table}} SET
			b_tech_id=0,
			metal=".$planet["metal"].",
			crystal=".$planet["crystal"].",
			deuterium=".$planet["deuterium"].",
			points={$planetrow['points']}
			WHERE `id`=".$planet["id"].";","planets");
        doquery("UPDATE {{table}} SET
			b_tech_planet=0,
			points_tech_old=points_tech_old-{$points_points}
			WHERE `id`=".$user["id"].";","users");
		if($user['ally_id']!=0){
			//agregamos los puntos
			doquery("UPDATE {{table}} SET
			ally_points_tech_old=ally_points-{$points_points}
			WHERE id={$user['ally_id']}","alliance");
		}
        
        if(isset($tech_planetrow)){$tech_planetrow = $planet;}else{$planetrow = $planet;}
		//listo :)
		$teching = false;
        
        
        
      }
      //error("$cost_metal/".$planetrow["metal"]." - $cost_crystal/".$planetrow["crystal"]." - $cost_deuterium/".$planetrow["deuterium"]."/","");
      //$time = ((($cost_crystal )+($cost_metal)) / 2500) * (1 / ($planetrow[$resource['14']] + 1)) * pow(0.5,$planetrow[$resource['15']]);
      //metodo temporal para mostrar el formato tiempo...
      //$time = ($time *60*60);
      
    }
  
  }

	//
	//--[Comienza normalmente]----------------------------------------------
	//
	if($planetrow[$resource[31]] == 0){
		message($lang['need_investigationlab'],"Arastirma");
	}

	if($planetrow["b_building_id"] == 31 && $game_config['allow_invetigate_while_lab_is_update']!=1)
	{
		$buildinglist = '<br><br><font color="#ff0000">'.$lang['cant_invetigate_while_lab_is_update'].'</font><br><br>';
	}

	//cargamos la template...
	$template = gettemplate('buildings_research_row');

	foreach($lang['tech'] as $i => $n){//investigacion
		
		if($i > 105&&$i <= 199){
			
			if(!is_tech_available($user,$planetrow,$i)){//:)
				$buildinglist .= "</tr>";
			}else{
				//Funciona ^_^
				$parse = $lang;
				$parse['dpath'] = $dpath;
				$parse['i'] = $i;
				//obtenemos el nivel del edificio
				$building_level = $user[$resource[$i]];
				//Muestra el nivel actual de la mina
				$parse['nivel'] = ($building_level == 0) ? "" : "({$lang['level']} {$building_level})";
				//Descripcion
				$parse['n'] = $n;
				$parse['description'] = $lang['res']['descriptions'][$i];
				//$is_buyeable = is_buyable($user,$planetrow,$i,true);
				$is_buyeable = is_buyeable($user,$planetrow,$i);
				$parse['price'] = price($user,$planetrow,$i);
				$parse['rest_price'] = rest_price($user,$planetrow,$i);
				/*
				Calculo del tiempo de produccion
				[(Cris+Met)/2500]*[1/(Nivel f.robots+1)]* 0,5^NivelFabrica Nanos. 
				*/
				//$time = (($pricelist[$i]['metal'] + $pricelist[$i]['crystal']) / 1000) * (($planetrow[$resource['31']] + 1 ));
				//metodo temporal para mostrar el formato tiempo...
				$time = get_building_time($user,$planetrow,$i);//$time*60*60);
				$parse['time'] = building_time($time);
				
				
				//agregamos el row a la buildinglist
				$buildinglist .= parsetemplate($template, $parse);
				
				/*if($game_config['allow_invetigate_while_lab_is_update']==1){
					
					$lang['cant_invetigate_while_lab_is_update'];
					
					
					
					
				}else*/
				if(!$teching){
					//Muestra la opcion a elegir para construir o ampliar un edificio
					if($user[$resource[$i]] == 0 && $is_buyeable){
						
						if($planetrow["b_building_id"] == 31 &&
							$game_config['allow_invetigate_while_lab_is_update']!=1)
						{
							$buildinglist .= "<font color=#FF0000>Rechercher</font>";
						}else{
							$buildinglist .= "<a href=\"?mode=research&bau=$i\"><font color=#00FF00>Ara</font></a>";
						}
						
					}elseif($is_buyeable){
						
						if($planetrow["b_building_id"] == 31 &&
							$game_config['allow_invetigate_while_lab_is_update']!=1)
						{
							$nplus = $user[$resource[$i]] + 1;
							$buildinglist .= "<font color=#FF0000>Arastirma<br>Kademe $nplus</font>";
						}else{
							$nplus = $user[$resource[$i]] + 1;
							$buildinglist .= "<a href=\"?mode=research&bau=$i\"><font color=#00FF00>Arastirma<br> Kademe $nplus</font></a>";
						}
						
					}elseif($user[$resource[$i]] == 0){
						$buildinglist .= "<font color=#FF0000>Arastirma</font>";
					}else{
						$nplus = $user[$resource[$i]] + 1;
						$buildinglist .= "<font color=#FF0000>Arastirma<br> Kademe $nplus</font>";
					}
				}
				else{
					
					if($planet["b_tech_id"] == $i){
						$parse = $lang;
						if(isset($tech_planetrow)){
							$planet = $tech_planetrow;
							$parse['time'] = $tech_planetrow["b_tech"] - time();
							$parse['name'] = "auf<br>".$tech_planetrow["name"];
							$parse['idcp'] = $tech_planetrow["id"];
							$parse['unbau'] = $tech_planetrow["b_tech_id"];
						}else{
							$planet = $planetrow;
							$parse['time'] = $planetrow["b_tech"] - time();
							$parse['name'] = "";
							$parse['idcp'] = $planetrow["id"];
							$parse['unbau'] = $planetrow["b_tech_id"];
						}
						// Todo loco, este script permite mostrar el tiempo de investigacion seguido
						$buildinglist .= parsetemplate(gettemplate('buildings_research_script'), $parse);
						
					}else{$buildinglist .= "<center>-</center>";}
					
				}
				
			}
			
		}
		
	}

	$parse = $lang;
	$parse['buildinglist'] = $buildinglist;
	//fragmento de template
	$page .= parsetemplate(gettemplate('buildings_research'), $parse);

	display($page,$lang['Research']);
	die();

}

case 'defense':{//----------------------------------------------------------
	//Defensa
	//
	//--[modo POST]-------------------------------------------------------
	//
	if(isset($_POST['fmenge'])){
    $points_points_plus=0;
    foreach($_POST['fmenge'] as $a => $b){
		/*
		  Lo que se hara a continuacion es totalmente insano y muy loco...
		  
		  Bueno, se procede a crear una array con la produccion de los
		  elementos elegidos, y se comprobara si se tiene el suficiente
		  recurso para poder comprarlo
		*/

	$a = intval($a);
	$b = intval($b);

      if($b != 0){

	if ($a == 407 || $a == 408) {
		$b = 1;
	}

        //se comprueba que este disponible, para evitar hacks
        if(is_tech_available($user,$planetrow,$a)){
          //Se procede a comprobar cuantos recursos requiere esa cantidad de
          //elementos
          //version 1.0
          unset($builds);
          while($b != 0){
            
            $is_buyeable = true;
            $costMetal=0;
            $costCrystal=0;
            $costDeuterium=0;
            $costEnergy=0;
            
            if($pricelist[$a]['metal'] != 0){
              $costMetal = $pricelist[$a]['metal'];
              if($costMetal > $planetrow["metal"]){ $is_buyeable = false;}
            }
            if($pricelist[$a]['crystal'] != 0){
              $costCrystal = $pricelist[$a]['crystal'];
              if($costCrystal > $planetrow["crystal"] && $is_buyeable){ $is_buyeable = false;}
            }
            if($pricelist[$a]['deuterium'] != 0){
              $costDeuterium = $pricelist[$a]['deuterium'];
              if($costDeuterium > $planetrow["deuterium"] && $is_buyeable){$is_buyeable = false;}
            }
            if($pricelist[$a]['energy'] != 0){
              $costEnergy = $pricelist[$a]['energy'];
              if($costEnergy > $planetrow["energy_max"] && $is_buyeable){$is_buyeable = false;}
            }
            if($is_buyeable){
              //Se agrega a una array donde se contiene todo lo que se pudo
              //comprar
              $builds[$a]++;
              $planetrow["metal"] -= $costMetal;
              $planetrow["crystal"] -= $costCrystal;
              $planetrow["deuterium"] -= $costDeuterium;
			  $points_points = $costMetal+$costCrystal+$costDeuterium;
			  $points_points_plus .= $points_points;
              $user['points_builds2']+=$points_points;
              $planetrow['points']+=$points_points;
              $b--;//un contador menos...
              if (($a == 407) or ($a == 408)) {
              	$b=0;
              }
            }else{
              $b=0;//para romper el loop
            }
            
          }
          //ahora que ya quitamos los recursos, que se actualizan solos ademas!
          //se procede a crear la array de produccion
          if (isset($builds)){
	          foreach($builds as $a => $b){
	            $planetrow['b_hangar_id'] .= "$a,$b;";
	          }
          }
        }
      }
    }
		//agregamos los puntos
		doquery("UPDATE {{table}} SET
		points_builds2='{$user['points_builds2']}'
		WHERE id={$user['id']}","users");
		//agregamos los puntos
		doquery("UPDATE {{table}} SET
		points='{$planetrow['points']}'
		WHERE id={$planetrow['id']}","planets");
		if($user['ally_id']!=0){
			//agregamos los puntos
			doquery("UPDATE {{table}} SET
			ally_points_builds=ally_points+{$points_points_plus}
			WHERE id={$user['ally_id']}","alliance");
		}
	}

	//
	//--[Modo normal]-------------------------------------------------------
	//
  
	if($planetrow[$resource[21]] == 0){
		message($lang['need_hangar'], "Depo Yetersiz !");
	}else{
		
		$tabindex = 0;
		
		foreach($lang['tech'] as $i => $n){ //Defensa
			if($i > 400&&$i <= 599){
				
				if(!is_tech_available($user,$planetrow,$i)){
					
					$buildinglist .= "</tr>\n";
					
				}

				else{
					//Funciona ^_^
					$buildinglist .= "<tr><td class=l><a href=infos.php?gid=$i><img border='0' src=\"".$dpath."gebaeude/$i.gif\" align='top' width='120' height='120'></a></td>";
					
					//obtenemos la cantidad de unidades que hay en el planeta
					$building_level = $planetrow[$resource[$i]];

					//Muestra la cantidad de unidades que se encuentran en el planeta
					//die($planetrow[$resource[$i]]);
					if ($_GET['mode'] == "research")
						$nivel = ($building_level == 0) ? "" : "(Suan: ".pretty_number($building_level).")";
					else
						$nivel = ($building_level == 0) ? "" : "(Suan: ".pretty_number($building_level).")";

					//Descripcion
					$buildinglist .= "<td class=l><a href=infos.php?gid=$i>$n</a> $nivel<br>{$lang['res']['descriptions'][$i]}<br>";
					
					$is_buyeable = is_buyeable($user,$planetrow,$i,false);
					$buildinglist .= price($user,$planetrow,$i,false);

					/*
					  Calculo del tiempo de produccion
					  [(Cris+Met)/2500]*[1/(Nivel f.robots+1)]* 0,5^NivelFabrica Nanos. 
					*/
					$time = get_building_time($user,$planetrow,$i);
					//metodo temporal para mostrar el formato tiempo...
					$buildinglist .= building_time($time);
					
					$buildinglist .= "<td class=k>";

					//Muestra la opcion a elegir para construir o ampliar un edificio
					if($is_buyeable){
						if (($i==407 && $planetrow['small_protection_shield'] == "1") ||($i==407 && $planetrow['b_hangar_id'] == "407,1;")||(($i==408 && $planetrow['big_protection_shield'] == "1") ||($i==408 && $planetrow['b_hangar_id'] == "408,1;")))
					    	{
						 $tabindex++;
					    	 $is_buyeable = false;
						 $buildinglist .= "<font color=\"red\">Sadece bir tane kalkan kubbesi kurabilirsiniz.</font>";
					    	}
						else{
						$tabindex++;
						$buildinglist .= "<input type=text name=fmenge[$i] alt='{$tech[$i]}' size=9 maxlength=20 value=0 tabindex=$tabindex>";
					 }
					}
				}
				
			}
			
		}
		
		$buildinglist .= '</td></tr>
		<td class=c colspan=2 align=center><input type=submit value="Insa Et">
		</td></tr></table></form></td><td valign="top"></td></tr></table>';
		
		if ($planetrow['b_hangar_id']!='') $buildinglist .= echo_buildinglist();
	}


	$parse = $lang;
	$parse['buildinglist'] = $buildinglist;
	//fragmento de template
	$page .= parsetemplate(gettemplate('buildings_defense'), $parse);

	display($page,$lang['Defense']);
	die();
}

default:{//-----------------------------------------------------------------

/*
  La construccion se controla aqui. Se decide construir, o calcelar la construccion
  tambien se toma y quita los recursos.
*/

			if (!empty($planetrow["unbau"])) {
				$explode = explode(";", $planetrow["unbau"]);

			}
			else
				$explode = array();


if(in_array($_GET["bau"],$reslist['build']) && is_tech_available($user,$planetrow,$_GET["bau"]) && is_buyable($user,$planetrow,@$_GET["bau"])){
if(!is_numeric($_GET['bau'])) { die($lang['attention']); }

	check_field_current($planetrow);
	//hay que arreglar este mensaje de advertencia...
	if($user["b_tech_planet"] != 0 && $_GET["bau"] == 31 && $game_config['allow_invetigate_while_lab_is_update'] != 1){
		message($lang['Cant_build_lab_while_invetigate'],$lang['Build_lab']);
	}
	//comprobamos si hay espacio para construir
	if($planetrow["field_current"] < get_max_field($planetrow) && $planetrow["b_building_id"] == 0){
		/*
		  Especular el tiempo de construccion, se puede establecer una funcion aparte, pero
		  todavia tengo el problema para averiguar el tiempo de construcciones...
		*/
		$planetrow["b_building_id"] = $_GET["bau"];
		//ahora se restan los recursos
		$costs = get_building_price($user,$planetrow,$_GET["bau"]);
		//descontamos, solo en vista
		$planetrow['metal']-=$costs['metal'];
		$planetrow['crystal']-=$costs['crystal'];
		$planetrow['deuterium']-=$costs['deuterium'];
		//error("$cost_metal/".$planetrow["metal"]." - $cost_crystal/".$planetrow["crystal"]." - $cost_deuterium/".$planetrow["deuterium"]."/","");
		$time = ((($costs['crystal']+$costs['metal'])) / $game_config['game_speed']) * (1 / ($planetrow[$resource[14]] + 1)) * pow(0.5,$planetrow[$resource[15]]);
		//Agregamos los puntos.
		$ally_points = $costs['metal']+$costs['crystal']+$costs['deuterium'];
		$points_points = $costs['metal']+$costs['crystal']+$costs['deuterium'];
		$planetrow['points']-=$points_points;
		$planetrow['points'] += $ally_points;
		//$points_points = $costMetal+$costCrystal+$costDeuterium;
		$user["points_builds"] += $points_points;
//		$user["points_points"] += $points_points;
		$ally_points += $points_points;
		//metodo para obtener el formato tiempo...
		$time = ($time *60*60);
//		$builds = 
		
//		foreach($builds as $a => $b){
//			$planetrow['b_building_queue'] .= "$a,$b;";
//			}
		
		$planetrow["b_building"] = time() + floor($time);
		doquery("UPDATE {{table}} SET
			b_building_id='{$planetrow['b_building_id']}',
			b_building='{$planetrow['b_building']}',
			metal='{$planetrow['metal']}',
			crystal='{$planetrow['crystal']}',
			deuterium='{$planetrow['deuterium']}',
			points='{$planetrow['points']}'
			WHERE id='{$planetrow['id']}'","planets");
		//para alianza
		if($user['ally_id']!=0){
			//agregamos los puntos
		doquery("UPDATE {{table}} SET
			ally_points_builds=ally_points+{$ally_points}
			WHERE id={$user['ally_id']}","alliance");
			}
		doquery("UPDATE {{table}} SET
			points_builds='{$user['points_builds']}'
			WHERE 'id'=".$user["id"].";","users");

		if ($_GET["bau"] == 41) {
			$current = intval($planetrow['field_current']+1);
			$max = intval($planetrow['field_max']+1);


			doquery("UPDATE {{table}} SET field_current='".$current."', field_max='".$max."' WHERE id='".$planetrow['id']."';","planets");
		}

		
	}

}
elseif(in_array($_GET["unbau"],$reslist['build']) && ($planetrow['b_building_id'] == $_GET["unbau"] || $_GET["unbau"] == $explode[1])){

	//ahora se restan los recursos
	$costs = get_building_price($user,$planetrow,$_GET["unbau"]);
	//descontamos, solo en vista
	$planetrow['metal']+=$costs['metal'];
	$planetrow['crystal']+=$costs['crystal'];
	$planetrow['deuterium']+=$costs['deuterium'];
	//Quitamos los puntos.
	$planetrow['points']-=$costs['metal']+$costs['crystal']+$costs['deuterium'];



	
	$planetrow['b_building_id'] = 0;
	//$planetrow["b_building"] = time() + floor($time);
	doquery("UPDATE {{table}} SET
		b_building_id='{$planetrow['b_building_id']}',
		metal='{$planetrow['metal']}',
		crystal='{$planetrow['crystal']}',
		deuterium='{$planetrow['deuterium']}',
		unbau='0'
		WHERE id='{$planetrow['id']}'",'planets');



	sleep(1);

	$goto = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];


	header("Location: ".$goto);
	exit();


}
/*
  Peque&ntilde;a comprobacion en el cual se revisa si se esta construyendo algo en el planeta
  Si el tiempo en el row 'b_building_id' es distinto a cero. Este comprueba el tiempo
  de finalizacion de la construccion.
  Con time(); sacamos el tiempo actual y el tiempo en el que termina para la comprobacion.
  Si el time() es mayor. Se actualiza el edificio, y se reestablece cero el 'b_building_id'
  'b_building' no hace falta actualizarlo, porque solo nos basaremos en 'b_building_id'
*/
if($planetrow["b_building_id"] != 0){

	if($planetrow["b_building"] <= time()){
		/*
		  en este lugar se calculan los agregados de cada edificio, por ejemplo.
		  cuanto afecta un edificio a la produccion de recursos, y cuanta energia consume el mismo.
		*/
		$planetrow[$resource[$planetrow["b_building_id"]]]++;
		//$cost_metal = floor($pricelist[$planetrow["b_building_id"]]['metal'] * pow($pricelist[$planetrow["b_building_id"]]['factor'],$planetrow[$resource[$planetrow["b_building_id"]]]+1));
		//$cost_crystal = floor($pricelist[$planetrow["b_building_id"]]['crystal'] * pow($pricelist[$planetrow["b_building_id"]]['factor'],$planetrow[$resource[$planetrow["b_building_id"]]]+1));
		doquery("UPDATE {{table}} SET
			`{$resource[$planetrow["b_building_id"]]}`='{$planetrow[$resource[$planetrow["b_building_id"]]]}',
			b_building_id=0
			WHERE id='{$planetrow["id"]}'",'planets');
			
		$planetrow["b_building_id"] = 0;
		
	}else{
		$building = true;
	}
	
}
elseif (in_array($_GET["destroy"],$reslist['build']) && $planetrow[$resource[$_GET["destroy"]]] > 0 && is_numeric($_GET["destroy"]) && empty($planetrow["b_building_id"]) && empty($planetrow["unbau"]) && $_GET["destroy"] > 1 && $_GET["destroy"] < 100) {
	

	if ($planetrow["unbau"] != 41 && $planetrow["unbau"] != 33) {

		$row = $planetrow;

		$row[$resource[$_GET["destroy"]]]--;

		$time = (time() + round(get_building_time($user,$row,$_GET["destroy"]) / 2));



		doquery("UPDATE {{table}}
			SET
			unbau = '".$time.";".$_GET["destroy"]."'
			WHERE id='{$planetrow["id"]}'
			", 'planets');
			$building = true;
			$newnewnew = true;

	}

	sleep(1);

	$goto = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];


	header("Location: ".$goto);
	exit();
}

if(!empty($planetrow["unbau"])){

	$explode = explode(";", $planetrow["unbau"]);


	if($explode[0] <= time()){

		$planetrow[$resource[$explode[1]]]--;

		if ($planetrow[$resource[$explode[1]]] < 0)
			$planetrow[$resource[$explode[1]]] = 0;




		doquery("UPDATE {{table}} SET
			`{$resource[$explode[1]]}`='{$planetrow[$resource[$explode[1]]]}',
			unbau=0
			WHERE id='{$planetrow["id"]}'",'planets');
			
			$planetrow["b_building_id"] = 0;
		
	}
	else
		$building = true;


		
	
}

$list='';
$row = gettemplate('buildings_builds_row');

foreach($lang['tech'] as $i => $n){

	if($planetrow['planet_type'] != 3 && $i > 0&&$i != 40&&$i != 41&&$i != 42&&$i != 43&&$i < 100){
		
		if(!is_tech_available($user,$planetrow,$i)){

		}
		else{
			$parse = array();
			$parse['dpath'] = $dpath;
			$parse['i'] = $i;
			//obtenemos el nivel del edificio
			$building_level = $planetrow[$resource[$i]];
			//Muestra el nivel actual de la mina
			$parse['nivel'] = ($building_level == 0) ? "" : " ({$lang['level']} $building_level)";
			$parse['n'] = $n;
			$parse['descriptions'] = $lang['res']['descriptions'][$i];
			/*
			  Calculo del tiempo de produccion
			  [(Cris+Met)/2500]*[1/(Nivel f.robots+1)]* 0,5^NivelFabrica Nanos. 
			*/
			$time = get_building_time($user,$planetrow,$i);
			//informacion del precio, etc
			$parse['time'] = building_time($time);
			$parse['price'] = price($user,$planetrow,$i);
			$parse['rest_price'] = rest_price($user,$planetrow,$i);
			//Comprobacion si es posible comprarlo
			$is_buyeable = is_buyeable($user,$planetrow,$i);
			$parse['click'] = '';



			if(!$building){
				if($user["b_tech_planet"] != 0 && $i == 31 && $game_config['allow_invetigate_while_lab_is_update'] != 1){
				//en caso de que sea el laboratorio y se este investigando algo.
					$parse['click'] = "<font color=#FF0000>En trvail</font>";
				//Muestra la opcion a elegir para construir o ampliar un edificio
				}elseif($planetrow[$resource[$i]] == 0 && $planetrow["field_current"] < get_max_field($planetrow)  && $is_buyeable){
					$parse['click'] = "<a href=\"?bau=$i\"><font color=#00FF00>Insa Et</font></a>";
				}elseif($planetrow["field_current"] < get_max_field($planetrow) && $is_buyeable){
					$nplus = $planetrow[$resource[$i]] + 1;
					$parse['click'] = "<a href=\"?bau=$i\"><font color=#00FF00>".str_replace('%n',$nplus,"Insa Et Kademe %n")."</font></a>";
				}elseif($planetrow["field_current"] < get_max_field($planetrow) && !$is_buyeable){
					if($planetrow[$resource[$i]] == 0){
						$parse['click'] = "<font color=#FF0000>Insa Et</font>";
					}else{
						$nplus = $planetrow[$resource[$i]] + 1;
						$parse['click'] = '<font color=#FF0000>'.str_replace('%n',$nplus,"Insa Et Kademe %n").'</font>';
					}
				}else{
					$parse['click'] = "<font color=#FF0000>Gezegende Yer Yok !</font>";
				}
				
			} elseif($planetrow["b_building_id"] == $i || $explode[1] == $i) {
				if (!empty($planetrow["unbau"])) {
					$explode = explode(";", $planetrow["unbau"]);
					$time = $explode[0] - time();
					$t = array();
					$t['time'] = $time;
					$t['building_id'] = $explode[1];
					$t['id'] = $planetrow["id"];

				}
				else {
					$time = $planetrow["b_building"] - time();
					$t = array();
					$t['time'] = $time;
					$t['building_id'] = $planetrow["b_building_id"];
					$t['id'] = $planetrow["id"];
				}
				$parse['click'] = parsetemplate(gettemplate('buildings_builds_script'), $t);
			}
			
			$list .= parsetemplate($row, $parse);
			
		}
	  
	}
	elseif ($planetrow['planet_type'] == 3) {


		if ($i == 14 || $i == 21 || $i == 22 || $i == 23 || $i == 24 || $i == 34 || $i == 41 || $i == 42 || $i == 43) {
			if(!is_tech_available($user,$planetrow,$i)){//:)
				//$list .= '</tr>';
			}
			else {



					$parse = array();
					$parse['dpath'] = $dpath;
					$parse['i'] = $i;
					//obtenemos el nivel del edificio
					$building_level = $planetrow[$resource[$i]];
					//Muestra el nivel actual de la mina
					$parse['nivel'] = ($building_level == 0) ? "" : " ({$lang['level']} $building_level)";
					$parse['n'] = $n;
					$parse['descriptions'] = $lang['res']['descriptions'][$i];
					/*
			 	 	Calculo del tiempo de produccion
			 	 	[(Cris+Met)/2500]*[1/(Nivel f.robots+1)]* 0,5^NivelFabrica Nanos. 
					*/
					$time = get_building_time($user,$planetrow,$i);
					//informacion del precio, etc
					$parse['time'] = building_time($time);
					$parse['price'] = price($user,$planetrow,$i);
					$parse['rest_price'] = rest_price($user,$planetrow,$i);
					//Comprobacion si es posible comprarlo
					$is_buyeable = is_buyeable($user,$planetrow,$i);
					$parse['click'] = '';
	

					if($planetrow["field_current"] >= get_max_field($planetrow)){
						$parse['click'] = "<font color=#FF0000>Gezegen Dolu !</font>";
					}
					elseif (!$is_buyeable && $planetrow[$resource[$i]] == 0) {
						$parse['click'] = "<font color=#FF0000>Insa Et</font>";
			

					}
					elseif ($is_buyeable &&  $planetrow[$resource[$i]] == 0) {
						$parse['click'] = "<a href=\"?bau=$i\"><font color=#00FF00>Insa Et</font></a>";
	
					}
					elseif (!$is_buyeable && $planetrow[$resource[$i]] > 0) {
						$nplus = $planetrow[$resource[$i]] + 1;
						$parse['click'] = '<font color=#FF0000>'.str_replace('%n',$nplus,"Insa Et Kademe %n").'</font>';

					}
					elseif ($is_buyeable && $planetrow[$resource[$i]] > 0) {
						$nplus = $planetrow[$resource[$i]] + 1;
						$parse['click'] = "<a href=\"?bau=$i\"><font color=#00FF00>".str_replace('%n',$nplus,"Insa Et Kademe %n")."</font></a>";

					}
					else
						$parse['click'] = "Hata!";


					if($planetrow["b_building_id"] == $i) {
						/*
				 	 	no lo puedo creer, esta funcionando T_T
						*/
						$time = $planetrow["b_building"] - time();
						$t = array();
						$t['time'] = $time;
						$t['building_id'] = $planetrow["b_building_id"];
						$t['id'] = $planetrow["id"];
						$parse['click'] = parsetemplate(gettemplate('buildings_builds_script'), $t);
					}
					elseif ($building) {
						$parse['click'] = "";

					}

			// }

				$list .= parsetemplate($row, $parse);
			}
			
		}


	}

}

	$parse = $lang;
	$parse['list'] = $list;
	//fragmento de template
	$page .= parsetemplate(gettemplate('buildings_builds'), $parse);

	display($page,$lang['Builds']);

die();
	}

}

// Created by Perberos. All rights reversed (C) 2006
?>