Nexus# Posted August 6, 2016 Share Posted August 6, 2016 Hola Porfavor me pueden decir que funciones usar para hacer que un vehiculo se le vea la Informacion.. Ejemplo: -Carro: Infernus -Propietario AlexCubeZ -Salud: 100% Muchas Gracias.. Link to comment
Anzo Posted August 6, 2016 Share Posted August 6, 2016 Usa esto: - getVehicleName - getElementHealth - - getPlayerName y si quieres sacar la velocidad del auto usa: getElementSpeed Link to comment
Nexus# Posted August 6, 2016 Author Share Posted August 6, 2016 Ok, para hacer que lo vean otros usuarios cuando hay alguien fuera del vehiculo que uso ? y cuando hay alguien dentro del vehiculo no se vea la informacion.. (? D: Link to comment
Anzo Posted August 6, 2016 Share Posted August 6, 2016 Ok, para hacer que lo vean otros usuarios cuando hay alguien fuera del vehiculo que uso ? y cuando hay alguien dentro del vehiculo no se vea la informacion.. (?D: Quieres hacer algo parecido como esto solo que con autos? https://community.multitheftauto.com/in ... ls&id=7298 Link to comment
Tomas Posted August 6, 2016 Share Posted August 6, 2016 usa setElementData para guardar la información en el vehiculousa 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
Nexus# Posted August 6, 2016 Author Share Posted August 6, 2016 Por favor una idea de como empezarle hacer ? Link to comment
Tomas Posted August 6, 2016 Share Posted August 6, 2016 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
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Una pregunta yo quiero que el script quede asi.. Link to comment
Anzo Posted August 7, 2016 Share Posted August 7, 2016 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
aka Blue Posted August 7, 2016 Share Posted August 7, 2016 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. Link to comment
Anzo Posted August 7, 2016 Share Posted August 7, 2016 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
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Esta bien porque yo quiero que lo vean todos los jugadores ese texto y cuando el propietario se suba al vehiculo ya no este el texto.. Link to comment
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Pero me encuentro con este error.. 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
aka Blue Posted August 7, 2016 Share Posted August 7, 2016 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
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Wow Muchas Gracias! Tengo un inconveniente como hago para que cuando se suba al vehiculo desaparesca el texto ? Link to comment
Tomas Posted August 7, 2016 Share Posted August 7, 2016 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
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Sale error en: if ( getPedController(v) ) then return end Dice: getPedController(a nil value) Link to comment
aka Blue Posted August 7, 2016 Share Posted August 7, 2016 @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
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 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 Link to comment
Tomas Posted August 7, 2016 Share Posted August 7, 2016 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 Necesitamos más información de tu sistema de vehículos, lo creaste tú, te lo hicieron, es de la comunidad? Link to comment
Nexus# Posted August 7, 2016 Author Share Posted August 7, 2016 Lo Tengo asi Actualmente: 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
aka Blue Posted August 7, 2016 Share Posted August 7, 2016 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
Recommended Posts