Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Bin mir nicht 100% sicher, aber:
Bei:
GetPlayerPos(id,pX,pY,pZ);
pInfos[id] = CreatePlayer3DTextLabel(id, "", -1, pX, pY, pZ-7, 15.0, id, INVALID_VEHICLE_ID, 0);
Attached du das TextLabel an den Spieler, in dem Falle geben die X,Y und Z Koordinaten den Offset an, also wie weit das TextLabel vom Spieler verschoben ist.
Jedoch verwendest du hierbei die Spielerkoordinaten, also wahrscheinlich wird das 3d text Label wo angezeigt nur ganz weit weg, weil die Spieler Position recht hohe zahlen sind.
Sobald du eine attachid angibst sind die X, Y, Z Koordinaten deine Offsets, jetzt befindet sich dein Icon Bsp: 30.0 von dem Spieler weg , deine Drawdistance liegt bei nur 15.0 => Konsequenz daraus das Lable wird nie angezeigt für den Spieler.
ich werde dir gleich ein Code schicken normal sollte das funktionieren den attachid Parameter gibt es für die Funktion nur kann der Spieler nur selbst die Daten sehen da das Lable Clientseitig erstellt wird.
Ich werde dir gleich ein beispiel code schicken
//edit
Ich hab mal bissle rumgeschaut die Labels werden nur für die anderen Spieler angezeigt, nicht für einen selbst das gilt leider für jegliche Arten von Labels + den Chatbubbels. Als alternative kannst du auch ganz einfach ein unsichtbares Object nehmen etwas auf dieses schreiben und an den Spieler attachen.
Jedoch beachte dabei CreatePlayerObject zu nutzen oder du gibst den Parameter playerid bei CreateDynamicObject an und zwar hier
CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1 , Float:streamdistance = STREAMER_OBJECT_SD, Float:drawdistance = STREAMER_OBJECT_DD);
Nutze anstatt einem Player3DTextLabel ein normales 3DTextLabel. Sonst sieht es ja nur der Spieler für den es erstellt wurde, und da es an diesen attached wird, sieht es niemand mehr.
pInfos[id] = CreatePlayer3DTextLabel(id, "", -1, pX, pY, pZ-7, 15.0, id, INVALID_VEHICLE_ID, 0);
zu:
pInfos[id] = Create3DTextLabel("", 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, 0, 0);
Attach3DTextLabelToPlayer(pInfos[id], id, 0.0, 0.0, 0.7);
Und
UpdatePlayer3DTextLabelText(playerid, pInfos[playerid], 0xFFFFFFFF, pInfosStr);
zu:
Update3DTextLabelText(pInfos[playerid], 0xFFFFFFFF, pInfosStr);
Gegebenenfalls musst du es bei OnPlayerSpawn nochmals attachen.
Attach3DTextLabelToPlayer(pInfos[playerid], playerid, 0.0, 0.0, 0.7);
Je nach dem musst du dann noch den Offset bei Attach3DTextLabelToPlayer anpassen, falls das nicht passt.