Ryuto Posted May 8, 2021 Share Posted May 8, 2021 ¿Es posible una forma server-side de que al presionar dos o tres teclas se active una función? Sé que existen los binds para activarlas, pero lo que busco es activar comandos mediante combinación de teclas por ejemplo (CLICK DERECHO + L) el jugador haga una animación. Conozco la forma client-side con "getKeyState" pero busco una forma de hacerlo con server-side. Gracias! Link to comment
#Dv^ Posted May 8, 2021 Share Posted May 8, 2021 Quizás puedas intentar usar onClientKey o getKeyState desde el lado client-side, que cuando haga la combinación de teclas uses triggerServerEvent para sincronizar al jugador que usó la combinación. Link to comment
Ryuto Posted May 8, 2021 Author Share Posted May 8, 2021 3 hours ago, #Dv^ said: Quizás puedas intentar usar onClientKey o getKeyState desde el lado client-side, que cuando haga la combinación de teclas uses triggerServerEvent para sincronizar al jugador que usó la combinación. ¿Crees que puedas darme un ejemplo? todavia no lo entiendo del todo. Link to comment
alex17" Posted May 9, 2021 Share Posted May 9, 2021 3 hours ago, Ryuto said: ¿Crees que puedas darme un ejemplo? todavia no lo entiendo del todo. function bind(_, state) if state == "down" then bindKey("v", "down", myFunction) else unbindKey("v", "down", myFunction) end end bindKey("lctrl", "up", bind) bindKey("lctrl", "down", bind) function myFunction() unbindKey("v", "down", myFunction) end Link to comment
Ryuto Posted May 10, 2021 Author Share Posted May 10, 2021 On 08/05/2021 at 16:59, #Dv^ said: Quizás puedas intentar usar onClientKey o getKeyState desde el lado client-side, que cuando haga la combinación de teclas uses triggerServerEvent para sincronizar al jugador que usó la combinación. Ok, gracias! Por ejemplo, yo tengo un script server side que se activa por comando es el siguiente: function CrearCaja(jugador1) local nivel = (getElementData(jugador1, "Level") or 0) if (nivel<=10) then triggerClientEvent(jugador1, "TextoNivelRequerido", jugador1) return end if (nivel>=10) then local x, y, z = getElementPosition(jugador1) local r = getPedRotation(jugador1) caja1 = createObject(1230, x - math.sin( math.rad( -r )) * ( 1.25 ), y - math.cos( math.rad( -r )) * (1.25), z + 1, 0, 0, 0) setTimer(destroyElement, 5000, 1, caja1) end end addCommandHandler ( "caja1", CrearCaja) Esto crea un objeto en frente del jugador, quisiera que en vez de comando se activase con combinaciones de teclas, por ejemplo: CTRL + A + B, traté usando getKeyState pero me da error por el argumento "jugador1" en el server-side.. y no quiero cambiar esa variable por "source", quisiera mantenerla así como "jugador1", esto es lo que hice en el client side: function Combinacion() if getKeyState ("lctrl") == true and getKeyState ("A") == true and getKeyState ("B") == true then triggerServerEvent ("CreacionCaja", localPlayer) end end Esto intente y al pulsar las teclas me daba error en el argumento 1 del triggerClientEvent y el getElementData Link to comment
#Dv^ Posted May 10, 2021 Share Posted May 10, 2021 Espero te sirva este, no lo revisé bien. -- Client-side addEventHandler("onClientKey", root, function(button, press) if button == "lctrl" then setElementData(localPlayer, "lctrl", press and true or false, false) end if button == "a" and press then local pressed = getElementData(localPlayer, "lctrl") or false if pressed then print("lctrl + a combination was pressed!") triggerServerEvent("createbox", localPlayer) end end end) -- Server-side function creabox(jugador1) local nivel = (getElementData(jugador1, "Level") or 0) if (nivel<=10) then triggerClientEvent(jugador1, "TextoNivelRequerido", jugador1) return end if (nivel>=10) then local x, y, z = getElementPosition(jugador1) local r = getPedRotation(jugador1) caja1 = createObject(1230, x - math.sin( math.rad( -r )) * ( 1.25 ), y - math.cos( math.rad( -r )) * (1.25), z + 1, 0, 0, 0) setTimer(destroyElement, 5000, 1, caja1) end end addCommandHandler("caja1", createbox) addEvent("createbox", true) addEventHandler("createbox", root, function() createbox(source) end) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now