eloriginal Posted August 23, 2016 Share Posted August 23, 2016 Hola buenas soy nuevo en esto del forun Bueno como dice el titulo necesito un nametag para e boss...bueno el que se a note en la ayuda se los agradesco aca el scrits OJO 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
Anzo Posted August 23, 2016 Share Posted August 23, 2016 (edited) 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 August 23, 2016 by Guest Link to comment
aka Blue Posted August 23, 2016 Share Posted August 23, 2016 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
eloriginal Posted August 27, 2016 Author Share Posted August 27, 2016 Lo voy a probar Link to comment
eloriginal Posted August 27, 2016 Author Share Posted August 27, 2016 no funciono yo quero que salga una barra de vida al boss y un texto que muestre el nombre nomas Link to comment
aka Blue Posted August 27, 2016 Share Posted August 27, 2016 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
eloriginal Posted August 28, 2016 Author Share Posted August 28, 2016 Pero yo quiero hacer es un hnternametag en pocos momentos quiero hacer la barra de vida con dxDrawRectangle y dxDrawText nomas yo lo e intentado pero no me da Link to comment
Anzo Posted August 28, 2016 Share Posted August 28, 2016 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 . 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
aka Blue Posted August 28, 2016 Share Posted August 28, 2016 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
eloriginal Posted August 28, 2016 Author Share Posted August 28, 2016 Gracias anzo me sirvio de mucho yo soy de venezuela igual Link to comment
Anzo Posted August 28, 2016 Share Posted August 28, 2016 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 De nada. Link to comment
Recommended Posts