Instity Posted December 20, 2019 Share Posted December 20, 2019 Quero fazer uma função que verifique se a resource está na ACL(Admin) se tiver o resource ira iniciar, se caso não estiver no grupo ela retorna uma mensagem falando pra adicionar o resource ao grupo e não inicia o resource . Link to comment
KronoS Lettify Posted December 20, 2019 Share Posted December 20, 2019 @Instity dá uma olhada na página da função isObjectInACLGroup, com base nessa função você pode fazer a sua verificação. Link to comment
Instity Posted December 20, 2019 Author Share Posted December 20, 2019 Uso o GetThisResource? Link to comment
KronoS Lettify Posted December 20, 2019 Share Posted December 20, 2019 Essa função que você mencionou pode ser usada também para pegar o nome do resource e colocar como parâmetro da função isObjectInACLGroup. Vejamos, o 1° parâmetro do isObjectInACLGroup é o Objeto(string) que ficará à disposição do grupo da ACL, tendo como exemplos: "user.Jim"; "resource.ctf". Usando o objeto resource, você deverá usar o nome do resource para usar como objeto, e vai conseguir isso usando as funções: getResourceName e getThisResource. Lembrando que usando o getThisResource vai pegar o resource onde foi executada a função, para pegar qualquer outro resource use getResourceFromName. Após compreendido o uso do 1° argumento do isObjectInACLGroup, a hipótese poderá ficar da seguinte forma: local este_resource = getResourceName(getThisResource()) if (isObjectInACLGroup("resource."..este_resource, aclGetGroup("GrupoACL"))) then -- else -- end Este exemplo é bem parecido com uns que são frequentemente usados, veja só: local account_name = getAccountName(getPlayerAccount(thePlayer)) if (isObjectInACLGroup('user.'..account_name, aclGetGroup("GrupoACL"))) then -- else -- end Qualquer dúvida sobre esta resposta, só marcar 1 Link to comment
Instity Posted December 20, 2019 Author Share Posted December 20, 2019 8 minutes ago, KronoS Lettify said: Essa função que você mencionou pode ser usada também para pegar o nome do resource e colocar como parâmetro da função isObjectInACLGroup. Vejamos, o 1° parâmetro do isObjectInACLGroup é o Objeto(string) que ficará à disposição do grupo da ACL, tendo como exemplos: "user.Jim"; "resource.ctf". Usando o objeto resource, você deverá usar o nome do resource para usar como objeto, e vai conseguir isso usando as funções: getResourceName e getThisResource. Lembrando que usando o getThisResource vai pegar o resource onde foi executada a função, para pegar qualquer outro resource use getResourceFromName. Após compreendido o uso do 1° argumento do isObjectInACLGroup, a hipótese poderá ficar da seguinte forma: local este_resource = getResourceName(getThisResource()) if (isObjectInACLGroup("resource."..este_resource, aclGetGroup("GrupoACL"))) then -- else -- end Este exemplo é bem parecido com uns que são frequentemente usados, veja só: local account_name = getAccountName(getPlayerAccount(thePlayer)) if (isObjectInACLGroup('user.'..account_name, aclGetGroup("GrupoACL"))) then -- else -- end Qualquer dúvida sobre esta resposta, só marcar Obrigado entendi eu estava usando if isObjectInACLGroup ( "resource."..resourceName, aclGetGroup("Admin")) then Link to comment
KronoS Lettify Posted December 20, 2019 Share Posted December 20, 2019 O que você estava armazenando em resourceName ? Link to comment
Instity Posted December 20, 2019 Author Share Posted December 20, 2019 Aqui está o código function verificarACL(playerSource) local thisResource = getThisResource() local resourceName = getResourceName(thisResource) if not isObjectInACLGroup ( "resource."..resourceName, aclGetGroup("Admin")) then stopResource(resourceName) outputChatBox ("Adicione o script na admin", playerSource, 255, 255, 255, true) end end Link to comment
KronoS Lettify Posted December 20, 2019 Share Posted December 20, 2019 Mas assim também está certo kk Link to comment
Instity Posted December 20, 2019 Author Share Posted December 20, 2019 3 minutes ago, KronoS Lettify said: Mas assim também está certo kk ue kkk so que não manda a mensagem e não para o script Link to comment
KronoS Lettify Posted December 20, 2019 Share Posted December 20, 2019 É que você colocou aqui para parar o nome do script não o script kk Ou seja, no stopResource você deve usar a variável thisResource, não resourceName Link to comment
Instity Posted December 21, 2019 Author Share Posted December 21, 2019 Então no caso ficaria assim mas ainda continua do mesmo jeito function verificarACL(playerSource) local thisResource = getThisResource() local resourceName = getResourceName(thisResource) if not isObjectInACLGroup ( "resource." ..resourceName, aclGetGroup("Admin")) then outputChatBox ("Adicione o script na admin", playerSource, 255, 255, 255, true) stopResource(thisResource) end end 1 Link to comment
Other Languages Moderators Lord Henry Posted December 21, 2019 Other Languages Moderators Share Posted December 21, 2019 Pra que usar a variável thisResource? É mais fácil usar direto o getThisResource() E está faltando evento ativador nessa sua função. Link to comment
KronoS Lettify Posted December 21, 2019 Share Posted December 21, 2019 4 minutes ago, Instity said: Então no caso ficaria assim mas ainda continua do mesmo jeito function verificarACL(playerSource) local thisResource = getThisResource() local resourceName = getResourceName(thisResource) if not isObjectInACLGroup ( "resource." ..resourceName, aclGetGroup("Admin")) then outputChatBox ("Adicione o script na admin", playerSource, 255, 255, 255, true) stopResource(thisResource) end end Talvez não funcione ainda pq (como o Lord Henry falou na resposta acima) não criou o evento pra chamar a função. Link to comment
Other Languages Moderators Lord Henry Posted December 21, 2019 Other Languages Moderators Share Posted December 21, 2019 E mais uma coisa: Se o seu resource não tem permissão admin, ele não vai conseguir dar stopResource. Link to comment
Instity Posted December 21, 2019 Author Share Posted December 21, 2019 3 minutes ago, Lord Henry said: E mais uma coisa: Se o seu resource não tem permissão admin, ele não vai conseguir dar stopResource. Então como eu poderia não permitir para ele iniciar Link to comment
KronoS Lettify Posted December 21, 2019 Share Posted December 21, 2019 Ao contrário, você tem que permitir o acesso admin ao resouce Link to comment
Other Languages Moderators Lord Henry Posted December 21, 2019 Other Languages Moderators Share Posted December 21, 2019 (edited) Tente isso: function verificarACL () local resourceName = getResourceName (resource) -- resource é uma variável predefinida pelo MTA, ela é = getThisResource() if not isObjectInACLGroup ("resource."..resourceName, aclGetGroup("Admin")) then outputDebugString (resourceName..": Adicione este resource na ACL Group 'Admin'") cancelEvent () end end addEventHandler ("onResourceStart", resourceRoot, verificarACL) -- Ativa essa função quando este resource for iniciado. -- resourceRoot também é predefinida pelo MTA, ela é = getResourceRootElement(getThisResource()) Predefined_variables_list Obs: É necessário estar com /debugscript 3 ativado para ver a mensagem. Edited December 21, 2019 by Lord Henry 1 Link to comment
Instity Posted December 21, 2019 Author Share Posted December 21, 2019 17 hours ago, Lord Henry said: Tente isso: function verificarACL () local resourceName = getResourceName (resource) -- resource é uma variável predefinida pelo MTA, ela é = getThisResource() if not isObjectInACLGroup ("resource."..resourceName, aclGetGroup("Admin")) then outputDebugString (resourceName..": Adicione este resource na ACL Group 'Admin'") cancelEvent () end end addEventHandler ("onResourceStart", resourceRoot, verificarACL) -- Ativa essa função quando este resource for iniciado. -- resourceRoot também é predefinida pelo MTA, ela é = getResourceRootElement(getThisResource()) Predefined_variables_list Obs: É necessário estar com /debugscript 3 ativado para ver a mensagem. Entendi a mensagem apareceu normalmente eo script não foi inicado, obrigado! Link to comment
Recommended Posts