Beiträge von Jeffry

    Möglicherweise besteht da sogar ein ähnliches Problem.
    Aber schaue dir dafür das an, was ich in dem anderen Thread dazu geschrieben habe. :)

    fInfo[i][f_name] = cache_get_field_content(i, "fname", fInfo[i][f_name], Handle, 128);
    zu:
    cache_get_field_content(i, "fname", fInfo[i][f_name], Handle, 128);


    Ebenso bei den Rangnamen, das vor dem Gleichzeichen und das Gleichzeichen entfernen.

    Ah, so machst du das. Das sieht mir dann aber korrekt aus.
    Was mir da eigentlich nur in den Sinn kommt ist, dass du die pID irgendwo überschreibst.


    Versuche es doch mal so:
    stock SpielerSpeichern(playerid)
    {
    if(sInfo[playerid][pEingeloggt] == 0)return 1;
    new query[1024], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);

    format(query, sizeof(query), "UPDATE user SET Age='%i', Geschlecht='%i', AdminLevel='%i', Mapper='%i', Scripter='%i', Premium='%i', Level='%i', Respektpunkte='%i', ",
    sInfo[playerid][pAge], sInfo[playerid][pSex], sInfo[playerid][pAdminLevel], sInfo[playerid][pMapper], sInfo[playerid][pScripter],
    sInfo[playerid][pPremium], sInfo[playerid][pLevel], sInfo[playerid][pRespektpunkte]);

    format(query, sizeof(query), "%sBarGeld='%i', BankKonto='%i', BankGeld='%i',Skin='%i', Fraktion='%i', FraktionRang='%i', Spawn='%i', Handy='%i', Handynummer='%i', ",
    query, GetPlayerMoney(playerid), sInfo[playerid][pBankKonto], sInfo[playerid][pBankGeld],sInfo[playerid][pSkin], sInfo[playerid][pFraktion],
    sInfo[playerid][pFraktionRang], sInfo[playerid][pSpawn], sInfo[playerid][pHandy], sInfo[playerid][pHandynummer]);

    format(query, sizeof(query), "%sPayDay='%i', Spielzeit='%i', Jail='%i', JailTime='%i', Prison='%i', PrisonCheckpoints='%i' WHERE username='%s'",
    query, sInfo[playerid][pPayDay], sInfo[playerid][pSpielzeit], sInfo[playerid][pJail], sInfo[playerid][pJailTime],
    sInfo[playerid][pPrison], sInfo[playerid][pPrisonCheckpoints], name);

    mysql_function_query(Handle, query, false, "", "");
    return 1;
    }


    Dann dürfte die Bedingung auf jeden Fall korrekt sein, da über den Name zugegriffen wird.

    Ja, die Daten eben, die in der Tabelle stehen (erster Button in phpMyAdmin).


    @Jony
    Ließ dir bitte den Thread von letztem mal nochmal durch, deine Ansicht dass dies falsch ist ist falsch. Mehr sage ich dazu nicht mehr. Das Query ist mit den Ticks absolut korrekt.

    In der Änderung sind 0 Datensätze betroffen, sprich die WHERE Bedingung passt nicht.


    Das Query ist korrekt.


    Poste bitte den Screenshot der Daten aus der Tabelle, also das wo du den Name und das Passwort siehst.

    Du hast das Query falsch zusammenformatiert.
    Versuche es so:
    stock SpielerSpeichern(playerid)
    {
    if(sInfo[playerid][pEingeloggt] == 0)return 1;
    new query[1024];
    format(query, sizeof(query), "UPDATE user SET Age='%i', Geschlecht='%i', AdminLevel='%i', Mapper='%i', Scripter='%i', Premium='%i', Level='%i', Respektpunkte='%i', ",
    sInfo[playerid][pAge], sInfo[playerid][pSex], sInfo[playerid][pAdminLevel], sInfo[playerid][pMapper], sInfo[playerid][pScripter],
    sInfo[playerid][pPremium], sInfo[playerid][pLevel], sInfo[playerid][pRespektpunkte]);

    format(query, sizeof(query), "%sBarGeld='%i', BankKonto='%i', BankGeld='%i',Skin='%i', Fraktion='%i', FraktionRang='%i', Spawn='%i', Handy='%i', Handynummer='%i', ",
    query, GetPlayerMoney(playerid), sInfo[playerid][pBankKonto], sInfo[playerid][pBankGeld],sInfo[playerid][pSkin], sInfo[playerid][pFraktion],
    sInfo[playerid][pFraktionRang], sInfo[playerid][pSpawn], sInfo[playerid][pHandy], sInfo[playerid][pHandynummer]);

    format(query, sizeof(query), "%sPayDay='%i', Spielzeit='%i', Jail='%i', JailTime='%i', Prison='%i', PrisonCheckpoints='%i' WHERE id='%i'",
    query, sInfo[playerid][pPayDay], sInfo[playerid][pSpielzeit], sInfo[playerid][pJail], sInfo[playerid][pJailTime],
    sInfo[playerid][pPrison], sInfo[playerid][pPrisonCheckpoints], sInfo[playerid][pID]);

    mysql_function_query(Handle, query, false, "", "");
    return 1;
    }

    Was wird dir im Server Log ausgegeben, wenn du es so schreibst?
    ocmd:fraktion(playerid, params[])
    {
    printf("Fraktion: %d", sInfo[playerid][pFraktion]);
    printf("Name: %s", fInfo[sInfo[playerid][pFraktion]][f_name]);
    printf("Rang: %s", fInfo[sInfo[playerid][pFraktion]][f_rang1]);
    printf("ID: %d", fInfo[sInfo[playerid][pFraktion]][f_id]);
    new str[145];
    format(str, sizeof(str), "* Hinweis: "HTML_WEIS"Du bist in der Fraktion %s, dein Rang heißt %s, und die Frakid ist %d.", fInfo[sInfo[playerid][pFraktion]][f_name], fInfo[sInfo[playerid][pFraktion]][f_rang1], fInfo[sInfo[playerid][pFraktion]][f_id],Handle);
    SendClientMessage(playerid, COLOR_ROT, str);
    return 1;
    }

    @SebMcpepp
    Wenn du dem Spieler das Geld bei OnPlayerSpawn gibst, dann musst du ihm es aber vorher mit ResetPlayerMoney zurücksetzen, sonst verdoppelt sich sein Geld jedes mal wenn er spawnt.


    Ich schätze allerdings, dass du irgendwo zwischen Login und Spawn das schon drin hast, und der Spieler deshalb das Geld nicht bekommt, denn wenn du dir den Cache Wert des Geldes direkt nach dem Auslesen ausgibst, dann steht da der korrekte Wert drin (da er ja auch bei OnPlayerSpawn korrekt ist und dazwischen nicht verändert wird).



    @Markuslobicher für was denn? Das wichtigste ist ja dass es funktioniert, egal wer die Lösung oder den Hinweis bringt, wie im Fußball :)

    @Markuslobicher GivePlayerMoney benötigt die playerid als ersten Parameter, dein Vorschlag wird also nicht klappen.




    Der Grund warum es nicht geht ist, dass erst das Geld gegeben wird und dann der Cache gelesen wird. Somit ist die Variable immer 0.


    Lösche
    new geld = PlayerInfo[playerid][pMoney];


    Und füge
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    nach
    PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
    ein, dann klappt es.