Textdraw IDs "verschieben/vermischen" sich

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
  • Hi, habe lange nichts mehr gemacht mit samp, habe nun mal wieder reingeschaut und habe direkt was festgestellt:


    Ich habe einige PlayerTextdraws. Meistens sind aber immer nur so 2-3 gleichzeitig zu sehen für einen Spieler.


    Beispiel: Tacho, beim Tanken, beim befüllen von etwas (Trucker) oder ähnliches werden PlayerTextdraws angezeigt.
    Ich habe eigentlich nur zwei Textdraws die sich "nicht mögen".


    Einmal das Tacho, der Grundaufbau ist nicht player bezogen und bereits erstellt und wird für die jeweiligen Spieler nur angezeigt oder versteckt.
    Die Daten wie Geschwindigkeit und co sind PlayerTextDraws, die dann erstellt werden wenn sie gebraucht werden und später wieder zerstört werden.


    Das Zweite ist ein Fortschritts-Menu, welches beim Tanken, Beladen etc angezeigt wird. Auch hier ist der Grundaufbau ein fertig erstelltes TextDraw was nur angezeigt oder versteckt wird.
    Die PlayerTextDraws enthalten dann die Daten wie zum Beispiel die Tankstelle an der man steht oder wieviel man bereits getankt hat und wie viel man bezahlen muss und so weiter.


    Die TextDraws funktionieren einzelnt sehr gut, fährt nun aber jemand Tanken und lässt den Motor an, wird das Tacho und die Tankanzeige gleichzeitig angezeigt. Die nicht Spielerbezogenen Textdraws bleiben so wie sie sein sollen, nur 2 PlayerTextDraws, jeweils eins aus jedem, spielen verückt:


    das eine PlayerTextDraw vom Tacho, welches das Fahrzeug anzeigt, verschwindet und erscheint an der Stelle vom anderen PlayerTextDraw, welches die Tankstelle anzeigen soll. Folgend blinken beide PlayerTextDraws abwechseln.
    Das selbe passiert beim aufladen der Trucker (die selben Textdraws nur mit anderen Werten). Aber es sind jedesmal genau die selben.


    Jetzt werden natürlich viele sagen das sich da die IDs überschneiden oder ähnliches aber genau das habe ich mehrmalls kontrolliert und bewusst verhindert, indem ich zum Beispiel jeder TextDraw Variabel beim zerstören den Wert Text:INVALID_TEXT_DRAW zuweise.
    Da ja jedes TextDraw eine ID hat und diese in den entsprechenden Variabeln gespeichert wird, aber beim zerstören die Variabel vermutlich ihren Wert beibehält, war dies meine erste Vermutung. Daran kann es aber nicht mehr liegen, alle Variabeln von Zerstörten oder gar nicht erst erstellten TextDraws bekommen den Wert Text:INVALID_TEXT_DRAW. Wenn ein Neuer TextDraw erstellt wird, wird ja, so nehme ich es an, wie beim erstellen von Autos o.ä. einfach die nächst freie ID genommen. Es ist demnach also ausgeschlossen das zwei Variabeln für Textdraws den selben Wert haben und sich somit überschneiden. Vermutlich, denn irgentein Grund muss es geben.



    Habe einen Ausschnitt angehängt wie die PlayerTextDraws erstelle und zerstöre. Geupdated werden die beiden betroffenen gar nicht!!!! Sie zeigen immer nur das Fahrzeugmodel und die Tankstelle/das Lager an, welches sich ja während des Vorgangs nicht verändert



    Eventuell habt ihr ja Ideen, was ich noch überprüfen kann.




  • Könnest du von dem Problem das du beschrieben hast vielleicht mal ein kurzes Video machen und das posten? Vielleicht lässt sich da etwas erkennen, was auf das Problem rückschließen lässt. Für sowas ist es immer hilfreich, es mal gesehen zu haben.


    Je nach dem was sich aus dem Video dann erkennen lässt müsstest du dann wahrscheinlich weiteren Code posten, den wir dann gegebenenfalls mal debuggen müssen, zum schauen, warum das passiert, aber erstmal wäre es gut zu sehen, wie das eigentlich aussieht.

  • Natürlich :D


    Einmal die Timer und wie die Textdraws dann verwendet werden


    Beim Tacho war ich mir nie sicher, wie ich den Timer steuern soll.
    ob jeder Spieler einen spielerbezogenen Timer bekommt, oder ob es einen allgemeinen Timer.


    Habe nun einen allgemeinen Timer gemacht, alle 1/3 Sekunden werden alle Autos durchlaufen (dabei werden nicht erstellte oder ohne Motor übersprungen)
    dann wird geschaut ob der Motor von dem Auto an ist und ob ein Spieler drinne sitzt. Wenn das der Fall ist, wird das Tacho für den Spieler mit den Daten des Autos aktualisiert. Wäre eventuell nochmal zu überdenken.