Jump to content

[AJUDA] toggleAllControls argumento 1


Recommended Posts

Olá estou tentando fazer para quando o jogador encostar do marker vai desabilita todos os acesso para ele não conseguir se movimenta ai tudo bem, so que depois de colocou um setTimer para que pode voltar os controle do jogador mas está dando esse erro http://prntscr.com/lx94uf e não tenho a menor ideia de como arruma-lo

server-side
 

function Start_Bus(marker, md)
	if isPedInVehicle( source ) then
		if md then
			if marker == Rota1_Vermelha then
				setElementVisibleTo( Rota1_Vermelha, source, false )
				setElementVisibleTo( Rota1_Blip, source, false )
				setElementVisibleTo( Rota2_Vermelha, source, true )
				setElementVisibleTo( Rota2_Blip, source, true )
				toggleAllControls ( source, false )
				setControlState ( source, "handbrake", true )
				setTimer(function()		
				toggleAllControls ( source, true )
				setControlState ( source, "handbrake", false )
				end, 5000, 1)
			end
		end
	end
end
addEventHandler("onPlayerMarkerHit", root, Start_Bus)

 

Link to comment
  • Moderators

Tente o seguinte:


function Start_Bus(hitElement, md)
	if getElementType( hitElement ) == "vehicle" and md and getElementType((getVehicleController(hitElement) or "")) == "player" then
		local thePlayer = getVehicleController(hitElement)
		setElementVisibleTo( Rota1_Vermelha, thePlayer, false )
		setElementVisibleTo( Rota1_Blip, thePlayer, false )
		setElementVisibleTo( Rota2_Vermelha, thePlayer, true )
		setElementVisibleTo( Rota2_Blip, thePlayer, true )
		toggleAllControls ( thePlayer, false )
		setControlState ( thePlayer, "handbrake", true )
		
		setTimer(function(player)		
			toggleAllControls ( player, true )
			setControlState ( player, "handbrake", false )
		end, 5000, 1, thePlayer)
	end
end
addEventHandler("onMarkerHit", Rota1_Vermelha, Start_Bus)

 

  • Thanks 1
Link to comment
15 minutes ago, DNL291 said:

Tente o seguinte:


function Start_Bus(hitElement, md)
	if getElementType( hitElement ) == "vehicle" and md and getElementType((getVehicleController(hitElement) or "")) == "player" then
		local thePlayer = getVehicleController(hitElement)
		setElementVisibleTo( Rota1_Vermelha, thePlayer, false )
		setElementVisibleTo( Rota1_Blip, thePlayer, false )
		setElementVisibleTo( Rota2_Vermelha, thePlayer, true )
		setElementVisibleTo( Rota2_Blip, thePlayer, true )
		toggleAllControls ( thePlayer, false )
		setControlState ( thePlayer, "handbrake", true )
		
		setTimer(function(player)		
			toggleAllControls ( player, true )
			setControlState ( player, "handbrake", false )
		end, 5000, 1, thePlayer)
	end
end
addEventHandler("onMarkerHit", Rota1_Vermelha, Start_Bus)

 

Então desse causo eu tenho que fazer uma function para cada marker correto? O problema que vai muito grande o codigo mas o importante é pegar tudo de boa .

Link to comment
  • Moderators

Sim, mas dependendo do funcionamento do script você pode encurtar seu código.

Rota2_Vermelha no caso é uma marker também, certo?

Seria assim:

function Start_Bus(hitElement, md)
	if getElementType( hitElement ) == "vehicle" and md and getElementType((getVehicleController(hitElement) or "")) == "player" then
		local thePlayer = getVehicleController(hitElement)
		if source == Rota1_Vermelha then
			setElementVisibleTo( Rota1_Vermelha, thePlayer, false )
			setElementVisibleTo( Rota1_Blip, thePlayer, false )
			setElementVisibleTo( Rota2_Vermelha, thePlayer, true )
			setElementVisibleTo( Rota2_Blip, thePlayer, true )
			toggleAllControls ( thePlayer, false )
			setControlState ( thePlayer, "handbrake", true )
		
			setTimer(function(player)		
				toggleAllControls ( player, true )
				setControlState ( player, "handbrake", false )
			end, 5000, 1, thePlayer)
		elseif source == Rota2_Vermelha then
			-- [seu código]
		end
	end
