Anzeige des Wantedlevels mit 3DLabels

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 Leute, ich möchte, dass die Cops die Wanteds der Spieler über dem Kopf angezeigt bekommen.
    Dazu habe ich folgendes geschrieben, was allerdings irgendwie nur für einen Spieler (bzw. eben nicht für alle bei denen es gehen sollte) funktioniert?
    Kann da irgendwer den Fehler finden ? Danke im Vorraus :)


    public AttachWantedLabels(playerid)
    {
    new wantedlabel[MAX_PLAYERS];
    new string[128];
    new float:PosX,float:PosY,float:PosZ;
    ForEachPlayer(i)
    {
    format(string,sizeof(string),"Wantedlevel: %i",Spieler[i][pWantedPoints]);
    if(isPlayerInFrakt(i,1) || isPlayerInFrakt(i,2) || isPlayerInFrakt(i,6) && Spieler[i][pWantedPoints] > 0)
    {
    DeletePlayer3DTextLabel(i,wantedlabel[i]);
    GetPlayerPos(i,PosX,PosY,PosZ);
    wantedlabel[i] = Create3DTextLabel(string,BLAU,PosX,PosY,PosZ,MAX_STREAM_NAME_DISTANCE,0,1);
    Attach3DTextLabelToPlayer(wantedlabel[i],i,0.0,0.0,0.6);
    return 1;
    }
    }
    return 1;
    }

  • Du fügst das Label an alle Spieler an?
    wantedlabel[wer es haben soll][für wen es sichtbar sein soll]


    Beispiel:

    wantedlabel[playerid][i] = CreatePlayer3DTextLabel(i, string, COLOR_KNALLROT, 0.0, 0.0, 1.0, 50.0, 0);


    Hier wird es für jeden erstellet (dafür das i)


    #edit
    nutz CreatePlayer3DTextLabel anstatt Create3DTextLabel :)

  • Mit CreatePlayer3DTexLabel sieht es jetzt wieder gar keiner mehr...
    Ich habe aber auch nicht genau verstanden, wie du das mit dem

    Zitat

    wantedlabel[wer es haben soll][für wen es sichtbar sein soll]

    meinst..
    Kannst du das vielleicht etwas genauer erklären, bzw. es in dem Codeschnipsel zeigen

  • Lassen wir es mal bei:
    wantedlabel[i] 
    Allerdings geht es mit CreatePlayer3DTextLabel ohne Probleme wenn man es richtig macht.


    /edit
    Versuch es so:


    new wantedlabel[MAX_PLAYERS]; // Wichtig! Global Definieren
    public AttachWantedLabels(playerid)
    {
    new string[128];
    ForEachPlayer(i)
    {
    if(isPlayerInFrakt(i,1) || isPlayerInFrakt(i,2) || isPlayerInFrakt(i,6) && Spieler[i][pWantedPoints] > 0)
    {
    //DeletePlayer3DTextLabel(i,wantedlabel[i]); @Warum?
    format(string,sizeof(string),"Wantedlevel: %i", Spieler[i][pWantedPoints]);
    wantedlabel[i] = CreatePlayer3DTextLabel(i, string, BLAU, 0.0, 0.0, 1.0, 50.0, 0);
    return 1;
    }
    }
    return 1;
    }


    /edit
    Wenn man es auch noch Updaten soll bitteschön


    new wantedlabel[MAX_PLAYERS]=0; // Wichtig! Global Definieren
    public AttachWantedLabels(playerid)
    {
    new string[128];
    ForEachPlayer(i)
    {
    format(string,sizeof(string),"Wantedlevel: %i", Spieler[i][pWantedPoints]);
    if(wantedlabel[i] == 0) {
    if(isPlayerInFrakt(i,1) || isPlayerInFrakt(i,2) || isPlayerInFrakt(i,6) && Spieler[i][pWantedPoints] > 0)
    {
    //DeletePlayer3DTextLabel(i,wantedlabel[i]); @Warum?
    wantedlabel[i] = CreatePlayer3DTextLabel(i, string, BLAU, 0.0, 0.0, 1.0, 50.0, 0);
    return 1;
    }
    } else {
    UpdatePlayer3DTextLabel(i, wantedlabel[i], BLAU, string);
    }
    }
    return 1;
    }