Diskussion:NPCs (Liste): Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 38: Zeile 38:


:::ich rück immer eins weiter ein als der vorgänger *gg* was ich zudem noch praktisch fände wär eine Gold pro Xp-Spalte --[[Benutzer:Three Of Twelve|Three Of Twelve]][[Benutzer Diskussion:Three Of Twelve|<sup>Sprich!</sup>]] 16:25, 3. Apr 2006 (CEST)
:::ich rück immer eins weiter ein als der vorgänger *gg* was ich zudem noch praktisch fände wär eine Gold pro Xp-Spalte --[[Benutzer:Three Of Twelve|Three Of Twelve]][[Benutzer Diskussion:Three Of Twelve|<sup>Sprich!</sup>]] 16:25, 3. Apr 2006 (CEST)
Also, ich hab gar nichts dagegen, wenn irgendjemand die Idee aufgreift, und obs dann Perl, Python, PHP, Javascript o.ä. ist, ist mir völlig wurscht! Ich wollte halt bloss mal irgendwas selber anfangen statt zu schreiben "könnte nicht mal jemand..." ^^ ich hatte die Liste als Input für meine "auf welchem Feld ist die Betörung am lukrativsten"-Berechnung gebraucht. Was mir noch fehlt in der Liste und was aber schwer anzugeben sein wird, ist eine Art modifizierter Golddrop-Wert, dem der Erwartungswert der NPC-Items hinzugerechnet ist (besonders deutlich z.b. bei der Goldkrake, die in der Liste mit 1 Gold verzeichnet ist, aber für alle realistischen Betrachtungen eigentlich mit 575 Gold angesetzt werden müsste). Unten hänge ich mal das Perl-Skript an, das ich zum Erzeugen der Rohdaten für die Liste verwendet habe (danach kommt noch ein Sortier- und Formatier-Schritt, der aber trivial ist und den ich daher weglasse). Macht damit, was ihr wollt, bzw. wenn ich doch nochmal tätig werden soll, jederzeit gerne. --[[Benutzer:Count Ypsilon|Count Ypsilon]] 19:47, 3. Apr 2006 (CEST)
  #!/usr/bin/perl
 
  use strict;
  use LWP::UserAgent;
  use URI::Escape;
  use HTTP::Request;
 
  my $ua = LWP::UserAgent->new();
  my $host = "http://freewar.tiramon.de";
  my $url = $host . "/wiki/index.php/Kategorie:NPCs";
 
  while($url ne "")
  {
    my $request = HTTP::Request->new("GET", $url);
    my $response = $ua->simple_request($request);
    my $c = $response->content();
    $url = "";
 
    while($c =~ /<a([^>]*)>([^<]*)<\/a>/gm)
    {
        my ($anchor, $text) = ($1, $2);
        my $href;
        $href = $1 if ($anchor =~ /href\s*=\s*"([^"]*)"/);
        $href =~ s/&amp;/&/g;
        my $title;
        $title = $1 if ($anchor =~ /title\s*=\s*"([^"]*)"/);
        $url = $host.$href if ($text =~ /n.*chste \d+/);
        registerNpc($text, $host.$href) if ($title eq $text);
    }
  }
 
  sub registerNpc
  {
    my ($text, $href) = @_;
    my $request = HTTP::Request->new("GET", $href);
    my $response = $ua->simple_request($request);
    my $c = $response->content();
 
    my $atk;
    my $xp;
    my $lp;
    my $gm;
 
    $atk = $1 if ($c =~ /Angriffsst.{1,4}rke: (\d+)/);
    $lp = $1 if ($c =~ /Lebenspunkte[^0-9]{1,8}(\d+)/);
    $xp = $1 if ($c =~ /Erfahrung[^0-9]{1,8}(\d+)/);
    $gm = $1 if ($c =~ /Gold[^0-9]{1,8}(\d+)/);
 
    print "$text,$atk,$lp,$xp,$gm\n";
  }

Version vom 3. April 2006, 19:47 Uhr

Zu diesem Entwurf die folgenden Gedanken und Fragen:

  • Ich habe die Liste jetzt mit einem Perl-Skript erzeugt, indem ich alle in "Kategorie:NPCs" verlinkten NPC-Artikel downloaden und auswerten liess. Das könnte man theoretisch schon täglich o.ä. automatisch machen, aber gibt es eventuell bessere Wege dafür?
  • Ist es möglich und wünschenswert, eine solche "generierte" Seite vor Änderungen zu schützen, weil diese ja beim Update verloren gehen?
  • Sind solche automatisch generierten Seiten überhaupt in einem Medium wie dem Wiki sinnvoll?
  • Sollte man die Liste auch als CSV-Datei zum Download bereitstellen, um es Leuten, die z.B. Kampfrechner usw. basteln, noch einfacher zu machen?
  • Die Liste muss natürlich sortierbar werden. Entweder gestalte ich das Skript so, dass es einfach 6 fertig sortierte Dateien auswirft, und daraus werden dann die Artikel "NPCs (Liste, sortiert nach X)", "NPCs (Liste, sortiert nach Y)" usw. - oder man verwendet die (eigentlich ganz brauchbare) Javascript-Listensortierung [1], aber da weiss ich nicht, wie man das in eine Wiki-Seite einbindet (scheiterte schon am <script...>, das vmtl. aus Sicherheitsgründen nicht durchkommt)

--Count Ypsilon 11:12, 3. Apr 2006 (CEST)

