Jump to content

Verificar ACL(Grupo), resource


Recommended Posts

Posted

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 .

Posted

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 resourcevocê 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 :D 

  • Thanks 1
Posted
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 resourcevocê 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 :D 

Obrigado entendi eu estava usando if  isObjectInACLGroup ( "resource."..resourceName, aclGetGroup("Admin")) then

Posted

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

 

Posted

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

 

  • Like 1
  • Other Languages Moderators
Posted

Pra que usar a variável thisResource? É mais fácil usar direto o getThisResource()

E está faltando evento ativador nessa sua função.

Posted
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.

  • Other Languages Moderators
Posted (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 by Lord Henry
  • Thanks 1
Posted
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!

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...