Gesamtlohn Addierung

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


    ich möchte, dass jede Fraktion selbst Lohn für Ränge setzen kann. Jede Fraktion bekommt Dynamisch von einer anderen Fraktion einen Maximallohn gesetzt. Jetzt möchte ich die alle Variablen addieren und dann das Ergebnis mit der Eingabe vergleichen.
    Aktuell habe ich es so:
    stock GetFraktionsLohn(f){
    new lohn;
    lohn = LohnInfo[f][lohn1]+=LohnInfo[f][lohn2]+=LohnInfo[f][lohn3]+=LohnInfo[f][lohn4]+=LohnInfo[f][lohn5]+=LohnInfo[f][lohn6]+=LohnInfo[f][lohn7]+=LohnInfo[f][lohn8]+=LohnInfo[f][lohn9]+=LohnInfo[f][lohn10]+=LohnInfo[f][lohn11]+=LohnInfo[f][lohn12];
    return lohn;
    }
    Jedoch, wenn ich Lohn für 1,2,3 setze, addiert sich alles auf Lohn 1.

  • += Zuweisung mit Addition
    + Nur Addition
    = Nur Zuweisung


    Du summierst die einzelnen Löhne auf und weist diese auch direkt dem nächst hören Lohn ergänzend zu.
    Angenommen Lohn12 ist 100, Lohn11 500 und Lohn10 2000 ist nach dem Aufruf der Methode der Wert für die o.g. Werte neu berechnet:


    Lohn12 = Bleibt unverändert bei 100
    Lohn11= 500 + 100 (Lohn12) = 600
    Lohn10= 2000 + 600 (Lohn11) = 2600



    Um es kurz zu machen:
    Ersetzte += durch +.

  • Beitrag von Mr.Pawn ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Ja, habe ich. Hier:
    if(GetFraktionsLohn(Spieler[playerid][pFraktion]) > FrakMaxLohnPD)
    return SendClientMessage(playerid, COLOR_RED, " Du kannst den Lohn nicht setzen, dieser überschreitet die Max. Lohngrenze");

  • Jetzt klappt alles, nur eine Kleinigkeit versteh ich nicht so wirklich. Wie kann ich die Abfrage bzügl. dem Lohn so umschreiben, dass ich trotz das Maximal erreicht wurde, auf einem Lohn weniger setzen kann ?
    Jetzt ist so, hab ich bspw. 70.000€ erreicht, kann ich bei keinem Rang weniger machen, weil dann halt die Abfrage kommt. Gibt es da noch ne Möglichkeit ?

  • kannst du vllt den ganzen befehl hier posten dann können wir dir entsprechend umschreiben. an sich wären die schritte so


    Du kannst den lohn immer setzen
    Ist jedoch der gesamtlohn abzüglich des breits gesetzt en lohn den zu setzenden ranges , plus den neuen lohn für den rang größer als die obergrenze so sollte die fehlermeldung kommen falls nicht wird der lohn gesetzt.

  • Instand Poster, sry :D
    if(GetPVarInt(playerid, "AuswahlLohn") == 1){
    if(GetFraktionsLohn(Spieler[playerid][pFraktion]) > FrakMaxLohnPD)
    return SendClientMessage(playerid, -1, ""#SERVERF" Du kannst den Lohn nicht setzen, dieser überschreitet die Max. Lohngrenze");
    format(string, sizeof(string), ""#SERVER" Lohn von %d€ auf %d Euro gesetzt.(Rank 1)", LohnInfo[f][lohn1], strval(inputtext));
    SendClientMessage(playerid, -1, string);
    LohnInfo[f][lohn1] = strval(inputtext);
    cmd_flohn(playerid, "params");
    return 1;
    }


    Das ist der komplette Auszug ausm Dialog, im Befehl wählt man nur den entsprechenden Rang aus. Ich hoffe, es reicht.

  • Die erklärungen im Code sollten aussagekräftig genug sein :D