Jump to content

Verificar se o player esta em dois grupos de uma unica tabela de grupos


Recommended Posts

27 minutes ago, SciptNovato said:

entao eu queria saber como eu faco para verficar se o player esta em dois grupos de acl de uma tabela 
EX: Uma tabela com Grupo: samu, mecanico e detran
verificar se ele ta em dois desses grupos ao mesmo tempo

Olá, você pode usar uma tabela para armazenar as tabelas necessarias, fazendo um for dentro delas e verificando se o player está naquele grupo com o isObjectInACLGroup
Vou deixar um exemplo aqui pra ti:

 

Spoiler
local grupos = {
	{"Samu"}, 
	{"Policial"}, 
	{"Mecanico"},
}

addCommandHandler("acl", 
function (player)
	local conta = getPlayerAccount(player)
	if conta and not isGuestAccount(conta) then -- verificando se a conta existe, e se não é uma conta guest (player sem estar logado)
		local nomeconta = getAccountName(conta)
		if verificarAcl(nomeconta) then -- acionando a função util para verificação 
			outputChatBox("Você possui as acl's necessarias!", player)
		else 
			outputChatBox("Você não possui as acl's necessarias!", player, 255, 0, 255)
		end
	end
end)

function verificarAcl(conta) 
	local acls = 0
	if conta then -- verificamos se conta existe
		for index, grupo in ipairs(grupos) do -- fazemos um loop na tabela
			if aclGetGroup(grupo[1]) then -- verificamos se a acl existe
				if isObjectInACLGroup("user."..conta, aclGetGroup(grupo[1])) then -- verificamos se o player está na acl 
					acls = acls + 1 -- definimos a variavel que inicialmente é zero como (+1)
				end 
				if acls >= 2 then -- caso essa variavel seja maior ou igual que 2, retornar true
					return true 
				end
			end
		end
	end 
	return false
end

 

Perdão pela identação, o forum parece que distorce kk

Edited by Blaack
  • Thanks 1
Link to comment
4 hours ago, Blaack said:

Olá, você pode usar uma tabela para armazenar as tabelas necessarias, fazendo um for dentro delas e verificando se o player está naquele grupo com o isObjectInACLGroup
Vou deixar um exemplo aqui pra ti:

 

  Reveal hidden contents
local grupos = {
	{"Samu"}, 
	{"Policial"}, 
	{"Mecanico"},
}

addCommandHandler("acl", 
function (player)
	local conta = getPlayerAccount(player)
	if conta and not isGuestAccount(conta) then -- verificando se a conta existe, e se não é uma conta guest (player sem estar logado)
		local nomeconta = getAccountName(conta)
		if verificarAcl(nomeconta) then -- acionando a função util para verificação 
			outputChatBox("Você possui as acl's necessarias!", player)
		else 
			outputChatBox("Você não possui as acl's necessarias!", player, 255, 0, 255)
		end
	end
end)

function verificarAcl(conta) 
	local acls = 0
	if conta then -- verificamos se conta existe
		for index, grupo in ipairs(grupos) do -- fazemos um loop na tabela
			if aclGetGroup(grupo[1]) then -- verificamos se a acl existe
				if isObjectInACLGroup("user."..conta, aclGetGroup(grupo[1])) then -- verificamos se o player está na acl 
					acls = acls + 1 -- definimos a variavel que inicialmente é zero como (+1)
				end 
				if acls >= 2 then -- caso essa variavel seja maior ou igual que 2, retornar true
					return true 
				end
			end
		end
	end 
	return false
end

 

Perdão pela identação, o forum parece que distorce kk

Obrigado!

Link to comment
  • 2 weeks later...

Parra verificar se um jogador está em dois grupos de uma única tabela de grupos, você pode seguir os seguintes passos:

  1. Obtenha a tabela de grupos usando a função aclGroupList.
local groupList = aclGroupList()

Neste exemplo, a função aclGroupList é usada para obter a lista de todos os grupos ACL no servidor.

 

  1. Encontre os grupos pelos nomes que deseja verificar se o jogador pertence a eles. Você pode fazer isso usando a função aclGetGroup.
local group1 = aclGetGroup("nome_do_grupo_1")
local group2 = aclGetGroup("nome_do_grupo_2")

Neste exemplo, as funções aclGetGroup são usadas para obter os grupos pelos seus nomes.

 

  1. Verifique se o jogador pertence a ambos os grupos usando a função isObjectInACLGroup.
local isInGroup1 = isObjectInACLGroup("user", group1)
local isInGroup2 = isObjectInACLGroup("user", group2)
if isInGroup1 and isInGroup2 then
  -- o jogador está em ambos os grupos
end

Neste exemplo, a função isObjectInACLGroup é usada para verificar se o jogador "user" pertence a ambos os grupos. As variáveis isInGroup1 e isInGroup2 indicam se o jogador está em cada grupo. Se o jogador estiver em ambos os grupos, o código dentro do bloco if será executado.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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