PT-BR/bindKey: Difference between revisions
(Created page with "{{BR/Funcao_compartilhada}} __NOTOC__ Esta função vincula uma tecla do jogador para uma função ou comando, que será acionado quando a tecla for pressionada. ==Sintaxe==...") |
mNo edit summary |
||
(6 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 | <syntaxhighlight lang="lua">bool bindKey ( player thePlayer, string key, string keyState, function handlerFunction, [ var arguments, ... ] )</syntaxhighlight> | ||
===Argumentos Necessários=== | ===Argumentos Necessários=== | ||
*''' | *'''thePlayer:''' O jogador que você quer vincular a tecla. | ||
*''' | *'''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. | ||
*''' | *'''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 | ||
*''' | *'''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 | :<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: | ||
:*''' | :*'''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 [[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 [[ | 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 | <syntaxhighlight lang="lua">bool bindKey ( player thePlayer, string key, string keyState, string commandName, [ string arguments, ... ] )</syntaxhighlight> | ||
===Argumentos Necessários=== | ===Argumentos Necessários=== | ||
*''' | *'''thePlayer:''' O jogador que você vai vincular a tecla. | ||
*''' | *'''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. | ||
*''' | *'''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 | ||
*''' | *'''commandName:''' O nome do comando em que a tecla deverá ser vinculada. | ||
===Argumentos Opcionais=== | ===Argumentos Opcionais=== | ||
*''' | *'''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 | <syntaxhighlight lang="lua">bool bindKey ( string key, string keyState, function handlerFunction, [ var arguments, ... ] ) </syntaxhighlight> | ||
===Argumentos Necessários=== | ===Argumentos Necessários=== | ||
*''' | *'''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. | ||
*''' | *'''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.--> | ||
*''' | *'''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 | :<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: | ||
:*''' | :*'''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 [[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 [[ | 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 | <syntaxhighlight lang="lua">bool bindKey ( string key, string keyState, string commandName, [ string arguments, ...] )</syntaxhighlight> | ||
===Argumentos Necessários=== | ===Argumentos Necessários=== | ||
*''' | *'''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. | ||
*''' | *'''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 | ||
*''' | *'''commandName:''' Nome do comando em que a tecla será vinculada. | ||
*''' | *'''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}} | ||
*''' | *'''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''. | 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
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.
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
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.
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
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
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
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
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
- addCommandHandler
- bindKey
- executeCommandHandler
- getCommandHandlers
- getFunctionsBoundToKey
- getKeyBoundToFunction
- isControlEnabled
- removeCommandHandler
- toggleAllControls
- toggleControl
- unbindKey