Dynamische Signatur

Bitte benutzt das englische Supportforum!
User avatar
salbei
Phoenix Knight
 
Posts: 1467
Joined: Oct 27, 2006 00:00

Postby salbei » Aug 02, 2008 19:47

würd gern meine sig umwandeln sodass ich net manuell die daten eintragen muss. sprich das es mit dem herald upgedatet wird.

wäre nett falls mir da jemand helfen könnte.

spiele halt in mehreren realms und es wär unangebracht für jeden char so ne dicke sig zu machen.

User avatar
Rector
Alerion Knight
 
Posts: 2744
Joined: Mar 02, 2006 01:00

Postby Rector » Aug 02, 2008 20:00

fänds auch toll wenn da mal jemand nen link zu ner anleitung posten oder es erklären könnt...

User avatar
salbei
Phoenix Knight
 
Posts: 1467
Joined: Oct 27, 2006 00:00

Postby salbei » Aug 02, 2008 20:17

versuch mich gerad schlauzulesen^^
Last edited by salbei on Aug 03, 2008 06:10, edited 1 time in total.

User avatar
Kuxi
Phoenix Knight
 
Posts: 1135
Joined: Feb 02, 2007 01:00

Postby Kuxi » Aug 02, 2008 21:04

Ich denke das dies ohne PHP nicht funktionieren wird.

User avatar
salbei
Phoenix Knight
 
Posts: 1467
Joined: Oct 27, 2006 00:00

Postby salbei » Aug 02, 2008 21:18

duke greift mir gerad unter die arme :lol:

User avatar
Duke
Eagle Knight
 
Posts: 629
Joined: Jan 12, 2006 01:00
Location: MB the Realm 4

Postby Duke » Aug 03, 2008 01:16

Da es anscheinend bedarf gibt werde ich ne kleine Anleitung schreiben, da alles sehr kompliziert sein könnte bitte ich euch die stellen die ihr nicht sofort versteht einfach anzusagen und dann mach ichs an der Stelle etwas länger.



Eine dynamische Signatur


Um eine dynamische Signatur zu erstellen braucht man als erstes einmal eine Schnittstelle von der man die Daten bekommt die später in der Signatur stehen sollen.

Nun habt ihr die Daten, jedoch könnt ihr die nicht in eure Signatur packen. Ihr braucht ein Bild. Dieses müsst ihr jedoch woanders hochladen. Damit man von diesem Ort jedoch auf die Daten von Mettys Herald zugreifen kann, braucht man ein PHP Script, welches die Daten ausliest und auf ein Bild projeziert.

Eben dieser Befehl der auf Mettys Herald zugreift ist bei den meisten Freehostern verboten.


Als kleine Checkliste:

1. Ihr braucht die Schnittstelle
2. Ihr braucht das Script
3. Ihr braucht einen Freehoster der file_get_contents zulässt



1. Die Schnittstelle:


Auf Uthgard bezogen wäre das diese: http://metty.the-bart.org/other/daoc/si ... tty&txt=on (Quelle http://uthgard.the-bart.org/modules.php ... opic&t=588)


2. Das Script:

