-

Duke
- Eagle Knight
-
- Posts: 629
- Joined: Jan 12, 2006 01:00
- Location: MB the Realm 4
-
|
by Duke » Aug 04, 2008 18:16
Also ich könnt das für mehrere Chars auch posten, jedoch hab ich das im halbschlaf gemacht und der Code ist total unschön
Naja egal ^^ ich posts trotzdem.
salbei.php:
- 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 $name1 = "salbaer"; $name2 = "whiskers"; $name3 = "xero"; $name4 = "salbei"; $name5 = "blasphemic"; $name6 = "eobair"; $standard_anfang = "bilder\bild"; $standard_endung = ".jpg"; $herald_link = "http://metty.the-bart.org/other/daoc/sig.php?txt=on&name="; $herald_link2 = "http://herald.uthgard-server.net/herald.php?view=stats&p1=player&p2=Player&p3=DESC&p5=Player&p6="; $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);
$schnittstelle1 = file_get_contents($herald_link . $name1); if(!empty($schnittstelle1)) { // Die Stats in einen Array splitten $schnittstelle_array1 = explode("\n", $schnittstelle1);
/** * 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 * **/ function farbe ($realm,$zahl) { if($realm == 1) { if($zahl == 1) { return 255; } elseif($zahl == 2) { return 65; } elseif($zahl == 2) { return 65; } } elseif($realm == 2) { if($zahl == 1) { return 160; } elseif($zahl == 2) { return 167; } elseif($zahl == 3) { return 255; } } elseif($realm == 3) { if($zahl == 1) { return 71; } elseif($zahl == 2) { return 255; } elseif($zahl == 2) { return 84; } } else { return 255; } } // Bild erstellen if(file_exists($link)) { // Bild auf ein Hintergrundbild erstellen header ("Content-type: image/png"); $im = @ImageCreateFromJPEG ($link); $stop = false; } else{ //die("Bild nicht vorhanden"); header ("Content-type: image/png"); $im = @ImageCreate (550, 135); // Hintergrundfarbe $background_color = ImageColorAllocate ($im, 0, 0, 0); $stop = false; } // Welcome to the Jungle! Das hätte man auch schöner schreiben können :x $spieler_name_1 = substr(trim($schnittstelle_array1[1]), 5); $spieler_nachname_1 = substr(trim($schnittstelle_array1[2]), 9); $spieler_reichsrang_1 = str_replace(".", "L", substr(trim($schnittstelle_array1[9]), 11)); $spieler_klasse_1 = substr(trim($schnittstelle_array1[3]), 6); $spieler_rasse_1 = substr(trim($schnittstelle_array1[4]), 5); $spieler_reichspunkte_1 = number_format (substr(trim($schnittstelle_array1[8]), 12),0,",",".")." "; $text_color_1 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array1[7]), 6),1), farbe(substr(trim($schnittstelle_array1[7]), 6),2), farbe(substr(trim($schnittstelle_array1[7]), 6),3)); $schnittstelle2_1 = trim(file_get_contents($herald_link2 . $name1)); $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); $schnittstelle2 = file_get_contents($herald_link . $name2); $schnittstelle_array2 = explode("\n", $schnittstelle2); $spieler_name_2 = substr(trim($schnittstelle_array2[1]), 5); $spieler_nachname_2 = substr(trim($schnittstelle_array2[2]), 9); $spieler_reichsrang_2 = str_replace(".", "L", substr(trim($schnittstelle_array2[9]), 11)); $spieler_klasse_2 = substr(trim($schnittstelle_array2[3]), 6); $spieler_rasse_2 = substr(trim($schnittstelle_array2[4]), 5); $spieler_reichspunkte_2 = number_format (substr(trim($schnittstelle_array2[8]), 12),0,",",".")." "; $text_color_2 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array2[7]), 6),1), farbe(substr(trim($schnittstelle_array2[7]), 6),2), farbe(substr(trim($schnittstelle_array2[7]), 6),3)); $schnittstelle2_2 = trim(file_get_contents($herald_link2 . $name2)); $kills_2 = substr($schnittstelle2_2, strpos($schnittstelle2_2, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_2,strpos($schnittstelle2_2, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_2)), '</div></td></tr>')-37); $lwrps_2 = substr($schnittstelle2_2, strpos($schnittstelle2_2, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_2,strpos($schnittstelle2_2, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_2)), '</div></td></tr>')-45); $schnittstelle3 = file_get_contents($herald_link . $name3); $schnittstelle_array3 = explode("\n", $schnittstelle3); $spieler_name_3 = substr(trim($schnittstelle_array3[1]), 5); $spieler_nachname_3 = substr(trim($schnittstelle_array3[2]), 9); $spieler_reichsrang_3 = str_replace(".", "L", substr(trim($schnittstelle_array3[9]), 11)); $spieler_klasse_3 = substr(trim($schnittstelle_array3[3]), 6); $spieler_rasse_3 = substr(trim($schnittstelle_array3[4]), 5); $spieler_reichspunkte_3 = number_format (substr(trim($schnittstelle_array3[8]), 12),0,",",".")." "; $text_color_3 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array3[7]), 6),1), farbe(substr(trim($schnittstelle_array3[7]), 6),2), farbe(substr(trim($schnittstelle_array3[7]), 6),3)); $schnittstelle2_3 = trim(file_get_contents($herald_link2 . $name3)); $kills_3 = substr($schnittstelle2_3, strpos($schnittstelle2_3, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_3,strpos($schnittstelle2_3, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_3)), '</div></td></tr>')-37); $lwrps_3 = substr($schnittstelle2_3, strpos($schnittstelle2_3, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_3,strpos($schnittstelle2_3, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_3)), '</div></td></tr>')-45); $schnittstelle4 = file_get_contents($herald_link . $name4); $schnittstelle_array4 = explode("\n", $schnittstelle4); $spieler_name_4 = substr(trim($schnittstelle_array4[1]), 5); $spieler_nachname_4 = substr(trim($schnittstelle_array4[2]), 9); $spieler_reichsrang_4 = str_replace(".", "L", substr(trim($schnittstelle_array4[9]), 11)); $spieler_klasse_4 = substr(trim($schnittstelle_array4[3]), 6); $spieler_rasse_4 = substr(trim($schnittstelle_array4[4]), 5); $spieler_reichspunkte_4 = number_format (substr(trim($schnittstelle_array4[8]), 12),0,",",".")." "; $text_color_4 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array4[7]), 6),1), farbe(substr(trim($schnittstelle_array4[7]), 6),2), farbe(substr(trim($schnittstelle_array4[7]), 6),3)); $schnittstelle2_4 = trim(file_get_contents($herald_link2 . $name4)); $kills_4 = substr($schnittstelle2_4, strpos($schnittstelle2_4, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_4,strpos($schnittstelle2_4, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_4)), '</div></td></tr>')-37); $lwrps_4 = substr($schnittstelle2_4, strpos($schnittstelle2_4, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_4,strpos($schnittstelle2_4, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_4)), '</div></td></tr>')-45); $schnittstelle5 = file_get_contents($herald_link . $name5); $schnittstelle_array5 = explode("\n", $schnittstelle5); $spieler_name_5 = substr(trim($schnittstelle_array5[1]), 5); $spieler_nachname_5 = substr(trim($schnittstelle_array5[2]), 9); $spieler_reichsrang_5 = str_replace(".", "L", substr(trim($schnittstelle_array5[9]), 11)); $spieler_klasse_5 = substr(trim($schnittstelle_array5[3]), 6); $spieler_rasse_5 = substr(trim($schnittstelle_array5[4]), 5); $spieler_reichspunkte_5 = number_format (substr(trim($schnittstelle_array5[8]), 12),0,",",".")." "; $text_color_5 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array5[7]), 6),1), farbe(substr(trim($schnittstelle_array5[7]), 6),2), farbe(substr(trim($schnittstelle_array5[7]), 6),3)); $schnittstelle2_5 = trim(file_get_contents($herald_link2 . $name5)); $kills_5 = substr($schnittstelle2_5, strpos($schnittstelle2_5, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_5,strpos($schnittstelle2_5, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_5)), '</div></td></tr>')-37); $lwrps_5 = substr($schnittstelle2_5, strpos($schnittstelle2_5, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_5,strpos($schnittstelle2_5, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_5)), '</div></td></tr>')-45); $schnittstelle6 = file_get_contents($herald_link . $name6); $schnittstelle_array6 = explode("\n", $schnittstelle6); $spieler_name_6 = substr(trim($schnittstelle_array6[1]), 5); $spieler_nachname_6 = substr(trim($schnittstelle_array6[2]), 9); $spieler_reichsrang_6 = str_replace(".", "L", substr(trim($schnittstelle_array6[9]), 11)); $spieler_klasse_6 = substr(trim($schnittstelle_array6[3]), 6); $spieler_rasse_6 = substr(trim($schnittstelle_array6[4]), 5); $spieler_reichspunkte_6 = number_format (substr(trim($schnittstelle_array6[8]), 12),0,",",".")." "; $text_color_6 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array6[7]), 6),1), farbe(substr(trim($schnittstelle_array6[7]), 6),2), farbe(substr(trim($schnittstelle_array6[7]), 6),3)); $schnittstelle2_6 = trim(file_get_contents($herald_link2 . $name6)); $kills_6 = substr($schnittstelle2_6, strpos($schnittstelle2_6, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2_6,strpos($schnittstelle2_6, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2_6)), '</div></td></tr>')-37); $lwrps_6 = substr($schnittstelle2_6, strpos($schnittstelle2_6, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2_6,strpos($schnittstelle2_6, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2_6)), '</div></td></tr>')-45); if($stop!=true) { // Schrift auf das Bild setzen // Farbe $text_color = ImageColorAllocate ($im, $farbe_rot, $farbe_gruen, $farbe_blau);
// erste Zeile ImageTTFText ($im, 10, 0, 20, 20, $text_color_1, $schriftart,$spieler_name_1); ImageTTFText ($im, 10, 0, 100, 20, $text_color_1, $schriftart,"( ".$spieler_klasse_1." / ".$spieler_rasse_1." ) "); ImageTTFText ($im, 10, 0, 300, 20, $text_color_1, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 20, $text_color_1, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 20, $text_color_1, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 20, $text_color, $schriftart,$spieler_reichsrang_1." - ".$spieler_reichspunkte_1.", ".$lwrps_1); // Zweite Zeile ImageTTFText ($im, 10, 0, 20, 35, $text_color_2, $schriftart,$spieler_name_2); ImageTTFText ($im, 10, 0, 100, 35, $text_color_2, $schriftart,"( ".$spieler_klasse_2." / ".$spieler_rasse_2." ) "); ImageTTFText ($im, 10, 0, 300, 35, $text_color_2, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 35, $text_color_2, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 35, $text_color_2, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 35, $text_color, $schriftart,$spieler_reichsrang_2." - ".$spieler_reichspunkte_2.", ".$lwrps_2); // Dritte Zeile ImageTTFText ($im, 10, 0, 20, 50, $text_color_3, $schriftart,$spieler_name_3); ImageTTFText ($im, 10, 0, 100, 50, $text_color_3, $schriftart,"( ".$spieler_klasse_3." / ".$spieler_rasse_3." ) "); ImageTTFText ($im, 10, 0, 300, 50, $text_color_3, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 50, $text_color_3, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 50, $text_color_3, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 50, $text_color, $schriftart,$spieler_reichsrang_3." - ".$spieler_reichspunkte_3.", ".$lwrps_3); // Vierte Zeile ImageTTFText ($im, 10, 0, 20, 65, $text_color_4, $schriftart,$spieler_name_4); ImageTTFText ($im, 10, 0, 100, 65, $text_color_4, $schriftart,"( ".$spieler_klasse_4." / ".$spieler_rasse_4." ) "); ImageTTFText ($im, 10, 0, 300, 65, $text_color_4, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 65, $text_color_4, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 65, $text_color_4, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 65, $text_color, $schriftart,$spieler_reichsrang_4." - ".$spieler_reichspunkte_4.", ".$lwrps_4); // Fünfte Zeile ImageTTFText ($im, 10, 0, 20, 80, $text_color_5, $schriftart,$spieler_name_5); ImageTTFText ($im, 10, 0, 100, 80, $text_color_5, $schriftart,"( ".$spieler_klasse_5." / ".$spieler_rasse_5." ) "); ImageTTFText ($im, 10, 0, 300, 80, $text_color_5, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 80, $text_color_5, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 80, $text_color_5, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 80, $text_color, $schriftart,$spieler_reichsrang_5." - ".$spieler_reichspunkte_5.", ".$lwrps_5); // Sechste Zeile ImageTTFText ($im, 10, 0, 20, 95, $text_color_6, $schriftart,$spieler_name_6); ImageTTFText ($im, 10, 0, 100, 95, $text_color_6, $schriftart,"( ".$spieler_klasse_6." / ".$spieler_rasse_6." ) "); ImageTTFText ($im, 10, 0, 300, 95, $text_color_6, $schriftart,"RR "); ImageTTFText ($im, 10, 0, 409, 95, $text_color_6, $schriftart,"RPs "); ImageTTFText ($im, 10, 0, 448, 95, $text_color_6, $schriftart,"LWRPs: "); ImageTTFText ($im, 10, 0, 325, 95, $text_color, $schriftart,$spieler_reichsrang_6." - ".$spieler_reichspunkte_6.", ".$lwrps_6); // Siebte Zeile $kills = str_replace(",","",$kills_1)+str_replace(",","",$kills_2)+str_replace(",","",$kills_3)+str_replace(",","",$kills_4)+str_replace(",","",$kills_5)+str_replace(",","",$kills_6); $lwrps = str_replace(",","",$lwrps_1)+str_replace(",","",$lwrps_2)+str_replace(",","",$lwrps_3)+str_replace(",","",$lwrps_4)+str_replace(",","",$lwrps_5)+str_replace(",","",$lwrps_6); $insgesamt = "Insgesamt: ".number_format(str_replace(".","",$spieler_reichspunkte_1)+str_replace(".","",$spieler_reichspunkte_2)+str_replace(".","",$spieler_reichspunkte_3)+str_replace(".","",$spieler_reichspunkte_4)+str_replace(".","",$spieler_reichspunkte_5)+str_replace(".","",$spieler_reichspunkte_6),0,",",".")." RPs, ".number_format($kills,0,",",".")." Kills, ".number_format($lwrps,0,",",".")." LWRPs"; ImageTTFText ($im, 10, 0, 200, 115, $text_color, $schriftart,$insgesamt); // Bild zeichnen ImagePNG ($im); } } else { echo "Schnittstelle defekt - spammt Metty zu!!"; } ?>
- Namen eventuell ändern
- Mettys Code einfügen
- Eventuell die Schriftart
Duke
EDIT: Wie gesagt der Code ist teilweise sehr unschön, gerade was die RP Einrückungen angeht, hatte um 5 Uhr dann kein Bock mehr  Müsst ihr eventuell selbst nachbessern, erlaube ich jedem - nur dann halt auch öffentlich machen ^^
|
-

Bonebreaker
- Warder
-
- Posts: 60
- Joined: Jul 23, 2006 00:00
|
by Bonebreaker » Aug 04, 2008 22:45
so hab mir das Skript mal gekrallt nen bisl optimiert und unter anderem Caching eingebaut.
um das Skript laufen zu lassen braucht ihr nen PHP Fähigen Webspace.
Dort legt ihr im www-root das Skript und arial.ttf ab. Dann müsst ihr noch ein Verzeichnis /bilder erstellen auf dem der Webserver-user auch Schreibrechte besitzt. Dann sollte das ganze laufen.
Wer das nicht hat bzw. sowas nicht aufsetzen will liegt unter http://www.covod.org/uth_daoc_sig/SigV2.php das Skript zur freien Nutzung bereit.
Einfach mit http://www.covod.org/uth_daoc_sig/SigV2 ... ;charname3 aufrufen und ihr bekommt das Bild. für mich zb. http://www.covod.org/uth_daoc_sig/SigV2 ... onnerfaust
- Code: Select all
<?php /** * Programm geschrieben von Duke - herzog-max@gmx.de * Überarbeitet von Lynisar - lynisar@covod.org * Dieses Programm erstellt ein Bild mit der Statistik von Uthgard ( Metty ) **/ function farbe ($realm,$zahl) { if($realm == 1) { if($zahl == 1) { return 255; } elseif($zahl == 2) { return 65; } elseif($zahl == 2) { return 65; } } elseif($realm == 2) { if($zahl == 1) { return 160; } elseif($zahl == 2) { return 167; } elseif($zahl == 3) { return 255; } } elseif($realm == 3) { if($zahl == 1) { return 71; } elseif($zahl == 2) { return 255; } elseif($zahl == 2) { return 84; } } else { return 255; } } // // EINSTELLUNGEN // // Variablen anfang $standard_anfang = "bilder/bild"; $standard_endung = ".jpg"; $herald_link = "http://metty.the-bart.org/other/daoc/sig.php?txt=on&name="; $herald_link2 = "http://herald.uthgard-server.net/herald.php?view=stats&p1=player&p2=Player&p3=DESC&p5=Player&p6="; $schriftart = "./arial.ttf"; // Schriftfarbe R / G / B - Integers! $farbe_rot = 255; $farbe_gruen = 255; $farbe_blau = 255; // // Charakterliste erstellen // $characterList = array(); if(isset($_GET["chars"])) { //Dieser Teil wird angesprochen wenn im URL Aufruf eine Charakterliste angegeben ist. //Die einzelnen Chraktäre werden dabei mit ; getrennt. $characterNames = explode(";",$_GET["chars"]); for($i = 0;$i < count($characterNames);$i++) { $characterList[count($characterList)]["searchName"] = $characterNames[$i]; } } else { //Hier kann die Charakterliste vordefiniert abgelegt werden. Wenn keine URL-Übergabe stattfindet werden diese Werte ausgegeben $characterList[count($characterList)]["searchName"] = "salbaer"; $characterList[count($characterList)]["searchName"] = "whiskers"; $characterList[count($characterList)]["searchName"] = "xero"; $characterList[count($characterList)]["searchName"] = "salbei"; $characterList[count($characterList)]["searchName"] = "blasphemic"; $characterList[count($characterList)]["searchName"] = "eobair"; } // // Signaturname erstellen und Caching // $bildname = $standard_anfang; for($i = 0;$i < count($characterList);$i++) { $bildname .= $characterList[$i]["searchName"]; } $bildname .= $standard_endung; //Wenn die Signatur noch nicht existiert oder veraltet ist(älter als 4 Stunden) wird sie neu erstellt if(!file_exists($bildname) || (time() - filemtime($bildname)) > 14400 || isset($_GET["debug"])) { $laengeNameMax = 0; $laengeRasseKlasseMax = 0; $laengeRPMax = 0; $laengeLWRPMax = 0; for($i = 0; $i < count($characterList);$i++) { $schnittstelle_array = file($herald_link . $characterList[$i]["searchName"]); $characterList[$i]["spieler_name"] = substr(trim($schnittstelle_array[1]), 5); $characterList[$i]["spieler_nachname"] = substr(trim($schnittstelle_array[2]), 9); $characterList[$i]["spieler_reichsrang"] = str_replace(".", "L", substr(trim($schnittstelle_array[9]), 11)); $characterList[$i]["spieler_klasse"] = substr(trim($schnittstelle_array[3]), 6); $characterList[$i]["spieler_rasse"] = substr(trim($schnittstelle_array[4]), 5); $characterList[$i]["spieler_reichspunkte"] = number_format (substr(trim($schnittstelle_array[8]), 12),0,",","."); //$characterList[$i]["text_color"] = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array[7]), 6),1), farbe(substr(trim($schnittstelle_array[7]), 6),2), farbe(substr(trim($schnittstelle_array[7]), 6),3)); $characterList[$i]["text_color"] = $schnittstelle_array[7]; $schnittstelle2 = trim(file_get_contents($herald_link2 . $characterList[$i]["searchName"])); $characterList[$i]["kills"] = substr($schnittstelle2, strpos($schnittstelle2, '<td>Kills</td><td><div align="right">')+37, strpos(substr($schnittstelle2,strpos($schnittstelle2, '<td>Kills</td><td><div align="right">'),strlen($schnittstelle2)), '</div></td></tr>')-37); $characterList[$i]["lwrps"] = substr($schnittstelle2, strpos($schnittstelle2, '<td>Last Week RPs</td><td><div align="right">')+45, strpos(substr($schnittstelle2,strpos($schnittstelle2, '<td>Last Week RPs</td><td><div align="right">'),strlen($schnittstelle2)), '</div></td></tr>')-45); $mass = imagettfbbox(10,0,$schriftart,$characterList[$i]["spieler_name"]); if($mass[2] > $laengeNameMax && $laengeNameMax = $mass[2]); $mass = imagettfbbox(10,0,$schriftart,"( ".$characterList[$i]["spieler_klasse"]." / ".$characterList[$i]["spieler_rasse"]." ) "); if($mass[2] > $laengeRasseKlasseMax && $laengeRasseKlasseMax = $mass[2]); $mass = imagettfbbox(10,0,$schriftart,$characterList[$i]["spieler_reichspunkte"]); if($mass[2] > $laengeRPMax && $laengeRPMax = $mass[2]); $mass = imagettfbbox(10,0,$schriftart,$characterList[$i]["lwrps"]); if($mass[2] > $laengeLWRPMax && $laengeLWRPMax = $mass[2]); } //for debugging if(isset($_GET["debug"])) { print_r($characterList); } else { $im = @ImageCreate (250+$laengeNameMax+$laengeRasseKlasseMax+$laengeRPMAx+$laengeLWRPMax, 50 + 15*(count($characterList)-1)); // Hintergrundfarbe $background_color = ImageColorAllocate ($im, 0, 0, 0); // Farbe $text_color = ImageColorAllocate ($im, $farbe_rot, $farbe_gruen, $farbe_blau); $y = 20; $kills = 0; $lwrps = 0; $rps = 0; for($i = 0;$i < $characterList[$i];$i++) { $characterList[$i]["text_color"] = ImageColorAllocate ($im, farbe(substr(trim($characterList[$i]["text_color"]), 6),1), farbe(substr(trim($characterList[$i]["text_color"]), 6),2), farbe(substr(trim($characterList[$i]["text_color"]), 6),3)); $mass = imagettfbbox(10,0,$schriftart,$characterList[$i]["spieler_reichspunkte"]); $abstandRP = $laengeRPMax-$mass[2]; //echo "$abstandName,$abstandRasseKlasse,$abstandRP<br>" ; ImageTTFText ($im, 10, 0, 10, $y, $characterList[$i]["text_color"], $schriftart,$characterList[$i]["spieler_name"]); ImageTTFText ($im, 10, 0, 20+$laengeNameMax, $y, $characterList[$i]["text_color"], $schriftart,"( ".$characterList[$i]["spieler_klasse"]." / ".$characterList[$i]["spieler_rasse"]." ) "); ImageTTFText ($im, 10, 0, 30+$laengeNameMax+$laengeRasseKlasseMax, $y, $characterList[$i]["text_color"], $schriftart,"RR "); ImageTTFText ($im, 10, 0, 100+$laengeNameMax+$laengeRasseKlasseMax+$laengeRPMax, $y, $characterList[$i]["text_color"], $schriftart,"RPs , LWRPs: "); ImageTTFText ($im, 10, 0, 60+$laengeNameMax+$laengeRasseKlasseMax, $y, $text_color, $schriftart,$characterList[$i]["spieler_reichsrang"]." - "); ImageTTFText ($im, 10, 0, 100+$laengeNameMax+$laengeRasseKlasseMax+$abstandRP, $y, $text_color, $schriftart,$characterList[$i]["spieler_reichspunkte"]); ImageTTFText ($im, 10, 0, 240+$laengeNameMax+$laengeRasseKlasseMax+$laengeRPMAx, $y, $text_color, $schriftart,$characterList[$i]["lwrps"]); $kills += str_replace(",","",$characterList[$i]["kills"]); $lwrps += str_replace(",","",$characterList[$i]["lwrps"]); $rps += str_replace(".","",$characterList[$i]["spieler_reichspunkte"]); $y += 15; } //die(); $insgesamt = "Insgesamt: ".number_format($rps,0,",",".")." RPs, ".number_format($kills,0,",",".")." Kills, ".number_format($lwrps,0,",",".")." LWRPs"; $mass = imagettfbbox(10,0,$schriftart,$insgesamt); $center = (250+$laengeNameMax+$laengeRasseKlasseMax+$laengeRPMAx+$laengeLWRPMax-$mass[2])/2; ImageTTFText ($im, 10, 0, $center, ($y+5), $text_color, $schriftart,$insgesamt); header ("Content-type: image/png"); ImagePNG ($im,$bildname); echo file_get_contents($bildname); imagedestroy($im); } } else { header ("Content-type: image/png"); echo file_get_contents($bildname); } ?>
Last edited by Bonebreaker on Aug 05, 2008 08:34, edited 2 times in total.
<img src="http://www.covod.org/uth_daoc_sig/SigV2.php?chars=Lynisar;Guthand;Salia;Zmirir;Donnerfaust">
|
-

salbei
- Phoenix Knight
-
- Posts: 1467
- Joined: Oct 27, 2006 00:00
-
|
by salbei » Aug 23, 2008 17:59
naja hab was neues gebastelt.
->
<img src="http://salbei.spacequadrat.de/htdocs/eobair_random_skaliert.php">
bräuchte noch hilfe bezüglich des cachens. irgendwie bekomm ich den befehl nicht zum laufen. so wird halt unnötig jedesmal die lwrps aus dem herald ausgelesen anstatt von der pre-cached schnittstelle.
kills und gesammt rps wurden bei der 1 char version deshalb gestrichen um den herald nicht unnötig zu belasten.
wie gehabt müssen standort von bildern + fonts manuel nachgetragen werden. spielername , gilde + level müssten selbstverständlich auchnoch überarbeitet werden.
paar kleinigkeiten:
-ist an mettys schnittstelle gebunden -> wenn caching nachgetragen wird sollte es passen.
bis auf die lwrps die halt direkt aus dem herald ausgelesen werden (wär nett wenn metty das noch reibasteln könnte)
-hab ein sich wechselndes hintergrundbild eingebaut das nach belieben erweiterbar ist.
-hintergrundbild wird auf 610x130 skaliert (gezerrt) , kann selbstverständlich angepasst werden.
-das layout wurde angepasst (lvl / gilde wird nicht ausgelesen -> faulheit)
-achtung: nochmaliges cachen fehlt in dieser version noch.
bin kein profi - gibt sicher einiges was man eleganter hätte machen können.
- Code: Select all
<?php
/** * Programm geschrieben von Duke - herzog-max@gmx.de * angepasst von Salbei (drogendeal@hotmail.com) * einige schnipsel von http://hoffmann.bplaced.net verwendet * Dieses Programm erstellt ein Bild mit der Statistik von Uthgard ( Metty ) **/
//variable $name1 = "eobair"; //charname $standard_anfang = "bild"; $standard_endung = ".JPG"; $herald_link = "http://metty.the-bart.org/other/daoc/sig.php?txt=on&name="; $herald_link2 = "http://herald.uthgard-server.net/herald.php?view=stats&p1=player&p2=Player&p3=DESC&p5=Player&p6="; $schriftart = "comic.ttf"; //schriftart1 - main $schriftart2 ="Sophie.ttf"; //schriftart2 - sub
//finger weg ! $farbe_rot = 255; $farbe_gruen = 255; $farbe_blau = 255; $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'];
//bilder für random hintergrund
$hgBild = array( 'http://salbei.spacequadrat.de/htdocs/eobair.JPG', 'http://salbei.spacequadrat.de/htdocs/eobair2.JPG', 'http://salbei.spacequadrat.de/htdocs/eobair3.JPG', ); $rhgbild = ($hgBild[rand(0,count($hgBild)-1)]);
//fehler auswerfen error_reporting(E_ALL);
//schnittstellen $schnittstelle1 = file_get_contents($herald_link . $name1);
if(!empty($schnittstelle1)) {
// Die Stats in einen Array splitten $schnittstelle_array1 = explode("\n", $schnittstelle1);
/** * 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 * **/ // realm farben - schrift function farbe ($realm,$zahl) { if($realm == 1) { if($zahl == 1) { return 255; } elseif($zahl == 2) { return 65; } elseif($zahl == 2) { return 65; } } elseif($realm == 2) { if($zahl == 1) { return 160; } elseif($zahl == 2) { return 167; } elseif($zahl == 3) { return 255; } } elseif($realm == 3) { if($zahl == 1) { return 71; } elseif($zahl == 2) { return 255; } elseif($zahl == 2) { return 84; } } else { return 255; }
}
// hintergrundbild erstellen if(file_exists($link)) { //im if //viel von http://hoffmann.bplaced.net/hilfe.php?me=php&in=bildskalieren geklaut und angepasst
# gd-version ermitteln fuer jegliche php-version # ab php 4.3 geht es einfacher mit gd_info # dazu: puffer einschalten ob_start(); # teil der phpinfo laden phpinfo(8); $info=ob_get_contents(); # puffer loeschen und beenden ob_end_clean(); # reststring hinter gd version finden $info=stristr($info, 'gd version'); # suche nach dezimalzahl preg_match('/\d/', $info, $gd); # da steht sie jetzt, die gdversion: $gdversion=$gd[0]; # info und gd loeschen unset ($info); unset ($gd);
# bildgroesse einlesen oder selbst festlegen: $horizontal=610; if(isset($_GET['x'])) { $h=$_GET['x']; # Groesse begrenzen: if (($h >= 20) AND ($h <=1000)) { $horizontal=$h; } } $vertikal = 130; if(isset($_GET['y'])) { $v=$_GET['y']; # Groesse begrenzen: if (($v >= 20) AND ($v <=1000)) { $vertikal=$v; } } # Der Modus legt fest, ob das Bild verzerrt # werden darf oder nicht. 1 ist unverzerrt. # Da gibt es dann unter Umstaenden einen # nicht besonders huebschen Rand, wenn das # Verhaeltnis von Hoehe zu Breite nicht passt. # Mit Modus 2 wird weder verzerrt noch # bleibt ein Rand, dafuer wird die vorgegebene # Bildgroesse ueberschrieben.
$mod = 0; if(isset($_GET['modus'])) { $modus=$_GET['modus']; # eingabe ueberpruefen: if (($modus == 0) OR ($modus ==1) OR ($modus ==2)) { $mod=$modus; } }
# Fuer Modus=2 den Anteil festlegen. # Das ist demzufolge der Modus des # stufenlosen unverzerrten Vergroesserns $anteil = 1.0; if(isset($_GET['ant'])) { $ant=$_GET['ant']; # eingabe ueberpruefen: if (($ant >= 0.1) AND ($ant <=10.0)) { $anteil=$ant; } }
# Wir laden ein Bild von der Festplatte. # Im array imininfo stehen interessante Informationen # ueber das Bild. Im Element 3 steht auch noch # drin, um welchen Bildtyp es sich handelt. // modifiziert $imininfo = GetImageSize ($rhgbild); $x2=$imininfo[0]; $y2=$imininfo[1]; $imin = ImageCreateFromJPEG ($rhgbild);
if ($mod==2) { $horizontal=round($x2*$anteil); $vertikal=round($y2*$anteil); $mod=0; }
# Bild wenn moeglich im Truecolorformat erzeugen. # Das muss man bei neuerem php/gd nehmen, # um brauchbar Bilder zu skalieren, # wie auch einige hier verwendete # Funktionen. Mit verwandten Funktionen # funktioniert es aber aehnlich bei # aelterem php/gd, siehe unten
if ($gdversion >=2) { $im = imagecreatetruecolor($horizontal, $vertikal); } else { $im = imagecreate($horizontal, $vertikal); }
//"normale" werte $x0=0; $y0=0; $xw=$horizontal; $yw=$vertikal;
//falls ohne verzerrung mit rand if ($mod==1){
$skalh=$horizontal/$x2; $skalv=$vertikal/$y2;
if ($skalh < $skalv) {
$y0=round(($vertikal-$y2*$skalh)/2); $x0=0; $xw=$horizontal; $yw=round($y2*$skalh);
} elseif ($skalh > $skalv) {
$x0=round(($horizontal-$x2*$skalv)/2); $y0=0; $xw=round($x2*$skalv); $yw=$vertikal;
}
// falls rand , farbe anpassen
$ci = imagecolorat($imin, 1, $y2-1); $ct = imagecolorsforindex($imin, $ci); $cs = ImageColorAllocate($im,$ct["red"],$ct["green"],$ct["blue"]);
imagefill ($im, 1, 1, $cs); }
# skalieren:
if ($gdversion >=2) { imagecopyresampled ($im, $imin, $x0, $y0, 0, 0, $xw, $yw, $x2, $y2); } else { imagecopyresized ($im, $imin, $x0, $y0, 0, 0, $xw, $yw, $x2, $y2); }
# header senden Header("Content-type: image/png");
//nach if $stop = false; } else{ //bild nicht vorhanden - blanker hintergrund); header ("Content-type: image/png"); $im = @ImageCreate (610, 130); // Hintergrundfarbe $background_color = ImageColorAllocate ($im, 0, 0, 0); $stop = false; }
// schnittstellen2 $spieler_name_1 = substr(trim($schnittstelle_array1[1]), 5); $spieler_nachname_1 = substr(trim($schnittstelle_array1[2]), 9); $spieler_reichsrang_1 = str_replace(".", "L", substr(trim($schnittstelle_array1[9]), 11)); $spieler_klasse_1 = substr(trim($schnittstelle_array1[3]), 6); $spieler_rasse_1 = substr(trim($schnittstelle_array1[4]), 5); $spieler_reichspunkte_1 = number_format (substr(trim($schnittstelle_array1[8]), 12),0,",",".")." "; $text_color_1 = ImageColorAllocate ($im, farbe(substr(trim($schnittstelle_array1[7]), 6),1), farbe(substr(trim($schnittstelle_array1[7]), 6),2), farbe(substr(trim($schnittstelle_array1[7]), 6),3)); $schnittstelle2_1 = trim(file_get_contents($herald_link2 . $name1)); $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);
if($stop!=true) {
// schrift aufs bild setzen
// textfarbe $text_color = ImageColorAllocate ($im, $farbe_rot, $farbe_gruen, $farbe_blau);
// erste spalte ImageTTFText ($im, 14, 0, 15, 35, $text_color_1, $schriftart,"".$spieler_name_1." ".$spieler_nachname_1.""); ImageTTFText ($im, 12, 0, 15, 60, $text_color_1, $schriftart,"<Unique>"); //wird nicht ausgelesen ImageTTFText ($im, 10, 0, 15, 85, $text_color_1, $schriftart,"Lvl 50 ".$spieler_rasse_1." ".$spieler_klasse_1."");//lvl wird nicht ausgelesen ImageTTFText ($im, 10, 0, 15, 100, $text_color_1, $schriftart,"Rps: $spieler_reichspunkte_1<RR $spieler_reichsrang_1>"); ImageTTFText ($im, 10, 0, 15, 115, $text_color_1, $schriftart,"Last Week Rps: $lwrps_1");
// zweite spalte ImageTTFText ($im, 14, 0, 400, 115, $text_color_1, $schriftart2,"Where is your saviour now ?"); ImageTTFText ($im, 5, 0, 545, 125, $text_color, $schriftart,"made by Salbei");
// bild fertigstellen ImagePNG ($im); } } else { echo "Schnittstelle defekt - spammt Metty zu!!"; } ?>
|