Jump to content

Recommended Posts

queria que assim q ele pegasse o trabalho, ele ter de ir buscar os passageiros no marker 1 da table, e depois ter de leva-los ao marker 2 da table. coloquei umas anims neles para eles irem andando em direçao ao avião, se algo estiver errado, se poderem corrigir e me falar oque errei eu agradeço, boa noite e feliz natal ae pra vcs.

destinos = {
	[1] = {1612.7482910156, -2480.7473144531, 13.5546875}, -- table com todos os destinos em ordem.
	[2] = {-1487.8798828125, -108.69385528564, 14.1484375}
}

local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando.

local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente.
local Mfim7 = {} -- Marker final específico do player.
local Bfim7 = {} -- Blip do marker final específico do player.

function inicio7 (source)
	if source and getElementType (source) == "player" and not getPedOccupiedVehicle (source) then -- Quando o jogador colide no marker e está sem veículo, então:
		outputChatBox ("#1066E7────────────────  Trabalho BvP™  ────────────────",source,255,255,255,true) -- Avisa pra ele usar o comando /trampo4 para começar o emprego.
		outputChatBox ("#FF0000Trabalho de Piloto de Avião #FFFFFF→  Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.",source,255,255,255,true)
		outputChatBox ("                                                        ",source,255,255,255,true)
		outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.",source,255,255,255,true)
		outputChatBox ("#1066E7───────────────────────────────────────────",source,255,255,255,true)
	end
end	
addEventHandler ("onMarkerHit", Minicio7, inicio7)

function startJob7 (thePlayer, cmd)
	if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo.
		if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele.
			destroyElement (veh[thePlayer])
			veh[thePlayer] = nil
		end
		veh[thePlayer] = createVehicle (577, 1443.5461425781, 1459.3911132813, 10.8203125) -- Cria o veículo do trampo.
		local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1].
		Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 2, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1.
		setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele.
		setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence.
		Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker.
		warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo.
        setPedSkin ( thePlayer, 72 )
		dxMsg(thePlayer, "Vá buscar os passageiros.", "info")
        ped1 = createPed ( 1, 1591.1002197266,-2462.6525878906,13.5546875 )
        setPedRotation(ped1, 181)
        ped2 = createPed ( 7, 1591.2203369141,-2459.6557617188,13.5546875 )
        setPedRotation(ped2, 181)
        ped3 = createPed ( 15, 1591.1318359375,-2456.8723144531,13.5546875 )
        setPedRotation(ped3, 181)
		dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info")
        setPedAnimation( ped1, "ped", "WOMAN_walknorm")
        setPedAnimation( ped2, "ped", "WOMAN_walknorm")
        setPedAnimation( ped3, "ped", "WOMAN_walknorm")
        setTimer(function(thePlayer)
        destroyElement (ped1)
        destroyElement (ped2)
        destroyElement (ped3)
		dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora.
		addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo.
		end, 7000, 1,thePlayer)
	end
end
addCommandHandler ("emprego7", startJob7)

function fim7 (hitElement)
	if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então:
		if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então:
			if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem)
				local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos.
				setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada.
				setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker.
				dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça.
			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)
				dxMsg(hitElement, "Recebendo Pagamento...", "info")
				setTimer(function(hitElement)
					removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado.
					destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador.
					givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo.
					if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo.
					Bfim7[hitElement] = nil
					if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo.
					Mfim7[hitElement] = nil
					dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo.
				end, 5000, 1,hitElement)
			end
		end
	end
end

function sair7 (thePlayer)
	if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então:
		removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo.
		destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo.
		destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo.
		Bfim7[thePlayer] = nil
		destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo.
		Mfim7[thePlayer] = nil
		dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo.
	end
end
addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer.

function quit7 ()
		if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
		if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
		if isElement(veh[source]) then destroyElement(veh[source]) end
		Bfim7[source] = nil
		Mfim7[source] = nil
		veh[source] = nil
        destroyElement (ped1)
        destroyElement (ped2)
        destroyElement (ped3)
end
addEventHandler("onPlayerQuit", getRootElement(), quit7)

