TextDraws zerstören sich gegenseitig..

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
  • Ich und andere User haben schon seit längerem, dass Problem, dass immer nur ein GameText angezeigt wird. (siehe ==> http://tutorials.mrmonat.de/in…1390&highlight=#post11390)



    [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]


    Ich habe eine Uhrzeitsanzeige, die sich jede Sekunde aktualisiert und eine Adminduty anzeige, die sich aktualisiert, wenn man /aduty eingibt.


    Dieses public wird bei OnGameModInit und bei meinem Sekunden-Timer aufgerufen.




    Es läuft immer so ab:
    Ich connecte auf den Server und die Uhrzeit erscheint und läuft auch normal. Wenn ich jetzt '/aduty' eingebe, verschwindet die Uhrzeit, dann wird mir der GameText AdminDuty angezeigt und nach 1 Sekunde ist wieder die Uhrzeit da und, der AdminDuty TextDraw ist wieder weg.



    Ich hoffe dass mir Mal jemand helfen kann.
    Gruß,
    Jomotest9

  • Also, als erstes lass die Textdraws unter OnGameModeInit erstellen.
    Danach änderst du deinen Code etwas ab..
    unzwar kann man Textdraws mit der Funktion TextDrawSetString ändern.
    Muss somit also nicht immer zerstört und erstellt werden.


    Dann zur Uhr:
    Bitte mach es doch nicht so umständlich ^^
    Mach es doch einfach so: ;)
    format(string, sizeof string, "%02d:%02d:%02d", hour, minute, second);
    Kürzer und besser oder nicht? :P


    Versuch es einach mal alles so umzuändern wie ich es dir beschrieben habe und guck ob es funktioniert. Falls nicht, kannst du das neue / alte problem nochmal hier posten ;)


    Gruß, Zunno

  • Ich habe den Code jetzt so geändert, doch wenn ich ja das TextDrawDestroy wegmache, überschreiben sich die Sachen ja (Siehe Bild: Uhrzeit oben rechts + Adminduty rechts-mitte)


    Das ist mein jetziger Code:
    Adminduty:

    PHP
    new Text:Adminduty;
    	new adutystring[128];
    	format(adutystring, sizeof(adutystring),"Adminduty:  %s", GetAdminOnDuty(playerid));
    	TextDrawSetString(Adminduty, adutystring);
    	TextDrawHideForPlayer(playerid, Adminduty);
    	Adminduty = TextDrawCreate(450.0, 250.0, adutystring);
    	TextDrawFont(Adminduty, 2);
    	TextDrawSetOutline(Adminduty, 1);
    	TextDrawShowForPlayer(playerid, Adminduty);


    Uhrzeit:


    Hoffe immernoch auf Hilfe ;(

  • Also du schreibst oben in dein Script
    new Text:Clock;
    new Text:Adminduty;


    unter OnGameModeInit lässt du diese erstellen.
    und unter deinem public Clock kommt nur dieser Code:
    public clock()
    {
    new hour, minute, second, string[9];
    gettime(hour,minute,second);
    format(string, sizeof string, "%02d:%02d:%02d", hour, minute, second);
    TextDrawSetString(Clock, string);
    TextDrawShowForAll(Clock);
    return 1;
    }


    und beim Admin Duty genau so.
    Nur TextDrawSetString verwenden und ggf. TextDrawShowForAll und sonst nix, da du die Textdraws nur einmal erstellen musst.


    Gruß, Zunno