Jump to content

[Ayuda]Nametag para mi boss


eloriginal

Recommended Posts

Hola buenas soy nuevo en esto del forun xD Bueno como dice el titulo necesito un nametag para e boss...bueno el que se a note en la ayuda se los agradesco :D:D:D:D:D aca el scrits OJO :shock:xD no es mio lo estoy editando para mi

---------------------------------------------------------------SERVER---------------------------------------------------------------------------

function boss ( )

Nemesis = exports [ "slothBot" ]:spawnBot ( -1935.5480957031, 665.44055175781, 47.0, 90, 312, 0, 0, Nemesis, 0, "chasing", true )

exports.extra_health:setElementExtraHealth ( Nemesis, 2500 )

outputChatBox ("Nemesis!!!")

myBlip = (createBlipAttachedTo ( Nemesis, 23 ))

setElementData ( Nemesis, "nemesis", true )

end

addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), boss )

---------------------------------------------------------------------------------------------------------------------------------------------------

Link to comment

Para hacer el nametag del boss vas a necesitar:

getDistanceBetweenPoints3D -- Esto lo vas a usar para poner la distancia, es decir, desde que distancia se podrá ver el nametag del boss. 
getScreenFromWorldPosition --Esto para que el texto se vea en 3D 
getPedBonePosition -- Y creo que esto es necesario para poner en donde se verá el nametag, (pies, brazos cabeza, no sé) 
getCameraMatrix --Creo  que esta la tendrías que usar, no estoy seguro. 
getElementPosition --Para obtener la posición del boss 

Creo que eso sería todo lo que necesitas para hacer el nametag.

Edited by Guest
Link to comment

Si es solo el nombre, puedes usar ésto:

https://wiki.multitheftauto.com/wiki/Dx ... tOnElement

Client-side

function dxDrawTextOnElement(TheElement,text,height,distance,R,G,B,alpha,size,font,checkBuildings,checkVehicles,checkPeds,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement) 
                local x, y, z = getElementPosition(TheElement) 
                local x2, y2, z2 = getElementPosition(localPlayer) 
                local distance = distance or 20 
                local height = height or 1 
                                local checkBuildings = checkBuildings or true 
                                local checkVehicles = checkVehicles or false 
                                local checkPeds = checkPeds or false 
                                local checkObjects = checkObjects or true 
                                local checkDummies = checkDummies or true 
                                local seeThroughStuff = seeThroughStuff or false 
                                local ignoreSomeObjectsForCamera = ignoreSomeObjectsForCamera or false 
                                local ignoredElement = ignoredElement or nil 
                if (isLineOfSightClear(x, y, z, x2, y2, z2, checkBuildings, checkVehicles, checkPeds , checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement)) then 
                    local sx, sy = getScreenFromWorldPosition(x, y, z+height) 
                    if(sx) and (sy) then 
                        local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) 
                        if(distanceBetweenPoints < distance) then 
                            dxDrawText(text, sx+2, sy+2, sx, sy, tocolor(R or 255, G or 255, B or 255, alpha or 255), (size or 1)-(distanceBetweenPoints / distance), font or "arial", "center", "center") 
            end 
        end 
    end 
end 

Link to comment
no funciono :( yo quero que salga una barra de vida al boss y un texto que muestre el nombre nomas

¿Cómo que no funcionó? ¿Usaste bien la función? Para la barra de la vida ya es un poco más complicado, debes dibujar 3 rectángulos:

  • Rectángulo base que haga una base.
  • Rectángulo sombra un rectángulo con un color más oscuro que el principal para hacer de 'sombra'.
  • Rectángulo de vida con cálculos, un rectángulo principal con color rojo o el que quieras, haciendo referencia a la vida que vaya cambiando su anchura según la vida del boss.

Para usar dxDrawTextOnElement para lo que tú deseas hacer, debes usar esto:

dxDrawTextOnElement( elemento, texto, alto, distancia minima, r, g, b, alpha, tamaño del texto, fuente ) 

dxDrawTextOnElement es una función, no te dibujará el nametag mágicamente.

Link to comment

Yo aprendí a hacer un nametag para los boss gracias al recurso del 'tank' que esta en la comunidad. Ahora lo puedo hacer sin mirar el script pero aún hay unas cositas que no entiendo xD.

local Distancia = 30 --Desde que distancia se podrá ver el nametag 
  
function nametag() 
    local bossa = getElementsByType("ped", getRootElement(),true) 
    local MatriX,MatriY,MatriZ = getCameraMatrix()--Para obtener la posición de la camara 
    for num, myBoss in ipairs(boossa) do 
        local bossX,bossY,bossZ = getElementPosition(myBoss)--Obtenemos la posición del boss 
        local BoneX,BoneY,BoneZ = getPedBonePosition(myBoss, -- s8) -->--Con getPedBonePosition si no mal recuerdo es para que el nametag salga en una parte del cuerpo, en este caso yo puse 8 que es la cabeza 
        if (getDistanceBetweenPoints3D(MatriX,MatriY,MatriZ,BoneX,BoneY,BoneZ) < Distancia) then --Si MatriX,MatriY,MatriZ,BoneX,BoneY,BoneZ es menor a la distancia '30',entonces.. 
            if (getElementData(myBoss) == true) then--Esto una data para verificar que es el boss al que se le vera el nametag (no estoy 100% seguro de esto, ya que hay algunas cosas que no entendí muy bien, ya que me centre primero en saber hacerlo sin ver el otro script) 
                local scx,scy = getScreenFromWorldPosition(BoneX,BoneY,BoneZ)--Esto para que el nametag del boss se vea en 3D 
                local maxHP = exports.extra_health:getElementExtraHealth(myBoss)--Para obtener la vida extra del boss 
                local hp = getElementData(myBoss, "tuDataDeHp")--Tienes que poner un setElementData en server-side 
                local name = getElementData(myBoss, "tuDataDelNombreDelBoss")--Tienes que poner un setElementData en server-side 
                if (scx > getElementHealth(myBoss) > 0) then--Si la vida del boss es mayor a 0, apareceran los dx 
                    --aqui pones los dxRectangle y dxText 
                end 
            end 
        end 
    end 
end 
addEventHandler("onClientRender", root, nametag) 

Creo que así funcionaría bien.

Recuerda que tienes que poner un setElementData en server-side con el nombre y la hp. También trata de entenderlo para luego poder hacerlo sin tener que ver el script o con ayuda de alguien.

Link to comment

No quiero que suene mal (que va a sonar mal), pero, si no sabe como usar una función useful, crees que podrá añadir un elementData en un script, con sus valores (subir/bajar vida)? Yo no entiendo de ese script porque nunca lo usé, podrías pasarle el código o algo.

Link to comment
No quiero que suene mal (que va a sonar mal), pero, si no sabe como usar una función useful, crees que podrá añadir un elementData en un script, con sus valores (subir/bajar vida)? Yo no entiendo de ese script porque nunca lo usé, podrías pasarle el código o algo.

No pero, no le pase la parte del server-side para ver si lo podía hacer solo y entendió, de todas formas si no entendió le explicaría.

Gracias anzo me sirvio de mucho yo soy de venezuela igual xD:)

De nada. :P

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...