PT-BR/bindKey

From Multi Theft Auto: Wiki
Revision as of 18:54, 31 August 2020 by Lettify (talk | contribs) (Lettify moved page BindKey/PT-BR to PT-BR/bindKey: Seguindo padrão para indexação de idioma na página original)
Jump to navigation Jump to search

Esta função vincula uma tecla do jogador para uma função ou comando, que será acionado quando a tecla for pressionada.

Sintaxe

Click to collapse [-]
Servidor - Sintaxe 1
bool bindKey ( player oJogador, string Tecla, string Estado, function Funcao,  [ var Argumentos, ... ] )

Argumentos Necessários

  • oJogador: O jogador que você quer vincular a tecla.
  • Tecla: A tecla ou controle que você quer vincular à função. Veja nomes de teclas para uma lista de possíveis teclas e nomes de controles para uma lista de possíveis controles.
  • Estado: Uma string que tem um dos seguintes valores:
    • "up": Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
    • "down": Se a tecla vinculada deve acionar a função quando ela é pressionada
    • "both": Se a tecla vinculada deve acionar a função quando ela é pressionada e liberada
  • Funcao: A função que vai ser acionada quando a tecla do jogador for pressionada/liberada. Esta função deve ter o seguinte formato(parâmetros):
function functionName ( player Pressionador, string Tecla, string Estado, [ var Argumentos, ... ] )
Os valores passados para esta função são:
  • Pressionador: O jogador que pressionou a tecla
  • Tecla: A tecla que foi pressionada
  • Estado: O estado da tecla que foi pressionada (down, up ou both)
  • Argumentos: Os argumentos opcionais que você especificou quando usou bindKey.
Click to collapse [-]
Servidor - Sintaxe 2

Esta sintaxe alternativa permite você vincular uma tecla à um comando. Isto também vai permitir que os usuários modifiquem os controles em seus menus de configurações. Use em conjunção com addCommandHandler para adicionar o vínculo da tecla (que é um comando) à uma função.

bool bindKey ( player oJogador, string Tecla, string Estado, string NomeComando, [ string Argumentos, ... ] )

Argumentos Necessários

  • oJogador: O jogador que você vai vincular a tecla.
  • Tecla: A tecla ou controle que você quer vincular ao comando. Veja nomes de teclas para uma lista de possíveis teclas.
  • Estado: Uma string que tem um dos seguintes valores:
    • "up": Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
    • "down": Se a tecla vinculada deve acionar a função quando ela é pressionada
    • "both": Se a tecla vinculada deve acionar a função quando ela é pressionada e liberada
  • NomeComando: O nome do comando em que a tecla deverá ser vinculada.

Argumentos Opcionais

  • Argumentos: Argumentos (string) que serão usados no comando como se estivesse digitando este comando com estes argumentos. Ex.: /comando argumento1 argumento2 etc
Click to collapse [-]
Cliente - Sintaxe 1
bool bindKey ( string Tecla, string Estado, function Funcao,  [ var Argumentos, ... ] ) 

Argumentos Necessários

  • Tecla: A tecla ou controle que será vinculado à função. Veja nomes de teclas para uma lista de possíveis teclas e nomes de controles para uma lista de possíveis controles.
  • Estado: Uma string que tem um dos seguintes valores:
    • "up": Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
    • "down": Se a tecla vinculada deve acionar a função quando ela é pressionada
    • "both": Se a tecla vinculada deve acionar a função quando ela é pressionada e liberada
  • Funcao: A função que será acionada quando a tecla for pressionada. Esta função deve ter o seguinte formato(parâmetros):
function functionName ( string Tecla, string Estado, [ var Argumetnos, ... ] )
Os valores passados para esta função são:
  • Tecla: A tecla que foi pressionada
  • Estado: O estado da tecla que foi pressionada (down, up ou both)
  • Argumentos: Os argumentos opcionais que você especificou quando usou bindKey.
Click to collapse [-]
Cliente - Sintaxe 2

Esta sintaxe alternativa permite você vincular uma tecla à um comando. Isto também vai permitir que os usuários modifiquem os controles em seus menus de configurações. Use em conjunção com addCommandHandler para adicionar o vínculo da tecla (que é um comando) à uma função.

bool bindKey ( string Tecla, string Estado, string NomeComando, [ string Argumentos, ...] )

Argumentos Necessários

  • Tecla: A tecla ou controle que será vinculado ao comando. Veja nomes de teclas para uma lista de possíveis teclas.
  • Estado: Um string que tem um dos seguintes valores:
    • "up": Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
    • "down": Se a tecla vinculada deve acionar a função quando ela é pressionada
    • "both": Se a tecla vinculada deve acionar a função quando ela é pressionada e liberada
  • NomeComando: Nome do comando em que a tecla será vinculada.
  • Argumentos: Argumentos (string) que serão usados no comando como se estivesse digitando este comando com estes argumentos. Ex.: /comando argumento1 argumento2 etc

