Jump to content

Veiculo ACL / Player


Recommended Posts

Opa blz!

Preciso de ajuda, como fazer para deixar outro jogador que não seja do grupo "VIPCARRO" pelo menos pegar carona ?? ? <font style=?">

E também como fazer pra colocar ao invés da ACL do grupo, colocar o veiculo pelo nick do jogador ???

function enterVehicle(thePlayer, seat, jacked) 
    local account = getPlayerAccount(thePlayer) 
    if (not account or isGuestAccount(account)) then return end 
    local accountName = getAccountName(account) 
    if (getElementModel(source) == 602) and (not isObjectInACLGroup("user.".. accountName,aclGetGroup("VIPCARRO"))) then 
        setVehicleLocked(source, true) 
        outputChatBox("#ffff00SOMENTE MEMBROS DA #000000[ #ff0000Nome da gang #000000] #ffff00PODEM USAR ESSE VEICULO!", thePlayer) 
    else 
        setVehicleLocked(source, false) 
    end 
end 
addEventHandler("onVehicleStartEnter",root,enterVehicle)

 

Edited by P43tous
Complemento de informação
Link to comment

Olá, respondendo a sua primeira pergunta -> seat

um exemplo:

 

HeliHabs = { [487]=true,[488]=true,[497]=true,[417]=true }

function enterVehicle ( player, seat, jacked )
if seat == 0 then -- // se ele entrar de piloto então: 
local MinhaConta = getPlayerAccount(player)
    if ( HeliHabs[getElementModel(source)] ) then
	 local Hab = getAccountData(MinhaConta, "Hab") 
        if Hab == false then
		cancelEvent()
    end
  end
 end
end
addEventHandler ( "onVehicleStartEnter", getRootElement(), enterVehicle ) 

 

  • Thanks 1
Link to comment

Respondendo à sua primeira pergunta:
 

function enterVehicle(thePlayer, seat, jacked) 
	local account = getPlayerAccount(thePlayer) 
	if (not account or isGuestAccount(account)) then return end 
	local accountName = getAccountName(account)
	if (not isObjectInACLGroup("user.".. accountName,aclGetGroup("VIPCARRO"))) then -- Se não estiver em tal grupo da ACL, então
		if (seat == 0) and (getElementModel(source) == 602) then -- Se estiver entrando como motorista, então cancelo o evento e ele não entra
			outputChatBox("#ffff00SOMENTE MEMBROS DA #000000[ #ff0000Nome da gang #000000] #ffff00PODEM USAR ESSE VEICULO!", thePlayer)
			cancelEvent()
		end
	end
end 
addEventHandler("onVehicleStartEnter",root,enterVehicle)

Detalhe do código:  A lógica: Se não estiver no determinado grupo e tentar entrar como motorista no carro de tal ID, ele não vai conseguir entrar. O que quer dizer que ele vai poder entrar em qualquer outro assento mesmo não sendo do determinado grupo da ACL. OBS: Usei a função cancelEvent pois ela é mais fácil e prática de se lidar nessas ocasiões que o setVehicleLocked.

Quanto à sua segunda pergunta, se puder esclarecer melhor tentarei responder.

  • Thanks 1
Link to comment
1 hour ago, P43tous said:

Você pode me ajudar a fazer isso/?

Pelo que eu consegui compreende, você quer adicionar o veiculo apenas para um jogador só entrar no P1.

Para isto, você precisar adicionar um elemento no veiculo, com o LOGIN ou SERIAL ou IDAccount do player no veiculo, e fazer uma verificação.

Fiz um mini exemplo, utilizando o ID Account, ao entrar, setará um elemento ID Account do Player no veiculo, caso o veiculo não tenha nenhum elemento, setará um elemento com o ID da Conta do Player, e então, caso outra pessoa tente entrar no veiculo, e seja ID Account diferente, não conseguirá entrar no veiculo no P1.

