pLayz Posted December 10, 2019 Share 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) Link to comment
SrPattif Posted December 10, 2019 Share 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! Link to comment
pLayz Posted December 10, 2019 Author Share 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) Link to comment
SrPattif Posted December 10, 2019 Share 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 ) ) Link to comment
Jonas^ Posted December 12, 2019 Share 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. Link to comment
Other Languages Moderators Lord Henry Posted December 13, 2019 Other Languages Moderators Share 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 Link to comment
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