Bank Auszug System

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 Com ich wollte mal fragen wie ich ein Bankauszug system mache ich habe schon das ein Spieler Ein/aus Zahlen kann überweisen und Kontostand überprüfen kann und jetze will ich Wissen wie kann ich das machen,
    dass man /atm machen kann sich ein Bank auszug lösen kann und da die letzten 10 Aktivitäten stehen z.b
    22.01.2015: 10000$ ausgezahlt am Bankautomarten Fahrschule.
    23.01.2015: 5000$ an Jeffry überwiesen.
    und das im Dialog anzeigen lassen aber wie ?

  • Ja, das kannst du machen.
    Arbeite dazu mit einer Spielervariable, die du bei jeder Transaktion um eins erhöhst, also beispielsweise:
    SetPVarInt(playerid, "TransaktionID", GetPVarInt(playerid, "TransaktionID") + 1);


    Dann fragst du beim speichern in die Datenbank ab, ob das größer als 10 ist, falls ja machst du ein Update, ansonsten ein Insert.


    new id = GetPVarInt(playerid, "TransaktionID")-1;
    if(id >= 10)
    {
    format(query, sizeof(query), "UPDATE tabelle SET datum = '%s', empfaenger = '%s' WHERE id = '%d' and name = '%s'", datum, empf, (id%10)+1, SpielerName(playerid));
    //Das id%10 ist Modulo 10, also nur Werte zwischen 1 und 10.
    }
    else
    {
    format(query, sizeof(query), "INSERT INTO tabelle (id, datum, empfaenger, name) VALUES ('%d', '%s', '%s', '%s')", id+1, datum, empf, SpielerName(playerid));
    }


    Alternativ kannst du es auch so machen, dass du immer weiter hoch zählst und die löschst, die älter als die 10 neusten sind:
    new id = GetPVarInt(playerid, "TransaktionID");
    format(query, sizeof(query), "DELETE FROM tabelle WHERE id <= '%d' and name = '%s'", id-10, SpielerName(playerid));
    format(query, sizeof(query), "INSERT INTO tabelle (id, datum, empfaenger, name) VALUES ('%d', '%s', '%s', '%s')", id+1, datum, empf, SpielerName(playerid));

    Ist eben nicht ganz so performant, das macht hier aber keinen Unterschied.

  • SQL
    DELETE from `Tabelle` WHERE timestamp < (Now() - INTERVAL 14 DAY)


    Löscht alle Einträge die älter als 14 Tage von jetzt sind.
    Dann kannst du auf deinem Server in irgendeinem Timer (zmb. alle 5 Minuten) diese Query abschicken.

  • Und wie würdet ihr sie Tabelle erstellen ?
    DB Id | String | Ort | Datum
    1 | 5000$ vom Konto abgehoben | Bank Los Santos |24.01.2015
    So ?



    Noch 2 Fragen
    Gibt es ein Gutes Tutorial wie ich Frak Cars in einer Datenbank erstelle ?
    Gibt es ein Gutes Tutorial wie ich eine Fraktion mit Eimer Datenbank erstelle ?

  • Code
    ID | Name | String | Ort | Datum


    Der Name ist eben wichtig, oder alternativ die Datenbank ID des Spielers. So dass du eben die Transaktion einem Spieler zuordnen kannst.


    Generell könntest du es auch anders machen:

    Code
    ID | Name | Empfaenger | Betrag | TransaktionsModus | Ort | Datum


    Daraus könntest du dann flexibel den String erstellen.



    Zwecks der Tutorials: Mir wäre kein wirklich gutes bekannt.

  • Oke ich werde es am Pc Probieren


    1 Frage
    Wenn ich Frak Cars erstellen will mit einer Datenbank brauche ich ja ein Enum wo das enthalten sein muss


    FID (Frakid)
    X
    Y
    Z
    R
    Farbe 1
    Farbe 2


    Brauche ich nochwas ?
    Genauso muss ich die Datenbank erstellen ?
    Und dann bei ObGameModeInit

  • Jeffry:
    also ich habe die Cars vom Spieler so erstellt
    und dann am besten einfach ein befehl machen und dort hinparken und das dann machen das es an dem ort in die Tabelle eingetragen wird ?
    und dann halt wie die Player Cars laden/speichern ?


    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    new string[128];
    if(cInfo[i][id_x]!=0)continue;
    cInfo[i][besitzer]=sInfo[playerid][db_id];
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
    tank[cInfo[i][id_x]] = 100;
    format(string,sizeof(string),"%s",getPlayerName(playerid));
    SetVehicleNumberPlate(cInfo[i][id_x],string);
    SetVehicleParamsEx(cInfo[i][id_x],0,0,0,1,0,0,0);
    saveCarToDB(playerid,i);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET Kennzeichen='%s' WHERE id='%i'",cInfo[i][ckz],cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    return 1;
    }


    /edit oder am Besten für jede Fraktion eine Tabelle nach dem Prinzip erstellen ?

  • Das Laden, Speichern und Erstellen kannst du analog zu den PlayerCars machen, ja.
    Du machst für jede Fraktion eine Zeile in der Tabelle, nicht für jede Fraktion eine eigene Tabelle, das wäre nicht gut.


    Generell kannst du es genau gleich aufbauen wie das PlayerCars-System, nur eben mit anderen Werten und Funktionen.

  • Wenn du dir die Daten in der Tabelle anschaust (zum Beispiel bei den Fahrzeugen), dann hat jedes Fahrzeuge eine Zeile in der Tabelle. Das meinte ich.
    Weil du ja gefragt hast ob es besser wäre für jede Fraktion eine eigene Tabelle zu erstellen. Nein, alles in eine Tabelle.

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