addEventHandler("onVehicleStartEnter", root, function ( player, seat )
   if seat == 0 then  
      local veh = getPedOccupiedVehicle(player) 
      local account_id = getAccountID(getPlayerAccount(player))
      if account_id ~= false then --/> Verificar se o Player Está Logado.
         local dono_do_veiculo = getElementData(veh, "Dono:Veiculo") or setElementData(veh, "Dono:Veiculo", account_id) --/> Verificar o Elemento do seu Veiculo, Caso não tiver, Então Adicionar.
         if getElementData(veh, "Dono:Veiculo") ~= account_id then --/> Verificará o Elemento do Veiculo, com o ID da Sua Conta.
            cancelEvent(true) --/> Caso não ser o Dono Do Veiculo, Então Bloquear.
         end 
      else
         cancelEvent(true) --/> Se não tiver Logado, Então Cancelará, sua Entrada.
      end
   end
end)

Espero ter ajudado, e tirado sua dúvida.

Edited by Angelo Pereira
Link to comment
3 hours ago, KronoS Lettify said:

Há várias formas de definir um dono para um veículo, se quiser especificar mais um pouco ou explicar o que você está fazendo ou o que quer fazer.

Veja! Nesse código estou limitando o uso do veiculo somente a integrantes do ACLgrupo "Admin". Porém ficaria melhor se fosse por Player e não por AclGroup. Não sei escrever esse código ja tentei varias vezes.

 

Por exemplo:

Name jogador : P43tous

somente ele tera acesso ao comando e veiculo vip independente de qual AclGroup ele seja.

 

veh = {}
vehCol = {}

function veiculodayz (thePlayer)
local accountname = getAccountName (getPlayerAccount (thePlayer)) 
		if not isObjectInACLGroup ("user."..accountname, aclGetGroup ("Admin")) then	
		outputChatBox ("VOCÊ NÃO TEM CARRO VIP", thePlayer)
		
		
		elseif isObjectInACLGroup ("user."..accountname, aclGetGroup ("Admin")) then
		
		
		local x, y, z = getElementPosition (thePlayer)
				if isElement (veh[thePlayer]) then 
				spawnVehicle (veh[thePlayer], x+3, y, z) 
				setElementData (vehCol[thePlayer], "parent", veh[thePlayer]) 
				setElementData (veh[thePlayer], "parent", vehCol[thePlayer])
				setElementData (vehCol[thePlayer], "vehicle", true)
				setElementData (vehCol[thePlayer], "Tire_inVehicle", 4)
				setElementData (vehCol[thePlayer], "Engine_inVehicle", 2)
				setElementData (vehCol[thePlayer], "Parts_inVehicle", 1)
							
				destroyElement(veh[thePlayer])
				destroyElement(vehCol[thePlayer])
				
				outputChatBox ("VOCÊ DESTRUIU CARRO VIP", thePlayer)
				else 
				veh[thePlayer] = createVehicle (602, x+3, y, z,0,0,0) 
				setVehicleColor (veh[thePlayer], 0, 0, 0) 
				
				outputChatBox ("VOCÊ CRIOU CARRO VIP", thePlayer)		
				
						if isElement (vehCol[thePlayer]) then 
						attachElements (vehCol[thePlayer], veh[thePlayer], 0, 0, 0) 
											
						else 
						vehCol[thePlayer] = createColSphere (x, y, z, 2.5) 
						attachElements (vehCol[thePlayer], veh[thePlayer], 0, 0, 0) 
										
						setElementData (vehCol[thePlayer], "parent", veh[thePlayer]) 
						setElementData (veh[thePlayer], "parent", vehCol[thePlayer])
						setElementData (vehCol[thePlayer], "vehicle", true)
						setElementData (vehCol[thePlayer], "Tire_inVehicle", 4)
						setElementData (vehCol[thePlayer], "Engine_inVehicle", 2)
						setElementData (vehCol[thePlayer], "Parts_inVehicle", 1)
						setElementData (vehCol[thePlayer], "fuel", 100)
						setVehicleDamageProof(veh[thePlayer], true)
									
									
						end
				end
end
end
addCommandHandler ("carro", veiculodayz)

