Alter speichert nicht richtig [MySQL]

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
  • Guten Tag,


    Ich bin noch dabei das Alter des Spielers abzufragen, in der Message wird es korrekt wiedergeben (16 Jahre alt).
    Jedoch erhält die Tabellenspalte Alter einen ganz anderen Wert, sogenannt diesen Wert: 858117527
    Hier mal der Code:


    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",AgeOfPlayer(playerid));



    stock AgeOfPlayer(playerid)
    {
    new yearold = gettime() - SpielerInfo[playerid][pAlter];
    return floatround(yearold/31536000);//ein jahr in sekunden :) 31536000 Sekunden
    }


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[600];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i',`Alter` = '%i' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf(query);
    printf("Account wurde gespeichert.");
    }
    }
    return 1;
    }

  • Dann speicher doch die Rückgabe von AgeOfPlayer

    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i',`Alter` = '%i' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],AgeOfPlayer(playerid),SpielerInfo[playerid][pName]);

    Evtl. Solltest du auch mal deine Load Funktion zeigen sonst wird dein AgeOfPlayer nur einmal beim Registrieren Funktionieren,...


    Alternative Funktion:



    stock GetYearFromTimestamp(stamp)
    {
    new yearold = gettime() - stamp;
    return floatround(yearold/31536000);
    }


    Sollte aber auch so gehen

    stock GetYearFromTimestamp(stamp) {
    return floatround((gettime() - stamp)/31536000);
    }

    Oder so:

    #define GetYearFromTimestamp(%0) floatround((gettime() - 0)/31536000);


    Falls etwas nicht klappt nicht böse sein war nen halbes Jahr nicht mehr am Scripten und beginne nun wieder

  • Meine Load Funktion finden Sie hier.
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    new query[400], data[50]; //50 zeichen bei data reichen völlig aus.
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name`='%s'",SpielerInfo[playerid][pName]);//Lese `Alles` Von Accounts aus, wo der Name sich befindet
    mysql_query(query);//abschicken des queries
    mysql_store_result();//Auflisten aller ergebnisse
    if(mysql_num_rows())//Abfragen ob datensatz existiert
    {
    if(mysql_retrieve_row())//Weiß ich nicht genau was das bewirkt.
    {
    mysql_fetch_field_row(data,"Level");//Söllte eigendlich selbsterklärend sein
    SpielerInfo[playerid][pLevel]=strval(data);
    mysql_fetch_field_row(data,"Adminlevel");
    SpielerInfo[playerid][pAdminlevel]=strval(data);
    mysql_fetch_field_row(data,"Online");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pOnline]=strval(data);
    mysql_fetch_field_row(data,"Datum");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pDatum]=strval(data);
    printf("Test1");
    SetPVarInt(playerid,"Eingeloggt",1);
    mysql_fetch_field_row(data,"Geschlecht");
    SpielerInfo[playerid][pGeschlecht]=strval(data);
    mysql_fetch_field_row(data,"Alter");
    SpielerInfo[playerid][pAlter]=strval(data);
    printf("Test2");


    }
    }
    mysql_free_result();//NIEMALS VERGESSEN!!!! gibt den benutzten speicher wieder frei
    }
    return 1;
    }

  • Hier der schöne Dialog
    if(dialogid == DIALOG_ALTER)
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    SpielerInfo[playerid][pAlter] = mktime(stunde,minute,sekunde,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]));
    if(AgeOfPlayer(playerid) < 10 && AgeOfPlayer(playerid) > 80)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",AgeOfPlayer(playerid));
    SendClientMessage(playerid,COLOR_ROT,string);
    return 1;
    }
    }

  • Sry auf Enter gekommen ich editier gleich



    if(dialogid == DIALOG_ALTER)
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    if(AgeOfPlayer(playerid) < 10 && AgeOfPlayer(playerid) > 80)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    SpielerInfo[playerid][pAlter] = GetYearFromTimestamp(mktime(stunde,minute,sekunde,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])));
    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",AgeOfPlayer(playerid));
    SendClientMessage(playerid,COLOR_ROT,string);
    return 1;
    }
    }

  • Code
    error 021: symbol already defined: "floatround"


    stock GetYearFromTimestamp(stamp)
    {
    return floatround((gettime() - stamp)/31536000);
    }
    __


    Code
    error 010: invalid function or declaration


    return floatround((gettime() - stamp)/31536000);

  • Wo den z.B du kannst auch einfach PlayerInfo[playerid][pAlter] Verwenden das ist der Interger (16)


    //Edit Außer im Dialog dort solltest du meine Funktion nutzen ich editier dir das gleich hier her



    if(dialogid == DIALOG_ALTER)
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    SpielerInfo[playerid][pAlter] = GetYearFromTimestamp(mktime(stunde,minute,sekunde,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])));
    if(SpielerInfo[playerid][pAlter] < 10 && SpielerInfo[playerid][pAlter] > 80)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",SpielerInfo[playerid][pAlter]);
    SendClientMessage(playerid,COLOR_ROT,string);
    return 1;
    }
    }