Code: Select all
<?php

  /**
        * Programm geschrieben von Duke - herzog-max@gmx.de
        * Dieses Programm erstellt ein Bild mit der Statistik von Uthgard ( Metty )
        **/

       
  //
  // EINSTELLUNGEN
  //
 
  // Variablen anfang
  $meine_gilde = "Morrigans Breath";  // Hier müsst ihr eure Gilde angeben!!
  $standard_anfang = "bilder\bild";
  $standard_endung = ".jpg";
  $herald_link = "http://metty.the-bart.org/other/daoc/sig.php?txt=on&name=";
  $schriftart = "c:/windows/fonts/arial.ttf";
 
  // Schriftfarbe R / G / B - Integers!
  $farbe_rot = 255;
  $farbe_gruen = 255;
  $farbe_blau = 255;
 
 
  //
  // CODE
  //
 
 
  // Diese Variablen nicht ändern!
  $spieler_name = "Charakter nicht gefunden";
  $spieler_nachname = "";
  $spieler_gilde = "";
  $spieler_reichspunkte = "";
  $spieler_reichsrang = "";
  $nummer = htmlspecialchars($_GET['nummer']);
  $link = $standard_anfang.$nummer.$standard_endung;
  $stop = true;
  $get_name = $_GET['name'];
  // Variablen Ende
 
  error_reporting(E_ALL);

  $schnittstelle = file_get_contents($herald_link . htmlspecialchars($get_name));
 
  if(!empty($schnittstelle)) {
 
    // Die Stats in einen Array splitten
    $schnittstelle_array = explode("\n", $schnittstelle);

    /**
             *  In folgendem Format werden die Stats ausgegeben
             * 0 =[player]
              * 1 =name=
              * 2 =lastname=
              * 3 =class=Unknown
              * 4 =race=Unknown
              * 5 =guild=
              * 6 =level=
              * 7 =realm=
              * 8 =realmpoints=
              * 9 =realmlevel=
              * 10 =cached=0
              *
              **/
   
    // Falls der Spieler bei MB ist, Daten auslesen
    $spieler_gilde = substr(trim($schnittstelle_array[5]), 6);
    if($spieler_gilde!=$meine_gilde) {
      $spieler_gilde = "oder nicht bei ".$meine_gilde;
    }
    else {
      $spieler_name = substr(trim($schnittstelle_array[1]), 5);
      $spieler_nachname = substr(trim($schnittstelle_array[2]), 9);
      $spieler_reichsrang = "RR ".str_replace(".", "L", substr(trim($schnittstelle_array[9]), 11));
      $spieler_klasse = substr(trim($schnittstelle_array[3]), 6);
      $spieler_reichspunkte = number_format (substr(trim($schnittstelle_array[8]), 12),0,",",".")." RPs";
    }
   
    // Bild erstellen
    if(empty($spieler_gilde) || $spieler_gilde != $meine_gilde) {
      header ("Content-type: image/png");
      $im = @ImageCreate (400, 75);
      $stop = false;
    }
    else {
      if(file_exists($link)) {
        // Bild auf ein Hintergrundbild erstellen
        header ("Content-type: image/png");
        $im = @ImageCreateFromJPEG ($link);
        $stop = false;
      }
      else{
        die("Bild nicht vorhanden");
      }
    }
   
    if($stop!=true) {
     
      // Hintergrundfarbe
      $background_color = ImageColorAllocate ($im, 255, 0, 0);
     
      // Schrift auf das Bild setzen
     
      // Farbe
      $text_color = ImageColorAllocate ($im, $farbe_rot, $farbe_gruen, $farbe_blau);
     
      // erste Zeile
      ImageTTFText ($im, 20, 0, 20, 35, $text_color, $schriftart,$spieler_name);
      $nach_name_x = 35+strlen($spieler_name)*14;
      ImageTTFText ($im, 20, 0, $nach_name_x, 35, $text_color, $schriftart,$spieler_nachname);
     
      // Zweite Zeile
      ImageTTFText ($im, 15, 0, 20, 60, $text_color, $schriftart,$spieler_gilde);
     
      // Dritte Zeile
      ImageTTFText ($im, 15, 0, 20, 85, $text_color, $schriftart,$spieler_reichspunkte);
      $rr_x = 25+strlen($spieler_reichspunkte)*11;
      ImageTTFText ($im, 15, 0, $rr_x, 85, $text_color, $schriftart,$spieler_reichsrang);
     
      // Bild zeichnen
      ImagePNG ($im);
    }
  }
  else {
    echo "Schnittstelle defekt - spammt Metty zu!!";
  }
?>



Wichtig: Ihr müsst in folgender Zeile Morrigans Breath durch die exakte Schreibweise eurer Gilde ersetzen:
$meine_gilde = "Morrigans Breath"; // Hier müsst ihr eure Gilde angeben!!

Das Script setzt die Statistik im Moment auf 400 * 100 große Bilder im Ordner Bilder. Das erste Bild im Ordner und damit das Standart Bild muss bild.jpg das 2. bild2.jpg usw. heißen.


3. Der Hoster


Ihr müsst ausprobieren bei welchem Hoster es funktioniert. Dazu könnt ihr einfach folgende Zeile in eine PHP Datei schreiben und ausprobieren ob sie auf dem Server funktioniert:

Code: Select all
<?php echo file_get_contents("http://www.uthgard.de"); ?>


Seht ihr die Uthgardpage könnt ihr das Script benutzen, seht ihr 2 Fehlermeldungen nicht.



So ich hoffe ihr alle könnt nun eigene Signaturen machen. :)




