Problem mit 3DTextLabel enfernen

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
  • moin moin,


    wie schon in der Überschrift steht, habe ich ein kleines Problem mit dem entfernen des 3DTextLabel´s.


    zum code:


    wenn jemand getroffen wird, wird ein Textdraw an den spieler gehangen. bei einem weiteren Treffer soll das alte textlabel verschwinden und ein neues kommen.


    zum Problem:


    Die TextLabel werden alle richtig angehangen. aber die alten werden nicht entfernt.zum schluss hängen da 4 Textlabel übereinander :(
    ich hoffe mir kann hier jemand helfen.


    Code:


    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {

    if(GetPVarInt(playerid,"Paint")== 1)
    {
    if(GetPlayerWeapon(issuerid) == 24)
    {
    if(issuerid != INVALID_PLAYER_ID)
    {
    new string[128],string1[256], verteidiger[MAX_PLAYER_NAME], angreifer[MAX_PLAYER_NAME];
    GetPlayerName(playerid, verteidiger, sizeof (verteidiger));
    GetPlayerName(issuerid, angreifer, sizeof (angreifer));

    Ps: der Timer der drin

    if(GetPVarInt(playerid,"PBLeben") == 0)return SendClientMessage(issuerid,ROT,"Der Spieler ist schon ausgeschieden");
    format(string, sizeof(string), "[ %s ] hat [ %s ] getroffen, [ %s ] hat noch [ %d ] Leben", angreifer, verteidiger, verteidiger,GetPVarInt(playerid,"PBLeben"));
    SendClientMessageToAll(GELB, string);
    label[playerid] = Create3DTextLabel("1 Treffer", GRÜN, 30.0, 40.0, 50.0, 40.0, 0);
    label2[playerid] = Create3DTextLabel("2 Treffer", GRÜN, 30.0, 40.0, 50.0, 40.0, 0);
    label3[playerid] = Create3DTextLabel("3 Treffer", GRÜN, 30.0, 40.0, 50.0, 40.0, 0);
    label4[playerid] = Create3DTextLabel("4 Treffer", GRÜN, 30.0, 40.0, 50.0, 40.0, 0);
    label5[playerid] = Create3DTextLabel("Ausgeschieden", ROT, 30.0, 40.0, 50.0, 40.0, 0);



    format(string1,sizeof(string1), "[ %s ] ist aus der Runde ausgeschieden.",verteidiger);
    if(GetPVarInt(playerid,"PBLeben")== 5)return Attach3DTextLabelToPlayer(label[playerid],playerid, 0.0, 0.0, 0.7) && SetPVarInt(playerid,"PBLeben",GetPVarInt(playerid,"PBLeben")-1) && SetPlayerHealth(playerid,100);
    if(GetPVarInt(playerid,"PBLeben")== 4)return Attach3DTextLabelToPlayer(label2[playerid],playerid, 0.0, 0.0, 0.7) && Delete3DTextLabel(label[playerid]) && SetPVarInt(playerid,"PBLeben",GetPVarInt(playerid,"PBLeben")-1) && SetPlayerHealth(playerid,100);
    if(GetPVarInt(playerid,"PBLeben")== 3)return Attach3DTextLabelToPlayer(label3[playerid],playerid, 0.0, 0.0, 0.7) && Delete3DTextLabel(label2[playerid]) && SetPVarInt(playerid,"PBLeben",GetPVarInt(playerid,"PBLeben")-1) && SetPlayerHealth(playerid,100);
    if(GetPVarInt(playerid,"PBLeben")== 2)return Attach3DTextLabelToPlayer(label4[playerid],playerid, 0.0, 0.0, 0.7) && Delete3DTextLabel(label3[playerid]) && SetPVarInt(playerid,"PBLeben",GetPVarInt(playerid,"PBLeben")-1) && SetPlayerHealth(playerid,100);
    if(GetPVarInt(playerid,"PBLeben")== 1)return Attach3DTextLabelToPlayer(label5[playerid],playerid, 0.0, 0.0, 0.7) && Delete3DTextLabel(label4[playerid]) && SendClientMessageToAll(HELLBLAU,string1) && TogglePlayerControllable(playerid,0) && SetTimer("toggletimer",5000,1);


    }
    }
    }
    return 1;
    }


    Ps: Der Timer ist nur für testzwecke drinnen (bevor kommentare dazu kommen ;) )

  • danke erstmal für die antwort.


    es wäre auch ne möglichkeit.aber es sollte "eigentlich solange stehen bleiben bis der nächste treffer kommt.damit die anderen wissen wann jemand ausscheidet.
    alternativ werde ich es aber verwenden müssen wenn ich keine andere lösung finde.


    danke dir