function kill7 ()
	if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
	if isElement(Mfim7[source]) then
		destroyElement (Mfim7[source])
		dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error")
	end
	if isElement(veh[source]) then destroyElement(veh[source]) end
	Bfim7[source] = nil
	Mfim7[source] = nil
	veh[source] = nil
	destroyElement (ped1)
    destroyElement (ped2)
    destroyElement (ped3)
end
addEventHandler("onPlayerWasted", getRootElement(), kill7)

function logout7 ()
		if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
		if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
		if isElement(veh[source]) then destroyElement(veh[source]) end
		Bfim7[source] = nil
		Mfim7[source] = nil
		veh[source] = nil
        destroyElement (ped1)
        destroyElement (ped2)
        destroyElement (ped3)
end
addEventHandler("onPlayerLogout", getRootElement(), logout7)

function dxMsg(source, text, type)
	exports.dxmessages:outputDx(source, text, type)
end

Voces são uma segunda familia pra mim ❤️

Link to comment
  • Other Languages Moderators

A regra é clara: Se está tudo funcionando sem erros e nem bugs. Então está certo.

Sempre pode existir um jeito "melhor" de fazer, mas não significa que seja necessariamente o mais certo. Na programação existem diversas formas de se conseguir um objetivo.

  • Thanks 1
Link to comment

Olhando rapidamente, tirei essas conclusões:

  • destroyElement nos peds sem qualquer verificação;
  • Se alguém quitar, der logout, sair do veículo, irá deletar os peds de outro que esteja pegando os passageiros;
  • Os set nil da tabela seria adequado após uma verificação de sua existência;
  • setTimer seria adequado verificar a existência do player, caso contrário, deletaria os elementos, desocuparia espaço de tabelas/memória, etc.
Link to comment
47 minutes ago, Lord Henry said:

A regra é clara: Se está tudo funcionando sem erros e nem bugs. Então está certo.

Sempre pode existir um jeito "melhor" de fazer, mas não significa que seja necessariamente o mais certo. Na programação existem diversas formas de se conseguir um objetivo.

verdade, se possivel tento 1 por 1

40 minutes ago, MaligNos said:

Olhando rapidamente, tirei essas conclusões:

  • destroyElement nos peds sem qualquer verificação;
  • Se alguém quitar, der logout, sair do veículo, irá deletar os peds de outro que esteja pegando os passageiros;
  • Os set nil da tabela seria adequado após uma verificação de sua existência;
  • setTimer seria adequado verificar a existência do player, caso contrário, deletaria os elementos, desocuparia espaço de tabelas/memória, etc.

Eu setei algumas coisas aqui agora de acordo com as suas conclusões, realmente fui burrice minha rsrs

destinos = {
	[1] = {1612.7482910156, -2480.7473144531, 13.5546875}, -- table com todos os destinos em ordem.
	[2] = {-1487.8798828125, -108.69385528564, 14.1484375},
	[3] = {1714.3579101563, 1615.6630859375, 9.2}
}

local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando.

local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente.
local Mfim7 = {} -- Marker final específico do player.
local Bfim7 = {} -- Blip do marker final específico do player.

function inicio7 (source)
	if source and getElementType (source) == "player" and not getPedOccupiedVehicle (source) then -- Quando o jogador colide no marker e está sem veículo, então:
		outputChatBox ("#1066E7────────────────  Trabalho BvP™  ────────────────",source,255,255,255,true) -- Avisa pra ele usar o comando /trampo4 para começar o emprego.
		outputChatBox ("#FF0000Trabalho de Piloto de Avião #FFFFFF→  Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.",source,255,255,255,true)
		outputChatBox ("                                                        ",source,255,255,255,true)
		outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.",source,255,255,255,true)
		outputChatBox ("#1066E7───────────────────────────────────────────",source,255,255,255,true)
	end
end	
addEventHandler ("onMarkerHit", Minicio7, inicio7)