end
addEventHandler("onMarkerHit", resourceRoot, Start_Bus)

 

Edited by DNL291
  • Thanks 1
Link to comment
1 hour ago, DNL291 said:

Sim, mas dependendo do funcionamento do script você pode encurtar seu código.

Rota2_Vermelha no caso é uma marker também, certo?

Seria assim:


function Start_Bus(hitElement, md)
	if getElementType( hitElement ) == "vehicle" and md and getElementType((getVehicleController(hitElement) or "")) == "player" then
		local thePlayer = getVehicleController(hitElement)
		if source == Rota1_Vermelha then
			setElementVisibleTo( Rota1_Vermelha, thePlayer, false )
			setElementVisibleTo( Rota1_Blip, thePlayer, false )
			setElementVisibleTo( Rota2_Vermelha, thePlayer, true )
			setElementVisibleTo( Rota2_Blip, thePlayer, true )
			toggleAllControls ( thePlayer, false )
			setControlState ( thePlayer, "handbrake", true )
		
			setTimer(function(player)		
				toggleAllControls ( player, true )
				setControlState ( player, "handbrake", false )
			end, 5000, 1, thePlayer)
		elseif source == Rota2_Vermelha then
			-- [seu código]
		end
	end
end
addEventHandler("onMarkerHit", resourceRoot, Start_Bus)

 

Isso mesmo , agora so queria saber como faço para o jogador ao sair do onibus vai destruir o marker/blip, eu tentei de uma forma mas está dando erro http://prntscr.com/lxaxx3 .

server-side
 

SpawnOnibus = { 
	{437, 1649.646484375, -2250.978515625, 13.333773612976, 0, 0, 90 }, 
} 
function CriarOnibus()
	for i,veh in ipairs(SpawnOnibus) do
		local veh_onibus = createVehicle (veh[1],veh[2],veh[3],veh[4],veh[5],veh[6],veh[7])  
   		setElementData ( veh_onibus, "Emprego", "Motorista de Onibus")
    	toggleVehicleRespawn(veh_onibus, true) 
    	setVehicleIdleRespawnDelay(veh_onibus, 100)
    	setVehicleColor( veh_onibus, 255, 0, 0, 255, 0, 0, 255, 0, 0)
    	addEventHandler("onVehicleStartEnter", veh_onibus, VerificarEmprego )
    	addEventHandler("onVehicleStartExit", veh_onibus, VerificarEmprego2 )
    end
end 
addEventHandler("onResourceStart", root, CriarOnibus)

function VerificarEmprego(source, seat, theVehicle)
	local Jogador = getElementData(source, "Emprego")
	if seat == 0 then
		if Jogador == "Motorista de Onibus" then
		setElementVisibleTo( Rota1_Vermelha, source, true ) --Da erro aqui quando eu entrou do onibus depois que o Marker Rota1 e o Blip1 é destruido
		setElementVisibleTo( Rota1_Blip, source, true ) --Da erro aqui quando eu entrou do onibus depois que o Marker Rota1 e o Blip1 é destruido
		else
		cancelEvent()
		exports.Scripts_Dxmessages:outputDx(source, "Esse Veiculo é Exclusivo dos Motoristas de Onibus!", "error")
		end
	end
end

function VerificarEmprego2(source, theVehicle)
	local Jogador = getElementData(source, "Emprego")
		if Jogador == "Motorista de Onibus" then
		destroyElement( Rota1_Vermelha)
		destroyElement( Rota1_Blip)
	end
end

 

Link to comment
  • Moderators

Isso é um trabalho de motorista de ônibus? Faça as coordenadas, markes, blip, etc no lado client e para criar o ônibus envia um trigger para o lado server, o veículo ficará lá.

Cadê os eventos que você adicionou na função VerificarEmprego e VerificarEmprego2?

