3D Textlabel an alle Spieler mit einer Schleife

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
  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • hier ein anstoß.



    new counter,string[124];


    for(new i;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i)) counter++;
    }


    format(string,sizeof(string),"Es wurden %i Spieler markiert.",counter);
    SendClientMessage(playerid,-1,string);


    /e 1 Beitrag zu spät gesehen :)

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Dein Fehler besteht nur noch darin, dass die Spieler einen falschen Namen angeheftet bekommen?


    Das liegt an der Position von GetPlayerName, die eigentlich in die Schleife mit der Spieler-ID 'i' muss.
    [...]
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online");
    new str[32];
    for(new i=0; i < 20; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name);
    playertextid = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
    }
    return 1;
    }


    Nur muss ich ehrlich gestehen, verstehe ich den Sinn des Befehls noch nicht zu 100%.
    Du möchtest alle Spieler per Befehl mit TextLabels versehen - Verstanden.
    Wessen Name soll denn dort stehen? Der von dem Spieler, dem die Spieler-ID "pID" zugewiesen wurde? Oder der Name des Spielers, der letztendlich markiert wurde?

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hallo.


    Versuche das mal so.


    Möchtest du, das nur jeder sein eigenes TextLabel sehen kann, oder das jeder von jedem das sieht? Falls jeder von jeden sehen soll, dann musst du CreatePlayer3DTextLabel zu Create3DTextLabel ändern, und ggf. die Parameter ändern / löschen.

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hast du meinen Code denn überhaupt ausprobiert? Der müsste eigentlich funktionieren.

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Nein ganzer Code hatte aber Fehler enthalten.


    C
    for(new i=0; i < 25; i++)
        {
        new str[32];
        pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
        }

    Du gehst die (ich denke mal maximal erstellbaren PlayerLabels für einen Spieler) Labels mit der Schleife durch, und setzt dann für einen Spieler (wobei das i vor INVALID_VEHICLE_ID zu playerid muss) 25 Labels an die gleiche Stelle.


    => EDIT:
    Eigentlich müsstest du da noch was ändern, weil das macht meiner Meinung so derzeit keinen Sinn (25 Labels, für einen Spieler an der gleichen Stelle). Ich weiß aber auch nicht genau, was du vor hast.

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Dann gehst du aber falsch vor.
    Du bräuchtest eine Schleife (Wert: MAX_PLAYERS) und dann nicht mit playerid sondern i (beziehungsweise die entsprechende Schleifen-Variable) arbeiten. Überdenke dein Vorgehen dort nochmals. ;)

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Entweder du bringst mich durcheinander, oder du schreibst einfach nur komisch.. :D



    Ich erstelle ein Label an alle Spieler und nicht nur an einem Spieler..

    Dachte du willst mit einem Knopfdruck an alle Spieler etwas "attachen", deswegen war ich verwirrt.

    Die sollen nur sichtbar sein für die Person die die Taste drückt und nicht für jedem.

    Das hat mich aber nun aufgeklärt. ;)



    Gut, dann machst du das so:


    Du brauchst im Prinzip die 25 Einträge bei pLabel nicht, außer du brauchst das für etwas anderes. Aber bei diesem brauchst du es nicht, deswegen playerLabel[playerid]. ;)

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Wir reden gerade 30026km aneinander vorbei, kann das sein? ^^


    oder erstellt sich mit meinem aktuellen Code an jedem Spieler 25 Labels?

    Exakt, das ist es. ;)


    Mein letzter Versuch, ansonsten bin ich zu verwirrt in diesem Thema. :P


    Die Deklaration von pLabel muss dann so sein:
    pLabel[MAX_PLAYERS][MAX_PLAYERS]
    Falls das wieder nicht gehen sollte, musst du das eben wieder in den Timer packen. Falls dann immer noch nicht, dann kannst du ja noch mal schreiben, was nicht geht, vielleicht schaffe ich es ja noch oder jemand anders. :D

  • Beitrag von JustMe.77 ()

    Dieser Beitrag wurde vom Autor gelöscht ().