JesusAliso Posted August 12, 2016 Share Posted August 12, 2016 Buenas, tengo un 'panel' que se abre a través de la 'tecla' F6 y lo que quiero hacer es: Que (no) salga el 'panel' si (no) esta en un 'vehículo'.. y si esta en un 'vehículo' pues que salga. también que le salga un mensaje si (no) esta en un vehículo. Estoy usando esta función 'isPedInVehicle'.. intente con esto: addEvent( "check", true ) addEventHandler( "check", getRootElement (), function () local jugador = getPedOccupiedVehicle ( source ) local accName = getAccountName ( getPlayerAccount ( source ) ) if isPedInVehicle (jugador) then if jugador then if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox ("* Panel abierto correctamente", thePlayer, 0, 255, 0) else outputChatBox ( "* No tienes acceso", thePlayer, 255, 0, 0) end end end end ) Me sale este warning cada vez que abre el panel: WARNING: panel\server.lua:666: Bad argument @ 'isPedInVehicle' [Expected ped at argument 1, got boolean] No se si estoy usando mal la función también el panel se abre sin ningún problema, solo sale el warning.. ah y como podría hacer que salga el mensaje solamente si no esta en un vehículo? (No se como) Link to comment
aka Blue Posted August 12, 2016 Share Posted August 12, 2016 getPedOccupiedVehicle devuelve el vehículo que está usando el jugador, no el jugador en sí. Debes utilizar ésto: addEvent( "check", true ) addEventHandler( "check", getRootElement (), function( ) local jugador = getVehicleController( source ) local accName = getAccountName ( getPlayerAccount ( jugador ) ) if isPedInVehicle( jugador ) then if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox ("* Panel abierto correctamente", jugador, 0, 255, 0) else outputChatBox ( "* No tienes acceso", jugador, 255, 0, 0) end end end ) PD: No entiendo esos thePlayer por ahí tirados... y tampoco correctamente tu código, pero intenta con eso... Link to comment
JesusAliso Posted August 12, 2016 Author Share Posted August 12, 2016 ahmm lo acabo de probar y sale el mismo 'WARNING'.. también sale el panel como dije anteriormente. Intentare usando esa función en client-side. PD: los 'thePlayer' por andar copiando la linea de otro codigo (costumbre) EDIT: No pude no conoces otra forma de comprobar si el jugador esta en un vehículo? Link to comment
EstrategiaGTA Posted August 12, 2016 Share Posted August 12, 2016 ¿source es un jugador o un vehículo...? Link to comment
JesusAliso Posted August 12, 2016 Author Share Posted August 12, 2016 ¿source es un jugador o un vehículo...? Un jugador? Link to comment
Arsilex Posted August 12, 2016 Share Posted August 12, 2016 addEvent( "check", true ) addEventHandler( "check", root, function () if isElement(source) and getElementType(source) == "player" then if getPedOccupiedVehicle ( source ) then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox ("* Panel abierto correctamente", thePlayer, 0, 255, 0) else outputChatBox ( "* No tienes acceso", thePlayer, 255, 0, 0) end else outputChatBox ( "* Debes estar en un vehiculo", thePlayer, 255, 0, 0) end else outputChatBox ( "* Argumento source no esta definido como jugador", client, 255, 0, 0) end end ) Link to comment
JesusAliso Posted August 12, 2016 Author Share Posted August 12, 2016 addEvent( "check", true ) addEventHandler( "check", root, function () if isElement(source) and getElementType(source) == "player" then if getPedOccupiedVehicle ( source ) then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox ("* Panel abierto correctamente", thePlayer, 0, 255, 0) else outputChatBox ( "* No tienes acceso", thePlayer, 255, 0, 0) end else outputChatBox ( "* Debes estar en un vehiculo", thePlayer, 255, 0, 0) end else outputChatBox ( "* Argumento source no esta definido como jugador", client, 255, 0, 0) end end ) oh gracias, lo acabo de testear. El mensaje (Debes de estar en un vehículo) funciona bien, pero el panel se sigue abriendo. No tira ningún error o warning.. Este es el clien-side: function guii() if (guiGetVisible(window) == false) then guiSetVisible(window, true) showCursor(true) triggerServerEvent ("check", getLocalPlayer()) else guiSetVisible(window, false) showCursor(false) end end bindKey (keyy, "down", guii) Link to comment
Arsilex Posted August 12, 2016 Share Posted August 12, 2016 Debes hacer un trigger del server-side al client-side el cual activara el panel. Link to comment
JesusAliso Posted August 12, 2016 Author Share Posted August 12, 2016 Debes hacer un trigger del server-side al client-side el cual activara el panel. Ahmmm vale. gracias por la ayuda por cierto si no es mucho pedir, me explicarías la linea donde esta el 'isElement' y el 'getElementType', esa linea. y también por que no usaste 'isPedInVehicle' Link to comment
Arsilex Posted August 12, 2016 Share Posted August 12, 2016 Debes hacer un trigger del server-side al client-side el cual activara el panel. Ahmmm vale. gracias por la ayuda por cierto si no es mucho pedir, me explicarías la linea donde esta el 'isElement' y el 'getElementType', esa linea. y también por que no usaste 'isPedInVehicle' He usado eso para evitar que el argumento de source sea nil, false, o otro elemento que no sea un jugador. Puedes usar perfectamente isPedInVehicle tenia a mano esa función así que la use. El código final seria: --Client-side function guii() if (guiGetVisible(window) == false) then triggerServerEvent ("check", localPlayer) else guiSetVisible(window, false) showCursor(false) end end bindKey (keyy, "down", guii) addEvent( "open:check", true ) addEventHandler( "open:check", root, function () guiSetVisible(window, true) showCursor(true) end) --Server-side addEvent( "check", true ) addEventHandler( "check", root, function () if isElement(source) and getElementType(source) == "player" then if getPedOccupiedVehicle ( source ) then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox ("* Panel abierto correctamente", thePlayer, 0, 255, 0) triggerClientEvent(source, "open:check", source) else outputChatBox ( "* No tienes acceso", thePlayer, 255, 0, 0) end else outputChatBox ( "* Debes estar en un vehiculo", thePlayer, 255, 0, 0) end else outputChatBox ( "* Argumento source no esta definido como jugador", client, 255, 0, 0) end end ) Link to comment
JesusAliso Posted August 12, 2016 Author Share Posted August 12, 2016 waow ahora si funciona perfectamente Muchas gracias @Arsilex y los otros que intentaron también gracias Link to comment
Recommended Posts