Duke


PS: Deinen speziellen Wunsch kriegste dann per mail :p


Edit:


LWRPs sowie Kills sind in Mettys Schnittstelle nicht enthalten. Wer diese jedoch trotzallem haben möchte muss sich eine andere Schnittstelle holen, den Herald selbst.

Code: Select all
$herald_link2 = "http://herald.uthgard-server.net/herald.php?view=stats&p1=player&p2=Player&p3=DESC&p5=Player&p6=";

$schnittstelle2_1 = trim(file_get_contents($herald_link2 . $name));

$kills_1 = substr($schnittstelle2_1, strpos($schnittstelle2_1, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_1,strpos($schnittstelle2_1, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_1)), '</div></td></tr>')-37);

$lwrps_1 = substr($schnittstelle2_1, strpos($schnittstelle2_1, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_1,strpos($schnittstelle2_1, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_1)), '</div></td></tr>')-45);



Wem das zu schwer ist, kann mich aber auch einfach anschreiben :D Salbeis Signatur ist ja nun auch fertig, dann hab ich wieder Freizeit :x



EDIT 2: Wenn er immer sagt, dass Bild ist nicht vorhanden sind Bilder auf dem Host nicht zugreifbar - entweder den Host wechseln oder sich an mich wenden, dann schick ich ihm die Version ohne Bild.


EDIT3 :
Code: Select all
<br />
<b>Fatal error</b>:  Call to undefined function  imagettftext() in <b>/home/webpages/lima-city/salbei-daoc/html/salbei.php</b> on line <b>221</b><br />


Dieser Fehler kann ebenfalls bei Freehostern passieren, das bedeutet sie haben die nötige Funktion um die Schrift aufs Bild zu legen nicht -> Wechseln :(


edit: Vorschaubild für eine normale Sig:

Image

eigentlich genau das gleiche wie das von Metty, nur das man das Hintergrundbild selbst aussuchen kann.
Last edited by Duke on Aug 04, 2008 18:13, edited 6 times in total.

User avatar
salbei
Phoenix Knight
 
Posts: 1467
Joined: Oct 27, 2006 00:00

Postby salbei » Aug 03, 2008 01:24

erstmal danke für die hilfe .

zum hoster : hab ein paar durchgehen müssen und bin derzeit bei lima.city hängengeblieben (freehoster , recht simpel in der handhabung)
gibt sicherlich noch andere , der befehl wurde unterstützt - dafür zugriff auf bilder nicht ...
-
scheint net zu gehen auf der seite.

phphost versuch ich gerad. sieht net schlecht aus bisher.


duke hat sich ne menge arbeit gemacht meiner sig entsprechend anzupassen . möchte mich nochmal bedanken für all die mühe .

Schnittstelle defekt - spammt Metty zu!!
Last edited by salbei on Aug 03, 2008 06:27, edited 3 times in total.

User avatar
Kuxi
Phoenix Knight
 
Posts: 1135
Joined: Feb 02, 2007 01:00

Postby Kuxi » Aug 03, 2008 03:11

Netter Code, Duke- hätte ich nicht besser machen können. :)

User avatar
Baldrug
Developer
Developer
 
Posts: 1140
Joined: May 03, 2005 00:00

Postby Baldrug » Aug 03, 2008 08:19

Wen ich das richtig sehe ist esein Script was die gesamten Daten durchparst.

Wenn das viele machen gibts ne ganz schöne Last die da auf dem Server ausgeübt wird.

Kann man das net mit voreingestellten Charnames machen, die dann nur durchparst werden.

User avatar
Duke
Eagle Knight
 
Posts: 629
Joined: Jan 12, 2006 01:00
Location: MB the Realm 4

Postby Duke » Aug 03, 2008 13:52

Du meinst, dass jeder in dem Script angibt welche Chars er mit der Signatur sehen will / kann, damit nicht jeder Abruf sofort auf den uthgardserver geht?

Ozerdin
Gryphon Knight
 
Posts: 234
Joined: May 07, 2005 00:00

Postby Ozerdin » Aug 03, 2008 14:32

Am elegantesten wärs natürlich, ~alle 12 Stunden die Daten der aktiven Signaturen vom Uthgard Server zu holen und in einer eigenen Datenbank zu cachen.
Verringert Zugriffszeiten und Anzahl Zugriffe.

User avatar
Baldrug
Developer
Developer
 
