MySQL überspeichert falschen User

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
  • Hey ich bin dabei mir ein Login/register system zu machen bzw zu erweitern habe das aus dem Tutorial
    Jedoch habe ich das Problem das wenn ich einen user habe wird er gesaved
    der nächste user überschreibt einfach den ersten user...
    also iwie greift der nicht auf den richtigen namen zu kann mir da wer weiterhelfen?
    wird ja unter saveplayer sein das sieht bei mir so aus:



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerPos(playerid, SpielerInfo[playerid][pPosX],SpielerInfo[playerid][pPosY],SpielerInfo[playerid][pPosZ]);
    GetPlayerFacingAngle(playerid, SpielerInfo[playerid][pPosA]);
    SpielerInfo[playerid][pPosI] = GetPlayerInterior(playerid);
    SpielerInfo[playerid][pPosVW] = GetPlayerVirtualWorld(playerid);
    GetPlayerHealth(playerid, SpielerInfo[playerid][pLeben]);
    GetPlayerArmour(playerid, SpielerInfo[playerid][pRuestung]);
    SpielerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
    mysql_SetInt("_Main", "Alter", SpielerInfo[playerid][pAlter], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("_Main", "Geschlecht", SpielerInfo[playerid][pGeschlecht], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("_Main", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetString("_Main", "Email", SpielerInfo[playerid][EMail], "Name", SpielerInfo[playerid][pName]);
    mysql_SetString("_Main", "RegisterDatum", SpielerInfo[playerid][RegisterDatum], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("_Main", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);


    da gehts dann noch weiter nach unten


    saveplayer wird wie im tutorial beschrieben unter disconnect abgerufen

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • 20-50 Spieler, und deine komplette MySQL Datenbank stürzt zusammen, mit dem System was du da zeigst :)


    Ich empfehle dir es so zu machen:



    new query[256];


    format(query,sizeof(query), "UPDATE `_Main` SET Alter = '%d', Geschlecht = '%d', Skin = '%d', Email = '%s', RegisterDatum = '%s', Level = '%d' WHERE Name = '%s'", SpielerInfo[playerid][pAlter],
    SpielerInfo[playerid][pGeschlecht], SpielerInfo[playerid][pSkin], SpielerInfo[playerid][EMail], SpielerInfo[playerid][RegisterDatum], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pName]);


    mysql_query(query);


    Mfg,
    Maximilian


    /edit
    Schau dir das für das Laden an.
    http://script-planet.de/forum/…p?page=Thread&threadID=15


    /edit#2
    kleine Fehler behoben

  • Das der die werte anderer User bekommt ist darauf zurück zu ziehen, das du beim Connect die Spieler Werte nicht zurücksetzt..


    was soll denn genau zurück gesetzt werden?


    //edit


    Maximilian


    Wie kann ich es denn sauber machen das der ALLE speichert da es bei mir über 100 variablen sind...

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

    Einmal editiert, zuletzt von ZeenOne ()

  • Er meint bei OnPlayerConnect die var´s auf 0 setzen.


    SpielerInfo[playerid][pSkin] = 0;
    SpielerInfo[playerid][pAlter] = 0;
    SpielerInfo[playerid][EMail] = 0;
    SpielerInfo[playerid][RegisterDatum] = 0;
    SpielerInfo[playerid][pLevel] = 0;


    Das einfach unter OnPlayerConnect, danach hat die Spieler ID nichts gesetzt und dann kommt das der Spieler erstmal lädt.


    --------- edit ---------
    100 Variablen????
    Reden wir per PN weiter, ich kann dir eventuell Helfen.