Textdraw - Damage - Count Problem

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,


    Ich habe ein "counting"-Problem bei OnPlayerTakeDamage();
    Hier mal der Code:



    new Float:hp = GetPlayerHealth(playerid,hp);
    currentHpLoss[0][issuerid][playerid] = (amount > hp) ? hp : amount;
    currentHpLoss[1][playerid][issuerid] = (amount > hp) ? hp : amount;



    So wird er zurzeit verwendet.
    Wenn ich nun einen Spieler anschieße & treffen kommt der Textdraw & zeigt mir bei der Deagle bsplw. "-46 DMG".
    Soweit alles richtig, soll genauso laufen.


    WENN ich jemanden nun aber das 2. mal anschieße Updated sich der Textdraw und sagt wieder "-46 DMG". DAS möchte ich aber NICHT, es sollte eigentlich "-92 DMG" lauten. ( 46+46=92 )
    Es gibt die möglichkeit es so zu machen:


    currentHpLoss[0][issuerid][playerid] += amount;
    currentHpLoss[1][playerid][issuerid] += amount;



    Das möchte ich aber vermeiden, dann jetzt nicht mehr mit des Spielers leben gerechnet wird.
    Es wird alles immer nur der Damage gezählt. Wenn als ein Spieler 100 HP hat Countet der TextDraw nach 3 Schüssen mit der Deagle "-138HP".
    Und diese Aussage wäre ja in dem Sinne Falsch.
    ____


    Ich habe schon einiges probiert, mit dahinter schreiben, noch eine 2. Funktion einzubauen etc., nichts davon hat funktioniert.
    Probiere seit gestern dran herrum.
    Nun die Frage an euch, jemand eine Ahnung?


    Danke schonmal :)

  • new Float:hp = GetPlayerHealth(playerid,hp);


    Wieso wendest du die Funktion falsch an?


    In der Wiki ist exakt beschrieben, wie diese
    angewandt werden muss, wenn man es nicht weiß.


    new Float:hp;
    GetPlayerHealth(playerid, hp);


    Nun kannst du hp einfach verwenden...

  • Dan setzt es doch nicht gleich im oberen beispiel sondern addier es dazu.


    Du benutzen hier den Ternären Operator was möchtest du genau damit erreichen.
    die damage hinzuaddieren das ist klar aber was willst du mit dem leben machen welches du versuchst hier "auszulesen " auch hinzuaddieren wenn der betrag größer ist als das leben

  • @4#Future:Danke, aber das funktioniert so oder so, die frage ist einfach, wie ich +=amount und (amount > hp) ? hp : amount; kombiniere.


    Prototype:
    Wenn ich nicht auslese, wieviel Leben der Spieler hat, wird mir im Textdraw bei der Deagle beispielsweise immer +46 gezeigt, bzw. immer +46 hinzuaddiert.
    Wenn ein Spieler aber nur noch 7 HP oder 30 HP hat, dann sollte bei einem Treffer +7 bzw. +30 gezeigt/hinzuaddiert werden.



    /EDIT: Hat sich erledigt, habe den Fehler gefunden, danke für den Tipp, der mich drauf gebracht hat Prototype. ( += (amount > hp) ? hp : amount; )

    Einmal editiert, zuletzt von McY42O ()

  • ok du kannst das ganze kombinieren ich mach es immer noch gerne mit einer zusätzlichen klammer ist jedoch nicht nötig es ist += ist eine kombination aus zwei operator aber das hat kein
    einfluss auf den rückgabe wert des Ternären operators.


    currentHpLoss[0][issuerid][playerid] += ((amount > hp) ? hp : amount);
    currentHpLoss[1][playerid][issuerid] += ((amount > hp) ? hp : amount);


    du kannst auch ganz einfach die zusätzlichen Klammern auch weg lassen wie schon oben geschrieben


    currentHpLoss[0][issuerid][playerid] += (amount > hp) ? hp : amount;
    currentHpLoss[1][playerid][issuerid] += (amount > hp) ? hp : amount;