Destroyer.- Posted July 26, 2016 Posted July 26, 2016 Hola, tengo un problema con DXRectangle, estoy tratando de hacer una barra que vaya progresando, me tira error del tercer argumento local screenW, screenH = guiGetScreenSize() local i = 0 function render() i=i+0.4 if i >= 300 then removeEventHandler("onClientRender", root, drawing) end end addEventHandler("onClientRender", root, drawing) function drawing() dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, i, 25, tocolor(144, 3, 3, 255), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 130), true) end Gracias a los que ayuden
aka Blue Posted July 26, 2016 Posted July 26, 2016 La función render que es la que sube el progreso, por lo visto no tiene ningún ejecutor, por lo tanto, i es igual a nil. Dame unos minutos y te posteo un ejemplo. local x, y = guiGetScreenSize( ) local progreso_barra = 0 function renderizar_progreso( ) progreso_barra = progreso_barra + 0.4 if i >= 300 then removeEventHandler( "onClientRender", root, renderizar_barras ) removeEventHandler( "onClientRender", root, renderizar_progreso ) end end addEventHandler( "onClientRender", root, renderizar_progreso ) function renderizar_barras( ) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 130), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, i, 25, tocolor(144, 3, 3, 255), true) end addEventHandler( "onClientRender", root, renderizar_barras ) La sombra del dx, dibújala siempre antes de la barra, para que quede atrás.
Bc# Posted July 26, 2016 Posted July 26, 2016 El contador tiene que ir dentro de la funcion donde renderizas para que sume a cada frame
Destroyer.- Posted July 28, 2016 Author Posted July 28, 2016 Aka Blue tu codigo me funciono, gracias, como podria que este texto se superponga a la barra progresando dxDrawText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 2, "sans" )
Bc# Posted July 28, 2016 Posted July 28, 2016 Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente.
Destroyer.- Posted July 28, 2016 Author Posted July 28, 2016 Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente. Hice eso pero a medida q la barra va pasando se queda abajo el texto function renderizar_progreso( ) progreso_barra = progreso_barra + 0.4 if progreso_barra >= 300 then removeEventHandler( "onClientRender", root, renderizar_barras ) removeEventHandler( "onClientRender", root, renderizar_progreso ) end end addEventHandler( "onClientRender", root, renderizar_progreso ) function renderizar_barras( ) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 160), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, progreso_barra, 25, tocolor(0, 255, 0, 255), true) dxDrawBorderedText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 0, 0, 0, 255 ), 2, "sans" ) dxDrawText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 2, "sans" ) end addEventHandler( "onClientRender", root, renderizar_barras ) Solucionado, gracias a los 2
MisterQuestions Posted July 28, 2016 Posted July 28, 2016 Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente. Hice eso pero a medida q la barra va pasando se queda abajo el texto function renderizar_progreso( ) progreso_barra = progreso_barra + 0.4 if progreso_barra >= 300 then removeEventHandler( "onClientRender", root, renderizar_barras ) removeEventHandler( "onClientRender", root, renderizar_progreso ) end end addEventHandler( "onClientRender", root, renderizar_progreso ) function renderizar_barras( ) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 160), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, progreso_barra, 25, tocolor(0, 255, 0, 255), true) dxDrawBorderedText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 0, 0, 0, 255 ), 2, "sans" ) dxDrawText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 2, "sans" ) end addEventHandler( "onClientRender", root, renderizar_barras ) Solucionado, gracias a los 2 No sería más simple dejar en un solo render los dos? No habría ningún problema & así es menos funciones a lo loco
aka Blue Posted July 28, 2016 Posted July 28, 2016 Lo hice en dos por si decide eliminar la carga de progreso y dejar los dx.
Bc# Posted July 29, 2016 Posted July 29, 2016 Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente. Hice eso pero a medida q la barra va pasando se queda abajo el texto function renderizar_progreso( ) progreso_barra = progreso_barra + 0.4 if progreso_barra >= 300 then removeEventHandler( "onClientRender", root, renderizar_barras ) removeEventHandler( "onClientRender", root, renderizar_progreso ) end end addEventHandler( "onClientRender", root, renderizar_progreso ) function renderizar_barras( ) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 160), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, progreso_barra, 25, tocolor(0, 255, 0, 255), true) dxDrawBorderedText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 0, 0, 0, 255 ), 2, "sans" ) dxDrawText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 2, "sans" ) end addEventHandler( "onClientRender", root, renderizar_barras ) Solucionado, gracias a los 2 No sería más simple dejar en un solo render los dos? No habría ningún problema & así es menos funciones a lo loco Yo también pensé en eso, y claro haría mas simple hacer todo en un solo render, pero no seria lo mas optimo si es que el render fuese infinito. Estaría consultando un if innecesariamente. Ahora si es un caso particular como creo que es este, no habría problema en hacer todo en un if.
Recommended Posts