Problem beiom zerstören des Label

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
  • Hey ich habe das global oben


    new Text3D:label;


    Und hier will ich den Label zerstören aber bekomme diese errols
    ocmd:aduty(playerid,params[])
    {
    new astr[128],astr1[128];
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,ROT,"Du bist kein Admin");
    if(aduty[playerid]==0)
    {
    format(astr,sizeof(astr),"Admin %s hat sich zum Support angemeldet.",SpielerName(playerid));
    SendClientMessageToAll(BLAU,astr);
    aduty[playerid] = 1;
    Create3DTextLabel("Admin im Dienst![Kein DM]", 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.7);
    return 1;
    }
    if(aduty[playerid]==1)
    {
    format(astr1,sizeof(astr1),"Admin %s hat sich vom Support abgemeldet.",SpielerName(playerid));
    SendClientMessageToAll(BLAU,astr1);
    aduty[playerid] = 0;
    DeletePlayer3DTextLabel(playerid,label);//Error bzw Warning Zeile und duch diesen warning geht ja auch die Funktion nicht.!
    return 1;
    }
    return 1;
    }D:\Eigene Dateien/Alex\Selfmade.pwn(478) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.

  • 1. Du musst für jeden Spieler einen Label erstellen:
    new Text3D:label[MAX_PLAYERS];


    2. Du musst beim erstellen auch den Label anwenden:

    label[playerid] = Create3DTextLabel("Admin im Dienst![Kein DM]", 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.7);

  • Create3DTextLabel
    und
    Destroy3DTextLabel
    gehören zusammen


    sowie:
    CreatePlayer3DTextLabel
    und
    DestroyPlayer3DTextLabel
    zusammen gehören


    aber NICHT Create3DTextLabel und DestroyPlayer3DTextLabel


    ocmd:aduty(playerid,params[])
    {
    new astr[128],astr1[128];
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,ROT,"Du bist kein Admin");
    if(aduty[playerid]==0)
    {
    format(astr,sizeof(astr),"Admin %s hat sich zum Support angemeldet.",SpielerName(playerid));
    SendClientMessageToAll(BLAU,astr);
    aduty[playerid] = 1;
    label[playerid] = Create3DTextLabel("Admin im Dienst![Kein DM]", 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.7);
    return 1;
    }
    if(aduty[playerid]==1)
    {
    format(astr1,sizeof(astr1),"Admin %s hat sich vom Support abgemeldet.",SpielerName(playerid));
    SendClientMessageToAll(BLAU,astr1);
    aduty[playerid] = 0;
    Delete3DTextLabel(label[playerid]);
    return 1;
    }
    return 1;
    }
    Fehler 1: In Zeile 10 muss label = Create3DTextLabel.... gesetzt werden ;)
    Fehler 2: In Zeile 19 muss wie oben erklärt Destroy3DTextLabel verwendet werden und nicht DestroyPlayer3DTextLabel
    Fehler 3: MAX_PLAYERS in new Text3D:label verwenden, sonst ist es nicht für alle spieler möglich
    Fehler 4: In OnPlayerDisconnect muss überprüft werden ob das Label aktiv ist und gegebenfalls gelöscht werden:
    public OnPlayerDisconnect(playerid, reason)
    {
    if(aduty[playerid])
    {
    aduty[playerid]=0;
    Destroy3DTextLabel(label[playerid]);
    }
    ...
    }