anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Fr 19 Apr, 2024 09:46

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Weisser Screen bei Special
BeitragVerfasst: Fr 24 Sep, 2004 10:14 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Do 12 Aug, 2004 08:36
Beiträge: 46
Ich habe folgendes Problem:

Wenn ich manche Specials einbaue und dann das Special aufrufe (Admin direkt, oder als User Zufall) erhalte ich zunächste einen komplett weissen Screen. Erst nach Aktualisierung wird die Seite wieder normal geladen. Wenn ich dann im Special die Navs benutze kommt auch jedesmal zunächst der weisse Screen und nach Aktualisierung geht es dann weiter.

Das geht so lange, bis das Special beendet ist, dann geht alles wieder normal weiter. Das taucht aber nicht bei allen auf, sondern nur bei einigen wenigen.

Bei manche Skripts hilft es dann, wenn ich sie im IE öffne (ich nutze sonst den Firefox), einmal durchlaufen lasse, dann taucht das Problem nicht mehr auf. Manche Skripte aber haben dauerhaft dieses Problem und das ist nicht wirklich schön ;)

Im Code sind eigentlich keine Fehler zu finden und es sind auch keine Leerzeichen am Ende des Skriptes... Es sind auch keine unbekannten Skripte, sondern manchmal auch vielen Servern ohne Probleme verwendete Skripte.

Ist da was bekannt, oder habe ich irgendeine spezielle Konfiguration bei meinem Provider, die dies verursacht? Gibt es (am besten) eine Problemlösung?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 10:34 
Psote mal den Code des scriptes....


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 10:38 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Do 12 Aug, 2004 08:36
Beiträge: 46
Das ist jetzt ein Skript, dass dauerhaft die weissen Screens hervorruft (ich hoffe, der Autor ist einverstanden, dass ich es poste ;)

Zitat:
<?

// Original and idea of gargamel @ http://www.rabenthal.de

// debug by <deZent>



if (!isset($session)) exit();



$needed = 1; // im wald benötigte helfer //<deZent>



