-ViToKo- Posted May 6, 2012 Share Posted May 6, 2012 Bueno, estuve haciendo una tienda de armas (saque la idea de un recurso y lo modifique) y tengo unos problemas con el GUI (lo hice en el GUIEditor). 1.- Al hacer click en cualquier lado de la ventana, se compran todos los items y todas las municiones 2.- Quise ponerle imagenes de las armas al boton. Probe con imagenes estaticas, pero el boton funciona como al 4° click; tambien probe con dxDrawImage, pero la imagen dura una milesima de segundo. Aqui esta el script, es del lado del cliente. GUIEditor_Button = {} ventana = guiCreateWindow(778,171,245,382,"Tienda de Armas Basicas",false) btnColt = guiCreateButton(9,30,75,75,"",false,ventana) btnColt50 = guiCreateButton(86,30,75,75,"",false,ventana) GUIEditor_Button[1] = guiCreateButton(163,30,72,75,"",false,ventana) btnShotg = guiCreateButton(9,112,75,75,"",false,ventana) btnShotg50 = guiCreateButton(86,112,75,75,"",false,ventana) GUIEditor_Button[2] = guiCreateButton(163,112,73,75,"",false,ventana) btnUzi = guiCreateButton(9,194,75,75,"",false,ventana) btnUzi50 = guiCreateButton(86,194,75,75,"",false,ventana) GUIEditor_Button[3] = guiCreateButton(163,194,72,75,"",false,ventana) btnSalir = guiCreateButton(139,334,97,39,"Salir",false,ventana) guiWindowSetMovable(ventana,false) guiWindowSetSizable(ventana,false) guiSetVisible(ventana,false) addEventHandler("abrirTienda",getRootElement(), function() dxDrawImage(787.0,365.0,75.0,75.0,"images/28.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) dxDrawImage(787.0,283.0,75.0,75.0,"images/25.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) dxDrawImage(787.0,201.0,75.0,75.0,"images/22.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) end ) function abrirTienda() guiSetVisible(ventana,true) showCursor(true) dxDrawImage(787.0,365.0,75.0,75.0,"images/28.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) dxDrawImage(787.0,283.0,75.0,75.0,"images/25.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) dxDrawImage(787.0,201.0,75.0,75.0,"images/22.png",0.0,0.0,0.0,tocolor(255,255,255,255),true) end addEvent("abrirTienda",true) addEventHandler("abrirTienda",getRootElement(),abrirTienda) function cerrarTienda() if guiGetVisible(ventana) then guiSetVisible(ventana,false) showCursor(false) end end addEventHandler ("onClientGUIClick", btnSalir, cerrarTienda) function darColt() local itemID = 22 local itemCost = 500 local itemMuni = 100 triggerServerEvent ("comprarColt", getLocalPlayer(), itemID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnColt, darColt) function darShotg() local itemID = 25 local itemCost = 1000 local itemMuni = 50 triggerServerEvent ("comprarShotgun", getLocalPlayer(), itemID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnShotg, darShotg) function darUzi() local itemID = 28 local itemCost = 1500 local itemMuni = 150 triggerServerEvent ("comprarUzi", getLocalPlayer(), itemID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnUzi, darUzi) function darMuniUzi50() local armaID = 28 local itemCost = 150 local itemMuni = 50 triggerServerEvent ("comprarMuniUzi", getLocalPlayer(), armaID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnUzi50, darMuniUzi50) function darMuniShotg50() local armaID = 25 local itemCost = 150 local itemMuni = 50 triggerServerEvent ("comprarMuniShotg", getLocalPlayer(), armaID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnShotg50, darMuniShotg50) function darMuniColt50() local armaID = 22 local itemCost = 150 local itemMuni = 50 triggerServerEvent ("comprarMuniColt", getLocalPlayer(), armaID, itemCost,itemMuni) end addEventHandler ("onClientGUIClick", btnColt50, darMuniColt50) Ojala puedan ayudarme con esto, se los agradeceria mucho. Saludos. Link to comment
Castillo Posted May 6, 2012 Share Posted May 6, 2012 Para las imagenes: Creas la imagen dentro del boton, luego usas la imagen para cuando quieren comprar, no el boton. Para lo de comprar todo cuando clickeas un boton es porque te olvidaste de ponerle "false" al final del evento: "onClientGUIClick". Ejemplo: addEventHandler ( "onClientGUIClick", btnColt, darColt, false) Link to comment
iFoReX Posted May 6, 2012 Share Posted May 6, 2012 vitoko es mejor hacerlo con root, y con IFs Link to comment
-ViToKo- Posted May 12, 2012 Author Share Posted May 12, 2012 Gracias Solid! Ya solucione los 2 problemas. Mota, no entendi lo que dijiste ._. Link to comment
iFoReX Posted May 12, 2012 Share Posted May 12, 2012 vitoko me refiero a esto : addEventHandler("onClientGUIClick", root, ----Aqui un root function() if source == btnColt and source == darColt then ---- aqui vamos poniendo los botones ---Relleno----- end end) Link to comment
-ViToKo- Posted May 19, 2012 Author Share Posted May 19, 2012 Ahora tengo otro problema, pasa que hice el GUI en una resolucion de 1024 x 768, y al parecer, a un amigo que tiene una de 800 x 600 se le ve mas grande y no alcanza a presionar el boton para cerrar la ventana, ya que la hice en relacion a la mia. Mi consulta es como hacer para que el GUI se adapte a cada resolucion, osea para que no se ensanche o agrande, impidiendo cerrarla. ¿Como se podria corregir? Link to comment
Edikosh998 Posted May 19, 2012 Share Posted May 19, 2012 Tenes que usar el relative en ese caso Fijate que si ves en la wiki, el ejemplo de guiCreateButton (https://wiki.multitheftauto.com/wiki/GuiCreateButton) El tipo usa el relative en true Osea guiCreateButton ( float x, float y, float width, float height, string text, bool relative, [ element parent = nil ] ) Fijate que vos en ese relative pusiste "false" porque usaste pixeles reales. Si queres que se adapte tendras que cambiar a "true", pero buscar las coordenadas en relative ( usa el GUI Editor para ello). De esa forma, se adapta a todas las resoluciones. Link to comment
-ViToKo- Posted May 20, 2012 Author Share Posted May 20, 2012 ¿El relative se lo tengo que poner a cada elemento de la ventana o a la ventana sola? Es que tengo otro GUI con una ventana de informacion, ¿y en ese caso que tengo que hacer? ¿el relative va en la ventana o en todo? Link to comment
Edikosh998 Posted May 21, 2012 Share Posted May 21, 2012 Tenes que ponerlo en todo, porque sino se te va a ver sobredimensionados los botones de adentro si no me equivoco. Igual proba, primero pone el window en relative true...y testea usando 2 resoluciones. Link to comment
Recommended Posts