Jump to content

Recommended Posts

Posted

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 ❤️

  • Other Languages Moderators
Posted

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
Posted

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

Posted

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
Posted
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?

  • Other Languages Moderators
Posted (edited)

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

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