alex17 Posted July 28, 2015 Share Posted July 28, 2015 mm y también se te cierra el panel donde le des ? Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 No jaja, es lo más extraño. Supongo que es por las funciones que tengo en el onReparar (ya sabes, si está en x facción, si está subido en el vehículo, si tiene dinero para pagar la reparación...) Y es super extraño porque hace el onReparar des donde le des, esa es la explicación que quería dar, supongo jaja. Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 mm ya encontre el problema le estas poniendo mucho ancho y largo tu error dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) ----- isCursorOnElement ( 440, 297, 587, 330) -- le estas poniendo el ancho y largo del dxText y deberia ser el ancho y largo del dxRectangle copia esta parte y reemplazarlo y ya debe de funcionarte bien PD: ya lo probe para que no haya mas errores function repararlo ( ) if isCursorOnElement ( 440, 297, 146, 32) then triggerServerEvent ( "onReparar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) elseif isCursorOnElement ( 440, 348, 146, 32 ) then triggerServerEvent ( "onPintar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) end end addEventHandler ( "onClientClick", getRootElement(), repararlo) Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Ahhh, que tonto soy, ni leí eso jaja. Lo que hice fue copiar nada más los 4 números que había y ya. Lo siento y muchas gracias jaja Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 ok no hay problema suerte espero te sirva Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Sirvió al 100%. Una última pregunta, ¿Se puede hacer un triggerClient en un mismo client? Es decir, que de un panel abra otro panel (siento si la pregunta es absurda jaja). Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 mm no te entendí bien que quieres hacer pero si quieres abrir otro panel dx no es necesario un trigger Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Nono, verás. Al hacer click digamos en el color mismo, yo tengo un evento que abre un panel para elegir diferentes colores (la GUI es un cliente). Diría hacer que al clickear dicho botón en el panel (en el DX) abra el panel de colores (en la GUI normal). Ambas funciones son clientes por lo tanto no sé si eso es posible. Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Aquí tienes. Es un script que colocaré en la comunidad de MTA así que bueno, el código es free to use function abririnflar () InflarPanel = guiCreateWindow(715, 280, 201, 219, "Inflar ruedas", false) guiWindowSetSizable(InflarPanel, false) guiSetAlpha(InflarPanel, 0.68) DIzquierda = guiCreateButton(9, 34, 71, 39, "Delantera Izquierda", false, InflarPanel) guiSetFont(DIzquierda, "default-bold-small") DDerecha = guiCreateButton(120, 34, 71, 39, "Delantera Derecha", false, InflarPanel) guiSetFont(DDerecha, "default-bold-small") TIzquierda = guiCreateButton(9, 116, 71, 39, "Trasera Izquierda", false, InflarPanel) guiSetFont(TIzquierda, "default-bold-small") TDerecha = guiCreateButton(120, 116, 71, 39, "Trasera Derecha", false, InflarPanel) guiSetFont(TDerecha, "default-bold-small") CerrarPanel = guiCreateButton(48, 178, 99, 31, "Cerrar ", false, InflarPanel) guiSetFont(CerrarPanel, "default-bold-small") showCursor (true) addEventHandler ("onClientGUIClick", CerrarPanel, cerrar, false) addEventHandler ("onClientGUIClick", DIzquierda, inflardizquierda, false) addEventHandler ("onClientGUIClick", DDerecha, inflardderecha, false) addEventHandler ("onClientGUIClick", TIzquierda, inflartizquierda, false) addEventHandler ("onClientGUIClick", TDerecha, inflartderecha, false) end addEvent( "openInflar", true ) addEventHandler( "opneInflar", localPlayer, abririnflar ) function cerrar () guiSetVisible (InflarPanel, not guiGetVisible ( InflarPanel ) ) showCursor (false) end function inflardizquierda () triggerServerEvent ( "onInflar1", getLocalPlayer() ) end function inflardderecha () triggerServerEvent ( "onInflar2", getLocalPlayer() ) end function inflartizquierda () triggerServerEvent ( "onInflar3", getLocalPlayer() ) end function inflartderecha () triggerServerEvent ( "onInflar4", getLocalPlayer() ) end Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 por que no pones el GUI en el mismo archivo del DX y solo usas guiSetVisible Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Hum, no funciona por lo que veo. function abririnflar () InflarPanel = guiCreateWindow(715, 280, 201, 219, "Inflar ruedas", false) guiWindowSetSizable(InflarPanel, false) guiSetAlpha(InflarPanel, 0.68) DIzquierda = guiCreateButton(9, 34, 71, 39, "Delantera Izquierda", false, InflarPanel) guiSetFont(DIzquierda, "default-bold-small") DDerecha = guiCreateButton(120, 34, 71, 39, "Delantera Derecha", false, InflarPanel) guiSetFont(DDerecha, "default-bold-small") TIzquierda = guiCreateButton(9, 116, 71, 39, "Trasera Izquierda", false, InflarPanel) guiSetFont(TIzquierda, "default-bold-small") TDerecha = guiCreateButton(120, 116, 71, 39, "Trasera Derecha", false, InflarPanel) guiSetFont(TDerecha, "default-bold-small") CerrarPanel = guiCreateButton(48, 178, 99, 31, "Cerrar ", false, InflarPanel) guiSetFont(CerrarPanel, "default-bold-small") showCursor (true) addEventHandler ("onClientGUIClick", CerrarPanel, cerrar, false) addEventHandler ("onClientGUIClick", DIzquierda, inflardizquierda, false) addEventHandler ("onClientGUIClick", DDerecha, inflardderecha, false) addEventHandler ("onClientGUIClick", TIzquierda, inflartizquierda, false) addEventHandler ("onClientGUIClick", TDerecha, inflartderecha, false) end addEvent( "openInflar", true ) addEventHandler( "opneInflar", localPlayer, abririnflar ) function cerrar () guiSetVisible (InflarPanel, not guiGetVisible ( InflarPanel ) ) showCursor (false) end --------------------------------------------- function panelsito () dxDrawRectangle(344, 266, 334, 316, tocolor(127, 127, 127, 50), false) dxDrawRectangle(344, 179, 334, 87, tocolor(255, 255, 255, 40), false) dxDrawText("Panel Mecánico", 415, 206, 607, 256, tocolor(255, 255, 255, 255), 1.00, "bankgothic", "center", "top", false, false, false, false, false) dxDrawRectangle(344, 582, 334, 23, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Pintar", 440, 348, 587, 381, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 349, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 406, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Ruedas", 441, 406, 588, 439, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Inflar", 441, 466, 588, 499, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 467, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 526, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Luces", 441, 525, 588, 558, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) showCursor (true) end function openPanel() addEventHandler ( "onClientRender", root, panelsito ) end addCommandHandler ("panel", openPanel) function isCursorOnElement(x,y,w,h) local mx,my = getCursorPosition () if isCursorShowing() then else mx,my = x,y end local fullx,fully = guiGetScreenSize() cursorx,cursory = mx*fullx,my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end function repararlo ( ) if isCursorOnElement ( 440, 297, 146, 32) then triggerServerEvent ( "onReparar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) showCursor (false) elseif isCursorOnElement ( 440, 348, 146, 32 ) then local state = ( not guiGetVisible ( InflarPanel ) ) guiSetVisible ( InflarPanel, state ) showCursor (false) removeEventHandler ( "onClientRender", root, panelsito ) end end addEventHandler ( "onClientClick", getRootElement(), repararlo) Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 Modifique unas cuantas cosas que estaban mal pero ya lo probé y funciona avísame si tienes alguna duda function abririnflar () InflarPanel = guiCreateWindow(715, 280, 201, 219, "Inflar ruedas", false) guiWindowSetSizable(InflarPanel, false) guiSetAlpha(InflarPanel, 0.68) DIzquierda = guiCreateButton(9, 34, 71, 39, "Delantera Izquierda", false, InflarPanel) guiSetFont(DIzquierda, "default-bold-small") DDerecha = guiCreateButton(120, 34, 71, 39, "Delantera Derecha", false, InflarPanel) guiSetFont(DDerecha, "default-bold-small") TIzquierda = guiCreateButton(9, 116, 71, 39, "Trasera Izquierda", false, InflarPanel) guiSetFont(TIzquierda, "default-bold-small") TDerecha = guiCreateButton(120, 116, 71, 39, "Trasera Derecha", false, InflarPanel) guiSetFont(TDerecha, "default-bold-small") CerrarPanel = guiCreateButton(48, 178, 99, 31, "Cerrar ", false, InflarPanel) guiSetFont(CerrarPanel, "default-bold-small") showCursor (true) addEventHandler ("onClientGUIClick", getRootElement(), onguiClick) end addEvent( "openInflar", true ) addEventHandler( "opneInflar", localPlayer, abririnflar ) function onguiClick () if source == CerrarPanel then guiSetVisible (InflarPanel, false) showCursor (false) elseif source == DIzquierda then triggerServerEvent ( "onInflar1", getLocalPlayer() ) elseif source == DDerecha then triggerServerEvent ( "onInflar2", getLocalPlayer() ) elseif source == TIzquierda then triggerServerEvent ( "onInflar3", getLocalPlayer() ) elseif source == inflartderecha then triggerServerEvent ( "onInflar4", getLocalPlayer() ) end end function panelsito () dxDrawRectangle(344, 266, 334, 316, tocolor(127, 127, 127, 50), false) dxDrawRectangle(344, 179, 334, 87, tocolor(255, 255, 255, 40), false) dxDrawText("Panel Mecánico", 415, 206, 607, 256, tocolor(255, 255, 255, 255), 1.00, "bankgothic", "center", "top", false, false, false, false, false) dxDrawRectangle(344, 582, 334, 23, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Pintar", 440, 348, 587, 381, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 349, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 406, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Ruedas", 441, 406, 588, 439, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Inflar", 441, 466, 588, 499, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 467, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 526, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Luces", 441, 525, 588, 558, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) showCursor (true) end function openPanel() addEventHandler ( "onClientRender", root, panelsito ) end addCommandHandler ("panel", openPanel) function isCursorOnElement(x,y,w,h) local mx,my = getCursorPosition () if isCursorShowing() then else mx,my = x,y end local fullx,fully = guiGetScreenSize() cursorx,cursory = mx*fullx,my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end function repararlo ( _,state) if state == "down" then if isCursorOnElement ( 440, 297, 146, 32) then triggerServerEvent ( "onReparar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) elseif isCursorOnElement ( 440, 348, 146, 32 ) then abririnflar () removeEventHandler ( "onClientRender", root, panelsito ) end end end addEventHandler ( "onClientClick", getRootElement(), repararlo) Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Justo ahora estoy desde el móvil porque acabo de salir, pero lo vi así por eso encima y lo veo todo bien, y si a ti te va, a mi también me tendría que ir jaja. En cualquier caso, algun problema con el triggerServer, pero no creo. Muchas gracias nuevamente jaja Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Apareció otro problema jaja. Resulta que uso ese mismo código pero, al pulsar x tecla y al abrir x gui, como que se queda el panel, es decir, no lo borra del todo y cuando haces click te abre más y más paneles. Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 Prueba con esto InflarPanel = guiCreateWindow(715, 280, 201, 219, "Inflar ruedas", false) guiWindowSetSizable(InflarPanel, false) guiSetAlpha(InflarPanel, 0.68) DIzquierda = guiCreateButton(9, 34, 71, 39, "Delantera Izquierda", false, InflarPanel) guiSetFont(DIzquierda, "default-bold-small") DDerecha = guiCreateButton(120, 34, 71, 39, "Delantera Derecha", false, InflarPanel) guiSetFont(DDerecha, "default-bold-small") TIzquierda = guiCreateButton(9, 116, 71, 39, "Trasera Izquierda", false, InflarPanel) guiSetFont(TIzquierda, "default-bold-small") TDerecha = guiCreateButton(120, 116, 71, 39, "Trasera Derecha", false, InflarPanel) guiSetFont(TDerecha, "default-bold-small") CerrarPanel = guiCreateButton(48, 178, 99, 31, "Cerrar ", false, InflarPanel) guiSetFont(CerrarPanel, "default-bold-small") guiSetVisible (InflarPanel, false) function onguiClick () if source == CerrarPanel then guiSetVisible (InflarPanel, false) showCursor (false) removeEventHandler ("onClientGUIClick", getRootElement(), onguiClick) elseif source == DIzquierda then triggerServerEvent ( "onInflar1", getLocalPlayer() ) elseif source == DDerecha then triggerServerEvent ( "onInflar2", getLocalPlayer() ) elseif source == TIzquierda then triggerServerEvent ( "onInflar3", getLocalPlayer() ) elseif source == inflartderecha then triggerServerEvent ( "onInflar4", getLocalPlayer() ) end end function panelsito () dxDrawRectangle(344, 266, 334, 316, tocolor(127, 127, 127, 50), false) dxDrawRectangle(344, 179, 334, 87, tocolor(255, 255, 255, 40), false) dxDrawText("Panel Mecánico", 415, 206, 607, 256, tocolor(255, 255, 255, 255), 1.00, "bankgothic", "center", "top", false, false, false, false, false) dxDrawRectangle(344, 582, 334, 23, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Pintar", 440, 348, 587, 381, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 349, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 406, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Ruedas", 441, 406, 588, 439, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Inflar", 441, 466, 588, 499, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 467, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 526, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Luces", 441, 525, 588, 558, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) showCursor (true) end function openPanel() addEventHandler ( "onClientRender", root, panelsito ) end addCommandHandler ("panel", openPanel) function isCursorOnElement(x,y,w,h) local mx,my = getCursorPosition () if isCursorShowing() then else mx,my = x,y end local fullx,fully = guiGetScreenSize() cursorx,cursory = mx*fullx,my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end function repararlo ( _,state) if state == "down" then if isCursorOnElement ( 440, 297, 146, 32) then triggerServerEvent ( "onReparar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) elseif isCursorOnElement ( 440, 348, 146, 32 ) then showCursor (true) guiSetVisible (InflarPanel, true) addEventHandler ("onClientGUIClick", getRootElement(), onguiClick) removeEventHandler ( "onClientRender", root, panelsito ) end end end addEventHandler ( "onClientClick", getRootElement(), repararlo) Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Nada, sigue igual. No sé si me expliqué muy bien (es que estoy medio dormido jaja). Cuando abro el panel y hago click en... pues, yo que sé, en las luces por ejemplo, me abre una pequeña gui normal (hecha con la función window y todo eso, no con el dx). Todo bien pero, cuando le doy click en el medio con el ratón (sin estar el panel) empieza a hacerme las funciones del panel. Osea, es como si aun estuviese jaja. Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 mm sigo sin entenderte.. como abres el panel GUI por el dx o tienes una funcion aparte que tambien lo abre ? Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Osea, al hacer ésto, por ejemplo. elseif isCursorOnElement ( 440, 348, 146, 32 ) then showCursor (true) guiSetVisible (InflarPanel, true) addEventHandler ("onClientGUIClick", getRootElement(), onguiClick) removeEventHandler ( "onClientRender", root, panelsito ) Me abre el panel y todo bien, pero no me elimina lo que viene siendo la función del isCursorOnElement, es decir, si sigo clickeando, me sigue abriendo gui's que tienen asignada x posición. Es como si el dx estuviera invisible, pero sigue haciendo las funciones. Link to comment
alex17 Posted July 28, 2015 Share Posted July 28, 2015 ah tienes que añadirle esto removeEventHandler ( "onClientClick", getRootElement(), repararlo) te tiene que quedar algo así function openPanel() addEventHandler ( "onClientRender", root, panelsito ) addEventHandler ( "onClientClick", getRootElement(), repararlo) end addCommandHandler ("panel", openPanel) function isCursorOnElement(x,y,w,h) local mx,my = getCursorPosition () if isCursorShowing() then else mx,my = x,y end local fullx,fully = guiGetScreenSize() cursorx,cursory = mx*fullx,my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end function repararlo ( _,state) if state == "down" then if isCursorOnElement ( 440, 297, 146, 32) then triggerServerEvent ( "onReparar", getLocalPlayer() ) removeEventHandler ( "onClientRender", root, panelsito ) elseif isCursorOnElement ( 440, 348, 146, 32 ) then showCursor (true) guiSetVisible (InflarPanel, true) addEventHandler ("onClientGUIClick", getRootElement(), onguiClick) removeEventHandler ( "onClientRender", root, panelsito ) removeEventHandler ( "onClientClick", getRootElement(), repararlo) end end end Link to comment
aka Blue Posted July 28, 2015 Author Share Posted July 28, 2015 Por fin, ahora sí jaja. Muchísimas gracias por la ayuda y siento los dolores de cabeza jaja. PD: Había un problema en mi anterior duda, había puesto onPintr y era onPintar jaja. Hay que tener cuidado con esas tonterías, la verdad. Link to comment
Recommended Posts