[Tutorial]Nametags Erstellen

  • Hallo,

    Heute will ich euch zeigen wie man Spieler Nametags erstellt.


    Inhalt :

    1. Vorwort.

    2. Funktionen

    3. Script


    1. Vorwort :

    In diesem Tutorial versuche ich euch zu erklären, wie man (Spieler) Nametags erstellt

    Ich werde außerdem Versuchen das Tutorial so übersichtlich wie Möglich zu gestalten.


    2. Funktionen

    getElementsByType

    getPlayerName

    dxDrawRectangel

    dxDrawText

    getScreenFromWorldPosition

    getPedBonePosition
    oder
    getElementPosition

    isLineOfSightClear

    getDistanceBetweenPoints3D
    3. Script


    Als erstes fangen wir damit an, das wir ein Event hinzufügen.

    Lua
    addEventHandler("onClientHUDRender",getRootElement(),function()end)


    Hierbei kann anstatt "onClientHUDRender" auch "onClientRender" oder "onClientPreRender" genutzt werden.


    Nun Fügen wir eine for-schleife hinzu, die alle spieler durchgeht.

    Lua
    for k,v in ipairs(getElementsByType("player")) doend


    Optional könnte man hierbei
    getElementsByType("player",root,true) verwenden, wenn man es unbedingt "so" resourcenschonend wie nötig machen will.

    Hierbei ist k der Index, und v halt der Spieler.

    Als Nächstes fragen wir ab, ob der Spieler nicht der Lokale ist, denn für diesen wollen wir natürlich kein Nametag

    Lua
    if v ~= localPlayer thenend

    Wenn das getan ist, fragen wir nun ab ob die distanz zu dem spieler auch unter einem Gewissen maß ist, nicht das wir den Spieler über die halbe map sehen.


    Lua
    local lx,ly,lz = getPedBonePosition(localPlayer,8)local x,y,z = getPedBonePosition(v,8)if getDistanceBetweenPoints3D(lx,ly,lz,x,y,z) < maximale sichtweite thenend

    Nun müssen wir noch abfragen ob sich der spieler nicht hinter einer Mauer oder ähnlichem Befindet.

    Lua
    -- x,y,z,lx,ly,z sind oben definiert.if isLineOfSightClear(x,y,z,lx, ly, lz) == true thenend

    Nun kommt der Hauptteil, wir "Transformieren" die 3d kordinaten zu 2d Kordinaten via getScreenFromWorldPosition
    außerdem bauen wir eine abfrage ein, ob diese auch vorhanden sind, nach dem Transformieren.

    Lua
    local x1,y1 = getScreenFromWorldPosition(x,y,z+0.5)local x2,y2 = getScreenFromWorldPosition(x,y,z+0.4)if x1 and y1 and x2 and y2 thenend


    Wir addieren 0.5 zu z, da wir ihn ja über dem kopf haben wollen und nicht direkt "im" kopf
    Wir brauchen außerdem 2 positionen einmal für den Namen und einmal für die HP bar.

    Nun "drawen" wir den Nametag

    Lua
    dxDrawText(getPlayerName(v),x1,y1,x1,y1,tocolor(255,255,255,255),2,"default-bold","center")

    Der Name würde jetzt schonmal da stehen, jetzt fehlt die HP bar.


    Lua
    dxDrawRectangle(x2-100,y2,200,25, tocolor(0, 0, 0, 150))


    Wir nehmen von x2 100 weg, da wir sie ja in der Mitte haben wollen.
    Außerdem nehmen wir hierbei schwarz für die Farbe (tocolor(0,0,0,150))

    Jetzt kommt die rote HP bar

    Lua
    dxDrawRectangle(x2-98,y2+2,196,21, tocolor(200, 20, 20, 150))


    Hierbei nehmen wir nur 98 von x2 weg, da wir sie ja mit einem abstand zum Schwarzen Rand haben wollen.
    Dafür nehmen wir von y2 2 weg,da oben ja auch ein rand sein soll,
    Hierbei wird aus der 200 eine 196 da rechts auch ein rand sein soll sowie unten daher wird aus der 25 eine 21.
    Die Farbe wird ein Dunkleres Rot (tocolor(200,20,20,150))

    jetzt müssen wir nurnoch machen das die hp bar auch in mit der HP von dem Spieler überenstimmt, das machen wir mit einem 3 Satz
    Länge/100*hp

    Lua
    dxDrawRectangle(x2-98,y2+2,196/100*getElementHealth(v),21, tocolor(200, 20, 20, 150))

    Der Nametag sollte jetzt in etwa so aussehen

    Externer Inhalt pokit.org
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Und euer Code wie folgt

    Externer Inhalt pokit.org
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    Ich Hoffe mal das "Tutorial" war Hilfreich.

    Bei Fragen denke ich mal, könnt ihr es in diesem Thread Posten, sofern es sich anbietet.
    MfG


    2 Mal editiert, zuletzt von KryPtoHolYx (7. April 2014 um 03:11)

  • Dieses Thema enthält 16 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!