Die Stämme - Forum
 

Zurück   Die Stämme - Forum > Spielerprojekte > Allgemein

Antwort
 
Themen-Optionen Thema durchsuchen
Stev47
 
Registriert seit: 14.10.2007
  Alt #1   14.10.2007, 17:03   Nach oben Mit Zitat antworten
Als fortgeschrittener Programmierer in PHP und genervter Moderator im Forum meines Stammes, nun ein Tool, um Reservierungen zu formatieren.

Es verwendet den Gast-Zugang zu DieStämme, um an die Daten, wie Ally-Tag, Ally-Punkte, etc. zu kommen

*edit*

Die Finale Version der Dorfreservierung, die auf meinen Grundlagen aufbaut und von Alexander der Große bearbeitet und gehostet wurde/wird:

http://ds.landk.de/ds-reserve/

Eine Version von Alexander der Große, um ganze Spieler zu reservieren:

http://ds.landk.de/ds-reserve/all-villages/

PS: Dank an Alexander der Große für diese tolle Umsetzung!


mfg, stev47

Geändert von Stev47 (16.12.2007 um 18:16 Uhr)
Stev47 ist offline  
bmaker
 
Benutzerbild von bmaker
 
Registriert seit: 17.04.2006
Ort: Hessen / ~Darmstadt
  Alt #2   14.10.2007, 19:07   Nach oben Mit Zitat antworten
Ganz nett.
Ich fände es praktisch, wenn auf der Seite selbst nochmal steht, von wo bis wo man es kopieren muss. Dann kapiert es hoffentlich jeder.
Naja, und für die anderen Welten sollte es natürlich ebenfalls verfügbar sein. Aber daran arbeitest du vllt. ja schon.

MfG, bmaker
__________________
.:: DS NoPaste mit Angriffsplaner + Farmmanager :: DS OBST :: DS Postcheck ::.
Zitat von glotzer (06.01.2008): "ich machs dir gerne(oder find wen der macht), aber nur wenn du mir name und adresse nenst wo ich die rechnung hinschicken kann und ich arbeite nur gegen vorkasse"
bmaker ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #3   14.10.2007, 19:43   Nach oben Mit Zitat antworten
danke, erstemal, dass du es dir angeschaut hast.

Ich denke, ich werde mich demnächst mal an die anderen Welten setzen.

Ich habs leider nicht so ganz mit großen tutorials mit bildern und so, aber ich schau mal, ob ich mir die zeit nehme


PS: Hab es erst mit DS-Plus gemacht, aber realisiert, dass die Suchfunktion in der RAngliste nicht ganz funktioniert und gleich darauf ne email an die geschickt , naja, über diestämme geht es auch schneller

mfg, stev47
Stev47 ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #4   21.10.2007, 19:29   Nach oben Mit Zitat antworten
Da ich die Programmierung für dieses Tool vorläufig eingestellt habe, hier der Quellcode (ich weiß, er ist unordentlich):

index.php :

PHP-Code:
<?php
    $world 
"de10";
    
$host[0] = $world ".die-staemme.de";
    
$host[1] = $world ".die-staemme.de";
    
$path[0] = "/guest.php?screen=ranking&mode=player&search";
    
$path[1] = "/guest.php?screen=ranking&mode=ally&search";
    
$referer[0] = "http://de10.die-staemme.de/guest.php?screen=ranking&mode=player";
    
$referer[1] = "http://de10.die-staemme.de/guest.php?screen=ranking&mode=ally";

    include 
