[MySQL] Skill System speichert nicht

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
  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Und in der DB steht es auch richtig ? "DoubleEXP","DoubleWeed","DeathExplosion" jeweils als INT.
    Hast du mal geschaut ob er den Wert in der DB schreibt und es evtl. nur nicht laden tut ?

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Das aber nicht bei Save Account.
    Dann eher in CreateAccount o.ä.
    Hast du irgendwo eine Public vllt. wo du den Spieler Account bereits erstellst?
    Bin leider am Handy kann da jetzt nicht ausführlich Posten.


    Du musst natürlich einmal vorher ein Eintrag hinzufügen bevor du diesen dann Updaten(Speichern) kannst.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Du könntest einfach eine Abfrage beim Login machen die überprüft ob dieser Eintrag bereits existiert.
    Und wenn es nicht existiert lässt du den Eintrag halt erstellen.


    Beispiel:

    stock DB_Count(Table[],Where[],Where2[])
    {
    new dbquery[130];
    format(dbquery, sizeof(dbquery), "SELECT * FROM %s WHERE %s = %s", Table,Where,Where2);
    mysql_query(MySQL,dbquery);
    new num_rows, num_fields; cache_get_data(num_rows, num_fields);
    return num_rows;
    }


    Abfrage wäre dann :
    if(DB_Count("playerskills","Name",GetName(playerid)) == 0)
    {
    //Spieler hat noch kein Eintrag in der DB.
    }
    else
    {
    //Spieler hat bereits einen Eintrag.
    }


    Diese Funktion wäre jetzt dann auch nicht nur auf playerskills anwendbar sondern eig. jede Tabelle in der DB.
    if(DB_Count(Tabelle,Where,WhereWert) == 0)



    Und bei Kein Eintrag kannst du dann einfach den Query ausführen mit INSERT von oben.




    *Ich hasse die PWN BBCode einrückung...


    *Vllt. kann @Jeffry das ja nochmal begutachten. Da ich mich so sehr mit MySQL auch noch nicht auskenne.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hmm, und den stock oben hast du auch im Script eingefügt ?
    Also wenn ich diese Abfrage bei mir im Script mache geht es.


    kannst du das mal Printen ?


    also in der Stock


    vor return num_rows; printf("DB_Count_Query: %s",dbquery);printf("DB_Count_Rows: %d",num_rows); einfügen.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hmm, also ich sehe da irgendwie kein Fehler.
    Die Abfrage stimmt.
    Kannst du das selbe evtl. 2 mal mit einen Namen ohne TAG und Klammern testen ?

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Ja, weil er als den Wert 0 bei der Abfrage zurück bekommt.
    Normalerweise müsste er aber eine 1 zurück geben.



    Hmm, ich bin leider auch etwas Ratlos.
    Ersetz mal in der Stock das:
    mysql_query(MySQL,dbquery);
    durch
    mysql_query(MySQL,dbquery,true);


    und teste es nochmal.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().