function startJob7 (thePlayer, cmd)
	if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo.
		if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele.
			destroyElement (veh[thePlayer])
			veh[thePlayer] = nil
		end
		veh[thePlayer] = createVehicle (577, 1443.5461425781, 1459.3911132813, 10.8203125) -- Cria o veículo do trampo.
		local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1].
		Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 2, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1.
		setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele.
		setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence.
		Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker.
		warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo.
        setPedSkin ( thePlayer, 72 )
		dxMsg(thePlayer, "Comandante, Vá buscar os passageiros.", "info")
        ped1 = createPed ( 1, 1591.1002197266,-2462.6525878906,13.5546875 )
        setPedRotation(ped1, 181)
        ped2 = createPed ( 7, 1591.2203369141,-2459.6557617188,13.5546875 )
        setPedRotation(ped2, 181)
        ped3 = createPed ( 15, 1591.1318359375,-2456.8723144531,13.5546875 )
        setPedRotation(ped3, 181)
		dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info")
        setPedAnimation( ped1, "ped", "WOMAN_walknorm")
        setPedAnimation( ped2, "ped", "WOMAN_walknorm")
        setPedAnimation( ped3, "ped", "WOMAN_walknorm")
        setTimer(function(thePlayer)
		if isElement(ped1[thePlayer]) then destroyElement (ped1[thePlayer]) end
		ped1[thePlayer] = nil
		if isElement(ped2[thePlayer]) then destroyElement (ped2[thePlayer]) end
		ped2[thePlayer] = nil
		if isElement(ped3[thePlayer]) then destroyElement (ped3[thePlayer]) end
		ped3[thePlayer] = nil
		dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora.
		addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo.
		end, 7000, 1,thePlayer)
	end
end
addCommandHandler ("emprego7", startJob7)

function fim7 (hitElement)
	if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então:
		if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então:
			if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem)
				local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos.
				setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada.
				setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker.
				dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça.
			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)
				dxMsg(hitElement, "Recebendo Pagamento...", "info")
				setTimer(function(hitElement)
					removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado.
					destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador.
					givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo.
					if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo.
					Bfim7[hitElement] = nil
					if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo.
					Mfim7[hitElement] = nil
					dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo.
				end, 5000, 1,hitElement)
			end
		end
	end
end

function sair7 (thePlayer)
	if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então:
		removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo.
		destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo.
		destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo.
		Bfim7[thePlayer] = nil
		destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo.
		Mfim7[thePlayer] = nil
		dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo.
	end
end
addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer.

function quit7 ()
		if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
		if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
		if isElement(veh[source]) then destroyElement(veh[source]) end
        if isElement(ped1[source]) then destroyElement (ped1[source]) end
        if isElement(ped2[source]) then destroyElement (ped2[source]) end
        if isElement(ped3[source]) then destroyElement (ped3[source]) end
		Bfim7[source] = nil
		Mfim7[source] = nil
		veh[source] = nil
		ped1[source] = nil
		ped2[source] = nil
		ped3[source] = nil
end
addEventHandler("onPlayerQuit", getRootElement(), quit7)

function kill7 ()
	if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
	if isElement(Mfim7[source]) then
		destroyElement (Mfim7[source])
		dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error")
	end
	if isElement(veh[source]) then destroyElement(veh[source]) end
        if isElement(ped1[source]) then destroyElement (ped1[source]) end
        if isElement(ped2[source]) then destroyElement (ped2[source]) end
        if isElement(ped3[source]) then destroyElement (ped3[source]) end
	Bfim7[source] = nil
	Mfim7[source] = nil
	veh[source] = nil
	ped1[source] = nil
	ped2[source] = nil
	ped3[source] = nil
end
addEventHandler("onPlayerWasted", getRootElement(), kill7)

function logout7 ()
		if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
		if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
		if isElement(veh[source]) then destroyElement(veh[source]) end
        if isElement(ped1[source]) then destroyElement (ped1[source]) end
        if isElement(ped2[source]) then destroyElement (ped2[source]) end
        if isElement(ped3[source]) then destroyElement (ped3[source]) end
		Bfim7[source] = nil
		Mfim7[source] = nil
		veh[source] = nil
		ped1[source] = nil
		ped2[source] = nil
		ped3[source] = nil
end
addEventHandler("onPlayerLogout", getRootElement(), logout7)

function dxMsg(source, text, type)
	exports.dxmessages:outputDx(source, text, type)
end

