Script, das eine Tabelle units erstellt, alle Einheitenwerte aus den Rules liest und diese in der Datenbank speichert.
PHP
- <?php
- //***************************************************************
- // Liest die Einheitenwerte aus den aktuellen Rules
- //
- //***************************************************************
- include('dbconnect.php');
- /******************************************************
- Datenbank
- *********
- 0: id
- 1: Name
- 2: Fernangriffsschaden
- 3: Gebäudeschaden
- 4: Getümmelschaden
- 5: Fernkampfwiderstand
- 6: Nahkampfwiderstand
- 7: Größe
- 8: Kriegspunkte
- 9: Normal
- 10: Schwer
- 11: Kritisch
- 12: Bevölkerung
- 13: Nahrung
- 14: Holz
- 15: Steine
- 16: Metall
- 17: Schwefel
- 18: Göttliche Gunst
- 19: Eichenholz
- 20: Obelisk
- 21: Stahlbarren
- 22: Schwefelpulver
- ===================
- 23 Felder
- **************************/
- mysql_query("DROP TABLE `units`") or die("Tabelle konnte ncht gelöscht werden");
- $sql = 'CREATE TABLE `units` ('
- . ' `id` INT NOT NULL AUTO_INCREMENT, '
- . ' `Name` VARCHAR(100) NOT NULL, '
- . ' `Fernangriffsschaden` INT(200) NOT NULL, '
- . ' `Gebäudeschaden` INT(200) NOT NULL, '
- . ' `Getümmelschaden` INT(200) NOT NULL, '
- . ' `Fernkampfwiderstand` INT(200) NOT NULL, '
- . ' `Nahkampfwiderstand` 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` INT(200) NOT NULL, '
- . ' `Nahrung` INT(200) NOT NULL, '
- . ' `Holz` INT(200) NOT NULL, '
- . ' `Steine` INT(200) NOT NULL, '
- . ' `Metall` INT(200) NOT NULL, '
- . ' `Schwefel` INT(200) NOT NULL, '
- . ' `Göttliche Gunst` INT(200) NOT NULL, '
- . ' `Eichenholz` MEDIUMINT(200) NOT NULL, '
- . ' `Obelisk` MEDIUMINT(200) NOT NULL, '
- . ' `Stahlbarren` MEDIUMINT(200) NOT NULL, '
- . ' `Schwefelpulver` MEDIUMINT(200) 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 Einheiten gibt es diese Runde?
- /*Fehler in den UA-Rules, es sind nicht alle IDs belegt
- nicht vorhandene werden mit der ID 0 angezeigt (faustkämpfer)
- $unitCount, somit größte vorkommende id oder größer*/
- $unitCount = 50;
- //String um den Sourcecode aus den einzelnen zeilen zusammenzubauen
- $source = "";
- //Initialiseren vom Einheitenarray
- $units = ARRAY();
- for($i = 0; $i < $unitCount; $i++)
- {
- $source = "";
- $link = $rules."?modus=units&unitsID=".$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";
- }
- $units[$i] = extractData($source);
- if(($i != 0) && (strcmp($units[$i]["Name"][1], "Faustkämpfer") == 0))
- { }
- else
- {
- $dbResult = "INSERT INTO `units` (" .
- "`Name`," .
- "`Fernangriffsschaden`," .
- "`Gebäudeschaden`," .
- "`Getümmelschaden`," .
- "`Fernkampfwiderstand`," .
- "`Nahkampfwiderstand`," .
- "`Größe`," .
- "`Kriegspunkte`," .
- "`Normal`," .
- "`Schwer`," .
- "`Kritisch`," .
- "`Bevölkerung`," .
- "`Nahrung`," .
- "`Holz`," .
- "`Steine`," .
- "`Metall`," .
- "`Schwefel`," .
- "`Göttliche Gunst`," .
- "`Eichenholz`," .
- "`Obelisk`," .
- "`Stahlbarren`," .
- "`Schwefelpulver`) VALUES (";
- $dbResult .= /*"'".$i."',*/"'".$units[$i]["Name"][1]."'";
- for($k = 0; $k < sizeof($units[$i]["Werte"][0]); $k++)
- {
- $dbResult .= ", '".$units[$i]["Werte"][2][$k]."'";
- }
- for($k = 0; $k < sizeof($units[$i]["Treffer"][0]); $k++)
- {
- $dbResult .= ", '".$units[$i]["Treffer"][1][$k]."'";
- }
- $dbResult .= buildResString($units[$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
- $unit = ARRAY();
- //Name der Einheit
- $reg = "/[b](.+?)<\/strong>/s";
- preg_match($reg, $s, $name);
- $unit["Name"] = $name;
- //String in dem die Ehkosten stehen
- $reg = "/Kosten(.+?)Eigenschaften/s";
- preg_match($reg, $s, $k);
- $reg = "/<td>.+?title=\"(.+?)\">\s+(\d+)/";
- preg_match_all($reg, $k[1], $kosten);
- $unit["Kosten"] = $kosten;
- //String in dem die EhKampfwerte stehen
- $reg = "/Eigenschaften(.+?)Treffer/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);
- $unit["Werte"] = $werte;
- //String in dem die Trefferwahrscheinlichkeiten stehen
- $reg = "/Trefferwahrscheinlichkeiten(.+?)Bewegungs/s";
- preg_match($reg, $s, $t);
- $reg = "/<tr>\s+<td.+?<td.*?>(\d+).+?<\/td>\s+<\/tr>/s";
- preg_match_all($reg, $t[1], $treffer);
- $unit["Treffer"] = $treffer;
- /*
- DEBUG:
- for($i = 1; $i < sizeof($unit["Werte"]); $i++)
- {
- for($j = 0; $j < sizeof($unit["Werte"][0]); $j++)
- {
- echo $unit["Werte"][$i][$j]."
- \n";
- }
- }*/
- return $unit;
- }
- ?>