Jump to content

[Ayuda] dxDrawRectangle con Animacion


iSmokee

Recommended Posts

Hola vengo de nuevo xD quisiera que me ayuden con una cosa que necesito hacer es lo siguiente..

Quiero que en la pantalla a la derecha y arriba de todo salga un dxDrawText Animado y después de que llegue hasta cierto punto. vuelva y desaparezca :D seria algo así les dejo la imagen así me entienden gracias :D

fd2B1YZ.png

Link to comment

asi seria?

  
moveX = 0 
  
addEventHandler ("onClientRender", root, function () 
        moveX = moveX + 5 
        dxDrawText("Hello World", posX+moveX, (377/mi_x)*user_x, (332/mi_y)*user_y, (0/mi_x)*user_x, (30/mi_y)*user_y, tocolor ( 255, 255, 255, 255 ), 1, "default-bold") 
end) 
  

Link to comment
moveX =  (377/mi_x)*user_x 
  
addEventHandler ("onClientRender", root, function () 
        moveX = moveX + 5 
        dxDrawText("Hello World",moveX, (332/mi_y)*user_y, (0/mi_x)*user_x, (30/mi_y)*user_y, tocolor ( 255, 255, 255, 255 ), 1, "default-bold") 
end) 

Link to comment
Lo acabo de probar y eso no es lo que busco necesito que el dxDrawText y el dxDrawRectangle se muevan y se detengan en cierto punto de la pantalla no me sirve porque sigue moviéndose y quiero que se detenga

¿En cuál cierto punto?

Link to comment
  • MTA Team

Si es algo lineal podes utilizar getTickCount o simplemente aumentar o reducir tu variable usando condicionales. Recuerda que onClientRender se ejecuta hasta 100 veces por segundo, por lo tanto, si aumentas la variable +5 se va a salir de la pantalla en un abrir y cerrar de ojos.

Link to comment
Si es algo lineal podes utilizar getTickCount o simplemente aumentar o reducir tu variable usando condicionales. Recuerda que onClientRender se ejecuta hasta 100 veces por segundo, por lo tanto, si aumentas la variable +5 se va a salir de la pantalla en un abrir y cerrar de ojos.

Hahaha, no en mi PC :(

Link to comment
  • MTA Team

Usar interpolateBetween para una interpolación linear es ineficiente por el consumo que usa esa función. Para algo lineal, lo mejor es o aumentar una variable, o usar getTickCount para establecer posición.

@Smoke, intenta hacerlo como te explique, si no te funciona, te ayudaremos a corregirlo. Es muy sencillo, simplemente usa condicionales y en vez de sumar +5, utiliza un valor menor como +0.01

Link to comment
  
function startgetTickCount() 
    start = getTickCount() 
end 
addEventHandler ( "onClientResourceStart", root, startgetTickCount) 
  
function Linea() 
    now = getTickCount() 
    count = now - start 
    dxDrawRectangle ((1360/mi_x)*user_x, (200/mi_y)*user_y, (count/-8/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 0, 0, 150), false )  
end  
addEventHandler("onClientRender", root, Linea) 
  

Ahora como hago para que se detenga??

Link to comment
  • MTA Team
  
function startgetTickCount() 
    start = getTickCount() 
end 
addEventHandler ( "onClientResourceStart", root, startgetTickCount) 
local max = 10 -- Definir valor maximo 
local count = 0 -- Definimos el contador 
function Linea() 
    if count < max then 
    now = getTickCount() 
    count = now - start 
    else 
    end 
    dxDrawRectangle ((1360/mi_x)*user_x, (200/mi_y)*user_y, (count/-8/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 0, 0, 150), false ) 
end 
addEventHandler("onClientRender", root, Linea) 

Link to comment
  
function startgetTickCount() 
    start = getTickCount() 
end 
addEventHandler ( "onClientResourceStart", root, startgetTickCount) 
  
local max = 2000 -- Definir valor maximo 
local count = 0 -- Definimos el contador 
  
function Linea() 
if count < max then 
    now = getTickCount() 
    count = now - start 
        else 
    end 
    dxDrawRectangle ((1110/mi_x)*user_x, (200/mi_y)*user_y, (count/8/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 0, 0, 150), false ) 
    dxDrawRectangle ((1100/mi_x)*user_x, (200/mi_y)*user_y, (10/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 255, 0, 255), false ) 
    dxDrawTextPerLetter ( 'Has comprado una Pizza-HEAL', (1150/mi_x)*user_x, (207/mi_y)*user_y, (0/mi_x)*user_x, (30/mi_y)*user_y, tocolor ( 255, 255, 255, 255 ), 1, "default-bold" ) 
end 
addEventHandler("onClientRender", root, Linea) 
setTimer (function() 
removeEventHandler("onClientRender",root,Linea) 
end, 3000, 1) 
  

Ahora como puedo hacer para que desaparezca lentamente asi tipo que va perdiendo alpha. xD perdón por pedir tantas ayudas :c

Link to comment
  • MTA Team
function startgetTickCount() 
    start = getTickCount() 
end 
addEventHandler ( "onClientResourceStart", root, startgetTickCount) 
  
local max = 2000 -- Definir valor maximo 
local count = 0 -- Definimos el contador 
local alpha = 255 
  
function Linea() 
if count < max then 
    now = getTickCount() 
    count = now - start 
        else 
    end 
    if alpha > 0 then 
    alpha = alpha - 0.10 
    else 
    end 
    dxDrawRectangle ((1110/mi_x)*user_x, (200/mi_y)*user_y, (count/8/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 0, 0, alpha), false ) 
    dxDrawRectangle ((1100/mi_x)*user_x, (200/mi_y)*user_y, (10/mi_x)*user_x, (30/mi_y)*user_y, tocolor( 0, 255, 0, alpha), false ) 
    dxDrawTextPerLetter ( 'Has comprado una Pizza-HEAL', (1150/mi_x)*user_x, (207/mi_y)*user_y, (0/mi_x)*user_x, (30/mi_y)*user_y, tocolor ( 255, 255, 255, alpha ), 1, "default-bold" ) 
end 
addEventHandler("onClientRender", root, Linea) 
setTimer (function() 
removeEventHandler("onClientRender",root,Linea) 
end, 3000, 1) 

Link to comment
  • Recently Browsing   0 members

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