Textdraw Problem

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
  • Aloha und schönen Abend ^^


    Also es geht um folgendes ich wollte mir textdraw eine Dm und No Dm zonen anzeige machen aber es gibt immer folgende probleme :


    1. Bei playerid statt i kommt immer eine überblendung
    2. Mit TextDrawHideForPlayer erscheinen keine gestreamten objecte mehr
    3. Mit i kommt nur noch No Dm zone


    public Dminfo(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(InDMzone[i] == 1 || InDMzone[i] == 2 || InDMzone[i] == 3 || InDMzone[i] == 4)
    {
    TextDrawShowForPlayer(i, Textdraw1);
    Textdraw1 = TextDrawCreate(1.000000,433.000000," ~r~DM zone");
    TextDrawAlignment(Textdraw1,0);
    TextDrawBackgroundColor(Textdraw1,0x000000ff);
    TextDrawFont(Textdraw1,1);
    TextDrawLetterSize(Textdraw1,0.288888,1.100000);
    TextDrawColor(Textdraw1,0xffffffff);
    TextDrawSetOutline(Textdraw1,1);
    TextDrawSetProportional(Textdraw1,1);
    TextDrawSetShadow(Textdraw1,1);
    }
    else if(InDMzone[i] == 0)
    {
    TextDrawShowForPlayer(i, Textdraw2);
    Textdraw2 = TextDrawCreate(1.000000,433.000000," ~r~No DM zone");
    TextDrawAlignment(Textdraw2,0);
    TextDrawBackgroundColor(Textdraw1,0x000000ff);
    TextDrawFont(Textdraw2,1);
    TextDrawLetterSize(Textdraw2,0.288888,1.100000);
    TextDrawColor(Textdraw2,0xffffffff);
    TextDrawSetOutline(Textdraw2,1);
    TextDrawSetProportional(Textdraw2,1);
    TextDrawSetShadow(Textdraw2,1);
    }
    }
    return 1;
    }

    Lust auf russisch roulette ?
    Okay...
    ... Ich hol mal meine Automatik ;D

  • Da musst du einiges ändern.
    Ich hab dir das mal ebend gemacht.In deinem Beispiel wurden die alten Textdraws nie zerstört,was irgendwann zu Fehler geführt hätte da es ein Limit an Textdraws gibt.Außerdem war da etwas problematisch mit der public - funktion,da du eine spielerid als Parameter übergibst,aber durch alle Spieler eine Schleife aufrufst,trotzdem im Endeffekt alles für die spielerid machst die als Parameter übergeben wurde.


    Für weitere Erklärungen bin ich zu Faul phali x).

    new
    Text:td_DMZone,
    Text:td_NoDMZone;


    forward Dminfo();


    public OnGameModeInit() // oder OnFilterscriptinit...
    {
    td_DMZone = TextDrawCreate(1.000000,433.000000," ~r~DM zone");
    TextDrawAlignment(td_DMZone,0);
    TextDrawBackgroundColor(td_DMZone,0x000000ff);
    TextDrawFont(td_DMZone,1);
    TextDrawLetterSize(td_DMZone,0.288888,1.100000);
    TextDrawColor(td_DMZone,0xffffffff);
    TextDrawSetOutline(td_DMZone,1);
    TextDrawSetProportional(td_DMZone,1);
    TextDrawSetShadow(td_DMZone,1);


    td_NoDMZone = TextDrawCreate(1.000000,433.000000," ~r~No DM zone");
    TextDrawAlignment(td_NoDMZone,0);
    TextDrawBackgroundColor(td_NoDMZone,0x000000ff);
    TextDrawFont(td_NoDMZone,1);
    TextDrawLetterSize(td_NoDMZone,0.288888,1.100000);
    TextDrawColor(td_NoDMZone,0xffffffff);
    TextDrawSetOutline(td_NoDMZone,1);
    TextDrawSetProportional(td_NoDMZone,1);
    TextDrawSetShadow(td_NoDMZone,1);
    return 1;
    }


    public Dminfo()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(InDMzone[i] == 1 || InDMzone[i] == 2 || InDMzone[i] == 3 || InDMzone[i] == 4)
    {
    TextDrawShowForPlayer(i,td_DMZone);
    TextDrawHideForPlayer(i,td_NoDMZone);
    }
    else if(InDMzone[i] == 0)
    {
    TextDrawShowForPlayer(i,td_NoDMZone);
    TextDrawHideForPlayer(i,td_DMZone);
    }
    }
    return 1;
    }