Problem mit a_zones

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
  • Habe ein kleines Problem.


    Wenn ich mich einlogge und mein
    Passwort eingeben muss, befinde ich mich in Blueberry. Im Textdraw steht
    dann Blueberry, spawne ich dann aber zum Beispiel in LS steht immernoch
    Blueberry und die echte Position steht dann HINTER Blueberry. Das
    Blueberry geht dann auch nicht mehr weg. Hier mein Code:


    new Text:Ort[MAX_PLAYERS];


    OnGameModeInit



    for(new i=0;i<MAX_PLAYERS;i++)
    {
    Ort[i] = TextDrawCreate(34.000000, 327.000000, "");
    TextDrawBackgroundColor(Ort[i], 255);
    TextDrawFont(Ort[i], 1);
    TextDrawLetterSize(Ort[i], 0.500000, 1.000000);
    TextDrawColor(Ort[i], -1);
    TextDrawSetOutline(Ort[i], 1);
    TextDrawSetProportional(Ort[i], 1);
    }

    OnPlayerSpawn:


    for(new i=0;i<MAX_PLAYERS;i++)
    {
    TextDrawShowForPlayer(playerid,Ort[i]);
    }


    Nun die Zone:


    forward Ortz();


    SetTimer("Ortz",1000,true);


    public Ortz()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    new Zonenname[100];
    GetPlayer2DZone(i, Zonenname, sizeof Zonenname);
    TextDrawSetString(Ort[i], Zonenname);
    }
    return 1;
    }


    Was ist daran falsch?

  • Das Problem dürfte bei dir der Code unter OnPlayerSpawn sein.
    Wieso zeigst du dort in einer Schleife dem Spieler ( einem Spieler (!) ) alle Textdraws im Array Ort an ?
    Es reicht doch,nur das extra Textdraw für den Spieler anzuzeigen.


    Spoiler anzeigen
    TextDrawShowForPlayer(playerid,Ort[playerid]);


    Übrigens würde ich an deiner Stelle nicht die 500 Textdraws ( falls MAX_PLAYERS nicht re-definiert wurde ) beim Scriptstart erstellen, sondern unter
    OnPlayerConnect. Heißt also,nur nach Bedarf.Verlässt der Spieler den Server wieder, löschst du diesen wieder unter OnPlayerDisconnect.
    Es wird nämlich sicherlich der Fall sein,dass du nicht alle Textdraws gleichzeitig benötigst da vllt nur 3 Spieler auf deinem Server sind. Wozu dann also
    direkt 500 erstellen ? Das ist nur unnötig erstelltes Zeug ;).


  • Könntest Du mir einen alternativ Code geben?

  • Was genau schaffst du denn nicht.
    Du lässt den Textdraw unter OnPlayerConnect erstellen ( Hast du ja bereits bei OnGameModeInit nur musst du die Schleife entfernen ) und zerstörst es unter OnPlayerDisconnect.
    Wenn du sagst wo du Probleme hast,bekommst du sicherlich Hilfe. Einen fertigen Code werde ich dir aber nicht posten ;).