Jump to content

"onClientRender"


JesusAliso

Recommended Posts

Hola, He estado viendo que muchas veces se utiliza "onClientRender". Pero el problema es que nunca lo he usado y quizás por eso estoy fallando al crear algo un poco mas avanzado.

En todo caso, me ayudaría una breve explicación de este Evento, y una pequeña parte de un script , pero que se vea una explicación y sea en entendible. Gracias*

EDIT: Por favor, si no tienes un conocimiento perfecto o normal con "onClientRender" no intentes ayudarme. No quiero confundirme.

Edited by Guest
Link to comment
  • MTA Team

onClientRender es un evento que se triggea en cada frame. Esto quiere decir, que en cada Frame que pasa el cliente, se triggea ese evento. El uso de onClientRender es indispensable para visualizar elementos creados con las funciones de dibujado DX ya que estos deben ser re-dibujados en cada frame. onClientRender y onClientPreRender, son eventos que no deben usarse para cualquier cosa ya que suponen una cierta carga del lado del cliente. Se puede utilizar, por ejemplo, para comprobar cosas cada frame y a la vez, dibujarlo.

Si me posteas tu código, con gusto puedo explicarte cual es el inconveniente.

Saludos.

Link to comment
Hola, He estado viendo que muchas veces se utiliza "onClientRender". Pero el problema es que nunca lo he usado y quizás por eso estoy fallando al crear algo un poco mas avanzado.

En todo caso, me ayudaría una breve explicación de este Evento, y una pequeña parte de un script , pero que se vea una explicación y sea en entendible. Gracias*

EDIT: Por favor, si no tienes un conocimiento perfecto o normal con "onClientRender" no intentes ayudarme. No quiero confundirme.

No es un evento muy complejo, se ejecuta cada vez que el cliente renderiza, lo que sucede entre 30 y 60 veces por segundo (Frames Per Second), por ser un evento del lado del cliente, no genera una carga al servidor, aunque dependiendo de la complejidad de tu código si puede significar una baja en la velocidad de renderizado (Frames Per Second) de los jugadores, en el caso de las funciones de dibujado del tipo DirectX (funciones dx), estas solo son visibles durante el cuadro actual, por lo que utilizarlas junto a 'onClientRender' es lo necesario para hacerlas mantenerse visibles durante un periodo de tiempo mayor a un cuadro.

Quizá mi explicación es un poco confusa, pero en resumidas cuentas, esta función se ejecuta entre 30 y 60 veces por segundo y debes moderar su uso para evitar una baja en los FPS del cliente, te dejare algunos links que podrían serte útiles:

https://wiki.multitheftauto.com/wiki/Ga ... sing_Order *En este enlace se muestra el orden de procesado de cada cuadro, te sera util pues ademas explica la diferencia entre 'onClientRender', 'onClientPreRender' y 'onClientHUDRender'.*

Por si no entiendes suficiente ingles:

'onClientRender' -> Se ejecuta luego del renderizado, con datos actualizados sobre las posiciones y el entorno.

'onClientPreRender' -> Se ejecuta antes del renderizado, pero antes del renderizado y por ende, algunos datos pueden tener un ligero desfase, según la wiki, este evento funciona bien para utilizar DirectX en conjunto a elementos del mundo, pero según mi experiencia, eso puede resultar un poco pesado para el cliente.

'onClientHUDRender' -> Este evento se ejecuta antes de que el HUD de GTA se actualice, así que si quieres colocar algún efecto visual tras este, es una buena opción.

http://es.wikipedia.org/wiki/Renderizacion *La wikipedia nunca esta de mas*

*Por recomendación de @Mr. Aleks, te dejare un ejemplo al respecto, es el mismo ejemplo del foro, pero te dejare anotaciones explicándolo.

function updateCamera () --Acá comienza la función. 
    local x, y, z = getElementPosition ( localPlayer ) --X, Y y Z se definen como la posición del jugador. 
    setCameraMatrix ( x, y, z + 50, x, y, z ) --Se posiciona la cámara 50 metros sobre la posición ya conseguida y se apunta hacia esta, creando un efecto parecido al de GTA2. 
end --Acá ya se acaba esta función. 
addEventHandler ( "onClientRender", root, updateCamera ) --Se enlaza la función 'updateCamera' al evento 'onClientRender' lo que consigue que las variables X, Y y Z se actualicen en cada cuadro y creen finalmente un fluido efecto de cámara. 

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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