Bestimmte Sachen werden nicht gespeichert...

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
  • Hi, mein Problem ist das wenn ich meinen Spieler in eine Fraktion stecke, dieser zwar dort drin ist, das sehe ich bei /stats und werde dort gespawnt, /stats speichert vor dem auslesen, aber sobald ich mich neu einlogge bin ich wieder draußen. Und in der Fraktionstabelle werde ich auch nicht eingetragen. Woran könnte das liegen? Und sagt mir bitte welchen Code ihr benötigt. Weiß nict was ihr gebrauchen könnt. Hier erstmal save und Load von Player und Fraktion.


    stock SaveFrak(frakID)
    {
    new query[350];
    mysql_format(MyCon, query, sizeof(query), "UPDATE `fraktionen` SET `fLeader` = %e, `Money`= %d, WHERE `ID` = %d", fInfo[frakID][fLeader], fInfo[frakID][fMoney], fInfo[frakID][fID]);
    mysql_tquery(MyCon, query, "", "");
    return 1;
    }


    stock LoadFrak(frakID)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `fraktionen` WHERE `Name` = '%e'", fInfo[frakID][fName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];


    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[30]s[30]d", fInfo[frakID][fName], fInfo[frakID][fLeader], fInfo[frakID][fMoney]);
    }
    mysql_free_result();
    return 1;
    }


    stock SavePlayer(playerid)
    {
    GetPlayerHealth(playerid, pInfo[playerid][pHealth]);
    new query[350 + MAX_PLAYER_NAME];
    mysql_format(MyCon,query, sizeof(query), "UPDATE `accounts` SET `Money` = %d,`Health` = %.1f, `Admin` = %d, `Payday` = %d, `Fraktion` = %d, `FraktionsRang` = %d, WHERE `Name` = '%e'",pInfo[playerid][pMoney],pInfo[playerid][pHealth],pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang], pInfo[playerid][pName]);
    mysql_tquery(MyCon,query,"","");
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Name` = '%e'", pInfo[playerid][pName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];

    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[32]{s[32]}dfdddd", pInfo[playerid][pName], pInfo[playerid][pMoney], pInfo[playerid][pHealth], pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang]);
    }
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    mysql_free_result();
    return 1;
    }


    Achja, alles andere wird gespeichert. Nur halt die Fraktionen nicht.

  • Versuche es mal so



    stock SaveFrak(frakID)
    {
    new query[350];
    mysql_format(MyCon, query, sizeof(query), "UPDATE `fraktionen` SET `fLeader` = %s, `Money`= %d, WHERE `ID` = %d", fInfo[frakID][fLeader], fInfo[frakID][fMoney], fInfo[frakID][fID]);
    mysql_tquery(MyCon, query, "", "");
    return 1;
    }


    stock LoadFrak(frakID)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `fraktionen` WHERE `Name` = '%s'", fInfo[frakID][fName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];


    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[30]s[30]d", fInfo[frakID][fName], fInfo[frakID][fLeader], fInfo[frakID][fMoney]);
    }
    mysql_free_result();
    return 1;
    }


    stock SavePlayer(playerid)
    {
    GetPlayerHealth(playerid, pInfo[playerid][pHealth]);
    new query[350 + MAX_PLAYER_NAME];
    mysql_format(MyCon,query, sizeof(query), "UPDATE `accounts` SET `Money` = %d,`Health` = %.1f, `Admin` = %d, `Payday` = %d, `Fraktion` = %d, `FraktionsRang` = %d, WHERE `Name` = '%s'",pInfo[playerid][pMoney],pInfo[playerid][pHealth],pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang], pInfo[playerid][pName]);
    mysql_tquery(MyCon,query,"","");
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Name` = '%s'", pInfo[playerid][pName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];

    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[32]{s[32]}dfdddd", pInfo[playerid][pName], pInfo[playerid][pMoney], pInfo[playerid][pHealth], pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang]);
    }
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    mysql_free_result();
    return 1;
    }

  • Aber mit %s klappt das trotzdem nicht. Bei /stats steht es vor dem Relog noch. Also muss es irgendwo verloren gehen. Finde aber den Fehler nicht. Muss an einer der Funktionen Liegen. Bzw an 2 da ja weder die Fraktions noch die Playertabelle geupdatet wird.


  • stock SaveFrak(frakID)
    {
    new query[350];
    mysql_format(MyCon, query, sizeof(query), "UPDATE `fraktionen` SET `fLeader` = %s, `Money`= %d WHERE `ID` = %d", fInfo[frakID][fLeader], fInfo[frakID][fMoney], fInfo[frakID][fID]);
    mysql_tquery(MyCon, query, "", "");
    return 1;
    }


    stock LoadFrak(frakID)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `fraktionen` WHERE `Name` = '%s'", fInfo[frakID][fName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];


    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[30]s[30]d", fInfo[frakID][fName], fInfo[frakID][fLeader], fInfo[frakID][fMoney]);
    }
    mysql_free_result();
    return 1;
    }


    stock SavePlayer(playerid)
    {
    GetPlayerHealth(playerid, pInfo[playerid][pHealth]);
    new query[350 + MAX_PLAYER_NAME];
    mysql_format(MyCon,query, sizeof(query), "UPDATE `accounts` SET `Money` = %d,`Health` = %.1f, `Admin` = %d, `Payday` = %d, `Fraktion` = %d, `FraktionsRang` = %d WHERE `Name` = '%s'",pInfo[playerid][pMoney],pInfo[playerid][pHealth],pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang], pInfo[playerid][pName]);
    mysql_tquery(MyCon,query,"","");
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    new query[350];
    format(query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Name` = '%s'", pInfo[playerid][pName]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];

    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}s[32]{s[32]}dfdddd", pInfo[playerid][pName], pInfo[playerid][pMoney], pInfo[playerid][pHealth], pInfo[playerid][pAdmin], pInfo[playerid][pPayday], pInfo[playerid][pFrak], pInfo[playerid][pFrakRang]);
    }
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    mysql_free_result();
    return 1;
    }


    schau mal so am ende jedes Updates war noch ein Komma eventuell war das daran schuld.
    Was sdagt denn der Mysql Log ?


    mit freundlichem Gruß
    Timo Schneider

  • Versuche es da mal so:



    stock SaveFrak(frakID)
    {
    new query[350];
    mysql_format(MyCon, query, sizeof(query), "UPDATE `fraktionen` SET `fLeader` = %s, `Money`= %d WHERE `ID` = %d", fInfo[frakID][fLeader], fInfo[frakID][fMoney],frakID);
    mysql_tquery(MyCon, query, "", "");
    return 1;
    }

  • Sie müssen nicht aber Sie sollten.


    mit freundlichem Gruß
    Timo Schneider

    Dann versuch doch mal im PMA einen Query abzusenden, wo der String nicht in Anführunszeichen / Hochkommata steht. :whistling:

    • Strings in Anführungszeichen
    • Integer / Float / etc. ohne Anführungszeichen

    Richtig, es erscheint ein Fehler, sofern der Wert nicht mit einem Spaltennamen übereinstimmt, denn er sucht ansonsten nach einem Spaltennamen.


    Selbst wenn das MySQL Plugin da irgendeine Abhilfe schafft (wovon ich nichts weiß), sodass man keine Anführungszeichen verwenden muss, dann ist es immernoch ein schlechter Programmierstil.