Va-Werte aus den Rules lesen

Tools für alle.

Moderator: Agatho

Va-Werte aus den Rules lesen

Beitragvon 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;
}
      


?>

Bild
Zealot
Abtrünnige Foren-Fledermaus
Abtrünnige Foren-Fledermaus
 
Beiträge: 482
Registriert: 03.02.2004, 22:51

Zurück zu UA-Tools

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste