MySQL Speichersystem, Läd die lezte Position des Spielers nicht!

  • MySQL Speichersystem, Läd die lezte Position des Spielers nicht!

    Hallo Community,

    Ich habe da ein kleines Problemchen!
    Ich muss dazu sagen, das ich erst seit neustem mit MySQL angefangen habe.
    Nungut, hier zu meinem Problem.
    Ich lasse die gesamten spieler daten über MySQL speichern, und laden!

    Ich habe es jetzt schon hinbekommen, das die lezte Position von dem Spieler gespeichert wird.
    Doch wen man sich wieder einloggt, wird man nicht dort gespawn.
    Hier mal mein Code, ich hoffe ihr könnt mir helfen!

    stock LoadPlayer

    SQL-Abfrage

    1. stock LoadPlayer(playerid)
    2. {
    3. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    4. {
    5. GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    6. SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    7. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    8. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    9. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    10. SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    11. SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    12. SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    13. }
    14. return 1;
    15. }
    Alles anzeigen


    stock SavePlayer

    SQL-Abfrage

    1. stock SavePlayer(playerid)
    2. {
    3. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    4. {
    5. if(GetPVarInt(playerid,"Eingeloggt") == 1)
    6. {
    7. new Float:xxKord,Float:yyKord,Float:zzKord;
    8. GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    9. mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    10. mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    11. mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    12. mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    13. mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    14. GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    15. mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    16. /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    17. mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    18. mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    19. mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    20. mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    21. mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    22. }
    23. }
    24. return 1;
    25. }
    Alles anzeigen


    das enum

    SQL-Abfrage

    1. enum SpielerDaten
    2. {
    3. pName[MAX_PLAYER_NAME],
    4. pLevel,
    5. pGeld,
    6. pKills,
    7. pTode,
    8. Float:pHealth,
    9. pAdmin,
    10. Float:xKord,
    11. Float:yKord,
    12. Float:zKord
    13. }
    Alles anzeigen


    und zu guterlezt, wo loadplayer ausgeführt wird

    SQL-Abfrage

    1. case DIALOG_LOGIN:
    2. {
    3. if(response)
    4. {
    5. if(strlen(inputtext) == 0)
    6. {
    7. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    8. return 1;
    9. }
    10. else
    11. {
    12. new SpielerName[MAX_PLAYER_NAME];
    13. GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    14. if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
    15. {
    16. SetPVarInt(playerid,"Eingeloggt",1);
    17. LoadPlayer(playerid);
    18. SpawnPlayer(playerid);
    19. return 1;
    20. }
    21. else
    22. {
    23. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    24. return 1;
    25. }
    26. }
    27. }
    28. else
    29. {
    30. Kick(playerid);
    31. }
    32. }
    33. }
    34. return 1;
    35. }
    Alles anzeigen


    Hoffe, das ihr mir helfen könnt..
    Hochachtungsvoll und mit freundlichen Grüßen - Scripter-oNE
  • Wen ich das so mach

    SQL-Abfrage

    1. stock LoadPlayer(playerid)
    2. {
    3. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    4. {
    5. new Float:xxKord,Float:yyKord,Float:zzKord;
    6. GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    7. GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    8. SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    9. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    10. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    11. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    12. SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    13. SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
    14. SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
    15. SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
    16. SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    17. SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    18. }
    19. return 1;
    20. }
    Alles anzeigen


    Bekomme ich Warnings, und passieren tut trotzdem nichts

    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1288) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    4 Warnings.
  • Sorry, habe vergessen das zu ändern,

    SQL-Abfrage

    1. stock LoadPlayer(playerid)
    2. {
    3. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    4. {
    5. new Float:xxKord,Float:yyKord,Float:zzKord;
    6. GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    7. GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    8. SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    9. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    10. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    11. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    12. SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    13. SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
    14. SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
    15. SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
    16. SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    17. SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    18. }
    19. return 1;
    20. }
    Alles anzeigen


    Doch die warnings Bleiben!
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1288) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    4 Warnings.

    //edit: nochmal stock gepostet
    //edit: Ich weiß echt nichtmehr was es noch sein kann, alles was ich via google darüber gefunden habe, bei den geht es so!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Scripter-oNE ()

  • Dann bekomme ich volgendes Error
    Soll ich dort auch Kordxx Kordyy Kordzz definieren? allso mit

    SQL-Abfrage

    1. new Float:xxKord,Float:yyKord,Float:zzKord;
    2. GetPlayerPos(playerid,xxKord,yyKord,zzKord);


    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(323) : error 017: undefined symbol "xxKord"
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1288) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Error.

    //edit, allso habe die Kords nochmal mit

    SQL-Abfrage

    1. new Float:xxKord,Float:yyKord,Float:zzKord;
    2. GetPlayerPos(playerid,xxKord,yyKord,zzKord);

    Definiert, nun bekomme ich die Warnings Tag mismatch gleich 7 mal
    Und spawnn tu ich immernoch nicht am letzten ort

    MFG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Scripter-oNE ()

  • Okey, bleiben wieder nurnoch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1288) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    4 Warnings.

    Und spawnen tue ich bei coordinate 0,0,0 und falle durch die map

    //edit: Hier nochmal so wie ich jetzt alles habe

    Enum:
    [pwn]enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pTode,
    Float:pHealth,
    pAdmin,
    Float:xKord,
    Float:yKord,
    Float:zKord
    }[/pwn]

    [pwn]stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {

    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
    SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }[/pwn]
    Bei onPlayerSpawn
    [pwn]SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    [/pwn]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Scripter-oNE ()

  • Okey, schaue es mir an. melde mich wieder, fals ich es immernoch nicht hinbekomme :P

    PS: Pastebin link ist down

    //edit:
    Soo, habe es nun exakt so wie du, nur halt das ich die sachen im enum und in der datenban halt anders benannt habe mit xKord yKord zKord und so...

    Nun bekomme ich noch 1 Warning!

    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Warning.

    und der ist hier:
    [pwn]stock 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();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;// <--- Hier
    }[/pwn]

    Dann habe ich auch dein include genommen.
    Und dein GetFloat stock der ja wie folgt aussieht.

    [pwn]stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[]) // <- und hier wäre dann das Warning
    {
    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();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }[/pwn]

    So, dort bekomme ich ebenfalls ein Warning, undzwar den:
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1376) : warning 208: function with tag result used before definition, forcing reparse
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Warning.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Scripter-oNE ()

  • Okey, So bekomme ich nun keinen Error und keinen Warning, doch nach dem spawnen habe ich nun Grafikfehler, das bild färbt sich weiß und hell, und das Spiel laggt, auf anderen servern habe ich das nicht, deswegen gehe ich stark davon aus, das es am script liegt!
    Vor dem einloggen ist auch noch alles ok, erst nach dem spawnen ist das so

    [Blockierte Grafik: http://upload.real-san-andreas.net/dt/NKK7/sa-mp-024.png]

    //edit: hat sich erledigt, es lag an der gta-sa.set

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Scripter-oNE ()