Jump to content

[AJUDA] Leiteiro checkpoint vaca


Recommended Posts

Estou fazendo um emprego de Leiteiro que eu tenho que pegar os leites primeiro e depois entrega, so que quando eu vou pegar o primeiro leite ele manda eu ir pegar o primeiro leite denovo o certo seria para o segundo leite.

Digamos quando passo pela posição 1 fala assim no chat : outputChatBox ("Você tirou o leite. Siga para a próxima. 1/3) -- 3 = numero de posições e 1 = numeros de leites
Ai devia ir para segunda posição so que ele manda ir da primeira denovo.

Espero que entendam 

server-side

leites = {
	[1] = {-39.298828125, -10.794921875, 3.1171875}, -- table com todos os leites em ordem.
	[2] = {-44.376953125, -21.642578125, 3.1171875},
	[3] = {-59.50390625, -21.8125, 3.1171875},
}

entregas = {
	[1] = {237.75390625, -88.171875, 1.4269020557404}, -- table com todos os entregas em ordem.
	[2] = {278.4716796875, -65.791015625, 1.578125},
}

local Job_Marker = createMarker (-93.5400390625, -17.1650390625, 3.109395980835 -1, "cylinder", 1.5, 20, 70, 230, 95 )
inicioblip1 = createBlipAttachedTo(Job_Marker, 42)


Vaca_1 = createPed(298, -38.6025390625, -10.6796875, 3.1171875)
Vaca_2 = createPed(298, -43.2666015625, -21.455078125, 3.1171875)
Vaca_3 = createPed(298, -57.974609375, -21.6103515625, 3.1171875)

local Marker_Leites = {}
local Blip_Leites = {}

function startJob4 (thePlayer, cmd)
	if isElementWithinMarker (thePlayer, Job_Marker) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo.
		local x, y, z = unpack (leites[1]) -- x, y, z recebem as coordenadas do leites[1].
		Marker_Leites[thePlayer] = createMarker (x, y, z -1, "cylinder", 1.6, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1.
		setElementData (Marker_Leites[thePlayer], "Marker", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele.
		setElementData (Marker_Leites[thePlayer], "Leites", 0) -- Seta uma data no marker pra saber a qual coordenada ele pertence.
		Blip_Leites[thePlayer] = createBlipAttachedTo (Marker_Leites[thePlayer], 19) -- Cria o blip e anexa ao marker.
		setElementData(thePlayer, "Emprego", "Leiteiro") -- Essa data é para fazer um bloqueo que o jogador não consegue entrar no veiculo antes de pegar os leites
		removeElementData(thePlayer, "Leiteiro", "Veiculo")  
		addEventHandler ("onMarkerHit", Marker_Leites[thePlayer], fim4) -- Adiciona o evento que faz funcionar o marker do objetivo.
	end
end
addEventHandler("onMarkerHit", Job_Marker, startJob4)


function fim4 (hitElement)
	if (hitElement == getElementData (source, "Marker")) then -- Se o elemento que colidiu for o dono do marker, então:
			if (getElementData (source, "Leites") < #leites) then -- Se a data do marker é menor que a quantidade de leites, então: (indicando que não é a última viagem)
				local x, y, z = unpack (leites[getElementData (source, "Leites") + 1]) -- x, y, z recebem a próxima coordenada da table leites.
				setElementPosition (source, x, y, z -1) -- Coloca o marker de objetivo nessa nova coordenada.
				setElementData (source, "Leites", getElementData (source, "Leites") + 1) -- Seta a nova viagem nesse marker.
				setPedAnimation(hitElement, "BOMBER", "bom_plant_loop", 2000, true, false, false, false)
				outputChatBox ("Você tirou o leite. Siga para a próxima. ("..getElementData (source, "Leites").."/3)", hitElement) -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça.
				--outputChatBox ("Leites Tirados, Siga Para a Proxima", hitElement)
				toggleAllControls( hitElement, false)
				setTimer(function()
					toggleAllControls( hitElement, true)
					end, 1800, 1)
			else -- Se o marker de objetivo colidido não tem data menor que a quantidade de viagens, então: (indicando que esse é o último objetivo)
				removeEventHandler ("onMarkerHit", Marker_Leites[hitElement], fim4) -- Remove o evento que ativa este marker, pois ele não será mais usado.
				destroyElement (Blip_Leites[hitElement]) -- Destroi o blip anexado ao marker de objetivo.
				Marker_Entrega = createMarker (-62.8828125, -4.8046875, 3.1171875 -1, "cylinder", 1.6, 0, 255, 0, 255)
				Blip_Leites[hitElement] = nil
				destroyElement (Marker_Leites[hitElement]) -- Destroi o marker de objetivo.
				Marker_Leites[hitElement] = nil
				setPedAnimation(hitElement, "BOMBER", "bom_plant_loop", 2000, true, false, false, false)
				toggleAllControls( hitElement, false)
				setTimer(function()
					toggleAllControls( hitElement, true)
					outputChatBox ("Agora vá ate o caminhão para entrega os leites!", hitElement)
					setElementData(hitElement, "Leiteiro", "Veiculo") 
					end, 1800, 1)
				addEventHandler("onMarkerHit", Marker_Entrega, Job_E)
			end
	end
end

 

Link to comment

Linha 28:

setElementData (Marker_Leites[thePlayer], "Leites", 1)

Linha 41 à 45:

outputChatBox ("Você tirou o leite. Siga para a próxima. ("..getElementData (source, "Leites").."/3)", hitElement)
setElementData (source, "Leites", getElementData (source, "Leites") + 1)
local x, y, z = unpack (leites[getElementData (source, "Leites")])
setElementPosition (source, x, y, z -1)
setPedAnimation(hitElement, "BOMBER", "bom_plant_loop", 2000, true, false, false, false)

 

  • Thanks 1
Link to comment
20 minutes ago, MaligNos said:

Linha 28:


setElementData (Marker_Leites[thePlayer], "Leites", 1)

Linha 41 à 45:


outputChatBox ("Você tirou o leite. Siga para a próxima. ("..getElementData (source, "Leites").."/3)", hitElement)setElementData (source, "Leites", getElementData (source, "Leites") + 1)local x, y, z = unpack (leites[getElementData (source, "Leites")])setElementPosition (source, x, y, z -1)setPedAnimation(hitElement, "BOMBER", "bom_plant_loop", 2000, true, false, false, false)

 

Funciono perfeito thanks

Queria aproveitar esse topico já que é do mesmo script e queria outra ajuda. Bem no marker Job_Marker ele criar o marker dos leites so que se algum jogador passa duas vezes pelo marker Job_Marker vai está criando dois markers de leites meio que um bug.

E com isso o jogador vai pode fazer o trabalho quantos ele quiser ao mesmo tempo tem alguma função que bloquear de fica criando varios markers?

Link to comment
function startJob4 (thePlayer, cmd)
	if getElementType(thePlayer) == "player" then
		if not getPedOccupiedVehicle(thePlayer) and not getElementData(thePlayer, "Emprego") == "Leiteiro" then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo.
			local x, y, z = unpack (leites[1]) -- x, y, z recebem as coordenadas do leites[1].
			Marker_Leites[thePlayer] = createMarker (x, y, z -1, "cylinder", 1.6, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1.
			setElementData (Marker_Leites[thePlayer], "Marker", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele.
			setElementData (Marker_Leites[thePlayer], "Leites", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence.
			Blip_Leites[thePlayer] = createBlipAttachedTo (Marker_Leites[thePlayer], 19) -- Cria o blip e anexa ao marker.
			setElementData(thePlayer, "Emprego", "Leiteiro") -- Essa data é para fazer um bloqueo que o jogador não consegue entrar no veiculo antes de pegar os leites
			removeElementData(thePlayer, "Leiteiro", "Veiculo")  
			addEventHandler ("onMarkerHit", Marker_Leites[thePlayer], fim4) -- Adiciona o evento que faz funcionar o marker do objetivo.
		end
	end
end
addEventHandler("onMarkerHit", Job_Marker, startJob4)

 

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