Jump to content

Informacion de Autos


Nexus#

Recommended Posts

usa setElementData para guardar la información en el vehiculo

usa getElementData para recuperar la información en el vehículo

Y hay una función que no está en la wiki creo, que se llama dxDrawText3D que lo puedes usar.

Totalmente innecesario.

Link to comment
  
addEventHandler("onClientRender", root, 
 function () 
  for i,v in ipairs (getElementsByType("vehicle")) do 
    if getVehicleController(v) then return end 
    local px, py, pz = getElementPosition(localPlayer) 
    local vx, vy, vz = getElementPosition(v) 
    if ( isLineOfSightClear(px, py, pz, vx, vy, vz) and getDistanceBetweenPoints3D(px, py, pz, vx, vy, vz) <= 10) then 
       local asx, asy = getScreenFromWorldPosition(vx, vy, vz+3) 
       local bsx, bsy = getScreenFromWorldPosition(vx, vy, vz+2) 
       local csx, csy = getScreenFromWorldPosition(vx, vy, vz+1) 
  
       dxDrawText("-Carro: "..getVehicleName(v), asx, asy) 
       dxDrawText("-Propietario: "..getPlayerName(getElementData(v, "owner")), bsx, bsy) 
       dxDrawText("-Salud: "..(getElementHealth(v)/100).."%", csx, csy) 
    end 
  end 
 end 
) 
  

Vas a tener que acomodar las posiciones y la forma en la que se obtiene el dueño del vehículo.

Link to comment

Puedes usar la useful de Hasson, dxDrawTextOnElement

Un Ejemplo:

addEventHandler("onClientRender", getRootElement(),  
function () 
for k,v in ipairs(getElementsByType("vehicle")) do 
    local vehicle = getVehicleName(v) 
    local vidaAuto = getElementHealth(v) 
        dxDrawTextOnElement(v,"Vehicle:"..vehicle.."",1.5,20,255,0,0,255,1.5,"arial") 
        dxDrawTextOnElement(v,"Vida:"..(math.floor(vidaAuto)).."%",1,20,255,0,0,255,1.5,"arial") 
    end 
end) 

Aunque no sé si el text lo podrán ver los demás o solo tu.

Link to comment
No tiene nada que ver, si es onClientRender ejecutado directamente, lo verán todos. Si es un evento exterior o función que se ejecuta desde otro script teniendo como argumento un jugador en específico, lo verá solo él.

Tienes razón, gracias por la aclaración.

Link to comment

Pero me encuentro con este error..

SR7N9Qt.png

Este es el Client

addEventHandler("onClientRender", getRootElement(), 
function () 
for k,v in ipairs(getElementsByType("vehicle")) do 
    local vehicle = getVehicleName(v) 
    local vidaAuto = getElementHealth(v) 
        dxDrawTextOnElement(v,"Vehicle:"..vehicle.."",1.5,20,255,0,0,255,1.5,"default-bold") 
        dxDrawTextOnElement(v,"Vida:"..(math.floor(vidaAuto)).."%",1,20,255,0,0,255,1.5,"default-bold") 
    end 
end) 

Link to comment

Es que dxDrawTextOnElement es una función useful, deberás añadirla encima de tu código:

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
Wow Muchas Gracias! Tengo un inconveniente como hago para que cuando se suba al vehiculo desaparesca el texto ?
addEventHandler("onClientRender", getRootElement(), 
function () 
for k,v in ipairs(getElementsByType("vehicle")) do 
    if ( getPedController(v) ) then return end 
    local vehicle = getVehicleName(v) 
    local vidaAuto = getElementHealth(v) 
        dxDrawTextOnElement(v,"Vehicle:"..vehicle.."",1.5,20,255,0,0,255,1.5,"default-bold") 
        dxDrawTextOnElement(v,"Vida:"..(math.floor(vidaAuto/10)).."%",1,20,255,0,0,255,1.5,"default-bold") 
    end 
end) 

