Jump to content

Como fazer vários grupos da ACL ter acesso apenas há 1 script?


Recommended Posts

To desenvolvendo um sistema de gangue, onde todas as gangues tem que ter um painel de roubo (o script do roubo está feito, o problema é que não da para adicionar todos os grupos da ACL nele, só um)


Tem alguma forma disso acontecer? Todas as gangues do meu servidor ter acesso ao script?


Lembrando que: Não posso deixar todas as gangues na mesma ACL, as gangues tem que ter ACL diferentes.

Edited by Bruno R dos Santos
Link to comment
  • Other Languages Moderators

Sim, já excluí o outro tópico.

Vc precisa prestar mais atenção antes de postar, cara. Até pra evitar de postar dúvidas que outros membros acabaram de postar. Isso consta naquele vídeo das regras que mandei anteriormente.

Link to comment
  • Other Languages Moderators
Voltando ao seu tópico. Você pode criar uma table com todos os nomes de ACL Groups que vc quer verificar. No caso as ACL Groups das gangues.

Depois vc passa um loop for por todas elas, verificando se o jogador está em pelo menos uma delas. Se estiver, permite que ele abra o painel de gangues, caso contrário, proíbe o acesso dele ao painel.

Exemplo maroto: (server-side)

local acls = {"PCC", "CV", "MAFIA"} -- Lista de ACL Groups, pode adicionar quantas quiser, separando por vírgula e sempre dentro de aspas duplas.

function abrirPainel (thePlayer, cmd)
    for i, name in ipairs (acls) do -- Para cada item da table acls, faça:
        if (isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer), aclGetGroup (name)) do -- Se o jogador está em alguma ACL Group da lista, então:
            outputChatBox ("Acesso permitido.", thePlayer, 0, 255, 0)
            -- Aqui normalmente teria um triggerClientEvent para mostrar o painel no client.
            return
        end
    end
    outputChatBox ("Acesso negado. Você precisa ser criminoso para usar este painel.", thePlayer, 255, 0, 0)
end
addCommandHandler ("gang", abrirPainel) -- Comando para abrir o painel, só por exemplo.

 

Edited by Lord Henry
Link to comment
34 minutes ago, Lord Henry said:
Voltando ao seu tópico. Você pode criar uma table com todos os nomes de ACL Groups que vc quer verificar. No caso as ACL Groups das gangues.

Depois vc passa um loop for por todas elas, verificando se o jogador está em pelo menos uma delas. Se estiver, permite que ele abra o painel de gangues, caso contrário, proíbe o acesso dele ao painel.

Exemplo maroto: (server-side)


local acls = {"PCC", "CV", "MAFIA"} -- Lista de ACL Groups, pode adicionar quantas quiser, separando por vírgula e sempre dentro de aspas duplas.

function abrirPainel (thePlayer, cmd)
    for i, name in ipairs (acls) do -- Para cada item da table acls, faça:
        if (isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer), aclGetGroup (name)) do -- Se o jogador está em alguma ACL Group da lista, então:
            outputChatBox ("Acesso permitido.", thePlayer, 0, 255, 0)
            -- Aqui normalmente teria um triggerClientEvent para mostrar o painel no client.
            return
        end
    end
    outputChatBox ("Acesso negado. Você precisa ser criminoso para usar este painel.", thePlayer, 255, 0, 0)
end
addCommandHandler ("gang", abrirPainel) -- Comando para abrir o painel, só por exemplo.

 

Não consegui fazer dar certo, acho que coloquei na linha errada.

 



 