Posts: 1140
Joined: May 03, 2005 00:00

Postby Baldrug » Aug 03, 2008 15:07

Jo so eine Art Array wo die Namen reingeschrieben werden und der dann diese absucht. Ist natürlich dann mit Skriptanpassungen verbunden wenn ein Char dazu kommt.(Einen weiteren Namen in die Liste)

Das könnte man aber aus einer Textdatei auslesen lassen und dann nur diese updaten.

User avatar
salbei
Phoenix Knight
 
Posts: 1467
Joined: Oct 27, 2006 00:00

Postby salbei » Aug 03, 2008 15:43

wenn man es so hindrehen könnte das nur einmal am tag ausgelesen wird und die entsprechenden daten für seine chars dann auf dem webspace gespeichert werden(und abgerufen), sollte die last doch erträglich sein .

die frage inwiefern das realisierbar ist.

User avatar
Bonebreaker
Warder
 
Posts: 60
Joined: Jul 23, 2006 00:00

Postby Bonebreaker » Aug 03, 2008 16:47

ich hatte mal so ein Tool geschrieben und auch für den Rest zur Verfügung gestellt. Das hatte Caching etc. und konnte von allen genutzt werden. Nach dem es meinen Server ins Nirvana geschickt hatte, muß ich einen Teil neu schreiben. Da zu dem Zeitpunkt jemand danach fragte ob es möglich wäre die Herald Daten auch als XML Datei zu bekommen, hat ich mich dran gesetzt genauso ein XML aus dem Herald zu gewinnen. Darauf wollte ich dann auch das Sigtool aufsetzen (2 mal gleiche Daten abzurufen macht ja keinen Sinn). Das XML Tool hab ich auch in ner ersten Beta fertig. Dann hab ich um ne Freigabe gebeten, so nen Bot auf den Herald anzusetzen. Nur da liefen dann die Verhandlungen von wegen Zugriffshäufigkeit etc im Sande.

Im übrigen macht es in meinen Augen Sinn sowas als Communityprojekt aufzustellen. Wenn jeder so nen Script Hämmern läßt wird das dem Webserver nicht gut tun ;).
<img src="http://www.covod.org/uth_daoc_sig/SigV2.php?chars=Lynisar;Guthand;Salia;Zmirir;Donnerfaust">

User avatar
TheKrokodil
Alerion Knight
 
Posts: 2126
Joined: Jan 11, 2005 01:00

Postby TheKrokodil » Aug 03, 2008 18:52

Anfragen an Herald/Sig.txt sind generell nicht das Problem; die Masse jedoch schon.

Wenn in einem Forenpost ~10 dieser Signaturen vorkommen, wird bei jedem aufruf des Posts der Herald 10x abgerufen.

Die Dinge sind zwar alle gecached, jedoch isses auch ne menge Traffic - das einfache hier wäre es, dass Bild nach dem erstellen zu speichern (php.net/imagejpeg) und beim nächsten aufruf der Datei das Änderungsdatum überprüfen (php.net/filemtime, ..)


Alter, aber funktionierender Code:

if (file_exists("sigs/cache/" . $name . "_" . $s . ".jpg")==true AND $txt != "on") {
if ((time() - filemtime("sigs/cache/" . $name . "_" . $s . ".png")) <= 60*60*24) { //24h
header("Content-Type: image/jpeg");
$_cache = file_get_contents("sigs/cache/" . $name . "_" . $s . ".jpg");
echo $_cache;
exit();
}
}


imagejpeg($im,"sigs/cache/" . $name . "_" . $s . ".jpg", 75);
imagejpeg($im, "", 75);
Be nice. :)

Next

Return to Support (de)

Who is online

Users browsing this forum: No registered users and 35 guests

Tuesday, 24. June 2025

Artwork and screen shots Copyright © 2001-2004 Mythic Entertainment, Inc. All rights reserved. Used with permission of Mythic Entertainment. Mythic Entertainment, the Mythic Entertainment logo, "Dark Age of Camelot," "Shrouded Isles," "Foundations," "New Frontiers," "Trials of Atlantis," "Catacombs," "Darkness Rising," the Dark Age of Camelot and subsequent logos, and the stylized Celtic knot are trademarks of Mythic Entertainment, Inc.

Valid XHTML & CSS | Original Design by: LernVid.com | Modified by Uthgard Staff