Deine Funktion an sich sollte so weit funktionieren, allerdings hast du in deinem 'printf()' Aufruf die falsche Formatierung verwendet. Für ganze Zahlen bzw. Integers musst du entweder '%d' oder '%i' verwenden. Dasselbe gilt für Gleitkommazahlen für die du '%f' verwenden musst. Solltest du immer noch falsche Werte bekommen würde ich an deiner Stelle einfach mal probieren die formatierte SQL-Anfrage im Server via printf() auszugeben.
*facepalm*
WIE KANN ICH NUR SO SAUDOOF SEIN -.- Danke BlueG
//edit:
Die Ints läd er also richtig...
Aber das war ja nicht das Problem. Das Problem ist, dass er trotz allem die Floats nicht richtig ausliest. Beim Ausloggen speichere ich die aktuellen Koordinaten in der DB.
Lade ich sie kommt dieses typische "Stay within the worlds boundaries" und der Bildschirm wird weiß. Eigentlich kann es ja nur an den Floats hängen, denn er liest das Passwort, will den
Spieler dort hin setzen und schnipp, server schmiert ab. Oder er versucht die virtual world oder den Interior auf sqltest1 zu setzen, kann meines Wissens nach doch auch den Server crashen.
Fakt ist: Auch mit %d statt %s (ich schäme mich immer noch für den Fehler ^.^) liest er das Passwort aus.
//e2:
Es liegt DEFINITIV am Laden der Floats. Beim ausloggen wird x,y,z,int, und world in die DB geschrieben, die stimmen dann auch.
Beim Laden des Accounts werden mit folgenden 3 Zeilen x,y,z geladen:
SetPVarFloat(playerid,"AuslogPosX",mysql_GetFloat("accounts", "AuslogPosX", "Name", name));
SetPVarFloat(playerid,"AuslogPosY",mysql_GetFloat("accounts", "AuslogPosY", "Name", name));
SetPVarFloat(playerid,"AuslogPosZ",mysql_GetFloat("accounts", "AuslogPosZ", "Name", name));
Dann wird der User dort hin gesetzt und der Bildschirm wird langsam weiß und flackert usw. Es liegt nicht an der Struktur des Scripts,
vorher basierte es auf Dini und es funktionierte....
//e3:
Ich habe beim Laden des Accounts folgende Zeile eingefügt:
printf("%f | %f | %f",mysql_GetFloat("accounts", "AuslogPosX", "Name", name),mysql_GetFloat("accounts", "AuslogPosY", "Name", name),mysql_GetFloat("accounts", "AuslogPosZ", "Name", name));
Das Resultat:
[17:48:29] -./,),(-*,(.(((((( | -./,),(-*,(.(((((( | -./,),(-*,(.((((((
Hier der Stock der die Floats lädt:
stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
sqlfloat = mysql_fetch_float(connection);
mysql_free_result();
return sqlfloat;
}