pLayz Posted December 10, 2019 Posted December 10, 2019 Bom, queria fazer um comando que desse pra adicionar na acl e setar o elemento do player, exemplo se o player der o comando /pf Playz (pf = Policia federal, Playz meu nick) adicionasse o player na acl PF, e setasse o elemento policial como true, como eu devo fazer isso? (sou iniciante em Lua)
SrPattif Posted December 10, 2019 Posted December 10, 2019 Olá. Você pode utilizar a função abaixo: aclGroupAddObject (, "user."..conta ) Porém, você deve primeiro saber a conta do alvo. Você pode utilizar esta variável: local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) E aí, é só adaptar sua função para aceitar grupos e o usuário. » Fontes: • aclGroupAddObject • getAccountName Boa sorte! Espero ter te ajudado! ;D BRASIL
pLayz Posted December 10, 2019 Author Posted December 10, 2019 18 minutes ago, _Pattif_ said: Olá. Você pode utilizar a função abaixo: aclGroupAddObject (, "user."..conta ) Porém, você deve primeiro saber a conta do alvo. Você pode utilizar esta variável: local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) E aí, é só adaptar sua função para aceitar grupos e o usuário. » Fontes: • aclGroupAddObject • getAccountName Boa sorte! e para setar o elemento? eu fiz um código aqui e acho que tá certo, só falta setar o elemento agora. function tagPF (playerSource, commandName, accountName) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "PF_CMD" ) ) then if (accountName) then if not isObjectInACLGroup ("user."..accName, aclGetGroup ( "PF" ) ) then aclGroupAddObject (aclGetGroup("PF"), "user."..accountName) outputChatBox ("Você adicionou o jogador '"..accountName.."' ao grupo da PF", playerSource) outputChatBox ("O jogador '"..playerSource.."' adicionou você ao grupo da PF", accountName) else aclGroupRemoveObject (aclGetGroup("PF"), "user."..accountName) outputChatBox ("Você removeu o jogador '"..accountName.."' do grupo da PF!", playerSource) outputChatBox ("O jogador '"..playerSource.."' removeu você do grupo da PF!") end else outputChatBox ("Você não digitou nenhum nome.", playerSource) outputChatBox ("Uso correto: /pf nome", playerSource) end else outputChatBox ("Sem permissão..") end end addCommandHandler ("pf", tagPF)
SrPattif Posted December 10, 2019 Posted December 10, 2019 É isso mesmo, pórém seu código possui pequenos erros. São eles: Linha 11: outputChatBox ("O jogador '"..playerSource.."' removeu você do grupo da PF!") Você enviou uma mensagem ao jogador no qual foi removido do grupo, mas o destinatário da mensagem não está especificado no script. Você pode arrumar colocando o alvo logo após sua mensagem, como: outputChatBox ("O jogador '"..playerSource.."' removeu você do grupo da PF!", O_JOGADOR_AQUI) Substitua "O_JOGADOR_AQUI" pelo destinatário de sua mensagem. Linha 2: if isObjectInACLGroup ("user."..accName, aclGetGroup ( "PF_CMD" ) ) then Ele executa o IF, porém não sabe quem/o que é a variável "accName". Você deve criar uma variável acima deste IF: local accName = getAccountName ( getPlayerAccount ( playerSource ) ) Espero ter te ajudado! ;D BRASIL
Jonas^ Posted December 12, 2019 Posted December 12, 2019 Correção: addCommandHandler ("pf", function (thePlayer, cmd, nick) if isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (thePlayer)), aclGetGroup ("PF_CMD")) then -- Se o jogador estiver na acl "PF_CMD", então: if not nick then return outputChatBox ("ERRO! Informe um nick por gentileza!", thePlayer, 255, 0, 0) end -- Se nenhum nick for informado retorna e cancela a execução! local jogador = getPlayerFromPartialName (nick) if not jogador then -- Se nenhum jogador com o nick informado for encontrado, então: return outputChatBox ("ERRO! Nenhum jogador com esse nick foi encontrado!", thePlayer, 255, 0, 0) end if (isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (thePlayer)), aclGetGroup("PF"))) then -- Se o jogador estiver na acl "PF", então: aclGroupRemoveObject (aclGetGroup("PF"), "user."..getAccountName (getPlayerAccount (thePlayer))) -- Remove o jogador da acl "PF". outputChatBox ("Você removeu o jogador '"..string.gsub(getPlayerName (jogador), "#%x%x%x%x%x%x", "").."' do grupo da PF!", thePlayer, 0, 255, 0) outputChatBox ("O jogador '"..string.gsub(getPlayerName (thePlayer), "#%x%x%x%x%x%x", "").."' removeu você do grupo da PF", jogador, 255, 0, 0) else -- Senão: aclGroupAddObject (aclGetGroup("PF"), "user."..getAccountName (getPlayerAccount (thePlayer))) -- Adiciona o jogador da acl "PF". outputChatBox ("Você adicionou o jogador '"..string.gsub(getPlayerName (jogador), "#%x%x%x%x%x%x", "").."' ao grupo da PF!", thePlayer, 0, 255, 0) outputChatBox ("O jogador '"..string.gsub(getPlayerName (thePlayer), "#%x%x%x%x%x%x", "").."' adicionou você ao grupo da PF", jogador, 0, 255, 0) end else outputChatBox ("Você não tem permissão!", thePlayer, 255, 0, 0) end end) function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end OBS: Não testei, teste com /debugscript 3 ativado, se tiver erros poste aqui.
Moderators Lord Henry Posted December 13, 2019 Moderators Posted December 13, 2019 (edited) Apenas uma otimização para evitar condição negativa: (e também corrigi umas coisinhas erradas) addCommandHandler ("pf", function (thePlayer, cmd, nick) if (isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (thePlayer)), aclGetGroup ("PF_CMD"))) then -- Se o jogador estiver na ACL "PF_CMD", então: if (not nick) then -- Aqui eu separei em 3 linhas apenas pra você não se perder na indentação. return outputChatBox ("ERRO! Informe um nick por gentileza!", thePlayer, 255, 0, 0) -- Se nenhum nick for informado, manda esse feedback e cancela a função. end local jogador = getPlayerFromPartialName (nick) if (jogador) then -- Se algum jogador com o nick informado for encontrado, então: if (isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (jogador)), aclGetGroup("PF"))) then -- Se o jogador estiver na ACL "PF", então: aclGroupRemoveObject (aclGetGroup("PF"), "user."..getAccountName (getPlayerAccount (jogador))) -- Remove o jogador da ACL "PF". outputChatBox ("Você removeu o jogador '"..string.gsub(getPlayerName (jogador), "#%x%x%x%x%x%x", "").."' do grupo da PF!", thePlayer, 0, 255, 0) outputChatBox ("O jogador '"..string.gsub(getPlayerName (thePlayer), "#%x%x%x%x%x%x", "").."' removeu você do grupo da PF.", jogador, 255, 0, 0) else -- Senão: (se o jogador não estiver na ACL da "PF", então:) aclGroupAddObject (aclGetGroup("PF"), "user."..getAccountName (getPlayerAccount (jogador))) -- Adiciona o jogador na ACL "PF". outputChatBox ("Você adicionou o jogador '"..string.gsub(getPlayerName (jogador), "#%x%x%x%x%x%x", "").."' ao grupo da PF!", thePlayer, 0, 255, 0) outputChatBox ("O jogador '"..string.gsub(getPlayerName (thePlayer), "#%x%x%x%x%x%x", "").."' adicionou você ao grupo da PF.", jogador, 0, 255, 0) end else -- Senão: (se nenhum jogador com esse nick for encontrado, então:) outputChatBox ("ERRO! Nenhum jogador com esse nick foi encontrado!", thePlayer, 255, 0, 0) end else -- Senão: (Se o jogador não estiver na ACL "PF_CMD", então:) outputChatBox ("Você não tem permissão!", thePlayer, 255, 0, 0) end end) function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end Obs: É necessário que seu resource tenha permissão Admin. Edited December 13, 2019 by Lord Henry 1 Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now