Abfrage ob der Spieler im Wasser ist?

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
  • Tag :D
    bin immer noch in meiner Freizeit am Scripten lernen xD


    Wollt mal Fragen ob man abfragen kann ob der Spieler im Wasser ist?
    Hab dazu nichts gefunden.


    Wäre nett wenn mir das jemand beantworten könnte :D

  • Kenne 2 möglichkeiten:
    1. Schwimmanimation abfragen (funktioniert nicht in Fahrzeugen)
    2. MapAndreas -> gibt als Z-Wert 0 zurück wenn der Spieler im Wasser ist (Nachteil: Es gibt auch andere Stellen in SA die dann als Wasser erkannt werden)

  • Und wie genau frage ich die Schwimmanimation ab? :D
    Ein Beispiel wäre cool.


    Möchte sobald der Spieler im Wasser ist, dass er nach und nach HP verliert :S



    Das ist denke ich mal kein Problem, nur weiß ich gerade nicht richtig wie ich die Schwimmanim abfragen soll :D
    Wäre nett wenn du mir hilfst :D

  • Erstmal musst du rausfinden welche ID die Schwimmanimation hat. Einfach unter OnPlayerUpdate:
    new s[10];
    format(s,10,"Anim: %d",GetPlayerAnimationIndex(playerid));
    SendClientMessage(playerid,0x00FF00,s);
    wenn du dann die ID hast kannst du sie einfach mit GetPlayerAnimationIndex vergleichen.

  • Gut habe es nun soweit das anerkannt wird, wenn ich im Wasser bin.
    Das habe ich so gemacht:



    if(GetPlayerAnimationIndex(playerid))
    {
    new animlib[32];
    new animname[32];
    GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
    if(!strcmp(animname,"SWIM_CRAWL"))
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du bist im Wasser!");
    return 1;
    }
    else
    {
    return 1;
    }


    Nun kriege ich aber die ClientMessage 100x die Minute, wollte fragen, wie man das macht, das diese nur 1x angezeigt wird?^^


    /edit jmd ne Idee?

    Einmal editiert, zuletzt von John ()

  • Probiers mal mit nem Timer.
    Oder wenn die Message gesendet wurde:


    SetPVarInt(playerid,"imwasser",1);


    Und dann noch:


    If(GetPVarInt(playerid,"imwasser")==1)return SendClientMessage(playerid,GRAU,"Du bist im Wasser!");

  • Böser Fehler etwas unter OnPlayerUpdate zu packen -.-'
    oben im Script
    new bool:PlayerInWater[MAX_PLAYERS];
    in nem Timer
    if(GetPlayerAnimationIndex(playerid))
    {
    new animlib[32];
    new animname[32];
    GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
    if(!strcmp(animname,"SWIM_CRAWL") && (PlayerInWater[playerid] == true))
    {
    PlayerInWater[playerid] = true;
    SendClientMessage(playerid,COLOR_WHITE,"Du bist im Wasser!");
    return 1;
    }
    else
    {
    PlayerInWater[playerid] = false;
    return 1;
    }
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski