Daten 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
  • Hallo,


    meine Daten werden aus irgendeinem Grund nicht gespeichert, werden jedoch geladen, wenn ich die Daten über die Datenbank ändere.
    Ich bitte um Hilfe. :)


    Spoiler anzeigen


    enum playerInfo{
    eingeloggt,
    level,
    id,
    alevel,
    kills,
    deaths,
    mute
    }

    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%d',money='%d',alevel='%d',skins='%d',kills='%d',deaths='%d',mute='%d' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],GetPlayerSkin(playerid),sInfo[playerid][kills],sInfo[playerid][deaths],sInfo[playerid][mute], sInfo[playerid][id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }

    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    SetPlayerSkin(playerid,cache_get_field_content_int(0,"skins",dbhandle)); //////////// <---------------- GENAU DA
    sInfo[playerid][kills] = cache_get_field_content_int(0,"kills",dbhandle);
    sInfo[playerid][deaths] = cache_get_field_content_int(0,"deaths",dbhandle);
    sInfo[playerid][mute] = cache_get_field_content_int(0,"mute",dbhandle);


    Falls ich irgendwas vergessen habe zu posten, einfach bescheid geben. 8o
    Danke im voraus!


    (Selbstverständlich speichere ich die Daten bei jedem Disconnect.)


    Viele Grüße

  • SQL
    [05:36:39] [DEBUG] mysql_tquery - connection handle: 1
    [05:36:39] [DEBUG] mysql_tquery - scheduling query "UPDATE user SET level='0',money='0',alevel='4',skins='0',kills='0',deaths='1',mute='0' WHERE id='9'"..
    [05:36:39] [DEBUG] CMySQLQuery::Execute[()] - starting query execution
    [05:36:39] [DEBUG] CMySQLQuery::Execute[()] - query was successful
    [05:36:39] [DEBUG] CMySQLQuery::Execute[()] - no callback specified, skipping result saving
  • Laut Log wird alles korrekt gespeichert.
    Möglicherweise musst du nur die Ansicht von NaviCat/phpMyAdmin/... aktualisieren, damit du die Daten siehst.


    Wenn die Daten gespeichert werden, aber nicht geladen, dann poste den Log vom Laden.


    GetPlayerSkin hat ja 0 zurück gegeben. Hattest du den Skin 0? Wenn nein, versuche mal das savePlayer(playerid) per Befehl aufzurufen, während der Spieler noch online ist, es kann sein, dass GetPlayerSkin bei OnPlayerDisconnect nicht mehr funktioniert.

  • So, ich melde mich mal wieder zu Wort. Mein Problem besteht weiterhin;
    Wenn ich einen Skin/Adminrang/whatever direkt über den Server ändere und anschließend relogge werden die Daten nicht gespeichert.


    Wenn nein, versuche mal das savePlayer(playerid) per Befehl aufzurufen, während der Spieler noch online ist, es kann sein, dass GetPlayerSkin bei OnPlayerDisconnect nicht mehr funktioniert.


    Er gibt mir nur den richtigen Skin zurück, wenn ich mir den Skin selbst über die Datenbank gebe.


    Viele Grüße

  • Beitrag von Cassius ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Das Problem lag an meinem Speicher Befehl, die Daten werden nun gespeichert.


    Nun habe da noch kurz eine Frage;
    nach dem Tod wird nicht mehr der eigentliche Skin gesetzt, weil ich bei SpawnInfo dem Spieler einen festen Skin gesetzt habe, nun möchte ich auslesen lassen, welchen Skin er eigentlich hat (durch Datenbank/setskin/o.Ä)


    SetSpawnInfo(playerid,0,100,1763.2980,-1896.6514,13.5625,276.7087,0,0,0,0,0,0);


    Jeffry: Danke für deine Hilfe.

  • Ok, super!


    Mache beim Login:
    sInfo[playerid][pSkin] = cache_get_field_content_int(0,"skins",dbhandle);
    SetPlayerSkin(playerid,sInfo[playerid][pSkin]);


    Und bei OnPlayerSpawn ganz unten:
    SetPlayerSkin(playerid,sInfo[playerid][pSkin]);


    Natürlich pSkin noch im enum deklarieren.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Funktioniert nun, war Fehler meinerseits. Danke für deine Hilfe. :)



    //Komischerweise gibt's nun einen Fehler, obwohl ich nichts geändert habe.. xD
    Eben hat es noch funktioniert, nun nicht mehr, naja..

    Setze mal einen Print vor das SetPlayerSkin und schau ob der Print im Log steht, wenn du spawnst.

    Ich erhalte wieder den CJ Skin, die Funktion wird aufgerufen habe es soeben geprintet. In der MySQL Log steht;

    SQL
    [WARNING] cache_get_field_content_int - no active cache


    Habs genau so getan, wie du es oben gemacht hast.


    Wenn ich mir beispielsweise einen Skin Ingame setze und dann überprüfe, ob der Skin gespeichert wurde, wird er gespeichert. Jedoch wird mir der Skin beim spawnen komischerweise nicht gesetzt.
    Jeffry:


    Viele Grüße

    4 Mal editiert, zuletzt von Aviero ()