Argumentos Opcionais

NOTA: Ao usar argumentos opcionais, pode ser necessário fornecer todos os argumentos anteriores ao que você deseja usar. Para obter mais informações sobre argumentos opcionais, consulte Argumentos Opcionais.

  • Argumentos: Qualquer argumento que você queira passar para a função quando a tecla for pressionada pelo usuário. Qualquer número de argumentos pode ser especificado, cada um sendo passado para a função designada. Você não pode passar funções.

Retorna

Retorna true se a tecla foi vinculada, senão retorna false.

Exemplos

Exemplo 1

Click to collapse [-]
Servidor

Este exemplo vai vincular a tecla 'F1' do jogador e o controle 'fire' à uma função que mostra no chat alguns status.

function funcInput ( player, key, keyState )
  outputChatBox ( getPlayerName ( player) .. " " .. (keyState == "down" and "pressionado" or "liberado") .. " a tecla " .. key .. " !" )
end

function bindTheKeys ( player, commandName )
  bindKey ( player, "F1", "down", funcInput )
  bindKey ( player, "F1", "up", funcInput )
  bindKey ( player, "fire", "both", funcInput )
end
addCommandHandler ( "bindme", bindTheKeys )

Exemplo 2

Click to collapse [-]
Cliente

Este exemplo vai vincular a tecla 'F1' do jogador e o controle 'fire' à uma função que mostra no chat alguns status, no lado cliente.

function funcInput ( key, keyState )
	outputChatBox( "Você " .. (keyState == "down" and "pressionou" or "liberou") .. " a tecla " .. key .. " !" )
end

function bindTheKeys ( commandName )
	bindKey( "F1", "down", funcInput )
	bindKey( "F1", "up", funcInput )
	bindKey( "fire", "both", funcInput )
end
addCommandHandler ( "bindme", bindTheKeys )

Exemplo 3

Click to collapse [-]
Servidor

Este exemplo diz quão legal é o MTA se o jogador se mover para frente.

function fanFunction()
  bindKey (source,"forwards","down",
    function(player,key,state)
      outputChatBox (getPlayerName (player) .. "#FFFF00 acha o MTA muito legal.",getRootElement(),255,255,0,true)
    end
  )
end
addEventHandler ("onPlayerLogin",getRootElement(),fanFunction)

Exemplo 4

Click to collapse [-]
Servidor

Este exemplo cria um input personalizado no chatbox e vincula a tecla para os jogadores que estiverem no grupo da ACL Admin quando logam e também quando o resource inicia, e somente quem estiver neste grupo poderá ver a mensagem.

addCommandHandler('AdminChat', 
    function (player, cmd, ...)
        local conta = getPlayerAccount(player)
        -- Se algum jogador não usar a tecla e preferir pelo comando, estará apto à esta verificação a seguir
        if isGuestAccount(conta) then return end -- Se for conta 'guest' então o código a seguir deste é cancelado
        if not (isObjectInACLGroup('user.'..getAccountName(conta), aclGetGroup('Admin'))) then return end -- Se não estiver no grupo da ACL Admin, então o código a partir deste é cancelado

        for _, v in ipairs(getElementsByType('player')) do
            -- Neste loop por todos os jogadores é obtido a conta de cada um e é verificado se a conta não é 'guest'e se está no grupo da ACL Admin
            -- Então a mensagem que o 'player' enviou, aparecerá para todos os que estiverem no grupo da ACL e para ele próprio (já que ele está neste grupo rs)
            local conta = getPlayerAccount(v)
            if not isGuestAccount(conta) then
                if (isObjectInACLGroup('user.'..getAccountName(conta), aclGetGroup('Admin'))) then
                    outputChatBox('#FFFFFF[Chat Admin] '..getPlayerName(player)..'#FFFFFF: '..tostring(table.concat(arg, " ")), v, 0, 0, 0, true)
                end
            end
        end
    end
)

addEventHandler('onResourceStart', resourceRoot, -- Quando o resource iniciar, a tecla de todos os que estiverem no grupo da ACL Admin serão vinculadas ao chatbox
    function ()
        for i, v in ipairs(getElementsByType('player')) do
            local conta = getPlayerAccount(v)
            if not isGuestAccount(conta) then
                if (isObjectInACLGroup('user.'..getAccountName(conta), aclGetGroup('Admin'))) then
                    bindKey(v, 'U', 'down', 'chatbox', 'AdminChat')
                end
            end
        end
    end
)

addEventHandler('onPlayerLogin', root, -- Se um jogador logar e a conta que ele logou estiver no grupo da ACL Admin, a tecla dele será vinculada ao chatbox
    function (_, acc)
        if (isObjectInACLGroup('user.'..getAccountName(acc), aclGetGroup('Admin'))) then
            bindKey(source, 'U', 'down', 'chatbox', 'AdminChat')
        end
    end
)

Agradecimento ao Developer(nick na imagem) por ter testado o código*


Veja também