von Zealot » 13.03.2008, 22:04
- Code: Alles auswählen
<?php
//***************************************************************
// Liest die Defensewerte aus den aktuellen Rules
//
//***************************************************************
include('dbconnect.php');
/******************************************************
Datenbank
*********
0: id
1: Name
2: Fernangriffsschaden
3: Getümmelschaden
4: Widerstandspunkte
5: Größe
6: Kriegspunkte
7: Normal
8: Schwer
9: Kritisch
10: Bevölkerung
11: Nahrung
12: Holz
13: Steine
14: Metall
15: Schwefel
16: Göttliche Gunst
17: Eichenholz
18: Obelisk
19: Stahlbarren
20: Schwefelpulver
===================
21 Felder
******************************************/
mysql_query("DROP TABLE `defs`") or die("Tabelle konnte ncht gelöscht werden");
$sql = 'CREATE TABLE `defs` ('
. ' `id` INT NOT NULL AUTO_INCREMENT, '
. ' `Name` VARCHAR(100) NOT NULL, '
. ' `Max` VARCHAR(100) NOT NULL,'
. ' `Fernangriffsschaden` INT(200) NOT NULL, '
. ' `Getümmelschaden` INT(200) NOT NULL, '
. ' `Widerstandspunkte` INT(200) NOT NULL, '
. ' `Größe` INT(200) NOT NULL, '
. ' `Kriegspunkte` INT(200) NOT NULL, '
. ' `Normal` SMALLINT(100) NOT NULL, '
. ' `Schwer` SMALLINT(100) NOT NULL, '
. ' `Kritisch` SMALLINT(100) NOT NULL, '
. ' `Bevölkerung` VARCHAR(100) NOT NULL, '
. ' `Nahrung` VARCHAR(100) NOT NULL, '
. ' `Holz` VARCHAR(100) NOT NULL, '
. ' `Steine` VARCHAR(100) NOT NULL, '
. ' `Metall` VARCHAR(100) NOT NULL, '
. ' `Schwefel` VARCHAR(100) NOT NULL, '
. ' `Göttliche Gunst` VARCHAR(100) NOT NULL, '
. ' `Eichenholz` VARCHAR(100) NOT NULL, '
. ' `Obelisk` VARCHAR(100) NOT NULL, '
. ' `Stahlbarren` VARCHAR(100) NOT NULL, '
. ' `Schwefelpulver` VARCHAR(100) NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )'
. ' TYPE = myisam';
mysql_query($sql) or die("Neue Tabelle konnte nicht eingerichtet werden");
//**********************************************************
//Link zur aktuellen Rulesseite
$rules = "http://srv04.uga-agga.de/rules/index.php";
//Alle Resourcen der aktuellen Runde
$resis = ARRAY("Bevölkerung", "Nahrung", "Holz", "Steine", "Metall", "Schwefel",
"Göttliche Gunst", "Eichenholz", "Obelisk", "Stahlbarren",
"Schwefelpulver");
//Wie viele Verteidigungen gibt es diese Runde?
/*Fehler in den UA-Rules, es sind nicht alle IDs belegt
nicht vorhandene werden mit der ID 0 angezeigt (Erweiterte Produktions- und Trainingsstätte)
$defCount, somit größte vorkommende id oder größer
leere Seiten werden später rausgefiltert*/
$defCount = 25;
//String um den Sourcecode aus den einzelnen zeilen zusammenzubauen
$source = "";
//Initialiseren vom Defensearray
$defs = ARRAY();
for($i = 0; $i < $defCount; $i++)
{
$source = "";
$link = $rules."?modus=defenses&defensesID=".$i;
//Zeilen des Sourcecodes dieser Seite
$lines = file($link);
//führt die einzelnen Zeilen des Sourcecodes in einem String zusammen
for($j = 0; $j < sizeof($lines); $j++)
{
$source .= $lines[$j]."\n";
}
$defs[$i] = extractData($source);
if(($i != 0) && (strcmp($defs[$i]["Name"][1], "Erweiterte Produktions- und Trainingsstätte") == 0))
{ }
else
{
$dbResult = "INSERT INTO `defs` (" .
"`Name`," .
"`Max`," .
"`Fernangriffsschaden`," .
"`Getümmelschaden`," .
"`Widerstandspunkte`," .
"`Größe`," .
"`Kriegspunkte`," .
"`Normal`," .
"`Schwer`," .
"`Kritisch`," .
"`Bevölkerung`," .
"`Nahrung`," .
"`Holz`," .
"`Steine`," .
"`Metall`," .
"`Schwefel`," .
"`Göttliche Gunst`," .
"`Eichenholz`," .
"`Obelisk`," .
"`Stahlbarren`," .
"`Schwefelpulver`) VALUES (";
$dbResult .= /*"'".$i."',*/"'".$defs[$i]["Name"][1]."', '".$defs[$i]["Max"][1]."'";
for($k = 0; $k < sizeof($defs[$i]["Werte"][0]); $k++)
{
$dbResult .= ", '".$defs[$i]["Werte"][2][$k]."'";
}
for($k = 0; $k < sizeof($defs[$i]["Treffer"][1]); $k++)
{
$dbResult .= ", '".$defs[$i]["Treffer"][1][$k]."'";
}
$dbResult .= buildResString($defs[$i]["Kosten"], $resis).");";
mysql_query($dbResult) or die("ERROR!");
}
}
echo "DONE!";
//echo print_r($units); DEBUG
function buildResString($a, $r)
{
$result = "";
$b = false;
for($i = 0; $i < sizeof($r); $i++)
{
$b = false;
for($j = 0; $j < sizeof($a[0]); $j++)
{
if($r[$i] == $a[1][$j])
{
$result .= ", '".$a[2][$j]."'";
$b = true;
}
}
if($b == false)
{
$result .= ", '0'";
}
}
return $result;
}
function extractData($s)
{
//ARRAY in dem alle Informationen über eine Einheit verstaut werden
$def = ARRAY();
//Name der VA
$reg = "/<strong>(.+?)<\/strong>/s";
preg_match($reg, $s, $name);
$def["Name"] = $name;
//String mit der MaxStufe der VA
$reg = "/Beschreibung(.+?)Kosten/s";
preg_match($reg, $s, $m);
$reg ="/Maximale\sStufe.+?<td>(.+?)<\/td>/s";
preg_match($reg, $s, $max);
$def["Max"] = $max;
//String in dem die Vakosten stehen
$reg = "/Kosten(.+?)Eigenschaften/s";
preg_match($reg, $s, $k);
$reg = "/<td>.+?title=\"(.+?)\">\s+(.+?)\s<\/td>/";
preg_match_all($reg, $k[1], $kosten);
$def["Kosten"] = $kosten;
//String in dem die VaKampfwerte stehen
$reg = "/Eigenschaften(.+?)Spionage/s";
preg_match($reg, $s, $w);
$reg = "/<tr>\s+<td.*?>(.+?)<\/td>\s+<td.*?>(\d+)<\/td>\s+<\/tr>/s";
preg_match_all($reg, $w[1], $werte);
$def["Werte"] = $werte;
//String in dem die Trefferwahrscheinlichkeiten stehen
$def["Treffer"][1][0] = 60;
$def["Treffer"][1][1] = 30;
$def["Treffer"][1][2] = 10;
/*
DEBUG:
for($i = 1; $i < sizeof($unit["Werte"]); $i++)
{
for($j = 0; $j < sizeof($unit["Werte"][0]); $j++)
{
echo $unit["Werte"][$i][$j]."<br>\n";
}
}*/
return $def;
}
?>
