function user_set_empire() { global $db, $user_data, $pub_data; require_once("parameters/lang_empire.php"); $data = $pub_data; $data = str_replace ( "-", "0", $data ); $data = str_replace ( ".", "", $data ); $data = stripcslashes($data); $lines = explode(chr(10), $data); $OK = false; $etape = ""; $planetes_total_row = false; foreach ($lines as $line) { $arr = array(); $line = trim($line); if(preg_match("#Vue\sd'ensemble\sde\svotre\sempire#",$data)) { $OK = 1; } if($OK == 1) { //Recupérations des coordonnées if (preg_match("#^Position\sGSP\s+\[(.*)\]$#", $line, $arr)) { $coordonnees = preg_split("/\]\s+\[/", $arr[1]); //Calcul du nombre de planètes $planetes_total_row = sizeof($coordonnees); //Parsing production $link_ressource = array($lang_ressource["TITANE"] => "TITANE", $lang_ressource["CARBONE"] => "CARBONE", $lang_ressource["TRITIUM"] => "TRITIUM", $lang_ressource["ENERGIE"] => "ENERGIE"); $ressource = array("TITANE" => array_fill(0, $planetes_total_row, 0), "CARBONE" => array_fill(0, $planetes_total_row, 0), "TRITIUM" => array_fill(0, $planetes_total_row, 0), "ENERGIE" => array_fill(0, $planetes_total_row, 0), "ENERGIE" => array_fill(0, $planetes_total_row, 0)); //Parsing batiments $link_building = array($lang_building["TITANE"] => "TITANE", $lang_building["CARBONE"] => "CARBONE", $lang_building["TRITIUM"] => "TRITIUM", $lang_building["CG"] => "CG", $lang_building["CaT"] => "CaT", $lang_building["UDD"] => "UDD", $lang_building["UDA"] => "UDA", $lang_building["UA"] => "UA", $lang_building["S_TITANE"] => "S_TITANE", $lang_building["S_CARBONE"] => "S_CARBONE", $lang_building["S_TRITIUM"] => "S_TRITIUM", $lang_building["CT"] => "CT", $lang_building["Ter"] => "Ter", $lang_building["Silo"] => "Silo"); $buildings = array("TITANE" => array_fill(0, $planetes_total_row, 0), "CARBONE" => array_fill(0, $planetes_total_row, 0), "TRITIUM" => array_fill(0, $planetes_total_row, 0), "CG" => array_fill(0, $planetes_total_row, 0), "CaT" => array_fill(0, $planetes_total_row, 0), "UDD" => array_fill(0, $planetes_total_row, 0), "UDA" => array_fill(0, $planetes_total_row, 0), "UA" => array_fill(0, $planetes_total_row, 0), "S_TITANE" => array_fill(0, $planetes_total_row, 0), "S_CARBONE" => array_fill(0, $planetes_total_row, 0), "S_TRITIUM" => array_fill(0, $planetes_total_row, 0), "CT" => array_fill(0, $planetes_total_row, 0), "Ter" => array_fill(0, $planetes_total_row, 0), "Silo" => array_fill(0, $planetes_total_row, 0)); //Parsing flotte $link_fleet = array($lang_fleet["PT5"] => "PT5", $lang_fleet["PT50"] => "PT50", $lang_fleet["CH"] => "CH", $lang_fleet["CHL"] => "CHL", $lang_fleet["FDA"] => "FDA", $lang_fleet["DES"] => "DES", $lang_fleet["OVE"] => "OVE", $lang_fleet["FN"] => "FN", $lang_fleet["HYP"] => "HYP", $lang_fleet["COL"] => "COL", $lang_fleet["SON"] => "SON", $lang_fleet["COLO"] => "COLO", $lang_fleet["EXT"] => "EXT"); $fleet = array("PT5" => array_fill(0, $planetes_total_row, 0), "PT50" => array_fill(0, $planetes_total_row, 0), "CH" => array_fill(0, $planetes_total_row, 0), "CHL" => array_fill(0, $planetes_total_row, 0), "FDA" => array_fill(0, $planetes_total_row, 0), "DES" => array_fill(0, $planetes_total_row, 0), "OVE" => array_fill(0, $planetes_total_row, 0), "FN" => array_fill(0, $planetes_total_row, 0), "HYP" => array_fill(0, $planetes_total_row, 0), "COL" => array_fill(0, $planetes_total_row, 0), "SON" => array_fill(0, $planetes_total_row, 0), "COLO" => array_fill(0, $planetes_total_row, 0), "EXT" => array_fill(0, $planetes_total_row, 0)); //Parsing divers $link_divers = array($lang_divers["SAT"] => "SAT"); $divers = array("SAT" => array_fill(0, $planetes_total_row, 0)); //Parsing defense $link_defence = array($lang_defence["BFG"] => "BFG", $lang_defence["SBFG"] => "SBFG", $lang_defence["PFC"] => "PFC", $lang_defence["DEF"] => "DEF", $lang_defence["PFI"] => "PFI", $lang_defence["AER"] => "AER", $lang_defence["CDF"] => "CDF", $lang_defence["HOL"] => "HOL", $lang_defence["CME"] => "CME", $lang_defence["MEMP"] => "MEMP"); $defences = array("BFG" => array_fill(0, $planetes_total_row, 0), "SBFG" => array_fill(0, $planetes_total_row, 0), "PFC" => array_fill(0, $planetes_total_row, 0), "DEF" => array_fill(0, $planetes_total_row, 0), "PFI" => array_fill(0, $planetes_total_row, 0), "AER" => array_fill(0, $planetes_total_row, 0), "CDF" => array_fill(0, $planetes_total_row, 0), "HOL" => array_fill(0, $planetes_total_row, 0), "CME" => array_fill(0, $planetes_total_row, 0), "MEMP" => array_fill(0, $planetes_total_row, 0)); //Parsing technologies $link_technology = array($lang_technology["Esp"] => "Esp", $lang_technology["QUA"] => "QUA", $lang_technology["ALLIA"] => "ALLIA", $lang_technology["STRAT"] => "STRAT", $lang_technology["RAFF"] => "RAFF", $lang_technology["ARM"] => "ARM", $lang_technology["BOU"] => "BOU", $lang_technology["BLIND"] => "BLIND", $lang_technology["THERMO"] => "THERMO", $lang_technology["ANTI_MAT"] => "ANTI_MAT", $lang_technology["HYPD"] => "HYPD", $lang_technology["IMPUL"] => "IMPUL", $lang_technology["WARP"] => "WARP", $lang_technology["SMART"] => "SMART", $lang_technology["ION"] => "ION", $lang_technology["AEREON_T"] => "AEREON_T", $lang_technology["SUP_CALC"] => "SUP_CALC", $lang_technology["GRAVI"] => "GRAVI", $lang_technology["ADMIN"] => "ADMIN", $lang_technology["EXPLOITATION"] => "EXPLOITATION"); $technologies = array("Esp" => 0, "QUA" => 0, "ALLIA" => 0, "STRAT" => 0, "RAFF" => 0, "ARM" => 0, "BOU" => 0, "BLIND" => 0, "THERMO" => 0, "ANTI_MAT" => 0, "HYPD" => 0, "IMPUL" => 0, "WARP" => 0, "SMART" => 0, "ION" => 0, "AEREON_T" => 0, "SUP_CALC" => 0, "GRAVI" => 0, "ADMIN" => 0, "EXPLOITATION" => 0); $cases = array_fill(0, $planetes_total_row, 0); // creation du masque ici $masq = "#^((?:\s?\S+)+)\s+"; for($i=0; $i<($planetes_total_row-1); $i++) { $masq .= "(\d+)(?:|\s\d+|\s\(\d+\))\s+"; } $masq .= "(\d+)(?:\s\d+|\s\(\d+\))*$#"; continue; } if($OK && $planetes_total_row !==false) { if(preg_match("#^Cases\s+\d+\/((?:\d+\s+(?:\d+)\/(?:\d+)\s*){1,".$planetes_total_row."})$#",$line,$arr)) { echo"test"; $cases = preg_split("/\s+\d+\//", $arr[1]); if(sizeof($cases) != $planetes_total_row) return false; continue; } if(preg_match("#^(".$lang_empire["Production"]."|".$lang_empire["Batiment"]."|".$lang_empire["Fleet"]."|".$lang_empire["Divers"]."|".$lang_empire["Défense"].")$#",$line)) { $etape = $line; continue; } if($etape != "" && preg_match($masq, $line, $arr)) { $building = $arr[1]; $levels = array_slice($arr, 2); switch($etape) { case "Bâtiments" : if (isset($link_building[$building])) { if( sizeof($levels) != $planetes_total_row) return false; $buildings[$link_building[$building]] = $levels; } break; case "Recherche" : if (isset($link_technology[$building])) { if( sizeof($levels) != $planetes_total_row) return false; $technologies[$link_technology[$building]] = max($levels); } break; case "Vaisseaux" : if ($building == "Satellite solaire") { if( sizeof($levels) != $planetes_total_row) return false; $satellites = $levels; } break; case "Défense" : if (isset($link_defence[$building])) { if( sizeof($levels) != $planetes_total_row) return false; $defences[$link_defence[$building]] = $levels; } break; default : echo "erreur !!! :("; exit; //redirection("index.php?action=message&id_message=set_empire_failed_data&info"); } continue; } } } } if($OK && $planetes_total_row !== false) { $j=19; for($i=0; $i<$planetes_total_row; $i++) { if($pub_view == "moons") { $request = "select planet_id from ".TABLE_USER_BUILDING." where coordinates = '".$coordonnees[$i]."' and planet_id > 9"; $result = $db->sql_query($request); if ($db->sql_numrows($result) > 0) { list($planete_id) = $db->sql_fetch_row($result); } else { $request = "select planet_id from ".TABLE_USER_BUILDING." where user_id = ".$user_data["user_id"]." and coordinates = '".$coordonnees[$i]."'"; $result = $db->sql_query($request); list($planete_id) = $db->sql_fetch_row($result); if(!$planete_id) { $planete_id = $j; $j++; } else $planete_id += 9; } } else $planete_id = $i+1; if($pub_view == "planets") $case = $cases[$i]-5*$buildings["Ter"][$i]; else $case = 1; $request = "update ".TABLE_USER_BUILDING." set coordinates = '".$coordonnees[$i]."', `fields` = ".$case." , Sat = ".$satellites[$i]; $request .= ", M = ".$buildings["M"][$i].", C = ".$buildings["C"][$i].", D = ".$buildings["D"][$i]; $request .= ", CES = ".$buildings["CES"][$i].", CEF = ".$buildings["CEF"][$i].", UdR = ".$buildings["UdR"][$i]; $request .= ", UdN = ".$buildings["UdN"][$i].", CSp = ".$buildings["CSp"][$i].", HM = ".$buildings["HM"][$i]; $request .= ", HC = ".$buildings["HC"][$i].", HD = ".$buildings["HD"][$i].", Lab = ".$buildings["Lab"][$i]; $request .= ", Ter = ".$buildings["Ter"][$i].", Silo = ".$buildings["Silo"][$i].", BaLu = ".$buildings["BaLu"][$i]; $request .= ", Pha = ".$buildings["Pha"][$i].", PoSa = ".$buildings["PoSa"][$i].($pub_view == 'lunes' ? ', planet_name = \'Lune\'' : ''); $request .= " where user_id = ".$user_data["user_id"]." and planet_id = ".$planete_id; $db->sql_query($request); if ($db->sql_affectedrows() == 0) { $request = "insert ignore into ".TABLE_USER_BUILDING." (user_id, planet_id, planet_name, coordinates, `fields`, temperature, Sat, M, C, D, CES, CEF, UdR, UdN, CSp, HM, HC, HD, Lab, Ter, Silo, BaLu, Pha, PoSa)"; $request .= " values (".$user_data["user_id"].", ".$planete_id.", '".($pub_view == 'moons' ? 'Lune' : 'planete '.$planete_id)."', '".$coordonnees[$i]."', ".$case.", 0, ".$satellites[$i]; $request .= ", ".$buildings["M"][$i].", ".$buildings["C"][$i].", ".$buildings["D"][$i]; $request .= ", ".$buildings["CES"][$i].", ".$buildings["CEF"][$i].", ".$buildings["UdR"][$i]; $request .= ", ".$buildings["UdN"][$i].", ".$buildings["CSp"][$i].", ".$buildings["HM"][$i]; $request .= ", ".$buildings["HC"][$i].", ".$buildings["HD"][$i].", ".$buildings["Lab"][$i]; $request .= ", ".$buildings["Ter"][$i].", ".$buildings["Silo"][$i].", ".$buildings["BaLu"][$i]; $request .= ", ".$buildings["Pha"][$i].", ".$buildings["PoSa"][$i].")"; $db->sql_query($request); } $request = "delete from ".TABLE_USER_DEFENCE." where user_id = ".$user_data["user_id"]." and planet_id= ".$planete_id; $db->sql_query($request); $request = "insert into ".TABLE_USER_DEFENCE." (user_id, planet_id, LM, LLE, LLO, CG, AI, LP, PB, GB, MIC, MIP)"; $request .= " values (".$user_data["user_id"].", ".$planete_id.", ".$defences["LM"][$i].", ".$defences["LLE"][$i].",".$defences["LLO"][$i].", ".$defences["CG"][$i].", ".$defences["AI"][$i].", ".$defences["LP"][$i].", ".$defences["PB"][$i].", ".$defences["GB"][$i].", ".$defences["MIC"][$i].", ".$defences["MIP"][$i].")"; $db->sql_query($request); } if($pub_view=="planets") { $request = "delete from ".TABLE_USER_TECHNOLOGY." where user_id = ".$user_data["user_id"]; $db->sql_query($request); $request = "insert into ".TABLE_USER_TECHNOLOGY." (user_id, esp, Ordi, Armes, Bouclier, Protection, NRJ, Hyp, RC, RI, PH, Laser, Ions, Plasma, RRI, Graviton)"; $request .= " values (".$user_data["user_id"].", ".$technologies["Esp"].", ".$technologies["Ordi"].",".$technologies["Armes"].", ".$technologies["Bouclier"].", ".$technologies["Protection"].", ".$technologies["NRJ"].", ".$technologies["Hyp"].", ".$technologies["RC"].", ".$technologies["RI"].", ".$technologies["PH"].", ".$technologies["Laser"].", ".$technologies["Ions"].", ".$technologies["Plasma"].", ".$technologies["RRI"].", ".$technologies["Graviton"].");"; $db->sql_query($request); } if($pub_view=="planets") redirection("index.php?action=home&subaction=empire&view=".$pub_view."&alert_empire=true"); else redirection("index.php?action=home&subaction=empire&view=".$pub_view); } else redirection("index.php?action=message&id_message=set_empire_failed_data&info"); }