O erro na print é simples, você tá tentando passar um elemento que foi removido e não existe mais. Uma checagem deste tipo resolveria a mensagem:

if isElement(Rota1_Vermelha) then destroyElement(Rota1_Vermelha) end
Spoiler
3 hours ago, +[T]rakin said:

Explicando sobre o segundo codigo tipo por a causo o jogador saia do onibus do meio da rota todos markers/blips serão excluido , mas se eu entrar do onibus pela segunda vez vai gerar um erro das linhas 21 e 22.

É por acaso.?

 

Edited by DNL291
  • Thanks 1
Link to comment
33 minutes ago, DNL291 said:

Isso é um trabalho de motorista de ônibus? Faça as coordenadas, markes, blip, etc no lado client e para criar o ônibus envia um trigger para o lado server, o veículo ficará lá.

Cadê os eventos que você adicionou na função VerificarEmprego e VerificarEmprego2?

O erro na print é simples, você tá tentando passar um elemento que foi removido e não existe mais. Uma checagem deste tipo resolveria a mensagem:


if isElement(Rota1_Vermelha) then destroyElement(Rota1_Vermelha) end
  Hide contents

É por acaso.?

 

Aqui os eventos das funções VerificarEmprego e VerificarEmprego2.

Se eu conseguir fazer esse trabalho completo sem erros ai depois tento fazer o que você disse sobre os markers,blips e veiculo do lado cliente.
server-side
 

SpawnOnibus = { 
	{437, 1649.646484375, -2250.978515625, 13.333773612976, 0, 0, 90 }, 
} 
function CriarOnibus()
	for i,veh in ipairs(SpawnOnibus) do
		local veh_onibus = createVehicle (veh[1],veh[2],veh[3],veh[4],veh[5],veh[6],veh[7])  
   		setElementData ( veh_onibus, "Emprego", "Motorista de Onibus")
    	toggleVehicleRespawn(veh_onibus, true) 
    	setVehicleIdleRespawnDelay(veh_onibus, 100)
    	setVehicleColor( veh_onibus, 255, 0, 0, 255, 0, 0, 255, 0, 0)
    	addEventHandler("onVehicleStartEnter", veh_onibus, VerificarEmprego )
    	addEventHandler("onVehicleStartExit", veh_onibus, VerificarEmprego2 )
    end
end 
addEventHandler("onResourceStart", root, CriarOnibus)

 

Edited by +[T]rakin
Link to comment
  • Moderators

O problema é que você vai perder tempo tendo que ocultar com a função setElementVisibleTo e se você fizer completo assim, para depois refazer para o client vai ser mais trabalho ainda e desnecessário kk.

Na função VerificarEmprego2 você vai precisar usar setElementVisibleTo em vez de destroyElement.

Edit: ou recria os elementos dentro da função VerificarEmprego

35 minutes ago, +[T]rakin said:

Aqui os eventos das funções VerificarEmprego e VerificarEmprego2.

Passei despercebido e olhei só pras funções ?

Edited by DNL291
  • Thanks 1
Link to comment
15 minutes ago, DNL291 said:

O problema é que você vai perder tempo tendo que ocultar com a função setElementVisibleTo e se você fizer completo assim, para depois refazer para o client vai ser mais trabalho ainda e desnecessário kk.

Na função VerificarEmprego2 você vai precisar usar setElementVisibleTo em vez de destroyElement.

Edit: ou recria os elementos dentro da função VerificarEmprego

Passei despercebido e olhei só pras funções ?

Tentei dessa forma que voce falou e deu o mesmo erro.

if isElement(Rota1_Vermelha) then destroyElement(Rota1_Vermelha) end

Mas fiz o que voce falou de criar os elementos ao entrar do onibus e funcionou mas não entendi eu tinha tentado dessa forma so que tava dando erro , mas ja que como da function onMarkerHit é totalmente diferente que eu fazia poriso que pegou.

Do lado cliente vou está fazendo um painel mostrando a quantidade das passagens, quantos rotas falta e etc..

Me desculpa pelo meu português se péssimo assim.

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