PT-BR/bindKey: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(5 intermediate revisions by one other user not shown)
Line 5: Line 5:
==Sintaxe==  
==Sintaxe==  
<section name="Servidor - Sintaxe 1" class="server" show="true">
<section name="Servidor - Sintaxe 1" class="server" show="true">
<syntaxhighlight lang="lua">bool bindKey ( player oJogador, string Tecla, string Estado, function Funcao,  [ var Argumentos, ... ] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool bindKey ( player thePlayer, string key, string keyState, function handlerFunction,  [ var arguments, ... ] )</syntaxhighlight>


===Argumentos Necessários===
===Argumentos Necessários===
*'''oJogador:''' O jogador que você quer vincular a tecla.
*'''thePlayer:''' O jogador que você quer vincular a tecla.
*'''Tecla:''' A tecla ou controle que você quer vincular à função. Veja [[Key_names/PT-BR|nomes de teclas]] para uma lista de possíveis teclas e [[Control_names/PT-BR|nomes de controles]] para uma lista de possíveis controles.
*'''key:''' A tecla ou controle que você quer vincular à função. Veja [[PT-BR/Key_names|nomes de teclas]] para uma lista de possíveis teclas e [[PT-BR/Control_names|nomes de controles]] para uma lista de possíveis controles.
*'''Estado:''' Uma string que tem um dos seguintes valores:
*'''keyState:''' Uma string que tem um dos seguintes valores:
**'''"up":''' Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
**'''"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
**'''"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
**'''"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):
*'''handlerFunction:''' 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):
:<syntaxhighlight lang="lua">function functionName ( player Pressionador, string Tecla, string Estado, [ var Argumentos, ... ] )</syntaxhighlight>
:<syntaxhighlight lang="lua">function functionName ( player keyPresser, string key, string keyState, [ var arguments, ... ] )</syntaxhighlight>
:Os valores passados para esta função são:
:Os valores passados para esta função são:
:*'''Pressionador:''' O jogador que pressionou a tecla
:*'''keyPresser:''' O jogador que pressionou a tecla
:*'''Tecla:''' A tecla que foi pressionada
:*'''key:''' A tecla que foi pressionada
:*'''Estado:''' O estado da tecla que foi pressionada (''down'', ''up'' ou ''both'')
:*'''keyState:''' O estado da tecla que foi pressionada (''down'', ''up'' ou ''both'')
:*'''Argumentos''' Os argumentos opcionais que você especificou quando usou [[bindKey/PT-BR|bindKey]].
:*'''arguments:''' Os argumentos opcionais que você especificou quando usou [[PT-BR/bindKey|bindKey]].
</section>
</section>


{{New feature|3|1.0|
{{New feature|3|1.0|
<section name="Servidor - Sintaxe 2" class="server" show="true">
<section name="Servidor - Sintaxe 2" class="server" show="true">
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/PT-BR|addCommandHandler]] para adicionar o vínculo da tecla (que é um comando) à uma função.
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 [[PT-BR/addCommandHandler|addCommandHandler]] para adicionar o vínculo da tecla (que é um comando) à uma função.


<syntaxhighlight lang="lua">bool bindKey ( player oJogador, string Tecla, string Estado, string NomeComando, [ string Argumentos, ... ] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool bindKey ( player thePlayer, string key, string keyState, string commandName, [ string arguments, ... ] )</syntaxhighlight>


===Argumentos Necessários===
===Argumentos Necessários===
*'''oJogador:''' O jogador que você vai vincular a tecla.
*'''thePlayer:''' O jogador que você vai vincular a tecla.
*'''Tecla:''' A tecla ou controle que você quer vincular ao comando. Veja [[Key_names/PT-BR|nomes de teclas]] para uma lista de possíveis teclas.
*'''key:''' A tecla ou controle que você quer vincular ao comando. Veja [[PT-BR/Key_names|nomes de teclas]] para uma lista de possíveis teclas.
*'''Estado:''' Uma [[string]] que tem um dos seguintes valores:
*'''keyState:''' Uma [[PT-BR/String|string]] que tem um dos seguintes valores:
**'''"up":''' Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
**'''"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
**'''"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
**'''"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.   
*'''commandName:''' O nome do comando em que a tecla deverá ser vinculada.   
===Argumentos Opcionais===
===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''
*'''arguments:'''  Argumentos ([[PT-BR/String|string]]) que serão usados no comando como se estivesse digitando este comando com estes argumentos. Ex.: ''/comando argumento1 argumento2 etc''
</section>
</section>
}}
}}