Link to comment

@Tomas cometió un pequeño error, confundió getPedController con getVehicleController. Usa ésto:

addEventHandler( "onClientRender", getRootElement( ), 
    function( ) 
        local tabla_vehiculos = getElementsByType( 'vehicle' ) 
        for i=1, #tabla_vehiculos do 
            local vehiculo = tabla_vehiculos[ i ] 
            local vehiculo_vida = getElementHealth( vehiculo ) 
            local conductor = getVehicleController( vehiculo ) 
            if conductor then 
                return end 
            else 
                dxDrawTextOnElement( vehiculo,"Vehiculo:"..getVehicleName( vehiculo ).."",1.5,20,255,0,0,255,1.5,"default-bold") 
                dxDrawTextOnElement( vehiculo,"Vida:"..(math.floor(vehiculo_vida/10)).."%",1,20,255,0,0,255,1.5,"default-bold") 
                 
            end 
        end 
    end 
) 

Link to comment
No Funciono amigo, igual valoro tu gran aporte y perdon por esto pero no he podido conseguir que aparesca todo como lo de esta imagen

LahzP7Q.png

Necesitamos más información de tu sistema de vehículos, lo creaste tú, te lo hicieron, es de la comunidad?

Link to comment

Lo Tengo asi Actualmente:

Bv4bkCD.png

Este es el Script

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+1, sy+1, sx, sy, tocolor(R or 255, G or 255, B or 255, alpha or 255), (size or 1)-(distanceBetweenPoints / distance), font or "default-bold", "center", "center") 
            end 
        end 
    end 
end 
  
  
function textos() 
for k,v in ipairs(getElementsByType("vehicle")) do 
    local vehicle = getVehicleName(v) 
  
    dxDrawTextOnElement(v,"Vehiculo: "..vehicle,1.09,20,255,0,0,255,1.00,"default-bold") 
    dxDrawTextOnElement(v,"Salud: "..getElementHealth(v).."%",1,20,255,0,0,255,1.00,"default-bold") 
    end 
end 
addEventHandler("onClientPreRender", getRootElement(), textos) 
  
  

Link to comment

No veo cual es el problema sinceramente. Si quieres ver quien es el dueño, eso depende del script que tengas para asignarlo. Puede usar desde tablas del vehículo (que almacene el color, dueño y demás), hasta elementData. No somos adivinos. Sobre lo de abierto y cerrado, podrías usar ésto:

addEventHandler( "onClientPreRender", root, 
    function( ) 
        local vehiculos = getElementsByType( 'vehicle' ) 
        for i=1, #vehiculos do 
            local v = vehiculos[ i ] 
            local salud = getElementHealth( v ) 
            local modelo = getVehicleName( v ) 
            local cerrado = isVehicleLocked( v ) 
            local conductor = getVehicleController( v ) 
            if conductor then 
                return end 
            else 
                if cerrado then 
                    dxDrawTextOnElement(v,"Vehiculo: "..modelo,1.09,20,255,0,0,255,1.00,"default-bold") 
                    dxDrawTextOnElement(v,"Salud: "..tonumber( salud ).."%",1,20,255,0,0,255,1.00,"default-bold") 
                    dxDrawTextOnElement(v,"Estado: Cerrado",0.8,20,255,0,0,255,1.00,"default-bold") 
                else 
                    dxDrawTextOnElement(v,"Vehiculo: "..modelo,1.09,20,255,0,0,255,1.00,"default-bold") 
                    dxDrawTextOnElement(v,"Salud: "..tonumber( salud ).."%",1,20,255,0,0,255,1.00,"default-bold") 
                    dxDrawTextOnElement(v,"Estado: Abierto",0.8,20,255,0,0,255,1.00,"default-bold")  
                end 
            end 
        end 
    end 
) 

Acomoda las posiciones a tu gusto.

Link to comment
  • Recently Browsing   0 members

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