3D Text Label - AttachToPalyer (Hilfe)

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


    Ich hab ein kleines Problemchen mal wieder,


    und zwar bekomm ich es nicht hin das der 3D Text Label, genau über den Spieler ist ! Bei mir bleibt er auf einer stelle stehen !!


    OnPlayerSpawn(playerid)


    if(playerIsAdmin(playerid,5))
    {
    new Float:x,Float:y,Float:z;
    new PlayerText3D:playertextid;
    GetPlayerPos(playerid,x,y,z);
    playertextid = CreatePlayer3DTextLabel(playerid,"Super Administrator",0x00FFFAFF,x,y,z,40.0);
    Attach3DTextLabelToPlayer(label[playerid],playerid,Float:x,Float:y,Float:z);
    return 1;
    }



    Sorry ich bekomm es mit den Pawn code - funktion hier im board nicht rein da beachtet er die Zeilen nicht und schreibt alles in eine Zeile -.-


    Danke für die Hilfe !

  • Du erstellt ein Label und speicherst dessen ID in


    playertextid = CreatePlayer3DTextLabel(playerid,"Super Administrator",0x00FFFAFF,x,y,z,40.0);


    Aber du attachst ein Label mit der ID


    Attach3DTextLabelToPlayer(label[playerid],playerid,Float:x,Float:y,Float:z);


    Und du musst hier natürlich auch noch x,y,z Koordinaten wählen

  • Also müsste es so richtig heißen ?



    if(PlayerIsAdmin(playerid,5))
    {
    new Float:x,Float:y,Float:z;
    new PlayerText3D:playertextid;
    GetPlayerPos(playerid,x,y,z);
    playertextid = CreatePlayer3DTextLabel(playerid,"Super Administrator",0x00FFFAFF,x,y,z,40.0);
    Attach3DTextLabelToPlayer(playertextid,playerid,0.0,0.0,0.0);
    return 1;
    }



    Jedoch sagt er mir, in der Zeile mit Attach3DTextLabel - tag mismatch ..

  • Ich schreibs dir neu, ich schreib ja gerade totalen Müll xD

    //Ganz oben
    new textdraPlayer[MAX_PLAYERS];


    //OnPlayerSpawn
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    textdraPlayer[playerid] = Create3DTextLabel("Super Admin",0x00FFFAFF,pos[0],pos[1],pos[2],40.0,0,0);
    Attach3DTextLabelToPlayer(textdraPlayer[playerid],playerid,0.0,0.0,0.0);
    return 1;

  • Richtig CreatePlayer3DTextLabel wird so deklariert


    new PlayerText3D:playertextid;
    Das hast du warscheinlich irgendwo oben im Script für eine globale Anwendung.


    Der native Attach3DTextLabelToPlayer will als 3D Text aber eine Variable deklariert als


    Text3D:id haben.


    Q: http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer


    Also zwei verschiedene Typen von Variablen = Tag mismatch.


    Du könntest aber aus dem PlayerText3D einen Text3D machen und dann nicht CreatePlayer3DTextLabel sondern Create3DTextLabel verwenden.


    edit: CaptainKevin


    wenn dann aber schon so


    new Text3D:textdraPlayer[MAX_PLAYERS];

  • Ich komm bei den ganzen 3D Label funktionen garnicht klar ... Wo ist überhaupt der unterschied zwischen den ganzen ?

    Zitat

    Du könntest aber aus dem PlayerText3D einen Text3D machen und dann nicht CreatePlayer3DTextLabel sondern Create3DTextLabel verwenden.

  • Im Grunde genommen sind das einfach zwei verschiedene Typen von Variablen. In einer werden Player3DText gespeichert in der anderen "normale" 3D Texts.
    Für jeden "Typen" gibt es anderen Methoden um diese zu verarbeiten. Das heißt aber auch, dass man eine Methode eines Typen nicht mit einer Variable des anderen Typen "verbinden" kann.


    edit:


    So sollte es also gehn


    Oben im Script:


    new Text3D:playertextid[MAX_PLAYERS];


    if(playerIsAdmin(playerid,5))
    {
    new Float:x,Float:y,Float:z;
    new PlayerText3D:playertextid;
    GetPlayerPos(playerid,x,y,z);
    playertextid[playerid] = Create3DTextLabel("Super Administrator",0x00FFFAFF,x,y,z,40.0,-1,0);
    Attach3DTextLabelToPlayer(playertextid[playerid],playerid,0.0,0.0,0.0);
    return 1;
    }