<section name="Cliente - Sintaxe 1" class="client" show="true">
<section name="Cliente - Sintaxe 1" class="client" show="true">
<syntaxhighlight lang="lua">bool bindKey ( string Tecla, string Estado, function Funcao,  [ var Argumentos, ... ] ) </syntaxhighlight>
<syntaxhighlight lang="lua">bool bindKey ( string key, string keyState, function handlerFunction,  [ var arguments, ... ] ) </syntaxhighlight>


===Argumentos Necessários===
===Argumentos Necessários===
*'''Tecla:''' A tecla ou controle que será vinculado à função. Veja [[Key_names/PT-BR|nomes de teclas]] para uma lista de possíveis teclas e [[Control_names/PT-BR|nomes de controles]] para uma lista de possíveis controles.
*'''key:''' A tecla ou controle que será vinculado à função. Veja [[PT-BR/Key_names|nomes de teclas]] para uma lista de possíveis teclas e [[PT-BR/Control_names|nomes de controles]] para uma lista de possíveis controles.
*'''Estado:''' Uma [[string]] que tem um dos seguintes valores:
*'''keyState:''' Uma [[PT-BR/String|string]] que tem um dos seguintes valores:
**'''"up":''' Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
**'''"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
**'''"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
**'''"both":''' Se a tecla vinculada deve acionar a função quando ela é pressionada e liberada
<!--*'''bindName:''' The name for this key bind when it appears in the client's settings dialog.-->
<!--*'''bindName:''' The name for this key bind when it appears in the client's settings dialog.-->
*'''Funcao:''' A função que será acionada quando a tecla for pressionada. Esta função deve ter o seguinte formato(parâmetros):
*'''handlerFunction:''' A função que será acionada quando a tecla for pressionada. Esta função deve ter o seguinte formato(parâmetros):
:<syntaxhighlight lang="lua">function functionName ( string Tecla, string Estado, [ var Argumetnos, ... ] )</syntaxhighlight>
:<syntaxhighlight lang="lua">function functionName ( string key, string keyState, [ var arguments, ... ] )</syntaxhighlight>
:Os valores passados para esta função são:
:Os valores passados para esta função são:
:*'''Tecla:''' A tecla que foi pressionada
:*'''key:''' A tecla que foi pressionada
:*'''Estado:''' O estado da tecla que foi pressionada (''down'', ''up'' ou ''both'')
:*'''keyState:''' O estado da tecla que foi pressionada (''down'', ''up'' ou ''both'')
:*'''Argumentos''' Os argumentos opcionais que você especificou quando usou [[bindKey/PT-BR|bindKey]].
:*'''arguments:''' Os argumentos opcionais que você especificou quando usou [[PT-BR/bindKey|bindKey]].
</section>
</section>