für automatisch gibt es ja die bots, aber ka wie die funktionieren, darum aber auch durchaussinnvoll, schützen weiß ich nicht warum, der bot stellt sie im zweifelsfall ja eh wieder her 134.91.30.232 11:25, 3. Apr 2006 (CEST)
schützen würd ichs nicht, ist ja nicht notwendig, die Shopliste ist ja auch nicht geschützt. das mit dem script hast du recht, aber ich könnte das script (muss ich mal anschauen) in die globale JS-Datei einbauen und dann dürfte es gehen ;) --Three Of TwelveSprich! 13:46, 3. Apr 2006 (CEST)
Das ist cool :D. Frage: Kann man bestimmte NPCs auch markieren gefahrlos? (also z.B. meiste LP, meistes Gold, höchste Gold/Lp etc?) -- Ra (Diskussion) 15:25, 3. Apr 2006 (CEST)
ich denk schon, allerdings fänd ich es noch ganz praktisch wenn da noch Teilüberschriften wären, dass man am Anfang ein Inhaltsverzeichnis hat wie:
__NOTOC__

{| {{Prettytable}} | colspan="7" | [[#A|A]] &#124; [[#B|B]] &#124; [[#C|C]] &#124; ... |-  ! [[NPC]] || [[A]] || [[LP]] || ... |-  ! colspan="7" | ===== A ===== |- | [[Aasgeier]] ...

sonst find ichs gut, und ich denke das kann man auch direkt in den Artikel NPC mit reinbasteln, dann ist er auch nich so kurz^^ der einfachheit halber wegen dem Aktualisieren würd ich dann die Liste auf ne Vorlage machen und die dann reinbasteln =) --Three Of TwelveSprich! 15:36, 3. Apr 2006 (CEST)
Dafür -- Ra (Diskussion) 15:39, 3. Apr 2006 (CEST)
ich wollte eh mal nen bot schreiben bzw. ein programm das alle listenbots automatisch aufruft, das man dann einfach ab und zu laufen lassen kann... ich könnte wenn du nix dagegen hast das ein fach mal in python quetschen, dürfte nicht schwer sein, aber nur wenn du nix dagegen hast^^ --Three Of TwelveSprich! 15:48, 3. Apr 2006 (CEST)
Hm? ^^ ich erlaubs dir *lach* Dafür;) -- Ra (Diskussion) 15:50, 3. Apr 2006 (CEST)
ich meinte damit eher count xD --Three Of TwelveSprich! 15:55, 3. Apr 2006 (CEST)
Hab mich schon gewundert ^^ dann hast du es aber falsch eingerückt ^^ weil wenn du es mehr einrückst als ich, dann beziehst du dich auf mich.. das ist ja der Sinn vom einrücken ^^ -- Ra (Diskussion) 16:04, 3. Apr 2006 (CEST)
ich rück immer eins weiter ein als der vorgänger *gg* was ich zudem noch praktisch fände wär eine Gold pro Xp-Spalte --Three Of TwelveSprich! 16:25, 3. Apr 2006 (CEST)

Also, ich hab gar nichts dagegen, wenn irgendjemand die Idee aufgreift, und obs dann Perl, Python, PHP, Javascript o.ä. ist, ist mir völlig wurscht! Ich wollte halt bloss mal irgendwas selber anfangen statt zu schreiben "könnte nicht mal jemand..." ^^ ich hatte die Liste als Input für meine "auf welchem Feld ist die Betörung am lukrativsten"-Berechnung gebraucht. Was mir noch fehlt in der Liste und was aber schwer anzugeben sein wird, ist eine Art modifizierter Golddrop-Wert, dem der Erwartungswert der NPC-Items hinzugerechnet ist (besonders deutlich z.b. bei der Goldkrake, die in der Liste mit 1 Gold verzeichnet ist, aber für alle realistischen Betrachtungen eigentlich mit 575 Gold angesetzt werden müsste). Unten hänge ich mal das Perl-Skript an, das ich zum Erzeugen der Rohdaten für die Liste verwendet habe (danach kommt noch ein Sortier- und Formatier-Schritt, der aber trivial ist und den ich daher weglasse). Macht damit, was ihr wollt, bzw. wenn ich doch nochmal tätig werden soll, jederzeit gerne. --Count Ypsilon 19:47, 3. Apr 2006 (CEST)

 #!/usr/bin/perl
 
 use strict;
 use LWP::UserAgent;
 use URI::Escape;
 use HTTP::Request;
 
 my $ua = LWP::UserAgent->new(); 
 my $host = "http://freewar.tiramon.de";
 my $url = $host . "/wiki/index.php/Kategorie:NPCs";
 
 while($url ne "")
 {
   my $request = HTTP::Request->new("GET", $url);
   my $response = $ua->simple_request($request);
   my $c = $response->content();
   $url = "";
 
   while($c =~ /<a([^>]*)>([^<]*)<\/a>/gm)
   {
       my ($anchor, $text) = ($1, $2);
       my $href;
       $href = $1 if ($anchor =~ /href\s*=\s*"([^"]*)"/);
       $href =~ s/&/&/g; 
       my $title;
       $title = $1 if ($anchor =~ /title\s*=\s*"([^"]*)"/);
       $url = $host.$href if ($text =~ /n.*chste \d+/);
       registerNpc($text, $host.$href) if ($title eq $text);
   }
 }
 
 sub registerNpc
 {
   my ($text, $href) = @_;
   my $request = HTTP::Request->new("GET", $href);
   my $response = $ua->simple_request($request);
   my $c = $response->content();
 
   my $atk;
   my $xp;
   my $lp;
   my $gm;
 
   $atk = $1 if ($c =~ /Angriffsst.{1,4}rke: (\d+)/);
   $lp = $1 if ($c =~ /Lebenspunkte[^0-9]{1,8}(\d+)/);
   $xp = $1 if ($c =~ /Erfahrung[^0-9]{1,8}(\d+)/);
   $gm = $1 if ($c =~ /Gold[^0-9]{1,8}(\d+)/);
 
   print "$text,$atk,$lp,$xp,$gm\n";
 }