Ich habe versucht den Code von Stargate zum Thema Highscore zum laufen zu bringen.
Jedoch bricht er leider immer beim "ReceiveNetworkData" ab. hier bekommt er keine datei größe also bzw er trägt nichts ein .
Eventuell hat von euch wer ne idee woran es liegt ?
ein test im browser:
Code: Alles auswählen
http://gravity.itm-worms.de/highscore/highscore.php?Points=123&Name=Unbekannt&Key=Pa3yTdnPphUKo
hier die codes dazu:
Code: Alles auswählen
Global HighScoreKey$ = "Password"
Global HighScoreURL$ = "http://www.gravity.itm-worms.de/highscore/highscore.php"
; \\
; Lädt den Inhalt einer URL in einen String
Procedure.s DownloadToString(URL$, TimeOut = 10000)
Protected Event, Time, Size, String$
Protected BufferSize = $1000
Protected *Buffer = AllocateMemory(BufferSize)
Protected ServerName$ = GetURLPart(URL$, #PB_URL_Site)
Protected ConnectionID = OpenNetworkConnection(ServerName$, 80)
If ConnectionID
SendNetworkString(ConnectionID, "GET "+URL$+" HTTP/1.0"+#LFCR$+#LFCR$)
Time = ElapsedMilliseconds()
Repeat
Delay(10)
Event = NetworkClientEvent(ConnectionID)
Until Event Or ElapsedMilliseconds()-Time > TimeOut
If Event
Repeat
Size = ReceiveNetworkData(ConnectionID, *Buffer, BufferSize)
Debug "get data"+ Str(size)
String$ + PeekS(*Buffer, Size, #PB_Ascii)
Until Not Size
Inhalt = FindString(String$, #LFCR$, 1)
If Inhalt
ProcedureReturn Mid(String$,Inhalt+3)
Else
ProcedureReturn String$
EndIf
ElseIf ElapsedMilliseconds()-Time > TimeOut
Debug "Connection TimeOut!"
EndIf
Else
Debug "Verbindung fehlgeschlagen!"
EndIf
EndProcedure
; Strukture der HighScore
Structure HighScore
Points.l
Name$
EndStructure
Global NewList HighScore.HighScore()
; Fügt einen Eintrag in die Internet HighScore
Procedure AddHighScoreItem(Points.l, Name$)
Protected Points$ = Str(Points)
Name$ = URLEncoder(Name$)
Protected Get$ = "?Points="+Points$+"&Name="+Name$+"&Key="+DESFingerprint(Points$+Name$, HighScoreKey$)
Debug "sent string: "+HighScoreURL$+Get$
String$ = DownloadToString(HighScoreURL$+Get$)
Debug "return string: "+String$
If String$
If String$ = "TRUE"
Debug "HighScoreEintrag hinzugefügt."
ProcedureReturn #True
ElseIf String$ = "FALSE #1"
Debug "Ungültiger Eintrag!"
ElseIf String$ = "FALSE #2"
Debug "Fehler beim eintragen (bzw. schreiben in die Datei)!"
ElseIf String$ = "FALSE #3"
Debug "Identischer Eintrag!"
Else
Debug "Unbekannter Fehler!"
Debug String$
EndIf
Else
Debug "Download fehlgeschlagen!"
EndIf
EndProcedure
; Lädt die Internet HighScore runter
; Dabei kann ab einem bestimmten Platz (Start)
; eine bestimmte Menge (Count) runtergeladen werden.
Procedure ExamineHighScore(Start=1, Count=0)
Protected Get$, Position, OldPosition, Item$
ClearList(HighScore())
If Count > 0
Get$ = "?from="+Str(Start)+"&to="+Str(Start+Count)
Else
Get$ = "?from="+Str(Start)
EndIf
String$ = DownloadToString(HighScoreURL$+Get$)
If String$
Repeat
Position = FindString(String$, Chr(13), OldPosition+1)
If Position
Item$ = Mid(String$, OldPosition+1, Position-OldPosition-1)
AddElement(HighScore())
HighScore()\Points = Val(StringField(Item$, 1, Chr(9)))
HighScore()\Name$ = StringField(Item$, 2, Chr(9))
OldPosition = Position
EndIf
Until Not Position
ResetList(HighScore())
ProcedureReturn #True
Else
Debug "Download fehlgeschlagen!"
EndIf
EndProcedure
; Springt zum nächsten HighScore Eintrag (der Download-HighScore)
Macro NextHighScoreItem()
NextElement(HighScore())
EndMacro
; Gibt die Punkte des HighScore Eintrags zurück
Macro GetHighScorePoints()
HighScore()\Points
EndMacro
; Gibt den Namen des HighScore Eintrags zurück
Macro GetHighScoreName()
HighScore()\Name$
EndMacro
If InitNetwork()
Punkte = 123
Name$ = "Unbekannt"
Debug AddHighScoreItem(Punkte, Name$)
ExamineHighScore()
While NextHighScoreItem()
Debug Str(GetHighScorePoints())+" "+GetHighScoreName()
Wend
EndIf
PHP dateien :
Code: Alles auswählen
<?php
// Diese Variable bitte selber den eigenen wünschen nach anpassen!
//
$HighScoreKey = 'Password';
//
// Sortierung nach Punkten
function SortPoints($a,$b)
{
If ($a[0]<$b[0]) Return 1;
ElseIf ($a[0]>$b[0]) Return -1;
Else Return 0;
}
// Neuer Highscore Eintrag
If ($_GET['Points'])
{
$_GET['Name'] = urldecode($_GET['Name']);
If (crypt($_GET['Points'].$_GET['Name'], $HighScoreKey) == $_GET['Key'])
{
include 'highscorelist.php';
ForEach($Item As $Unit)
{
If ( ($Unit[0]==$_GET['Points']) And ($Unit[1]==$_GET['Name']) )
{
echo 'FALSE #3';
exit;
}
}
If ($File = @fopen('highscorelist.php', 'a'))
{
// Eintrag in die Datei schreiben
fwrite($File, '$Item[] = array('.$_GET['Points'].', "'.$_GET['Name'].'");'.chr(13));
fclose($File);
echo 'TRUE';
}
Else
{
echo 'FALSE #2';
}
}
Else
{
echo 'FALSE #1';
}
}
// Highscore auslesen
Else
{
include 'highscorelist.php';
usort($Item,SortPoints);
If ($_GET['from']>0) $_GET['from']--;
Else $_GET['from']=0;
If ($_GET['to']>0) $_GET['to']--;
Else $_GET['to']=count($Item);
For($n=$_GET['from'];$n<$_GET['to'];$n++)
{
// ausgabe der Highscore
echo $Item[$n][0].chr(9).$Item[$n][1].chr(13);
}
}
?>
Code: Alles auswählen
<?php
$Item = Array();