Problem mit GetPlayerHealth / GetPlayerArmour

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
  • Hey,
    Ich bin grade dabei einen Befehl der überprüft ob ein Spieler Godmode hat zu erstellen. Dazu erstelle ich eine Explosion an der Position des Spielers und überprüfe die Health vorher und nachher.



    GetPlayerHealth(pID,health1);
    GetPlayerArmour(pID,armor1);
    GetPlayerPos(pID,x,y,z);
    CreateExplosion(x,y,z,12,1.0);
    GetPlayerHealth(pID,health2);
    GetPlayerArmour(pID,armor2);


    Der gesamte Befehl (hab hier nur die betreffenden Zeilen reinkopiert) lässt sich ohne Errors/Warnings compilen und der Spieler verliert bei der Explosion auch normal Leben so wie er es sollte. Das Problem ist dass health1 und armor1 wenn ich mir das zum Test als String ausgeben lasse beide gleich groß sind. Vielleicht weiß ja hier jemand woran das liegt/wie man das lösen kann.

  • Das klappt so einfach nicht. So schnell wie der Code hintereinander abläuft, weiss der Server noch gar nicht,dass der Spieler Energie und Rüstung verloren hat. ( Genau genommen, wird erst frühstens nachdem die Funktion durchgelaufen ist der Status von Energie und Rüstung wieder aktualisiert =
    Du müsstest den vorher / nachher Vergleich etwas zeitverzögert aufrufen.Erstell also einen Timer,übergib am besten playerid,Energie vorher und Armor vorher und lass diese Werte testen gegen die Energie und Rüstung wenige ms später.


    SetTimerEx("Hack_Check",50,false,"dff",playerid, health, armor );


    public Hack_Check(playerid,Float:health,Float:armor) {
    // ...
    }

  • Ok, dachte ich mir eig schon dass es daran liegt, aber ich wollte eigentlich vermeiden dafür nen Timer verwenden zu müssen. Wäre super wenn jemand noch ne andre Methode kennen würde. Trotzdem danke dir Goldkiller ;)