Adicionei outra table porque seria assim, na primeira ele iria buscar os passageiros, na segunda, ele iria leva-los ao aeroporto, e na terceira, ele iria levar o aviao de volta ao aeroporto do inicio.

Link to comment

Você tá manipulando os peds como se estivessem em tabelas, sendo que quando criou os peds armazenou em variáveis comuns.

Verificar o player no setTimer seria um simples: if not isElement(thePlayer) then return end pois assim evita o código continuar caso o player saia do servidor, e nesse caso thePlayer seria igual a nil.

Instruções do tipo:

if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
Bfim7[source] = nil

Seriam adequadas assim:

if isElement(Bfim7[source]) then
      destroyElement (Bfim7[source])
      Bfim7[source] = nil
end

 

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

Você tá manipulando os peds como se estivessem em tabelas, sendo que quando criou os peds armazenou em variáveis comuns.

Verificar o player no setTimer seria um simples: if not isElement(thePlayer) then return end pois assim evita o código continuar caso o player saia do servidor, e nesse caso thePlayer seria igual a nil.

Instruções do tipo:


if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) endBfim7[source] = nil

Seriam adequadas assim:


if isElement(Bfim7[source]) then      destroyElement (Bfim7[source])      Bfim7[source] = nilend

 

Me mostra um exemplo sobre os peds ? eu teria de fazer um createMarker própio para os peds, e na table eu deixaria apenas os 2 locais?

Link to comment
  • Other Languages Moderators

Corrigi várias coisas, entre elas o seguinte:

  • Corrigi os outputChatBox que estavam com código hexadecimal no início, mudei pro código RGB nos parâmetros.
  • Aumentei o tamanho dos markers de objetivo, que estavam pequenos demais, sendo necessário passar com o avião no lugar exato pra conseguir.
  • Criei a 3 posição em LV, assim o jogador começa e finaliza no mesmo aeroporto.
  • Mudei as posições de objetivo, colocando-os no meio da pista pra facilitar.
  • Mudei a posição onde cria o avião e os Peds.
  • Removi as linhas que setavam rotação nos Peds, em vez disso declaro a rotação deles no createPed.
  • Deixei os Peds em tables também.
  • Corrigi algumas indentações.
  • Adicionei verificador do jogador nos timers, caso ele quite antes do tempo.
Spoiler

destinos = {
	[1] = {1613, -2495, 13.5}, -- table com todos os destinos em ordem.
	[2] = {-1489.4, -107, 14.2},
	[3] = {1388.96, 1559.37, 11}
}

local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando.

local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente.
local Mfim7 = {} -- Marker final específico do player.
local Bfim7 = {} -- Blip do marker final específico do player.
local ped1 = {} -- Passageiros1 específicos do player.
local ped2 = {} -- Passageiros2 específicos do player.
local ped3 = {} -- Passageiros3 específicos do player.

function inicio7 (hitElement)
	if hitElement and getElementType (hitElement) == "player" and not getPedOccupiedVehicle (hitElement) then -- Quando o jogador colide no marker e está sem veículo, então:
		outputChatBox ("────────────────  Trabalho BvP™  ────────────────", hitElement, 16, 102, 231) -- Avisa pra ele usar o comando /emprego7 para começar o emprego.
		outputChatBox ("Trabalho de Piloto de Avião #FFFFFF→  Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.", hitElement, 255, 0, 0, true)
		outputChatBox ("                                                        ", hitElement)
		outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.", hitElement, 255, 255, 255, true)
		outputChatBox ("───────────────────────────────────────────", hitElement, 16, 102, 231)
	end
end
addEventHandler ("onMarkerHit", Minicio7, inicio7)

