'Zuletzt Online' Speichern

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
  • Moin.


    Bei meiner Registration wird das Datum, und die Zeit der Registration in meiner MYSQL Tabelle gespeichert, beziehungsweise im Account.
    Nun möchte ich es auch so machen, das gespeichert wird WANN er zuletzt online war.
    Habe alles schon fertig, nur keine Idee wie das ganze bei OnPlayerDisconnect in die Variable eingetragen werden könnte.




    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    Eingeloggt[playerid] = 0;
    DestroyVehicle(car[playerid]);
    Delete3DTextLabel(supportveh[car[playerid]]);
    SupMobil[playerid] = 0;

    new date[7];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    SpielerInfo[playerid][pLastOnlineDatum] = %02d.%02d.%d),



    // DAS Ist nur mein CreateAccount, damit man sieht wie es beim Createn gemacht wird. :-/.
    new query[400],Name[MAX_PLAYER_NAME],ipadress[20],date[7];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    GetPlayerIp(playerid,ipadress,20);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`IP`,`Datum`,`Zeit`) VALUES ('%s', '%s','%s','%02d.%02d.%d','%02d:%02d:%02d')", Name, pass,ipadress,date[0], date[1], date[2],date[4], date[5], date[6]);
    mysql_query(query);

    ehm. Administration StateV ~ Domi

  • Ich würde ja aher auf einen Timestamp zurückgreifen.


    pLastOnlineDatum => Integer


    SpielerInfo[playerid][pLastOnlineDatum] = gettime();
    Diese Funktion liefert den UNIX Timestamp, der später umgewandelt werden kann (in PHP durch die Funktion date() und in SAMP durch eine Funktion, die man googlen kann), da sie nur die Sekunden seit dem 01.01.1970 returnt.
    Sinnvoll, wenn man das Datum noch andersformig anzeigen lassen will.


    Wenn du das so nicht möchtest und das Datum direkt speichern willst:


    Ansonsten machst du aus "pLastOnlineDatum" einen String und lässt das Datum via format() formatieren und dann als String speicherhn.



    new hour, minute, second, day, month, year, date[17] /* Hab grad die Anzahl der möglichen Zeichen berücksichtigt, ka ob ich mich auf die Schnelle verrechnet habe */;
    gettime(hour, minute, second);
    format(date, sizeof(date), "%i.%i.%i - %i:%i", day, month, year, hour, minute);
    SpielerInfo[playerid][pLastOnlineDatum] = date;

  • Habe es jetzt so:


    new date[7],string[64],string2[64];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    format(string,sizeof(string), "d.d.%d",date[1],date[2],date[3]);
    SpielerInfo[playerid][pLastOnlineDatum] = string;
    format(string2,sizeof(string2), "d:d:d",date[4],date[5],date[6]);
    SpielerInfo[playerid][pLastOnlineZeit] = string2;


    Und bekomme folgenden Fehler:


    C:\Users\Dominik\Desktop\Fabulous-Life.de\Fabulous-Life SCRIPT\gamemodes\life.pwn(92) : warning 202: number of arguments does not match definition
    C:\Users\Dominik\Desktop\Fabulous-Life.de\Fabulous-Life SCRIPT\gamemodes\life.pwn(172) : error 047: array sizes do not match, or destination array is too small
    C:\Users\Dominik\Desktop\Fabulous-Life.de\Fabulous-Life SCRIPT\gamemodes\life.pwn(174) : error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

    ehm. Administration StateV ~ Domi

  • format(SpielerInfo[playerid][pLastOnlineDatum] ,30, "%d.%d.%d",date[1],date[2],date[3]);
    format(SpielerInfo[playerid][pLastOnlineZeit], 30, "%d:%d:%d",date[4],date[5],date[6]);


    musst nicht extra nen String erstellen ;)


    Und du musst pLastOnlineDatum und Zeit als String erstellen

  • Als erstes würde ich nur eine String Variable verwenden, die kann man doch einfach überschreiben, nachdem der erste Inhalt von dieser verwendet wurde.

    new date[7],string[64];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    format(string,sizeof(string), "%d.%d.%d",date[1],date[2],date[3]);
    SpielerInfo[playerid][pLastOnlineDatum] = string;
    format(string,sizeof(string), "%d:%d:%d",date[4],date[5],date[6]);
    SpielerInfo[playerid][pLastOnlineZeit] = string;


    //E: Du hast also auch die Prozentzeichen im format() vergessen, sollte aber auch nicht der Fehler des Problems sein.
    Wenn das so nicht funktioniert, wäre es hilfreich, dass du im Code per Kommentar angibst, wo sich ein Fehler befindet.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • new date[7],string[64];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    format(string,sizeof(string), "%d.%d.%d",date[1],date[2],date[3]);
    SpielerInfo[playerid][pLastOnlineDatum] = string; // Und Hier kommt der Fehler
    format(string,sizeof(string), "%d:%d:%d",date[4],date[5],date[6]);
    SpielerInfo[playerid][pLastOnlineZeit] = string;// Hier kommt der Fehler

    ehm. Administration StateV ~ Domi

  • stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(Eingeloggt[playerid] == 1)
    {
    new query[1024];
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    format(query,sizeof(query),"UPDATE `accounts` SET `pGeld`='%d',`pExp`='%d',`pTode`='%d',`pKills`='%d',`pHealth`='%f',`pTeam`='%d',`pWarn`='%d',`pBan`='%d',`pGeschlecht`='%d',`pEmail`='%s',`pTutorial`='%d',`pLastOnlineDatum`='%02d.%02d.%d',`pLastOnlineZeit`='%02d:%02d:%02d' WHERE `Name`='%s'",
    SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pExp],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pTeam],SpielerInfo[playerid][pWarn],SpielerInfo[playerid][pBan],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pEmail],SpielerInfo[playerid][pTutorial],SpielerInfo[playerid][pLastOnlineDatum],SpielerInfo[playerid][pLastOnlineZeit],SpielerInfo[playerid][pName]);


    mysql_query(query);
    }
    }
    }


    Und mein Dissconect
    public OnPlayerDisconnect(playerid, reason)
    {
    Eingeloggt[playerid] = 0;
    DestroyVehicle(car[playerid]);
    Delete3DTextLabel(supportveh[car[playerid]]);
    SupMobil[playerid] = 0;

    new date[7];
    getdate(date[0], date[1], date[2]);
    gettime(date[4], date[5], date[6]);
    format(SpielerInfo[playerid][pLastOnlineDatum] ,30, "%d.%d.%d",date[1],date[2],date[3]);
    format(SpielerInfo[playerid][pLastOnlineZeit], 30, "%d:%d:%d",date[4],date[5],date[6]);
    SavePlayer(playerid);
    return 1;
    }


    Er speichert jedoch nix X(

    ehm. Administration StateV ~ Domi

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen