-Gus- Posted February 1, 2012 Share Posted February 1, 2012 bueno, les explico, yo cree un gui para cambiar la tecla que llama a una funcion, es decir, y introduzco el nombre de la tecla que quiero en el gui, clickeo en "ok" y entonces cambia la anterior tecla que estaba y pone la que introduci en el gui, asi a partir de ahora puedo llamar a la funcion con la nueva tecla que puse. el problema es que si pongo cualquier cosa (por ejemplo: 348374847) me bindea "eso" como si fuera una tecla para llamar la funcion. entonces lo que yo hice fue crear una tabla con la lista de teclas permitidas, pero lo que no se es como comprobar que lo que escribi en el campo de la tecla, esta en la tabla, les muestro el script: --creo la tabla con la lista de teclas permitidas allowedKeys = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "num_0", "num_1", "num_2", "num_3", "num_4", "num_5", "num_6", "num_7", "num_8", "num_9", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} --creo todos los elementos del gui window = guiCreateWindow(0.1941,0.306,0.1934,0.2318,"Position Saver",true) savelabel = guiCreateLabel(0.057,0.191,0.4144,0.0899,"Save Position Key:",true,window) guiLabelSetColor(savelabel,0,255,0) guiSetFont(savelabel,"default-bold-small") loadlabel = guiCreateLabel(0.0532,0.5899,0.4144,0.1067,"Load Position Key:",true,window) guiLabelSetColor(loadlabel,0,255,0) guiSetFont(loadlabel,"default-bold-small") editload = guiCreateEdit(0.0456,0.7528,0.3916,0.1404,"",true,window) editsave = guiCreateEdit(0.0456,0.3596,0.384,0.1404,"",true,window) okbtn = guiCreateButton(0.5323,0.3202,0.403,0.2528,"OK",true,window) guiSetFont(okbtn,"default-bold-small") cancelbtn = guiCreateButton(0.5323,0.6461,0.403,0.2528,"Cancel",true,window) guiSetFont(cancelbtn,"default-bold-small") -- y los oculto para que el gui aparezca cuando llame la funcion guiSetVisible (window, false) guiSetInputEnabled (false) function clickok () --creo la funcion que se va a llamar cuando el cliente clickee el boton "OK". loadkey1 = guiGetText (editload) -- defino el texto del "editload" del gui como loadkey1 savekey1 = guiGetText (editsave) -- defino el texto del "editsave" del gui como savekey1 --[[aca tendria que poner una condicion, si lo que esta en el "editload" y "editsave" esta en la tabla creada anteriormente entonces ejecutar lo que esta abajo, y si no lo estan, dar un mensaje como "invalid keys" o algo asi, pero no se como hacer eso. ]] triggerServerEvent ("changeBinds", getRootElement(), savekey1, loadkey1) -- llamo al evento server, ya que la funcion que quiero que llame la tecla que pongo en el gui esta serverside. outputChatBox ("#AAAAAAKeys successfully changed to:" , 0, 0, 0, true) -- pongo en el chat lo que paso outputChatBox ("#AAAAAASave:#00FF00 "..savekey1 , 0, 0, 0, true) outputChatBox ("#AAAAAALoad:#00FF00 "..loadkey1 , 0, 0, 0, true) guiSetVisible (window, false) --oculto el gui guiSetInputEnabled (false) end end function clickcan () guiSetVisible (window, false) --oculto el gui cuando clickeen en cancel guiSetInputEnabled (false) end function openp () guiSetVisible (window, true) guiSetInputEnabled (true) end bindKey ("F6", "down", openp) addEventHandler ("onClientGUIClick", okbtn, clickok, false) addEventHandler ("onClientGUIClick", cancelbtn, clickcan, false) estuve pensando toda la tarde como hacer que compruebe si lo que puse en el GUI esta en al tabla, probe varias cosas pero nada, si me pueden ayudar se los agradeceria mucho. Link to comment
Castillo Posted February 1, 2012 Share Posted February 1, 2012 --creo la tabla con la lista de teclas permitidas allowedKeys = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "num_0", "num_1", "num_2", "num_3", "num_4", "num_5", "num_6", "num_7", "num_8", "num_9", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} --creo todos los elementos del gui window = guiCreateWindow(0.1941,0.306,0.1934,0.2318,"Position Saver",true) savelabel = guiCreateLabel(0.057,0.191,0.4144,0.0899,"Save Position Key:",true,window) guiLabelSetColor(savelabel,0,255,0) guiSetFont(savelabel,"default-bold-small") loadlabel = guiCreateLabel(0.0532,0.5899,0.4144,0.1067,"Load Position Key:",true,window) guiLabelSetColor(loadlabel,0,255,0) guiSetFont(loadlabel,"default-bold-small") editload = guiCreateEdit(0.0456,0.7528,0.3916,0.1404,"",true,window) editsave = guiCreateEdit(0.0456,0.3596,0.384,0.1404,"",true,window) okbtn = guiCreateButton(0.5323,0.3202,0.403,0.2528,"OK",true,window) guiSetFont(okbtn,"default-bold-small") cancelbtn = guiCreateButton(0.5323,0.6461,0.403,0.2528,"Cancel",true,window) guiSetFont(cancelbtn,"default-bold-small") -- y los oculto para que el gui aparezca cuando llame la funcion guiSetVisible (window, false) guiSetInputEnabled (false) function clickok () --creo la funcion que se va a llamar cuando el cliente clickee el boton "OK". loadkey1 = guiGetText (editload) -- defino el texto del "editload" del gui como loadkey1 savekey1 = guiGetText (editsave) -- defino el texto del "editsave" del gui como savekey1 if (not isKeyOnTable(tostring(savekey1))) then outputChatBox("This key is not valid.",255,0,0) return end --[[aca tendria que poner una condicion, si lo que esta en el "editload" y "editsave" esta en la tabla creada anteriormente entonces ejecutar lo que esta abajo, y si no lo estan, dar un mensaje como "invalid keys" o algo asi, pero no se como hacer eso. ]] triggerServerEvent ("changeBinds", getRootElement(), savekey1, loadkey1) -- llamo al evento server, ya que la funcion que quiero que llame la tecla que pongo en el gui esta serverside. outputChatBox ("#AAAAAAKeys successfully changed to:" , 0, 0, 0, true) -- pongo en el chat lo que paso outputChatBox ("#AAAAAASave:#00FF00 "..savekey1 , 0, 0, 0, true) outputChatBox ("#AAAAAALoad:#00FF00 "..loadkey1 , 0, 0, 0, true) guiSetVisible (window, false) --oculto el gui guiSetInputEnabled (false) end function clickcan () guiSetVisible (window, false) --oculto el gui cuando clickeen en cancel guiSetInputEnabled (false) end function openp () guiSetVisible (window, true) guiSetInputEnabled (true) end bindKey ("F6", "down", openp) addEventHandler ("onClientGUIClick", okbtn, clickok, false) addEventHandler ("onClientGUIClick", cancelbtn, clickcan, false) function isKeyOnTable(theKey) for index, key in ipairs(allowedKeys) do if (theKey == key) then return true end end return false end Probalo. Link to comment
-Gus- Posted February 1, 2012 Author Share Posted February 1, 2012 funciono perfecto gracias!, solo una cosa, para cerrar la funcion "clickok" hay dos "end" seguidos, uno esta demas porque el if ya lo estas cerrando despues del outputChatBox, pero bueno era solo borrar un end y ya esta. Link to comment
Castillo Posted February 1, 2012 Share Posted February 1, 2012 Ni idea, estaba en tu script original, no lo vi . Link to comment
-Gus- Posted February 2, 2012 Author Share Posted February 2, 2012 ahh es verdad ahora me acuerdo que lo puse y me olvide de borrarlo Link to comment
Recommended Posts