function startJob7 (thePlayer, cmd)
	if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo.
		if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele.
			destroyElement (veh[thePlayer])
			veh[thePlayer] = nil
		end
		veh[thePlayer] = createVehicle (577, 1478.73, 1808.07, 10.8203125, 0, 0, 180) -- Cria o veículo do trampo.
		local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1].
		Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 10, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1.
		setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele.
		setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence.
		Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker.
		warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo.
		setPedSkin (thePlayer, 72)
		ped1[thePlayer] = createPed (1, 1467, 1790, 10.81, 270)
		ped2[thePlayer] = createPed (7, 1468, 1790, 10.81, 270)
		ped3[thePlayer] = createPed (15, 1469, 1790, 10.81, 270)
		dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info")
		setPedAnimation (ped1[thePlayer], "ped", "WOMAN_walknorm")
		setPedAnimation (ped2[thePlayer], "ped", "WOMAN_walknorm")
		setPedAnimation (ped3[thePlayer], "ped", "WOMAN_walknorm")
		setTimer(function(thePlayer)
			if not isElement (thePlayer) then return end
			destroyElement (ped1[thePlayer])
			destroyElement (ped2[thePlayer])
			destroyElement (ped3[thePlayer])
			ped1[thePlayer] = nil
			ped2[thePlayer] = nil
			ped3[thePlayer] = nil
			dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora.
			addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo.
		end, 7000, 1,thePlayer)
	end
end
addCommandHandler ("emprego7", startJob7)

function fim7 (hitElement)
	if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então:
		if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então:
			if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem)
				local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos.
				setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada.
				setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker.
				dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça.
			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)
				dxMsg(hitElement, "Recebendo Pagamento...", "info")
				setTimer(function(hitElement)
					if not isElement (hitElement) then return end
					removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado.
					destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador.
					veh[hitElement] = nil
					givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo.
					if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo.
					Bfim7[hitElement] = nil
					if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo.
					Mfim7[hitElement] = nil
					dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo.
				end, 5000, 1, hitElement)
			end
		end
	end
end

function sair7 (thePlayer)
	if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então:
		removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo.
		destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo.
		destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo.
		Bfim7[thePlayer] = nil
		destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo.
		Mfim7[thePlayer] = nil
		dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo.
	end
end
addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer.

function quit7 ()
	if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
	if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
	if isElement(veh[source]) then destroyElement(veh[source]) end
	Bfim7[source] = nil
	Mfim7[source] = nil
	veh[source] = nil
	if isElement(ped1[source]) then destroyElement (ped1[source]) end
	if isElement(ped2[source]) then destroyElement (ped2[source]) end
	if isElement(ped3[source]) then destroyElement (ped3[source]) end
	ped1[source] = nil
	ped2[source] = nil
	ped3[source] = nil
end
addEventHandler ("onPlayerQuit", getRootElement(), quit7)

function kill7 ()
	if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
	if isElement(Mfim7[source]) then
		destroyElement (Mfim7[source])
		dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error")
	end
	if isElement(veh[source]) then destroyElement(veh[source]) end
	Bfim7[source] = nil
	Mfim7[source] = nil
	veh[source] = nil
	if isElement(ped1[source]) then destroyElement (ped1[source]) end
	if isElement(ped2[source]) then destroyElement (ped2[source]) end
	if isElement(ped3[source]) then destroyElement (ped3[source]) end
	ped1[source] = nil
	ped2[source] = nil
	ped3[source] = nil
end
addEventHandler ("onPlayerWasted", getRootElement(), kill7)

function logout7 ()
	if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end
	if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end
	if isElement(veh[source]) then destroyElement(veh[source]) end
	Bfim7[source] = nil
	Mfim7[source] = nil
	veh[source] = nil
	if isElement(ped1[source]) then destroyElement (ped1[source]) end
	if isElement(ped2[source]) then destroyElement (ped2[source]) end
	if isElement(ped3[source]) then destroyElement (ped3[source]) end
	ped1[source] = nil
	ped2[source] = nil
	ped3[source] = nil
end
addEventHandler ("onPlayerLogout", getRootElement(), logout7)

function dxMsg (source, text, type)
	exports.dxmessages:outputDx(source, text, type)
end

 

 

Edited by Lord Henry
  • Like 1
  • Thanks 1
Link to comment
2 hours ago, #Horus said:

Voces são uma segunda familia pra mim ❤️

Que bom saber disso rsrs, na verdade pessoas novas por aqui também me deixa muito feliz, pois significa que a comunidade está crescendo e na ativa.

Agora, percebi que você já tem mais de 100 posts, muito bom, mas já deveria ter aprendido que o local destinado a esses posts é a seção Programação em Lua.

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