HP verlusst abfragen?

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
  • Nabend,
    entweder bin ich übermüdet oder einfach zu dumm ;),


    Ich möchte via variable abfragen, ob ein Spieler innerhalb einer bestimmten Zeit eine mindest betrag HP verloren hat.


    Durch einen Timer wird abgefragt, ob der Spieler in einer gewissen Zeit die HP verloren hat.
    Jetzt bin ich soweit, hab die variablen etc. aber ich weis nicht wie ich abfragen soll, ob er mindestens 9HP verloren hat.



    Eventuell weis ja jemand weiter.




    MfG Firer

  • Health wert auslesen und in einer Variable Speichern.
    Diese Variable XX Sekunden später abfragen ob der Spieler immer noch soviel Health hat nachdem Health abgezogen wurde.


    Ist doch eigentlich ganz simple :P

  • new Float:OldHP[MAX_PLAYERS];


    stock nSetPlayerHealth(playerid, Float:hp)
    {
    OldHP[playerid] = hp;
    SetPlayerHealth(playerid, hp);
    }


    forward CheckHP(id);
    public CheckHP(id)
    {
    new Float:nHP;
    GetPlayerHealth(playerid, nHP);
    if((OldHP[id] - nHP) > 9) return true;
    return false;
    }


    Verwendung:


    if(CheckHP(playerid))//Wenn er min 9 HP verloren hat
    {
    ...
    }

  • Ach, ich bin echt übermüdet -.-
    Aber dann währe das doch schon bei 1hp passieren oder??


    Oder hätteste mal n Codesnipsel für mich?
    Ich raff das gerade echt nicht.


    if(pheal[playerid]==pheal[playerid]-5
    ???


    Neo:
    Danke man, sowas hab ich gesucht.

    Einmal editiert, zuletzt von Firerfan ()

  • forward hp


    SetTimer(playerid, "Hp", Sekunde,1);



    public hp() {


    for(new h = 0; h <= GetMaxPlayers(); h++) {
    if(IsPlayerConnected(h)) {
    new Float:hp;
    GetPlayerHealth(h,hp);
    if(leben) > 9) {
    Was passiren soll ;)


    So sollte es Klappen. MFG Weidemann :thumbup:

  • forward hp
    -> ??
    if(leben)=>100)
    -> Falsch
    Wo wird "leben" definiert, wo wird der Float zwischengespeichert?

  • Wieso will das nicht funktionieren?!
    C:\DOKUME~1\Alex\Desktop\SELFMA~1\GAMEMO~1\rl.pwn(10079) : error 032: array index out of bounds (variable "nHP")
    C:\DOKUME~1\Alex\Desktop\SELFMA~1\GAMEMO~1\rl.pwn(10080) : error 033: array must be indexed (variable "nHP")


    forward CheckHP(playerid);
    public CheckHP(playerid)
    {
    new float:nHP[MAX_PLAYERS];
    GetPlayerHealth(playerid,nHP[playerid]);
    if((OldHP[playerid] - nHP) > 7) return true;
    return false;
    }

  • forward CheckHP(id);
    public CheckHP(id)
    {
    new Float:nHP;
    GetPlayerHealth(playerid, nHP);
    if((OldHP[id] - nHP) > 9) return true;
    return false;
    }
    Hab ich doch so gepostet, nix da mit [MAX_PLAYERS]

  • forward CheckHP(id);
    public CheckHP(id)//Da siehste ne id, ne? Dann kannste das mit CheckHP(phoenix), CheckHP(playerid), CheckHP(wayne) benutzen, wenn es eine UserID darstellt
    {
    new Float:nHP;
    GetPlayerHealth(id, nHP);
    if((OldHP[id] - nHP) > 9) return true;
    return false;
    }

  • Okay, ich hab allerdings noch 2 Warnings:
    C:\DOKUME~1\Alex\Desktop\SELFMA~1\GAMEMO~1\rl.pwn(10080) : warning 213: tag mismatch
    C:\DOKUME~1\Alex\Desktop\SELFMA~1\GAMEMO~1\rl.pwn(10080) : warning 213: tag mismatch


    public CheckHP(id)
    {
    new Float:nHP;
    GetPlayerHealth(id, nHP);
    if((OldHP[id] - nHP) > 9) return true; //----- Hier
    return false;
    }


    Und dasselbe hier:


    stock nSetPlayerHealth(playerid, Float:hp)
    {
    OldHP[playerid] = hp; //------- Hier
    SetPlayerHealth(playerid, hp);
    }



    Kein Plan woher die kommen