function Roubar_Player ( Player )
	local acls = {"Gangue01", "Gangue02", "Gangue03"} 
	local cx, cy, cz = getElementPosition ( Player )
	local px, py, pz = getElementPosition ( source )
	local distance	= getDistanceBetweenPoints3D ( cx, cy, cz, px, py, pz )
	if ( distance <= 5 ) then
		for i, name in ipairs (acls) do -- Para cada item da table acls, faça:
			if (isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer), aclGetGroup (name)) do 
			if not getPedOccupiedVehicle(source) then 	
				if not getPedOccupiedVehicle(Player) then 	
					if getPlayerMoney(Player) >= 100 then 
						if getElementData(source, "DNL:Roubando") == false then 		
							if getElementData(Player, "DNL:Sendo_Roubado") == false then 		
								if getElementData(source, "DNL:Roubou_Recentemente") == false then 		
									if getElementData(Player, "DNL:Roubado_Recentemente") == false then 
										if Player == source then return end	 
										Player_Roubado = Player
										Player_Ladrao = source
										setPedAnimation( source, "BOMBER", "BOM_Plant_Loop", -1, true, false, false, false)
										setPedAnimation( Player, "CRACK", "crckidle1", -1, true, false, false, false)
										setElementData ( Player, "DNL:Sendo_Roubado", true)	
										setElementData ( source, "DNL:Roubando", true)	
										setElementData ( source, "Dinheiro_Ladrao", tonumber(math.floor(getPlayerMoney(Player))/4))	
										setElementData ( source, "Dinheiro", tonumber(math.floor(getPlayerMoney(Player))/4))
										triggerClientEvent (Player, "DNL:Abrir_Roubo_Player", Player, Player_Roubado, Player_Ladrao)
										triggerClientEvent (source, "DNL:Abrir_Roubo_Ladrao", source)
										triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê está roubando o jogador "..getPlayerName(Player).."")
										triggerClientEvent(Player, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê está sendo roubado pelo jogador "..getPlayerName(source).."")
										Tempo_Roubo[source] = setTimer(function(source)
											local Dinheiro_Ladrao = tonumber(getElementData(source, "Dinheiro_Ladrao")) or 0
											local Dinheiro_Dx = tonumber(getElementData(source, "Dinheiro_Dx")) or 0
											givePlayerMoney(source, 100)
											takePlayerMoney(Player, 100)
											playSoundFrontEnd (source, 12)
											playSoundFrontEnd (Player, 12)
											setElementData ( source, "Dinheiro_Ladrao", Dinheiro_Ladrao -500)	
											setElementData ( source, "Dinheiro_Dx", Dinheiro_Dx +500)	
											local Dinheiro_Ladrao_ = tonumber(getElementData(source, "Dinheiro_Ladrao")) or 0
											if Dinheiro_Ladrao_ <= 0 then 				
												local Dinheiro = tonumber(getElementData(source, "Dinheiro")) or 0
												killTimer(Tempo_Roubo[source])
												setElementData ( source, "Dinheiro_Ladrao", 0)	
												setElementData ( source, "Dinheiro_Dx", 0)	
												setElementData ( source, "Dinheiro", 0)	
												setElementData ( source, "DNL:Roubando", false)	
												setElementData ( Player, "DNL:Sendo_Roubado", false)	
												setPedAnimation(source)
												setPedAnimation(Player)
												setElementData ( Player, "DNL:Roubado_Recentemente", true)	
												setElementData ( source, "DNL:Roubou_Recentemente", true)	
												triggerClientEvent (source, "DNL:Fechar_Roubo_Ladrao", source)							
												triggerClientEvent (Player, "DNL:Fechar_Roubo_Player", Player)							
												Desativar_Roubo_Ladrao[source] = setTimer(function(source)
													setElementData ( source, "DNL:Roubou_Recentemente", false)	
													triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê já pode efetuar roubos")
												end, 30000, 1, source)						
												Desativar_Roubo_Player[Player] = setTimer(function(Player)
													setElementData ( Player, "DNL:Roubado_Recentemente", false)	
													triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê já pode ser roubado novamente, Tome cuidado")
												end, 60000, 1, Player)
												triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê Conseguiu Roubar #00FF00R$ #FFFFFF"..tonumber(math.floor(Dinheiro)).." do Jogador #00ff00"..getPlayerName(Player).."")
												triggerClientEvent(Player, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffFoi roubado de você #00FF00R$ #FFFFFF"..tonumber(math.floor(Dinheiro)).." pelo Jogador #00ff00"..getPlayerName(source).."")
											end
										end, 1000, 0, source)
									else
										triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffEsse jogador já foi roubado recentemente")
									end
								else
									triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê efetuou um roubo recentemente")
								end
							else
								triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffEsse Jogador já está sendo roubado")
							end
						else
							triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê já está efetuando algum roubo")
						end
					else
						triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffEsse jogador não tem dinheiro para que possa ser roubado")
					end
				else
					triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffO Jogador que você deseja roubar deve está fora do veículo")
				end
			else
				triggerClientEvent(source, "addNotification", root, "#00ff00✘#ffffffINFO#00ff00✘➺ #ffffffVocê deve sair do veículo para efetuar o roubo")
			end
		end
	end
end
addEvent ( "DNL:Roubar_Player", true )
addEventHandler ( "DNL:Roubar_Player", root, Roubar_Player)

 

Edited by Bruno R dos Santos
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...