MySQL Position und FacingAngle speichern

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo!
    Ich werden wahnsinnig, ich habe schon alles probiert
    die Positionen speichern nicht und bleiben somit auf 0, genauso
    wie bei FacingAngle und auch Interior, selbst beim Skin setzt er Ihn immer auf 0!


    Ich habe das Problem mit den Positionen schon einmal gepostet
    doch das Thema endete ohne Lösung.


    Bitte helft mir ich habe alles versucht
    Ich kann jetzt aber keinen Code einbinden da ich diesen
    bzw meine Versuche alle gelöscht habe, damit die Übersicht wieder da ist.


    Bitte helft mir, ich kriege es nicht gebacken die Position, FacingAngle, Interior und Skin ID zu speichern


    Meine MySQL-Datenbank wurde mit dem Tutorial von MAddin erstellt.


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
    {
    //Nun speichern wir die Daten in der Datenbank.
    mysql_SetInt("accounts", "Registriert", SpielerInfo[playerid][Registered], "Name", SpielerInfo[playerid][Name]);


    mysql_SetInt("accounts", "Interior", GetPlayerInterior(playerid), "Name", SpielerInfo[playerid][Name]);


    mysql_SetInt("accounts", "Stufe", GetPlayerScore(playerid), "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][Skin], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "AdminRank", SpielerInfo[playerid][AdminRank], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Warnings", SpielerInfo[playerid][Warnings], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Gemutet", SpielerInfo[playerid][Muted], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "Gebannt", SpielerInfo[playerid][Banned], "Name", SpielerInfo[playerid][Name]);


    mysql_SetInt("accounts", "Fraktion", FraktionInfo[playerid][Mitglied], "Name", SpielerInfo[playerid][Name]);
    mysql_SetInt("accounts", "FraktionLeitung", FraktionInfo[playerid][Leitung], "Name", SpielerInfo[playerid][Name]);


    }
    }
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    if(SpielerInfo[playerid][Banned] == 1)
    {
    new BanString[128];
    new BannedName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,BannedName,sizeof(BannedName));
    format(BanString,sizeof(BanString),"/Datenbank/Accounts/%s.txt",BannedName);
    format(BanString,sizeof(BanString),"%s versucht sich mit seinem gebannten Account ein zu loggen",BannedName);
    MessageToAdmins(Color_Orange,BanString,1);
    SendClientMessage(playerid,Color_Red,"SERVER: Dein Account wurde vom Server verbannt!");
    Ban(playerid);//Bannt den Spieler und schreibt Ihm in die "samp.ban"
    return 1;
    }
    GetPlayerName(playerid, SpielerInfo[playerid][Name], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    SpielerInfo[playerid][Registered] = mysql_GetInt("accounts", "Registriert", "Name", SpielerInfo[playerid][Name]);


    SetPlayerInterior(playerid, mysql_GetInt("accounts", "Interior", "Name", SpielerInfo[playerid][Name]));


    SetPlayerScore(playerid, mysql_GetInt("accounts", "Stufe", "Name", SpielerInfo[playerid][Name])); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    SetPlayerSkin(playerid, mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][Name]));
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][Name]));
    SpielerInfo[playerid][AdminRank] = mysql_GetInt("accounts", "AdminRank", "Name", SpielerInfo[playerid][Name]);
    SpielerInfo[playerid][Warnings] = mysql_GetInt("accounts", "Warnings", "Name", SpielerInfo[playerid][Name]);
    SpielerInfo[playerid][Muted] = mysql_GetInt("accounts", "Gemutet", "Name", SpielerInfo[playerid][Name]);
    SpielerInfo[playerid][Banned] = mysql_GetInt("accounts", "Gebannt", "Name", SpielerInfo[playerid][Name]);

    FraktionInfo[playerid][Mitglied] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][Name]);
    FraktionInfo[playerid][Leitung] = mysql_GetInt("accounts", "FraktionLeitung", "Name", SpielerInfo[playerid][Name]);

    SetSpawnInfo(playerid,0,101,-1886.0702,59.0036,1055.1891,263.4922,-1,-1,-1,-1,-1,-1);//Flughafen Interior
    SetPlayerInterior(playerid,14);
    SpawnPlayer(playerid);//Hier muss noch die Position und die Ausrichtung der Spielerkamera geändert werden!


    SendClientMessage(playerid,Color_Green,"Erfolgreich eingeloggt");
    if(SpielerInfo[playerid][AdminRank] > 0)
    {
    new Level[64];
    format(Level,sizeof(Level),"Du bist als Stufe %d Administrator eingeloggt",SpielerInfo[playerid][AdminRank]);
    SendClientMessage(playerid,Color_White,Level);
    }
    new Welcome[256];
    format(Welcome,sizeof(Welcome),"~w~Willkommen ~n~~y~ %s",SpielerInfo[playerid][Name]);
    GameTextForPlayer(playerid,Welcome,5000,1);
    IsLoggedIn[playerid] = 1;
    }
    return 1;
    }


    Danke schonmal für die Antworten



    //Edit SavePlayer und LoadPlayer eingefügt

  • Hab dafür Extra ein Tutorial gemacht ;)


    Schau mal in meiner Signatur..

  • Bei deinem Tutorial wird die Funktion mysql_GetFloat nicht weiter erklärt.

  • Zitat

    man brauch natürlich auch Grundwissen noch dazu


    MySQL ist fast ähnlich wie Dini aufgebaut, nur das die Funktionen anders heißen ;)

  • Danke schonmal für die Antwort komischerweise werd ich jetzt genau an so einen Bauernfeld gespawnt wenn ich mich registriere.
    An was kann das liegen? Muss ich jetzt statt SetPlayerInterior mit SpielerInfo[playerid][Inte] arbeiten?

  • Steht im Tutorial ;)


    Das ersetzen:


    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();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }


    und das:


    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table,Table);
    mysql_real_escape_string(Field,Field);
    mysql_real_escape_string(Where,Where);
    mysql_real_escape_string(Where2,Where2);
    format(query,128,"Update. %s SET %s = '%f' WHERE %s = '%s'",Table, Field, To, Where, Where2);
    mysql_query(query);
    format(query,128, "");
    return true;
    }


    Also deine Alten stocks mit meinen hier ersetzen ;)

  • Danke nochmal für deine Hilfe, es funktioniert leider immernoch nicht.. könntest du mir das mal
    irgendwie machen? Skype oder so?


    Wäre cool, weil ich kriege das irgendwie nicht hin :|