Jump to content

Como compruebo que algo esta adentro de una tabla?


-Gus-

Recommended Posts

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
--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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...