Destroyer.- Posted July 26, 2016 Share 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 Link to comment
aka Blue Posted July 26, 2016 Share 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. Link to comment
Bc# Posted July 26, 2016 Share Posted July 26, 2016 El contador tiene que ir dentro de la funcion donde renderizas para que sume a cada frame Link to comment
Destroyer.- Posted July 28, 2016 Author Share 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" ) Link to comment
Bc# Posted July 28, 2016 Share Posted July 28, 2016 Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente. Link to comment
Destroyer.- Posted July 28, 2016 Author Share 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 Link to comment
MisterQuestions Posted July 28, 2016 Share 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 Link to comment
aka Blue Posted July 28, 2016 Share Posted July 28, 2016 Lo hice en dos por si decide eliminar la carga de progreso y dejar los dx. Link to comment
Bc# Posted July 29, 2016 Share 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. Link to comment
Recommended Posts