warum funktioniert folgender Source nicht?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen

 

fliege

Betreff: warum funktioniert folgender Source nicht?

BeitragMo, Dez 06, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics 1024,768,32,2
SetBuffer BackBuffer()

Type OnlineScore
Field name$
Field score
End Type


Global g_level = 1
Dim map(8,8)

.new_game
Global g_green = LoadImage(\"Grün.bmp\") ; Sind die 0er
Global g_red = LoadImage(\"Rot.bmp\") ; Sind die 1er
Global g_green_ones
Global g_red_ones
Global g_Raster = LoadImage(\"Raster.bmp\")
Global g_fade = LoadImage(\"fade.bmp\")
MaskImage g_fade, 255,255,255
Global g_fadex = 0
Global g_fadey = 0
Global g_cout_moves = 0
Global g_end = 0
Global g_players.OnlineScore
Global g_name$

If FileType(\"playersdatas.dll\") = 0
g_name$ = Input(\"Wie darf ich dich nennen >>\")
datasfile = WriteFile(\"playersdatas.dll\")
WriteLine datasfile, g_name$
CloseFile datasfile
Else
datasfile = ReadFile(\"playersdatas.dll\")
g_name$ = ReadLine(datasfile)
CloseFile datasfile
EndIf


mapfile = ReadFile(\"map\"+g_level+\".txt\")
Repeat
x = ReadLine(mapfile)
y = ReadLine(mapfile)
nothing = ReadLine(mapfile)
map(x,y) = 1
Until Eof(mapfile) = 1

Repeat
Cls
g_green_ones = 0
g_red_ones = 0
g_end = 0
For y = 0 To 8
For x = 0 To 8
If map(x,y) = 0 Then g_green_ones = g_green_ones + 1
If map(x,y) = 1 Then g_red_ones = g_red_ones +1
Next
Next
If g_green_ones = 81 Or g_red_ones = 81 Then g_end = 1
If g_end = 1 Then
Cls
Flip
Cls
g_players = New OnlineScore
g_players\name$ = g_name$
g_players\score = g_cout_moves
win()
g_level = g_level + 1
FreeImage g_green
FreeImage g_red
FreeImage g_Raster
FreeImage g_fade
For g_players = Each OnlineScore
Delete g_players
Next
Goto new_game
EndIf
DrawImage g_Raster, 0, 0
For y = 0 To 8
For x = 0 To 8
If map(x,y) = 0 Then
DrawImage g_green, x*50,y*50
EndIf
If map(x,y) = 1 Then
DrawImage g_red, x*50, y*50
EndIf
Next
Next
DrawImage g_fade, g_fadex*50, g_fadey*50

If KeyHit(200) And g_fadey - 1 > -1 Then
g_fadey = g_fadey - 1
EndIf
If KeyHit(208) And g_fadey + 1 < 9 Then
g_fadey = g_fadey + 1
EndIf
If KeyHit(203) And g_fadex - 1 > -1 Then
g_fadex = g_fadex - 1
EndIf
If KeyHit(205) And g_fadex + 1 < 9 Then
g_fadex = g_fadex + 1
EndIf
If KeyHit(57)
g_cout_moves = g_cout_moves + 1
If map(g_fadex, g_fadey) = 0 Then
map(g_fadex, g_fadey) = 1
Else
map(g_fadex, g_fadey) = 0
EndIf
If g_fadex + 1 < 9 Then
If map(g_fadex + 1, g_fadey) = 0 Then
map(g_fadex + 1, g_fadey) = 1
Else
map(g_fadex + 1, g_fadey) = 0
EndIf
EndIf
If g_fadex - 1 > -1 Then
If map(g_fadex - 1, g_fadey) = 0 Then
map(g_fadex - 1, g_fadey) = 1
Else
map(g_fadex - 1, g_fadey) = 0
EndIf
EndIf
If g_fadey - 1 > -1 Then
If map(g_fadex, g_fadey - 1) = 0 Then
map(g_fadex, g_fadey - 1) = 1
Else
map(g_fadex, g_fadey - 1) = 0
EndIf
EndIf
If g_fadey + 1 < 9 Then
If map(g_fadex, g_fadey + 1) = 0 Then
map(g_fadex, g_fadey + 1) = 1
Else
map(g_fadex, g_fadey + 1) = 0
EndIf
EndIf
EndIf
If KeyHit(46)
EndIf
Text 451, 11, \"Du hast schon \"+ g_cout_moves +\" Züge gebraucht!\"
Text 451, 21, \"Du hast \"+g_green_ones+\" Grüne Felder!\"
Text 451, 31, \"Du hast \"+g_red_ones+\" Rote Felder!\"
Text 451, 41, \"Um anzuzeigen, wer aller mitgeholfen hat drücke die Taste: C\"
Text 451, 51, \"Drücke die ESC - Taste um das Spiel zu Beenden\"
Flip
Forever

Function win()
Cls
Flip
Cls
ShareScore(\"colorshigh.php\",\"?user=\"+g_name$+\"&score=\"+g_count_moves)
For g_players = Each OnlineScore
pos = pos + 1
Print pos+\".\"+\" \"+ g_players\name$+\" hat \" + g_players\Score + \" Züge gebraucht!\"
If pos = 46
Locate 600,0
EndIf
If pos = 91
Print \"Mehr haben es leider nicht geschafft!\"
EndIf
Next
Flip
WaitKey()
End Function

Function ShareScore(script$,par$)
is_online=OpenTCPStream(\"www.fliege.at.tp\",80)
If is_online
req$=script$+par$
; Request an das Serverscript schicken
WriteLine is_online,\"GET /\"+req$+\" HTTP/1.1\"
WriteLine is_online,\"Host: \"+url$
WriteLine is_online,\"User-Agent: score\"
WriteLine is_online,\"Accept: */*\"
WriteLine is_online,\"\"
; Daten empfangen
Repeat
; Jetzt wird der Header überlesen
trash$=Trim(ReadLine(is_online))
Until Left(trash$,7)=\"[BEGIN]\" Or Eof(is_online)
; Score lesen
Repeat
in1$=Trim(ReadLine(is_online))
in2=Trim(ReadLine(is_online))
If Left(in1$,5)<>\"[END]\"
score.OnlineScore=New OnlineScore
score\name$=in1$
score\score=in2
EndIf
Until Left(in1$,5)=\"[END]\" Or Eof(is_online)
CloseTCPStream is_online
Insert_sort_Type_II()
Return 1
Else
Return 0
EndIf
End Function

Function Insert_sort_Type_II()
For Liste.OnlineScore = Each OnlineScore : gs = gs + 1 : Next
bs = 1
Repeat
Liste.OnlineScore = Last OnlineScore
Insert Liste Before First OnlineScore
Liste.OnlineScore = First OnlineScore
points_1 = Liste\score
X = 1
bs = bs + 1
Repeat
If bs = x Then Exit
Liste.OnlineScore = After (Liste)
X = X + 1
If points_1 > Liste\score Then
Insert Liste Before Before Liste
Liste.OnlineScore = After (Liste)
Else
Exit
End If
Forever
Until gs = bs
End Function

Ich weis nicht warum er nicht zum Serverscript verbinden kann. Kann es vielleicht am Lycos Server liegen? Wenn ja, dann sagt mir bitte einen php - fähigen gratisserver, muss ja nicht allzuviel Speicher haben...

Um noch zur follständigkeit das php script zu posten:Code: [AUSKLAPPEN]
<?php
  $scorefile="colorshigh.txt";
  if(file_exists($scorefile)) $highscore=file($scorefile);
  $cnt=count($highscore);
  $num=0;
  for($i=0; $i<$cnt; $i++)
  {
    $highscore[$i]=chop($highscore[$i]);
    $oldnames[$num]=$highscore[$i];
    $i++; $highscore[$i]=chop($highscore[$i]);
    $oldscore[$num]=$highscore[$i]; $num++;
  }
  $cnt=count($oldscore);
  if($cnt>99) $cnt=99;
  for($i=0; $i<$cnt; $i++)
  {
    if(chop($oldscore[$i])>chop($score))
    {
      $newscore[$i]=$oldscore[$i];
      $newnames[$i]=$oldnames[$i];
    }
    else
    {
      $newscore[$i]=$score;
      $newnames[$i]=$user;
      $t=$i+1; $cnt++;
      for($j=$t; $j<$cnt; $j++)
      {
        $newscore[$j]=$oldscore[$i];
        $newnames[$j]=$oldnames[$i];
        $i++;
      }
      $i=$cnt+1;
    }
  }
  echo "[BEGIN]\n";
  for($i=0; $i<$cnt; $i++)
  {
    echo "$newnames[$i]\n";
    echo "$newscore[$i]\n";
  }
  echo "[END]\n";
  $fp=fopen($scorefile,"w");
  if($fp)
  {
    flock($fp,2);
    for($i=0; $i<$cnt; $i++)
    {
      fputs($fp,$newnames[$i]."\n");
      fputs($fp,$newscore[$i]."\n");
    }
    flock($fp,3);
    fclose($fp);
  }
?>

Bitte fragt mich nicht, was das im php script heißen soll, is ja aus dem IScor geklaut... Wink
Wenn dieses Script falsch ist, bitte ich jemanden, mir dieses zu schreiben, denn ich habe selbst von Php keinen blassen schimmer.
Freue mich natürlich wieder auf alle Antworten...
Fliege

sami

BeitragMo, Dez 06, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Glaubst du im Ernst das jemand sich die Mühe macht deinen Code durchzugehen und zu korrigieren?

Shocked Wie wärs mal wenn du das Ding über deinem Hals anschaltest?
 

fliege

BeitragMo, Dez 06, 2004 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Beine Rolling Eyes
Ich kenne mich mit der Anatomie des Menschen noch nicht so gut aus, bitte lachen! Laughing Laughing
Nein, jetzt im ernst, ich sitzte hier schon knapp 2 Stunden, finde den Fehler nicht...
aber der Fehler kann eigentlich nur an folgenden Orten liegen:
BlitzBasic: [AUSKLAPPEN]
ShareScore(\"colorshigh.php\",\"?user=\"+g_name$+\"&score=\"+g_count_moves)

BlitzBasic: [AUSKLAPPEN]
Function ShareScore(script$,par$) 
is_online=OpenTCPStream(\"www.fliege.at.tp\",80)
If is_online
req$=script$+par$
; Request an das Serverscript schicken
WriteLine is_online,\"GET /\"+req$+\" HTTP/1.1\"
WriteLine is_online,\"Host: \"+url$
WriteLine is_online,\"User-Agent: score\"
WriteLine is_online,\"Accept: */*\"
WriteLine is_online,\"\"
; Daten empfangen
Repeat
; Jetzt wird der Header überlesen
trash$=Trim(ReadLine(is_online))
Until Left(trash$,7)=\"[BEGIN]\" Or Eof(is_online)
; Score lesen
Repeat
in1$=Trim(ReadLine(is_online))
in2=Trim(ReadLine(is_online))
If Left(in1$,5)<>\"[END]\"
score.OnlineScore=New OnlineScore
score\name$=in1$
score\score=in2
EndIf
Until Left(in1$,5)=\"[END]\" Or Eof(is_online)
CloseTCPStream is_online
Insert_sort_Type_II()
Return 1
Else
Return 0
EndIf
End Function

..und im php Script...denke ich zumindest...Der Grund warum ich hier mal den ganzen Code gepostet habe, war der, das ich in einem anderen Forum wieder gefragt wurde ob ich denn nicht den ganze Code zeigen könnte! Das Spiel an sich funktioniert richtig gut, nur die Sache mit dem OnlineHighscore Rolling Eyes ...
Jedenfalls hoffe ich, jemand kann mir helfen!
Fliege
 

Edlothiol

BeitragMo, Dez 06, 2004 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Webspace ist nicht PHP - fähig, wie du auch leicht sehen kannst, wenn du die Datei im Browser aufrufst Wink Zum Thema PHP - fähiges Webspace gabs hier schon mehrere Threads, einfach suchen.
 

fliege

BeitragMo, Dez 06, 2004 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mich mal auf www.funpic.de angemeldet, hilft aber nichts.
HILFE!!
Fliege

nobf

BeitragMo, Dez 06, 2004 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Edlothiol hat Folgendes geschrieben:
Dein Webspace ist nicht PHP - fähig, wie du auch leicht sehen kannst, wenn du die Datei im Browser aufrufst Wink Zum Thema PHP - fähiges Webspace gabs hier schon mehrere Threads, einfach suchen.


Natürlich ist Lycos PHP fähig, ich hab zwar nicht im Code geschaut, aber das...
Zitat:
Ich weis nicht warum er nicht zum Serverscript verbinden kann. Kann es vielleicht am Lycos Server liegen? Wenn ja, dann sagt mir bitte einen php - fähigen gratisserver, muss ja nicht allzuviel Speicher haben...

...sagt alles.
 

fliege

BeitragMo, Dez 06, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
nunja, getestet habe ich das ganze in dem ich vor dem return 0 einen Runtimeerror gesetzt habe, aber es kam keiner. Daher musste die Funktion 1 zurückliefern, was heißt, das die Funktion korrekt ausgeführt wurde. Könnte es an meinem Scriptaufruf liegen? Ich habe die Datei auf
http://mitglied.lycos.de/flieg...rshigh.php

nobf

BeitragMo, Dez 06, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
PHP Code müsste normalerweise unsichtabr sein bzw. nicht sichtbar, was hier ja nicht der Fall ist.

Kopier den abgebildeten Text wenn du draufklickst in eine leere Datei in Notepad und speicher das ganze als colorshigh.php ab. Nun lads auf dein Webspace. Könnte vielleicht klappen

nobf

BeitragMo, Dez 06, 2004 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
nobf hat Folgendes geschrieben:
PHP Code müsste normalerweise unsichtabr sein bzw. nicht sichtbar, was hier ja nicht der Fall ist.

Kopier den abgebildeten Text den du auf der Seite siehst und füg ihn in eine leere Datei in Notepad ein und speicher das ganze als colorshigh.php ab und lads auf dein Webspace. Könnte vielleicht klappen
 

fliege

BeitragMo, Dez 06, 2004 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
So, jetzt ist er nicht mehr zu sehen, warum weis ich nicht! Trotzdem funktioniert es noch immer nicht...bin schon fast am verzweifeln.
Habe wieder etwas verändert:
BlitzBasic: [AUSKLAPPEN]

ShareScore(\"colorshigh.php?user=\"+g_name$+\"&score=\"+g_count_moves)

BlitzBasic: [AUSKLAPPEN]
Function ShareScore(script$) 
is_online=OpenTCPStream(\"http://mitglied.lycos.de/fliegereloaded\",80)
If is_online
req$=script$
; Request an das Serverscript schicken
WriteLine is_online,\"GET /\"+req$+\" HTTP/1.1\"
WriteLine is_online,\"Host: \"+url$
WriteLine is_online,\"User-Agent: score\"
WriteLine is_online,\"Accept: */*\"
WriteLine is_online,\"\"
; Daten empfangen
Repeat
; Jetzt wird der Header überlesen
trash$=Trim(ReadLine(is_online))
Until Left(trash$,7)=\"[BEGIN]\" Or Eof(is_online)
; Score lesen
Repeat
in1$=Trim(ReadLine(is_online))
in2=Trim(ReadLine(is_online))
If Left(in1$,5)<>\"[END]\"
g_players =New OnlineScore
g_players\name$=in1$
g_players\score=in2
EndIf
Until Left(in1$,5)=\"[END]\" Or Eof(is_online)
CloseTCPStream is_online
;Insert_sort_Type_II()
Return 1
Else
Return 0
EndIf
End Function

Würde mich über jede Lösung freuen, nur bitte bitte helft mir!
Fliege

Hummelpups

BeitragMo, Dez 06, 2004 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
gehört sowas überhaupt ins BEGINNER Topic?

BiZaR
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

fliege

BeitragMo, Dez 06, 2004 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis nicht recht, ist halt immer eine auffassungssache in welchen Topic man das sellt. Trotzdem versuche ich eine Lösung zu finden.
Fliege

Ralf

BeitragDi, Dez 07, 2004 6:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

damit das PHP-Script die Highscoredaten auf Deinem Server abspeichern kann, musst Du dem Script Schreibrechte einräumen, ansonsten werden die Daten nicht in die Datei geschrieben. Aus Sicherheitsgründen können Scripts keine Daten auf Deinem Server ändern, das musst Du erst freigeben.
Dafür gibt es den Befehl "cmod", schau mal in den Einstellungen Deines FTP-Zugangs.

Setzte das Script und die Highscoreliste am besten in ein Unterverzeichnis, meinetwegen /highscores/, oder sonst was. Dieses Verzeichnis gibst Du dann zum Schreiben durch Scripts mit dem Befehl cmod frei.
Das geht auch mit FTP-Clienten, wie Wise oder Ws_FtPro.

Ralf
 

fliege

BeitragDi, Dez 07, 2004 7:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat nicht Windows auch einen FTP Client? Ich will nämlich jetzt nichts mehr herunterladen. Kann ich das denn nicht auch auf der DOS Ebene verbinden und ausführen?
Freue mich auf alle Antworten
Fliege
 

René Meyer

BeitragDi, Dez 07, 2004 8:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst Du, wenn Du mit "ftp" zurechtkommst. :)
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

konstantin

BeitragDi, Dez 07, 2004 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
du steuerst ein verzeichnis an, und nicht nur den server ..... ..
 

fliege

BeitragDi, Dez 07, 2004 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, schreib und leserechte für beide Dateien gegeben, aber....dreimal dürft ihr raten, ...richtig geraten, es funktioniert immer noch nicht.
Ich stehe kurz vorm verzweifeln...
 

fliege

BeitragDi, Dez 07, 2004 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum hilft mir denn keiner mehr? Ich will nicht als einer dieser hoffnungslosen Fälle da stehen, bitte helft mir!
Crying or Very sad Crying or Very sad
Fliege
 

noir

BeitragDi, Dez 07, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
fliege hat Folgendes geschrieben:

Nein, jetzt im ernst, ich sitzte hier schon knapp 2 Stunden, finde den Fehler nicht...
Fliege


also 2 stunden is ja nicht soviel, manchma braucht ma tage um einen zu finden oder länge, wenn der code halt ziemlich lang ist, aber dafür ist das erfolgserlebniss viel größer.

aber zu deiner frage:

kannst du deine frage noch ma zusammenfassen, ich hab keine lust das alles durchzulesen um deine frage zu verstehen.
 

fliege

BeitragDi, Dez 07, 2004 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich suche einen Fehler, es geht um die Onlinehighscoreliste für mein Spiel...Irgendetwas funktioniert da gewalltig nicht, es kann theoretisch nur eines der dinge sein:
BlitzBasic: [AUSKLAPPEN]

ShareScore(\"colorshigh.php?user=\"+g_name$+\"&score=\"+g_count_moves)

BlitzBasic: [AUSKLAPPEN]

Function ShareScore(script$)
is_online=OpenTCPStream(\"http://mitglied.lycos.de/fliegereloaded\",80)
If is_online
req$=script$
; Request an das Serverscript schicken
WriteLine is_online,\"GET /\"+req$+\" HTTP/1.1\"
WriteLine is_online,\"Host: \"+url$
WriteLine is_online,\"User-Agent: score\"
WriteLine is_online,\"Accept: */*\"
WriteLine is_online,\"\"
; Daten empfangen
Repeat
; Jetzt wird der Header überlesen
trash$=Trim(ReadLine(is_online))
Until Left(trash$,7)=\"[BEGIN]\" Or Eof(is_online)
; Score lesen
Repeat
in1$=Trim(ReadLine(is_online))
in2=Trim(ReadLine(is_online))
If Left(in1$,5)<>\"[END]\"
g_players =New OnlineScore
g_players\name$=in1$
g_players\score=in2
EndIf
Until Left(in1$,5)=\"[END]\" Or Eof(is_online)
CloseTCPStream is_online
;Insert_sort_Type_II()
Return 1
Else
Return 0
EndIf
End Function

Code: [AUSKLAPPEN]
<?php
  $scorefile="colorshigh.txt";
  if(file_exists($scorefile)) $highscore=file($scorefile);
  $cnt=count($highscore);
  $num=0;
  for($i=0; $i<$cnt; $i++)
  {
    $highscore[$i]=chop($highscore[$i]);
    $oldnames[$num]=$highscore[$i];
    $i++; $highscore[$i]=chop($highscore[$i]);
    $oldscore[$num]=$highscore[$i]; $num++;
  }
  $cnt=count($oldscore);
  if($cnt>99) $cnt=99;
  for($i=0; $i<$cnt; $i++)
  {
    if(chop($oldscore[$i])>chop($score))
    {
      $newscore[$i]=$oldscore[$i];
      $newnames[$i]=$oldnames[$i];
    }
    else
    {
      $newscore[$i]=$score;
      $newnames[$i]=$user;
      $t=$i+1; $cnt++;
      for($j=$t; $j<$cnt; $j++)
      {
        $newscore[$j]=$oldscore[$i];
        $newnames[$j]=$oldnames[$i];
        $i++;
      }
      $i=$cnt+1;
    }
  }
  echo "[BEGIN]\n";
  for($i=0; $i<$cnt; $i++)
  {
    echo "$newnames[$i]\n";
    echo "$newscore[$i]\n";
  }
  echo "[END]\n";
  $fp=fopen($scorefile,"w");
  if($fp)
  {
    flock($fp,2);
    for($i=0; $i<$cnt; $i++)
    {
      fputs($fp,$newnames[$i]."\n");
      fputs($fp,$newscore[$i]."\n");
    }
    flock($fp,3);
    fclose($fp);
  }
?>

Ich finde einfach nichts, aber ich kenne auch keinen Lösungsweg.....um es kurz und bündig auszudrücken: HILFE!
Fliege

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group