Textdraw verstecken

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
  • Moinsen,


    Ich bin dabei Anti Kill Areas einzufügen, klappt auch soweit, jedoch will er beim Verlassen des Gebietes das Textdraw nicht verstecken.


    Folgender Code:
    new Text:antidm[MAX_PLAYERS];
    for(new i=0; i < MAX_PLAYERS; i++) //This line defines a name for all player, the name is "i"
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(i, X, Y, Z); //Here we are storing the player position on the variables X, Y, and Z defined previously
    if (X <= 1831 && X >= 1686 && Y <= -1852 && Y >= -2006)
    {
    //GameTextForPlayer(i,"Anti DM Bereich",1,6);
    //X=26 Y=331
    antidm[i]=TextDrawCreate(26,331,"Anti DM Bereich");
    TextDrawShowForPlayer(i,antidm[i]);
    }else{
    SendClientMessage(i,ROT,"Debug");
    TextDrawHideForPlayer(i,antidm[i]);
    }
    }


    Habe, wie man sieht, getestet, ob es am TextDrawHideForPlayer liegt, oder an der Bereichsdefinition. Jedoch wird die Debugmeldung ausgegeben, sobald ma den Bereich verlässt.


    Also liegts am TextDrawHideForPlayer.
    Doch was mache ich falsch?


    Danke schonmal im Voraus.


    //EDIT: Hat wirklich keiner eine Idee? :O
    Grüße

  • Ich rate dir zum folgendem:



    if (X <= 1831 && X >= 1686 && Y <= -1852 && Y >= -2006)
    {
    //Debug Test setzen, SendClientMessage etc.
    //GameTextForPlayer(i,"Anti DM Bereich",1,6);
    //X=26 Y=331
    antidm[i]=TextDrawCreate(26,331,"Anti DM Bereich");
    TextDrawShowForPlayer(i,antidm[i]);
    }

    Ab da ist er in der angegebenden Position und darf kein DM schieben.
    Meine Variante wäre ein Timer zu setzen, was zum Updaten der Koordinaten bringt.
    Code:



    new Timertest;
    if (X <= 1831 && X >= 1686 && Y <= -1852 && Y >= -2006)
    {
    //Debug Test setzen, SendClientMessage etc.
    Timertest = SetTimerEx("HandleUpdate", 500, true);
    }


    forward HandleUpdate ( playerid );
    public HandleUpdate ( playerid )
    {
    if (X >= 1831 && X >= 1686 && Y >= -1852 && Y >= -2006)
    {
    KillTimer(TimerTest);
    //Ist er über den Koordinaten, muss er die Fehlermeldungen bekomme.
    Der Code ist nicht korrekt in allen Sachen, müsstest du noch ausbessern.
    }
    }


    //angepasst