function enterVehicle(thePlayer, seat, jacked) 
	local account = getPlayerAccount(thePlayer) 
	if (not account or isGuestAccount(account)) then return end 
	local accountName = getAccountName(account)
	if (not isObjectInACLGroup("user.".. accountName,aclGetGroup("Admin"))) then -- Se não estiver em tal grupo da ACL, então
		if (seat == 0) and (getElementModel(source) == 602) then -- Se estiver entrando como motorista, então cancelo o evento e ele não entra
			outputChatBox("#ffff00SOMENTE MEMBROS DA #000000[ #ff0000Nome da gang #000000] #ffff00PODEM USAR ESSE VEICULO!", thePlayer)
			cancelEvent()
		end
	end
end 
addEventHandler("onVehicleStartEnter",root,enterVehicle)

 

 

 

 

Link to comment
13 hours ago, KronoS Lettify said:

Fazer isso por nick pode ser um tanto inseguro. Por que não tenta fazer isso por nome de conta? Em casos específico pode até usar as funções account-data para salvar algo.

Mas como faço isso por conta nesse caso.? me ajude com um exemplo!

Link to comment
  • Other Languages Moderators
veh = {} -- Table de veículos, cada veículo será indexado em determinado jogador.

addCommandHandler ("carro", function (thePlayer, cmd)
    if (veh[thePlayer]) then -- Se o veículo do jogador já existe, então:
        destroyElement (veh[thePlayer]) -- Destrói o veículo.
        veh[thePlayer] = nil -- Remove o veículo da table.
        outputChatBox ("Seu carro VIP foi destruído.", thePlayer, 255, 255, 0)
    else -- Se o veículo não existe, então:
        local x, y, z = getElementPosition (thePlayer)
        veh[thePlayer] = createVehicle (602, x, y+3, z+1) -- Cria o veículo, próximo ao jogador.
        setVehicleColor (veh[thePlayer], 0, 0, 0) -- Torna o veículo preto.
        setElementData (veh[thePlayer], "owner", getAccountName (getPlayerAccount (thePlayer))) -- Coloca o login de quem criou o veículo como dono.
        outputChatBox ("Carro VIP criado.", thePlayer, 0, 255, 0)
    end
end)

addEventHandler ("onVehicleStartEnter", root, function (thePlayer, seat, jacked) -- Quando alguém tenta entrar em um veículo, ativa essa função.
    if (getElementModel (source) == 602) then -- Se o veículo que o jogador está tentando entrar for o modelo do carro VIP, então:
        if (isGuestAccount (getPlayerAccount(thePlayer))) then return cancelEvent() end -- Se o jogador estiver deslogado, nada acontece e ele nem entra no veículo. (a ação de entrada no veículo é cancelada)
        if (seat == 0) then -- Se o jogador está tentando entrar como motorista, então:
            if (not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup ("VIPCARRO"))) then -- Se o jogador que está tentando entrar não estiver na ACL Group VIPCARRO, então:
                outputChatBox ("Você não tem permissão para dirigir veículos VIP.", thePlayer, 255, 0, 0)
                cancelEvent () -- Cancela a entrada no veículo.
            elseif (getElementData (source, "owner")) then -- Se o jogador está na ACL Group VIPCARRO e o carro tem um dono registrado, então:
                if not (getElementData (source, "owner") == getAccountName(getPlayerAccount(thePlayer))) then -- Se o jogador que está tentando entrar não for o dono do veículo, então:
                    outputChatBox ("Você não pode dirigir este veículo pois ele não pertence a você.", thePlayer, 255, 0, 0)
                    cancelEvent () -- Cancela a entrada no veículo.
                end
            end
        end
    end
end)

addEventHandler ("onPlayerQuit", root, function () -- Destroi o veículo criado pelo jogador quando ele desconecta do server.
    if (veh[source]) then
        destroyElement (veh[source])
        veh[source] = nil
    end
end)

 

Edited by Lord Henry
Código comentado.
  • Like 1
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...