"functions.php";
    
    if(
$_SERVER['REQUEST_METHOD'] == 'POST'){
        
$org stripslashes($_POST['textarea']);
        
preg_match('/^(Dorf )(.+)(\r\n)/m'$org$found);
        if (!
preg_match('/^('.preg_quote($found[2],'/').')(\r\n)/m'$org)) die ("Fehler");
        
$village_name $found[2];
        
        
preg_match('/Koordinaten:\t([0-9]+\|[0-9]+)\r/'$org$found);
        
$village_koords $found[1];
        
preg_match('/Punkte:\t([0-9\.]+)\r/'$org$found);
        
$village_points $found[1];
        
preg_match('/Spieler:\t(.*)\r/'$org$found);
        
$player_name $found[1];
        
        if (
$player_name){
            
$utf8_player_name iconv("ISO-8859-1""UTF-8"$player_name);
            
$post_data "name=" $utf8_player_name;
            
$post_response PostToHost($host[0], $path[0], $referer[0], $post_data);
            
preg_match('='.preg_quote($utf8_player_name,'/').'.*<a[^>]*>(.*)</a[^>]*>.*<td>(.+)</td>=sU'$post_response$found);
            
$utf8_ally_tag $found[1];
            
$ally_tag iconv("UTF-8""ISO-8859-1"$utf8_ally_tag);
            
$player_points strip_tags($found[2]);
        }
        if (
$ally_tag){
            
$post_data     "name=" $utf8_ally_tag;
            
$post_response PostToHost($host[1], $path[1], $referer[1], $post_data);
            
preg_match('='.preg_quote($utf8_ally_tag,'/').'(?:.*td.*){2}<td>(.+)</td>.*<td>(.+)</td>=sU'$post_response$found);
            
$ally_points strip_tags($found[1]);
            
$ally_member $found[2];
        }

        if (
$village_name && $village_koords && $village_points){
            
$bbcode "[u][size=13][village](".$village_koords.")[/village][/size][/u]\r\n\r\n[b][i][u]Dorfdetails:[/u][/i][/b]\r\n\r\nDorf: [village](".$village_koords.")[/village]\r\nPunkte: [b]"$village_points."[/b]\r\n\r\n[b][i][u]Spielerdetails:[/u][/i][/b]\r\n\r\n";
            if (
$player_name){
                
$bbcode .= "Spieler: [player]" $player_name "[/player]\r\n";
                if (
$player_points$bbcode .= "Punkte: [b]"$player_points."[/b]";
                if (
$ally_tag){
                    
$bbcode .= "\r\n\r\n[b][i][u]Stammesdetails:[/u][/i][/b]\r\n\r\nStamm: [ally]" $ally_tag "[/ally]\r\nPunkte: [b]".$ally_points."[/b]\r\nMitglieder: [b]" $ally_member "[/b]\r\n";
                }
            }else{
                
$bbcode .= '[color=grey][size=10][b][i]VERLASSEN[/i][/b][/size][/color]';
            }
            
$title $village_name ' (' $village_koords ')';
        }
    }
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){ ?>
        <tr>
            <td><input type="text" style="width:100%" value="<?php echo $title?>"><hr /></td>
        </tr>
        <?php ?>
        <tr>
            <td><textarea name="textarea" style="height:300px; width:100%"><?php echo $bbcode?></textarea></td>
        </tr>
        <tr>
            <td><input type="submit" name="Submit" value="Dorf-Reservierung erstellen!"></td>
        </tr>
    </table>
</form>
functions.php :

PHP-Code:
<?php
    
function PostToHost($host$path$referer$data_to_send) {
        
$fp fsockopen($host80);
        
fputs($fp"POST $path HTTP/1.1\r\n");
        
fputs($fp"Host: $host\r\n");
        
fputs($fp"Referer: $referer\r\n");
        
fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
        
fputs($fp"Connection: close\r\n\r\n");
        
fputs($fp$data_to_send);
        while(!
feof($fp)) {
            
$res .= fgets($fp128);
        }
        
fclose($fp);
        return 
$res;
    }
?>
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?

Geändert von Stev47 (26.10.2007 um 19:40 Uhr)
Stev47 ist offline  
Chasing Devil
 
Benutzerbild von Chasing Devil
 
Registriert seit: 19.08.2007
Ort: Hannover
  Alt #5   26.10.2007, 11:54   Nach oben Mit Zitat antworten
Wieso geht das nur auf W10? Da es nur BB-Codes sind geht es doch überall!
Chasing Devil ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #6   26.10.2007, 12:27   Nach oben Mit Zitat antworten
Weil er auf den Stämme-Server zugreift um an den Ally-Tag, den Spieler-Punkten, den Ally-Punkten und den Allymembern zu kommen und die auch im Bericht mit BB-Codes zu integrieren. Wenn man normal die Dorfbeschreibung kopiert steht da nähmlich nicht der Ally-Tag oder eine von den anderen bereits genannten Informationen drinnen, deshalb muss das skript erst über den Gastzugang des Stämmeservers atomatisch die infos holen

Im Skript muss man in der Theorie nur die variable $world ändern und es funktioniert auch für die anderen Welten, soweit es in denen nicht anders aufgebaut ist.

mfg, stev47
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?
Stev47 ist offline  
dr-awesome
 
Registriert seit: 12.02.2006
  Alt #7   26.10.2007, 16:30   Nach oben Mit Zitat antworten
müsste man net world und referer ändern? weil der referer greifft doch auf w10 auch zu oder irre ich mich?
__________________
Rot wie Blut, weiss wie Schnee - Wir sind die Fans vom RWE

Rot-Weiß Erfurt 4 ever!
dr-awesome ist offline  
sadan_13
 
Benutzerbild von sadan_13
 
Registriert seit: 11.03.2007
  Alt #8   26.10.2007, 16:53   Nach oben Mit Zitat antworten
eigendlich schon...

aber bin nicht gut in php also kann ich nichts genaueres sagen aber referer müsste man eigendlich auch ändern
__________________
GFX-Dose - Imagedose - NoPaste - TwForums
R.I.P DS ... Keine Macht der Diktatur
sadan_13 ist offline  
jumpa
 
Benutzerbild von jumpa
 
Registriert seit: 16.08.2006
  Alt #9   26.10.2007, 17:14   Nach oben Mit Zitat antworten
Normalerweise dürfte das script gar nicht mehr funktionieren!
Die Adressen ändern sich dauernd.

Ich werd gleich mal ein neues Script posten ....


PHP-Code:
<?php    

    
//World, example:
    //World 10 = ds10
    //World 2 = ds2
    
    
$world "ds10";
    
    
//for tribalwars.net, this must be http://www.tribalwars.net/backend/get_servers.php
    
$file "http://www.die-staemme.de/backend/get_servers.php";
    
    
//get the server address
    
function get_serverdomain($servername$file) {
        
$file file_get_contents($file);
        
$servers unserialize($file);
        
$domain $servers[$servername];
        
        if (empty(
$domain)) {
            return 
false;
        }
        else
        {
            return 
$domain;
        }
    }
    
    
//function by Stev47
    
function PostToHost($host$path$referer$data_to_send) {
        
$fp fsockopen($host80);
        
fputs($fp"POST $path HTTP/1.1\r\n");
        
fputs($fp"Host: $host\r\n");
        
fputs($fp"Referer: $referer\r\n");
        
fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
        
fputs($fp"Connection: close\r\n\r\n");
        
fputs($fp$data_to_send);
        while(!
feof($fp)) {
            
$res .= fgets($fp128);
        }
        
fclose($fp);
        return 
$res;
    }
    
    
$host get_serverdomain($world$file);
    
    
    
//Script by Stev47
    
$path[0] = "/guest.php?screen=ranking&mode=player&search";
    
$path[1] = "/guest.php?screen=ranking&mode=ally&search";
    
$referer[0] = $host."/guest.php?screen=ranking&mode=player";
    
$referer[1] = $host."/guest.php?screen=ranking&mode=ally"
    
    if(
$_SERVER['REQUEST_METHOD'] == 'POST'){
        
$org stripslashes($_POST['textarea']);
        
preg_match('/^(Dorf )(.+)(\r\n)/m'$org$found);
        if (!
preg_match('/^('.preg_quote($found[2],'/').')(\r\n)/m'$org)) die ("Fehler");
        
$village_name $found[2];
        
        
preg_match('/Koordinaten:\t([0-9]+\|[0-9]+)\r/'$org$found);
        
$village_koords $found[1];
        
preg_match('/Punkte:\t([0-9\.]+)\r/'$org$found);
        
$village_points $found[1];
        
preg_match('/Spieler:\t(.*)\r/'$org$found);
        
$player_name $found[1];
        
        if (
$player_name){
            
$utf8_player_name iconv("ISO-8859-1""UTF-8"$player_name);
            
$post_data "name=" $utf8_player_name;
            
$post_response PostToHost(substr($host,7), $path[0], $referer[0], $post_data);
            
preg_match('='.preg_quote($utf8_player_name,'/').'.*<a[^>]*>(.*)</a[^>]*>.*<td>(.+)</td>=sU'$post_response$found);
            
$utf8_ally_tag $found[1];
            
$ally_tag iconv("UTF-8""ISO-8859-1"$utf8_ally_tag);
            
$player_points strip_tags($found[2]);
        }
        if (
$ally_tag){
            
$post_data     "name=" $utf8_ally_tag;
            
$post_response PostToHost(substr($host,7), $path[1], $referer[1], $post_data);
            
preg_match('='.preg_quote($utf8_ally_tag,'/').'(?:.*td.*){2}<td>(.+)</td>.*<td>(.+)</td>=sU'$post_response$found);
            
$ally_points strip_tags($found[1]);
            
$ally_member $found[2];
        }

        if (
$village_name && $village_koords && $village_points){
            
$bbcode "[u][size=13][village](".$village_koords.")[/village][/size][/u]\r\n\r\n[b][i][u]Dorfdetails:[/u][/i][/b]\r\n\r\nDorf: [village](".$village_koords.")[/village]\r\nPunkte: [b]"$village_points."[/b]\r\n\r\n[b][i][u]Spielerdetails:[/u][/i][/b]\r\n\r\n";
            if (
$player_name){
                
$bbcode .= "Spieler: [player]" $player_name "[/player]\r\n";
                if (
$player_points$bbcode .= "Punkte: [b]"$player_points."[/b]";
                if (
$ally_tag){
                    
$bbcode .= "\r\n\r\n[b][i][u]Stammesdetails:[/u][/i][/b]\r\n\r\nStamm: [ally]" $ally_tag "[/ally]\r\nPunkte: [b]".$ally_points."[/b]\r\nMitglieder: [b]" $ally_member "[/b]\r\n";
                }
            }else{
                
$bbcode .= '[color=grey][size=10][b][i]VERLASSEN[/i][/b][/size][/color]';
            }
            
$title $village_name ' (' $village_koords ')';
        }
    }
?>
<form name="form1" method="post" action="<?=$PHP_SELF?>">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <? if($_SERVER['REQUEST_METHOD'] == 'POST'){ ?>
        <tr>
            <td><input type="text" style="width:100%" value="<?php echo $title?>"><hr /></td>
        </tr>
        <? ?>
        <tr>
            <td><textarea name="textarea" style="height:300px; width:100%"><?php echo $bbcode?></textarea></td>
        </tr>
        <tr>
            <td><input type="submit" name="Submit" value="Dorf-Reservierung erstellen!"></td>
        </tr>
    </table>
</form>
Dieses Script habe ich dahingehend ergänzt, das es die Server Domain direkt von DS holt.

http://www.die-staemme.de/backend/get_servers.php wurde extra dafür erstellt, beinhaltet alle Server.

Geändert von jumpa (26.10.2007 um 20:14 Uhr)
jumpa ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #10   26.10.2007, 17:23   Nach oben Mit Zitat antworten
ok, hast recht mit dem referer, aber der dient nur, um dem stämme server zu sagen, woher der seitenaufruf kommt, also nicht umbedingt notwendig.

Mit dem referer lasse ich es eben nur aussehen, als ob ein normaler user die seiten aufruft und nicht ein gezieltes, automatisches skript

@jumpa: Doch, das skript funktioniert (noch). bisher haben sich bei mir die adressen nur einmal geändert und sobald es ein weiteres mal passieren soltle, dann werde ich das hier schnellst möglich ändern.

mfg, stev47
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?
Stev47 ist offline  
sadan_13
 
Benutzerbild von sadan_13
 
Registriert seit: 11.03.2007
  Alt #11   26.10.2007, 19:17   Nach oben Mit Zitat antworten
bin och zu doof oder wa??
bei mir funktioniert es irgendwie nicht...
hätte es auf w12 angepasst aber es will nicht funktionieren genau:
erstens sieht das ganze so aus: (Bild anklicken)

is ja schön und gut einfach mal rauslöschen aber wenn ich das auf einsenden klicke kommt "Seite nicht gefunden" kann mir jeand helfen??
(mit dem script von jumpa...)
__________________
GFX-Dose - Imagedose - NoPaste - TwForums
R.I.P DS ... Keine Macht der Diktatur
sadan_13 ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #12   26.10.2007, 19:44   Nach oben Mit Zitat antworten
Zitat:
Zitat von sadan_13 Beitrag anzeigen
bin och zu doof oder wa??
bei mir funktioniert es irgendwie nicht...
hätte es auf w12 angepasst aber es will nicht funktionieren genau:
erstens sieht das ganze so aus: (Bild anklicken)

is ja schön und gut einfach mal rauslöschen aber wenn ich das auf einsenden klicke kommt "Seite nicht gefunden" kann mir jeand helfen??
(mit dem script von jumpa...)
sry, das liegt an mir, ich habe nicht standartkonform programmiert ...

probiers nochmal, es sollte funktionieren. Ich habe den code von oben nochmal überarbeitet


@jumpa: danke für das skript ich wusste nicht, dass es diese seite gab, also nochmal thx!


mfg, stev47
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?
Stev47 ist offline  
sadan_13
 
Benutzerbild von sadan_13
 
Registriert seit: 11.03.2007
  Alt #13   26.10.2007, 19:57   Nach oben Mit Zitat antworten
eins finde ich komisch...
ich habe deine änderungen in jumpas script porbiert aber es geht nicht:
Zitat:
Warning: feof(): supplied argument is not a valid stream resource in /srv/www/httpd/phost/s/com/pytalhost/sadan/web/test.php on line 37

Warning: fgets(): supplied argument is not a valid stream resource in /srv/www/httpd/phost/s/com/pytalhost/sadan/web/test.php on line 38
bekomm ich da nur (und das son paar 100 mal^^)
aber bei dir funktioniert alles nun einwandfrei...
könntesd mir eventuell nochmal sagen was du alles geändert hasd (vieleicht hab ich ja was vergessen)
achja hier noch die beiden zeilen:
PHP-Code:
        while(!feof($fp)) {
            
$res .= fgets($fp128);
        } 
__________________
GFX-Dose - Imagedose - NoPaste - TwForums
R.I.P DS ... Keine Macht der Diktatur
sadan_13 ist offline  
jumpa
 
Benutzerbild von jumpa
 
Registriert seit: 16.08.2006
  Alt #14   26.10.2007, 20:07   Nach oben Mit Zitat antworten
So ich habs bei mir jetzt auch geändert.

Kann sein das im meinem Script noch Fehler sind, habs nicht ausprobiert.

Host ist/war falsch bei mir!

Geändert von jumpa (26.10.2007 um 20:13 Uhr)
jumpa ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #15   26.10.2007, 20:08   Nach oben Mit Zitat antworten
wahrscheinlich hat PHP nicht die rechte auf externe Internetseiten zuzugreifen. Die funktion stimmt nämlich so, wie sie ist.

Überprüf mal die Rechte von deinem PHP-skript. Es waren ja schon immerhin shortcuts nicht erlaubt ...

mfg, stev47
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?
Stev47 ist offline  
jumpa
 
Benutzerbild von jumpa
 
Registriert seit: 16.08.2006
  Alt #16   26.10.2007, 20:14   Nach oben Mit Zitat antworten
Ich hatte ein Fehler in meinem script, sollte nun funktionieren.
jumpa ist offline  
Alexander der Große III
 
Benutzerbild von Alexander der Große III
 
Registriert seit: 18.10.2005
Ort: @Home
  Alt #17   26.10.2007, 20:18   Nach oben Mit Zitat antworten
So, ich habe es jetzt mal für alle Server umgesetzt: http://ds.agrafix.net/ds-reserve/

Der SourceCode folgt.

liebe Grüße
__________________

Geändert von Alexander der Große III (19.05.2008 um 21:53 Uhr)
Alexander der Große III ist offline  
Stev47
 
Registriert seit: 14.10.2007
  Alt #18   26.10.2007, 20:42   Nach oben Mit Zitat antworten
Zitat:
Entwicklung: Stef47 & Alexander der Große III
Bis auf den Schönheitsfehler in meinem Namen, gefällt mir die Seite

mfg, Stev47
__________________
Zitat:
Zitat von Rotteben
wie wärs wenn wir uns mit allen verbünden?
dann haben wir keine Gegner mehr und können schmusen und kuschelln, und nebenbei noch ein paar verlassenen 116 punkte Dörfer aufpeppeln?
Stev47 ist offline  
Alexander der Große III
 
Benutzerbild von Alexander der Große III
 
Registriert seit: 18.10.2005
Ort: @Home
  Alt #19   26.10.2007, 20:52   Nach oben Mit Zitat antworten
Zitat:
Zitat von Stev47 Beitrag anzeigen
Bis auf den Schönheitsfehler in meinem Namen, gefällt mir die Seite

mfg, Stev47
*peinlich* :p

Im SourceCode ist es richtig ;)

PHP-Code:
/**
 * DS Reserve
 *
 * @author Agrafix
 * @author Stev47
 */ 
__________________
Alexander der Große III ist offline  
jumpa
 
Benutzerbild von jumpa
 
Registriert seit: 16.08.2006
  Alt #20   27.10.2007, 09:00   Nach oben Mit Zitat antworten
Könntest du die Server vllt. als DropDown liste machen?
jumpa ist offline  
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.