Eigenes Geld System erstellen?

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
  • Mein anderer Beitrag eben war fail..
    Deshalb jetzt der neue.



    Also:


    Ich habe vor mir ein eigenes Geld System zu machen mit Textdraws.


    So sieht es auf einem anderem Server aus:

    Als muster habe ich mir mein Zeit/Datum vorgenommen und habe nun dieses:


    new Text:GeldText;


    GeldText = TextDrawCreate(552.000000,81.000000,"0000000$");
    TextDrawUseBox(GeldText,1);
    TextDrawBoxColor(GeldText,0x000000ff);
    TextDrawTextSize(GeldText,-2.000000,112.000000);
    TextDrawAlignment(GeldText,2);
    TextDrawBackgroundColor(GeldText,0x000000ff);
    TextDrawFont(GeldText,3);
    TextDrawLetterSize(GeldText,0.699999,2.299999);
    TextDrawColor(GeldText,0xffffffff);
    TextDrawSetOutline(GeldText,1);
    TextDrawSetProportional(GeldText,1);
    TextDrawSetShadow(GeldText,1);
    UpdateGeld();
    SetTimer("GeldTimer",1000,1);


    public GeldTimer()
    {


    }


    Nur meine Frage ist jetzt:


    Was muss in den Timer rein? weil bei der Zeit/Datum ist das hier drinne:

    Spoiler anzeigen
    public UpdateDatum()
    {
    new datestr[50];
    getdate(jahr, monat, tag);
    format(datestr, 32, "%02d.%02d.%d", tag, monat, jahr);
    TextDrawSetString(ShowDatum, datestr);
    }


    und das hilft mir nicht so recht ^^


    und weiter wollte ich noch wissen wie man dann geld dazu geben / abziehen kann.


    Wäre sehr dankbar wenn mir jemand helfen kann und es mir erklären kann.
    MfG HellFire

  • die seite auf englisch verstehe ich nicht so ganz..
    und mit Euro,Cent kann auch beides Euro sein.. soll halt nur aussehen wie Cent und halt mit nem , getrennt werden




    Ich würde mir an deiner Stelle eine Funktion erstellen, wo du einem Spieler Geld gibst und abziehst, und die Anzeige dann automatisch geupdated wird.

    sowas suche ich doch oô

  • Wenn du kein Englisch kannst, wie stellst du dir deine Zukunft als Scripter vor?


    Es ist doch alles zu verstehen, dort steht was du wo einfügen musst.

  • Ich glaube, du musst entweder: new Text:GeldText[MAX_PLAYERS]; oder PlayerTextDraw verwenden, da sonst jeder die selbe Menge an Geld hat, denk ich. Dann:
    forward GeldTimer(playerid);
    public GeldTimer(playerid)
    {
    new geld = GetPlayerMoney(playerid);
    TextDrawSetString(GeldText[playerid],geld);
    }


    edit: Oben dann natürlich anstatt GeldText immer GeldText[playerid] erstellen und das dann anstatt bei OnGameModeInit bei OnPlayerConnect createn.

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

  • n(333) : warning 204: symbol is assigned a value that is never used: "geld"



    kommt wenn ich es so mache wie du es sagst @ Key



    (e):


    Zeile:
    public GeldTimer(playerid)
    {
    new geld = GetPlayerMoney(playerid); //<<<<<<< Hier
    TextDrawSetString(GeldText[playerid],geld);
    }

  • Versuchs mal so:

    forward GeldTimer(playerid);
    public GeldTimer(playerid)
    {
    TextDrawSetString(GeldText[playerid],GetPlayerMoney(playerid));
    }


    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @BlackAce: Stimmt, danke. :D


    HellFire: Ahh! Jetzt versteh ich. :D Du musst eine neue Variable im Spielerenum / PVar erstellen mit dem Namen "Geld", beim GeldTimer die Variable abfragen ( GetPVarInt / SpielerInfo[playerid][Geld] etc. ) und die Geldvariable in ein String umwandeln ( Danke an Black! :D ) mit format. Wenn du's nicht hinbekommst mach ich das gleich mal.

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

  • Hehe :D.
    So mein ichs:

    public GeldTimer(playerid)
    {
    new string[124];
    new vgeld[MAX_PLAYERS];
    vgeld[playerid] = GetPVarInt(playerid,"Geld");
    format(string,sizeof string,vgeld[playerid]);
    TextDrawSetString(GeldText[playerid],string);
    }


    Mit SetPVarInt(playerid,"Geld",5000); o.ä. kannst du dann dem Spieler Geld hinzufügen/abziehen.

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

  • new Text:GeldText[MAX_PLAYERS];
    forward GeldTimer(playerid);


    public GeldTimer(playerid)
    {
    new string[124];
    new vgeld[MAX_PLAYERS];
    vgeld[playerid] = GetPVarInt(playerid,"Geld");
    format(string,sizeof string,vgeld[playerid]);
    TextDrawSetString(GeldText[playerid],string);
    }


    public OnPlayerConnect(playerid)
    {
    GeldText[playerid] = TextDrawCreate(552.000000,81.000000,"0000000$");
    TextDrawUseBox(GeldText[playerid],1);
    TextDrawBoxColor(GeldText[playerid],0x000000ff);
    TextDrawTextSize(GeldText[playerid],-2.000000,112.000000);
    TextDrawAlignment(GeldText[playerid],2);
    TextDrawBackgroundColor(GeldText[playerid],0x000000ff);
    TextDrawFont(GeldText[playerid],3);
    TextDrawLetterSize(GeldText[playerid],0.699999,2.299999);
    TextDrawColor(GeldText[playerid],0xffffffff);
    TextDrawSetOutline(GeldText[playerid],1);
    TextDrawSetProportional(GeldText[playerid],1);
    TextDrawSetShadow(GeldText[playerid],1);
    GeldTimer(playerid);
    SetTimer("GeldTimer",1000,1);


    Balken wird nicht angezeigt und eine Zahl oder ähnliches auch nicht :(
    Der Balken soll ja das Standard Geld überdecken und in den balken soll das neue geld..


    aber passiert halt nichts :S


    (EDIT):


    Kann das was mit diesem ,"0000000$"); beim Erstellen des TextDraw´s zu tun haben?
    Bei der Zeit/Datum Anzeige wird das ja so benutzt:



    public UpdateDatum()
    {
    new datestr[50];
    getdate(jahr, monat, tag);
    format(datestr, 32, "%02d.%02d.%d", tag, monat, jahr);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


    und so wird es als TextDraw erstellt:
    ,"00.00.0000");


    kann da was zusammen hängen?

  • Unter dem ganzen Zeugs musst du noch TextDrawShowForPlayer(playerid,"GeldTex[playerid]"); machen. :)

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

  • Dein Format muss so aussehen:
    format(string, sizeof(string), "$%07d", vgeld[playerid]);


    Durch %07d erzeugt er dir automatisch 7 Zahlen. So hast du wie normal auch, die nullen vor deinem Geldbetrag.


    /EDIT: TextDrawShowForPlayer(playerid,"GeldTex[playerid]");
    muss zu TextDrawShowForPlayer(playerid, GeldTex[playerid]); geändert werden.


  • TextDrawShowForPlayer(playerid, GeldText[playerid]);


    So, hatte gleich 2 Fehler in einer Zeile. Fail. Bin zu müde, sry. :D

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.