{{New feature|3|1.0|
{{New feature|3|1.0|
<section name="Cliente - Sintaxe 2" class="client" show="true">
<section name="Cliente - Sintaxe 2" class="client" show="true">
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/PT-BR|addCommandHandler]] para adicionar o vínculo da tecla (que é um comando) à uma função.
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 [[PT-BR/addCommandHandler|addCommandHandler]] para adicionar o vínculo da tecla (que é um comando) à uma função.


<syntaxhighlight lang="lua">bool bindKey ( string Tecla, string Estado, string NomeComando, [ string Argumentos, ...] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool bindKey ( string key, string keyState, string commandName, [ string arguments, ...] )</syntaxhighlight>


===Argumentos Necessários===
===Argumentos Necessários===
*'''Tecla:''' A tecla ou controle que será vinculado ao comando. Veja [[Key_names/PT-BR|nomes de teclas]] para uma lista de possíveis teclas.
*'''key:''' A tecla ou controle que será vinculado ao comando. Veja [[PT-BR/Key_names|nomes de teclas]] para uma lista de possíveis teclas.
*'''Estado:''' Um [[string]] que tem um dos seguintes valores:
*'''keyState:''' Um [[PT-BR/String|string]] que tem um dos seguintes valores:
**'''"up":''' Se a tecla vinculada deve acionar a função quando ela é liberada(desapertada)
**'''"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
**'''"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
**'''"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.   
*'''commandName:''' 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''
*'''arguments:'''  Argumentos ([[PT-BR/String|string]]) que serão usados no comando como se estivesse digitando este comando com estes argumentos. Ex.: ''/comando argumento1 argumento2 etc''
</section>
</section>
}}
}}
Line 79: Line 79:
===Argumentos Opcionais===  
===Argumentos Opcionais===  
{{BR/ArgOpcional}}  
{{BR/ArgOpcional}}  
*'''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.
*'''arguments:''' 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===
===Retorno===
Retorna ''true'' se a tecla foi vinculada, senão retorna ''false''.
Retorna ''true'' se a tecla foi vinculada, senão retorna ''false''.
<br>
<br>
Line 139: Line 139:
     function (player, cmd, ...)
     function (player, cmd, ...)
         local conta = getPlayerAccount(player)
         local conta = getPlayerAccount(player)
         if isGuestAccount(conta) then return end
        -- Se algum jogador não usar a tecla e preferir pelo comando, estará apto à esta verificação a seguir
         if not (isObjectInACLGroup('user.'..getAccountName(conta), aclGetGroup('Admin'))) then return end
         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
         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)
             local conta = getPlayerAccount(v)
             if not isGuestAccount(conta) then
             if not isGuestAccount(conta) then
Line 153: Line 156:
)
)


addEventHandler('onResourceStart', resourceRoot,  
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 ()
     function ()
         for i, v in ipairs(getElementsByType('player')) do
         for i, v in ipairs(getElementsByType('player')) do
Line 166: Line 169:
)
)


addEventHandler('onPlayerLogin', root,  
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)
     function (_, acc)
         if (isObjectInACLGroup('user.'..getAccountName(acc), aclGetGroup('Admin'))) then
         if (isObjectInACLGroup('user.'..getAccountName(acc), aclGetGroup('Admin'))) then

Latest revision as of 16:43, 21 February 2021

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 thePlayer, string key, string keyState, function handlerFunction,  [ var arguments, ... ] )

Argumentos Necessários

  • thePlayer: O jogador que você quer vincular a tecla.
  • key: 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.
  • keyState: 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
  • handlerFunction: 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 keyPresser, string key, string keyState, [ var arguments, ... ] )
Os valores passados para esta função são:
  • keyPresser: O jogador que pressionou a tecla
  • key: A tecla que foi pressionada
  • keyState: O estado da tecla que foi pressionada (down, up ou both)
  • arguments: 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 thePlayer, string key, string keyState, string commandName, [ string arguments, ... ] )

Argumentos Necessários

  • thePlayer: O jogador que você vai vincular a tecla.
  • key: A tecla ou controle que você quer vincular ao comando. Veja nomes de teclas para uma lista de possíveis teclas.
  • keyState: 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
  • commandName: O nome do comando em que a tecla deverá ser vinculada.

Argumentos Opcionais

  • arguments: 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 key, string keyState, function handlerFunction,  [ var arguments, ... ] ) 

Argumentos Necessários

  • key: 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.
  • keyState: 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
  • handlerFunction: A função que será acionada quando a tecla for pressionada. Esta função deve ter o seguinte formato(parâmetros):
function functionName ( string key, string keyState, [ var arguments, ... ] )
Os valores passados para esta função são:
  • key: A tecla que foi pressionada
  • keyState: O estado da tecla que foi pressionada (down, up ou both)
  • arguments: 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 key, string keyState, string commandName, [ string arguments, ...] )

Argumentos Necessários

  • key: A tecla ou controle que será vinculado ao comando. Veja nomes de teclas para uma lista de possíveis teclas.
  • keyState: 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
  • commandName: Nome do comando em que a tecla será vinculada.
  • arguments: 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.

  • arguments: 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.

Retorno

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