Payday

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 Community,


    mein Problem liegt darin, dass das geld PROZENTUAL beim Payday von der Mafia Fraktionskasse abgezogen werden soll... aber bislang kam ich zu keiner lösung
    d.h. z.b. 10000 ist in der Fraktionskasse vorhanden und Spieler mit Rang 1 bekommt davon 0,04 %

    if(isPlayerInFrakt(i,2)) // MAFIAFRAK
    {
    switch(GetPVarInt(i,"Rang"))
    {
    case 1:{GivePlayerMoney(i,600);SendClientMessage(i,BLAU,"Payday. Du erhältst 600$.");}
    case 2:{GivePlayerMoney(i,800);SendClientMessage(i,BLAU,"Payday. Du erhältst 800$.");}
    case 3:{GivePlayerMoney(i,1000);SendClientMessage(i,BLAU,"Payday. Du erhältst 1000$.");}
    case 4:{GivePlayerMoney(i,1200);SendClientMessage(i,BLAU,"Payday. Du erhältst 1200$.");}
    case 5:{GivePlayerMoney(i,1500);SendClientMessage(i,BLAU,"Payday. Du erhältst 1500$.");}
    case 6:{GivePlayerMoney(i,1800);SendClientMessage(i,BLAU,"Payday. Du erhältst 1800$.");}
    }
    }


    stock LoadKasse()
    {
    new datei[64]; //
    format(datei,sizeof( datei ),"/fraktionskasse.txt"); //
    fraktionskasse [Mafia] = dini_Int( datei ,"Mafia"); // Kasse von Fraktion Mafia
    fraktionskasse[Staat] = dini_Int( datei ,"Staat"); // Kasse von Fraktion Staat
    return 1;
    }
    stock SaveKasse()
    {
    new datei[64]; // Unsere Datei
    format(datei,sizeof( datei ),"/fraktionskasse.txt"); // Unser Dateiname
    dini_IntSet(datei,"Mafia", fraktionskasse [Mafia]); // Geld von Fraktion Mafia
    dini_IntSet(datei,"Staat", fraktionskasse [Staat]); // Geld von Fraktion Staat
    return 1;
    }

  • Prozent bedeutet pro hundert. D.h., wenn du dem Spieler 0,04% auszahlen willst, bekommt er 0,04 hundertstel der Kasse.
    Du rechnest also den Betrag in der Kasse durch 100 und nimmst diesen Wert mit 0,04 mal. Für Spieler mit höheren Ränken nimmst du natürlich 0,08 oder 0,20 oder was weiß ich. Du musst aber beachten, dass bei dieser Vorgehensweise die Spieler immer weniger Geld bekommen.
    Nehmen wir an, es sind 10.000$ in der Kasse. Spieler 1 bekommt 0,04% davon, also (10.000/100)*0,04 = 4$. Diese 4$ wurden ja nun von den 10.000$ ausbezahlt, deswegen sind nurnoch 9.996$ in der Kasse. Bekommt Spieler 2 jetzt sein Geld, erhält er aber 0,04% von den 9.996$, und nicht den vollen 10.000$ -> (9.996/100)*0,04 = 3.99$

  • Nächstes Problem....
    Nehmen wir mal an, es sei nicht allzuviel in der Kasse und wir haben eine Menge Spieler.
    Natürlich unter der Annahme, dass wir vorab für alle vom Gesamtbetrag die Einzelsummen berechnen.
    Sprich jeder ranggleiche kriegt den gleichen Betrag...


    So kann es sogar vorkommen, dass wir am Ende ein Minus in der Kasse haben.



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )


  • new rangMoney;
    switch(GetPVarInt(i, "Rang"))
    {
    case 1: rangMoney = 40;//0,04%
    case 2: rangMoney = 80;//0,08%
    //usw.
    }
    new newMoney = (fraktionskasse[..]/1000)*rangMoney;
    if(newMoney < fraktionskasse[..])return SendClientMessage(playerid, COLOR_GREY, "Die Fraktionskasse hat nichtmehr genügend Geld, also kriegst du keinen Lohn.);
    GivePlayerMoney(i, newMoney);


    Sollte theoretisch klappen. :)