[INC] 8D's Cashsystem 1.0

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 SA:MP'Ler,


    hiermit möchte ich euch das 8D. Cashsystem vorstellen.


    Dieses Cashsystem ersetzt das normale Geldsystem aus SA:MP.


    Dies hat mehrere Vorteile, unter anderem:


    • Automaten werden automatisch deaktivert, wenn kein "normales Geld" vorhanden ist.
    • Leicht erkennbares Cheating, sofern Casino & Stuntbonus deaktiviert sind.
    • Dollar & Cent System.


    Wie gesagt, arbeitet dieses System mit richtigem Geldformat, also Dollar und Cents.


    Nun zu den Funktionen:


    GivePlayerCash(playerid,dollars,cents)


    Mit dieser Funktion, gebt ihr dem Spieler(playerid) Geld in Form von Dollar & Cents. (dollars,cents);


    EnoughCash(playerid,dollars,cents)


    Hiermit fragt ihr ab, ob der Spieler(playerid) genügend Geld in Form von Dollar (dollars) & Cents (cents) hat.
    Wenn ja, wird 1 zurückgegeben, wenn nicht 0.


    ResetPlayerCash(playerid)


    Hiermit setzt ihr das Geld des Spielers auf 0. Beides - Dollar und Cents.


    GetPlayerDollars(playerid)


    Gibt den Dollar-Wert des Spielers(playerid) zurück.


    GetPlayerCents(playerid)


    Gibt den Cent-Wert des Spielers(playerid) zurück.


    SetPlayerCash(playerid,dollars,cents)


    Setzt das Geld des Spielers(playerid), in Form von Dollar(dollars) & Cents(cents).



    Das ganze sieht dann im Spiel so aus.



    Nun fragen sich bestimmt Leute, wie man denn dann /pay Befehl benutzt.
    Bestimmt denkt ihr an /pay [playerid] [dollar] [cents]. Geht dann zwar auch, aber warum die Lücke zwischen Dollar und Cents.


    Anhand von dcmd & sscanf, geht das ganze auch so.



    dcmd_zahlen(playerid,params[])
    {
    new giveplayerid,dollars,cents;
    if(sscanf(params, "up.dd",giveplayerid,dollars,cents)) {
    SendClientMessage(playerid,COLOR_RED,"Verwendung: /zahlen [playerid] [Dollars.Cents]");
    SendClientMessage(playerid,COLOR_RED,"Beispiel: /zahlen 0 4.50 (Es ist wichtig, dass ihr den Cent-Betrag genau ausschreibt. Bsp: 4.50 (50Cent) und nicht 4.5 (5 Cent).");
    return 1;
    }
    if(!IsPlayerConnected(giveplayerid)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    if(giveplayerid == playerid) {
    return SendClientMessage(playerid,COLOR_RED,"Du kannst dir nicht selber Geld zahlen.");
    }
    if(!EnoughCash(playerid,dollars,cents))
    {
    return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genügend Geld.");
    }

    GivePlayerCash(giveplayerid,dollars,cents);
    GivePlayerCash(playerid,-dollars,-cents);
    return 1;
    }


    Wie im Command zu sehen ist es wichtig, dass ihr den vollen Cent-Betrag ausschreibt. Also nicht /zahlen [playerid] 4.5 für 4.50$, sondern /zahlen [playerid] 4.50


    Damit könnt ihr dann ganz einfach den Dollar-Wert von dem Cent-Wert durch einen "." im Command und nicht durch die Leertaste trennen.
    Geht aber auch beides.


    Des weiteren möchte ich noch erwähnen, dass das / der TXD nicht per Timer (Ressourcenlast) up to date gehalten wird, sondern durch den GivePlayerCash befehl. (Ressourcenschonend).


    Wie ihr die include benutzt:


    Oben im Script:


    #include <8d-geldsystem>


    Bei OnPlayerConnect:


    GS_Connect(playerid);



    Bei OnPlayerDisconnect:


    GS_Disconnect(playerid)



    Copyrightsmerkmale:


    • In der Include per Kommentar (KEIN ENTFERNEN ERLAUBT)
    • Bei OnPlayerConnect per SendClientMessage (ENTFERNEN ERLAUBT, aber würde mich freuen, wenn es drinnen bleibt).


    Download:



    P.S. Fehler & Vorschläge und Bugs können gerne geäußert werden.

    Einmal editiert, zuletzt von 8D ()

  • Hammer 100/10 Fischchen :thumbup:


    Aber den textdraw machste noch mal in Schick,oder?? Sonst nehme ich dir 99Punkte wieder ab.Das kannste echt Besser 8D. :thumbup:

  • Zitat

    Naja nur ne Variable die sich als Geld ausgibt :>

    Ein Beispiel ist gegeben, wie man diese "Variable" auch in Form von Geld benutzt ;)


    Wer will kann auch gerne noch folgendes ändern:


    stock GivePlayerCash(playerid,dollars,cents)


    in


    stock GivePlayerCash(playerid,dollars,cents = 0)


    und ganz unten in die include folgendes reinschreiben.


    #define GivePlayerMoney GivePlayerCash



    Dann braucht ihr euren GM nicht komplett ändern, sondern könnt, wenn ihr die anderen Funktionen auch so umschreibt, die alten Funktionsnamen verwenden.



    Zitat

    Aber den textdraw machste noch mal in Schick,oder??

    Vorschläge?

  • Ich fände es besser, wenn man bei GivePlayerCash(playerid, dollar, cent) einfach einen Float wert nehmen würde und dann nur GivePlayerCash(playerid, betrag)
    Dann kann man auch den /pay befehl ändern und einfach die Float:variable mit dem eingetippten Float addieren.
    So muss man keine 0 am ende hinzufügen. und wenn jemand mehr als zwei nachkommastellen nimmt, gibts ja ne floatround funktion.


    Ansonsten gefällt mir das Script.


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Find ich bisschen Unnötig.


    Wenn man Cent haben möchte kann man eifnach bei den Normalen Zahlen ein Komma vor die beiden letzten Zahlen klatschen und Alle Preise mal 100 nehmen.
    Gegen das Cheaten ist das natürlich praktisch, aber so kann man ja auch ein Unbetrügbares Anticheat basteln.

  • Kann man das auch als filterscript nehmen ??

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


    In der Include per Kommentar (KEIN ENTFERNEN ERLAUBT)
    Bei OnPlayerConnect per SendClientMessage (ENTFERNEN ERLAUBT, aber würde mich freuen, wenn es drinnen bleibt).


    wenn ich mich nicht täusche kann alles machen. Oder hast Nachweis dass du es an copyright angemeldet hast?

  • Ich finden dieses System nicht so...
    ich persöhnlich würde dies nicht benutzen abér sicher andere 5/10
    finde es optisch schlecht aber die idee ist gut!

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)