if ($_GET[op]==""){

output("`nDu folgst dem Waldweg und bist besonders wachsam, weil Du in einem

düsteren Abschnitt des Waldes gelandet bist. Dann passiert es:`n

Hinter einer Wegbiegung wirst Du plötzlich von Dieben umringt!`n`n

`%Die Typen sehen wirklich furchterregend aus und fordern mit gezogenen Waffen

Dein Gold.`n Da sie heute ihren sozialen Tag haben würden sie sich mit der Hälfte deines Goldes zufrieden geben...`0`nBleibt Dir eine andere Wahl?`0");

//abschluss intro

addnav("Gold herausgeben","forest.php?op=give");

addnav("Kämpfen","forest.php?op=fight");

addnav("Nach Hilfe rufen!","forest.php?op=help");



$session[user][specialinc] = "moocher.php";

}

else if ($_GET[op]=="give"){ // Gold geben

$gold = $session[user][gold];

if ( $session[user][gold] > 0 ) {

output("`nAngesichts der Übermacht der Diebe entschließt Du Dich, Dein Gold

herauszugeben.`nDich schmerzt der `QVerlust von ".round($gold/2)." Gold`0, aber noch schlimmer

wäre der Verlust Deines Lebens gewesen.`0");

$session[user][gold]=round(($session[user][gold])/2);

}

else { // aber nix dabei

output("`nDu erklärst dem Anführer, dass Du zahlen willst.`nAls Du ihm jedoch

Deine leere Geldbörse hinhälst, findet er das gar nicht komisch.`n`QEr gibt seiner

wilden Truppe ein Zeichen.... `0Die ganze Meute prügelt nun auf Dich ein und sie

lassen erst von Dir ab, als Du schon tot scheinst.`n`n

`9Du bist aber gerade noch mit dem Leben davon gekommen und verlierst einen

permanenten Lebenspunkt.`0");

$session[user][maxhitpoints]-=1;

$session[user][hitpoints]=1;

}

$session[user][specialinc] = "";

}

else if ($_GET[op]=="fight"){ // kämpfen

output("`n`%Du entschließt Dich zu kämpfen und ziehst blitzschnell Deine Waffe.`n`n`0");

$hp = $session[user][hitpoints] * 2;

$dam = e_rand(1,$hp);

if ( $session[user][hitpoints] > $dam ) { //sieg

output("In einem unübersichtlichen Getümmel wirst Du hart getroffen, aber Du

führst Deine Waffe auch erfolgreich. Nach einer ganzen Weile steht fest:`n`n

`@Du hast gewonnen!`n`n

Schwer gezeichnet feierst Du Deinen Sieg. Es dauert sicherlich eine Weile bis du dich von den Strapazen erholt hast.`n Wenigstens

hast Du einiges an Erfahrung gewonnen.`0");

$session[user][hitpoints]-= round(($dam/2)-1);

$session[user][turns]-=round(($session[user][turns])/3);

$session[user][experience]+= round($session[user][experience]*0.07);

}

else { //niederlage

output("Die Entscheidung, gegen die Übermacht der Diebe zu kämpfen, war sicher

nicht Deine Beste! `QDu hast einfach keine Chance!`n`n

`6Nach einem kurzen, heftigen Kampf verabschiedest du Dich vom Leben.`n`n

Für Deinen Mut wird Dich jedoch Ramius belohnen.`0");

$session[user][alive]=false;

$session[user][gold]=0;

if ($session[user][gems]>3){ //<deZent>

$session[user][gems]-=3;

} //</deZent>

$session[user][hitpoints]=0;

$session[user][gravefights]+=e_rand(2,4);

addnews("`^".$session[user][name]."`# hatte keine Chance im Kampf gegen die Diebesbande.");

addnav("Tägliche News","news.php");

}

$session[user][specialinc] = "";

}

else if ($_GET[op]=="help"){ // hilfe



output("Du rufst um Hilfe. Ganz laut.`n

Die Diebensbande ist erstaunt, greift Dich aber nicht an. Offensichtlich wollen sie

sich einwenig an Deiner Angst weiden. Und sie sind sicher, dass Dir eh niemand hilft.`n`n`0");



$sql = "SELECT name,level,title FROM accounts WHERE locked=0 AND alive=1 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY level DESC";

$result = db_query($sql) or die(sql_error($sql));

$max = db_num_rows($result);

$anz = db_num_rows($result)-1; // -1 weil du selbst im wald bist!



if ( $anz >= $needed ) { // genug helfer da

output("`6Aber die Diebe haben nicht mit Deinen Freunden aus dem Dorf gerechnet!

Die folgenden Krieger sind nämlich gerade im Wald und eilen Dir

zu Hilfe:`n`0");

for($i=0;$i<$max;$i++){

$row = db_fetch_assoc($result);

if ( $row[name] != $session[user][name] )

output("$row[title] $row[name]`n");

}

output("`n`2Gemeinsam besiegt ihr die Diebesbande. `0Du bedankst Dich bei allen

Helfern und versprichst, in der Taverne eine Runde zu schmeissen.`n

Du verlierst zwar einen Waldkampf, ziehst aber trotzdem glücklich weiter.`0");

$session[user][turns]-= 1;

$session[user][experience]+= e_rand((($session[user][level])*3),(($session[user][level])*6)) ;

$platt=false;

}

elseif ( $anz == 0 ) { // BUG <deZent>

$platt=true;

}

elseif (($anz>=1) && ($anz<$needed)) { // nicht genug Bewohner //<deZent>



output("`#Deine Hilferufe werden zwar von $anz Bewohnern gehört, die auch

gerade im Wald sind, aber unglücklicherweise können die den Ort des

Überfalls nicht rechtzeitig erreichen. Du bleibst auf Dich allein gestellt.`n`0");

$platt=true;

}

if ($platt){

output("Damit behalten sie Diebe leider recht. Sie schauen noch einen Moment

zu, wie Du verzweifelt auf Hilfe wartest und greifen Dich dann an.`n`n

`QNach einem kurzen, heftigen Kampf verabschiedest du Dich vom Leben.`0");

$session[user][alive]=false;

$session[user][gold]=0;

if ($session[user][gems]>3){

$session[user][gems]-=3;

}

$session[user][hitpoints]=0;

addnews("`^".$session[user][name]."`# hatte keine Chance im Kampf gegen die Diebesbande.");

addnav("Tägliche News","news.php");

}

$session[user][specialinc]="";

}





?>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 12:17 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
Tja den Autor fragen ^^ Gargamel ist doch ein netter, der auch Anfragen beantwortet *lächel*


so, das Special kenn ich auch, ich bin nicht sicher, ob meine Begründung jetzt absolut korrekt ist, aber auf einem anderen Server kann dieses Special nicht problemlos laufen, denn Rabenthal hat ins Template eine "wer ist wo online anzeige" eingebaut.

Dieses Special zieht sich die Nicks der User raus, die sich grad auf dem Dorfplatz aufhalten, da diese Dir dann "zu Hilfe" eilen. Wenn Du aber keine Anzeige dafür hast, weiss das Special damit ja nichts anzufangen :)

Ich habe es bei mir dann so gelöst, dass ich den addnav "um Hilfe rufen" deaktiviert habe, somit funktioniert es dann bei mir ;)



oftmals reicht es aber auch aus, wenn man den Befehl $_GET[op] durch $HTTP_GET_VARS[op] ersetzt. Zumindest war dies meist bei mir der Grund dafür, dass die Specials mit meinem Adminacc aufrufbar waren, aber sich beim User nichts tat.


lg Rikkarda


leider kann ich keine Datei mit der Erweiterung .php hier anhängen, was mich eigentlich erstaunt *zuAnperaschiel* falls Du die Datei haben willst, schick mir doch einfach eine pn ;)


Zuletzt geändert von Rikkarda am Fr 24 Sep, 2004 12:30, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 12:29 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Do 12 Aug, 2004 08:36
Beiträge: 46
Sorry, aber das hilft mir nicht weiter ;)

Denn das Problem tauchte auch bei enigen anderen Skripten auf z.B. auch beim jewelrymaker auf (der fast überall eingesetzt wird) - ist also nicht ein einzelnes Skriptproblem - und das skript läuft problemlos, das mit den Usern Online wurde entsprechend im Code verändert / angepasst. Bei manchen Skripten passiert das auch nur einmal und kommt dann nicht wieder und bei anderen geht es nicht weg... Dieser Code war nur ein Beispiel eines der Skripte, die anderen habe ich meist aus Ärger gelöscht, oder sie laufen jetzt und ich weiss nicht warum. Und wollte jetzt mal eine mögliche Lösung dafür finden ;)

Es produziert halt nur diese weisse Seite und nach aktualisierung geht das skript weiter. Ausserdem passiert das sowohl mit dem Admin, als auch mit einem Useraccount.

Zu dem $GET

Zitat:
$GET: Variables provided to the script via HTTP GET. Analogous to the old $HTTP_GET_VARS array (which is still available, but deprecated).


Quelle: http://www.php.net/manual/en/language.variables.predefined.php

Da dürfte es keinen Unterschied geben, ausser dass die alte Form irgendwann bei neueren PHP-Versionen Probleme machen kann. Die beiden sind ansonsten absolut identisch, nur ist $GET kürzer zu schreiben ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 12:34 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
Mag sein, dass es keinen grossen Unterschied allgemein macht *ls* ich habe nur festgestellt, dass viele meine Problemchen sich durch das ändern dieses Befehls "in Luft aufgelöst haben".. z.b. beim Einbau von old Drawls Goldmine lies sich bei mir der Link im Wald mit dem Adminacc problemlos öffnen, und beim User tat sich überhaupt nichts. Nachdem ich den Befehl abgeändert hatte läuft es einwandfrei. Ich hatte anfangs auch oft weisse Seiten Probs und ähnliches. Zum Glück habe ich die durch umstellen des Befehls und entfernen überflüssiger Absätze alle weg bekommen.

Dann drück ich Dir die Daumen, dass Du es auch in den Griff bekommst :)


lg Rikkarda

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 12:37 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Do 12 Aug, 2004 08:36
Beiträge: 46
Na dann werde ich das doch mal probieren... ;) Vielleicht hilft es ja doch! Dankeshcön schonmal!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 17:43 
Ohne mir jetzt alles durchzulesen, dürfte die Lösung relativ einfach sein:

Ersetze:

if ($_GET[op]==""){

durch:

if ($_GET[op]=="" || $_GET[op]=="search"){

und es sollte funzen. Der Fehler wird leider immer noch sehr gerne gemacht. Wenn Spieler im Wald ein Special finden, ist op auf "search" gesetzt - anders als bei der Admin-Testfunktion, bei der op=="" ist. Wenn man $_GET[] verwenden will, muss man sowohl auf "search", wie auch auf "" abfragen. $HTTP_GET_VARS[] wird vom Script automatisch auf "" gesetzt, von daher ist der Vorschlag von Rikkarda gar nicht so abwegig. ;)

Eine Alternative dazu wäre es, auf diese Abfrage ganz zu verzichten und stattdessen am Ende des Specials ein } else { einzubauen, das alle nicht genannten Fälle für [op] abdeckt... (So mach ich das in meinen Specials jedenfalls immer)



(Wenn das nicht hilft, muss ich mir das nochmal genauer anschauen. Kann auch ein vergessenes Komma, eine Klammer zu viel, ein Hochkomma oder ein falsches Zeilenende sein...)


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 21:34 
Offline
Lehrling
Lehrling

Registriert: Fr 24 Sep, 2004 21:16
Beiträge: 28
@drakarr:
Sag mal, wo hast Du denn heute die gepostete Alt-Version von dem Script her? Die Umstellung auf $HTTP_GET_VARS[] (die den von Anpera beschriebenen Automatismus nutzt) ist auf http://www.rabenthal.de bereits am 26. Juni (!!) erfolgt..... :D

nur als Hinweis: im Select fehlt in der Where-Bedingung eine Abfrage auf "locate" - so kann nicht herausgefunden werden, wieviele Spieler im Wald sind, um zu helfen, sondern der Select geht nun auf online-Chars allgemein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 24 Sep, 2004 22:40 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Do 12 Aug, 2004 08:36
Beiträge: 46
@anpera GENIAL von der Automatisierung wusste ich bisher nix *g* Ich denke, das wird die meisten Problem lösen bzw. die meisten Probleme verursacht haben! Werde mir das mal genauer anschauen, allerdings erst nächste woche ;)

@gargamel frag micht nicht, wo die her ist. Hab das mal auf irgendeinem Server gefunden und hat mir gefallen. Hoffe, das ist in Ordnung, das wir die nutzen! ansonsten bitte Bescheid geben! Dass das momentan alle Online-User berücksichtigt ist momentan beabsichtigt, wird später noch entsprechend angepasst!

Auf jeden Fall mal Danke an alle die geholfen haben ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

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


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum