Recommended Posts

Posted (edited)

Opa blz!

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

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

@KronoS Lettify

Obrigado pela ajuda com relação a primeira pergunta!

Quando a segunda:

Como faço pra vincular o carro a um player e não a uma aclgroup?

Share this post


Link to post
7 hours ago, P43tous said:

@KronoS Lettify

Obrigado pela ajuda com relação a primeira pergunta!

Quando a segunda:

Como faço pra vincular o carro a um player e não a uma aclgroup?

 

Você quer definir um dono para o carro?

  • Thanks 1

Share this post


Link to post

Eu vincularia ele à conta do jogador.

"Jogador de login tal é o proprietário deste veículo"

  • Thanks 1

Share this post


Link to post
On 25/03/2020 at 09:36, KronoS Lettify said:

Você quer definir um dono para o carro?

@KronoS Lettify

ISSO !!

Você pode me ajudar a fazer isso/?

Share this post


Link to post
Posted (edited)
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

Share this post


Link to post
3 hours ago, P43tous said:

@KronoS Lettify

ISSO !!

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.

Share this post


Link to post
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)

 

 

 

 

Share this post


Link to post

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.

Share this post


Link to post
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!

Share this post


Link to post
Posted (edited)
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

Share this post


Link to post

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.