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!
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 ) )
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.
Other Languages Moderators Lord Henry Posted December 13, 2019 Other Languages 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
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