Jump to content

Ayuda, como usar 'isPedInVehicle'?


JesusAliso

Recommended Posts

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) xD

Link to comment

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

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 xD (costumbre) :lol:

EDIT: No pude :S no conoces otra forma de comprobar si el jugador esta en un vehículo?

Link to comment
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
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.. :S

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
Debes hacer un trigger del server-side al client-side el cual activara el panel.

Ahmmm vale. gracias por la ayuda :D 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' :S

Link to comment
Debes hacer un trigger del server-side al client-side el cual activara el panel.

Ahmmm vale. gracias por la ayuda :D 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' :S

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

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