Jump to content

Como desvincula o emprego de mecânico da agência?


Recommended Posts

Alguém me ajuda informando como desvincula o emprego de Mecânico da Agencia! 

Spoiler

removeWorldModel ( 1412, 30, 207.5, -248.69999694824, 1.57813 ) -- Cercas
removeWorldModel ( 781, 3, 196.66397, -268.06937, 1.57813 ) -- Arvore
removeWorldModel ( 13437, 50, 195.24310, -236.23383, 1.36875 ) -- Arvore

MecanicoPickup = createPickup ( 196.97218, -232.41890, 1.55537, 3, 1210)
MarkerMecanico = createMarker ( 196.97218, -232.41890, 1.55537, "cylinder", 1.2, 255, 255, 255, 0 )
attachElements ( MarkerMecanico, MecanicoPickup, 0, 0, -1 )
BlipMecanico = createBlipAttachedTo ( MarkerMecanico, 42 )
setBlipVisibleDistance ( BlipMecanico, 150 )

function CancelarSumirPickup ( player )
	cancelEvent()
end
addEventHandler ( "onPickupHit", MecanicoPickup, CancelarSumirPickup )

--------------------------------------------------------------------

ValorPorReparar = 500
LetraParaMarkers = "k"
cmd1 = "reparar" -- /Reparar nick - Para Reparar o Veiculo de um Jogador
cmd2 = "recusar" -- /Recusar - Para Recusar o Reparo do Mecanico
cmd3 = "aceitar" -- /Aceitar - Para Aceitar o Reparo do Mecanico
cmd4 = "mecanico" -- /Mecanicos - Para Chamar os Mecanicos Online do Servidor
cmd5 = "profissao" -- /Profissao - Para ver os Comandos da Profissão Atual
cmd6 = "hq" -- /HQ -- Localiza / Deslocaliza o Seu Local de Trabalho

--------------------------------------------------------------------

local HQMecanicoBlip = createBlip ( 206.11905, -260.74591, 1.36875 )
setElementVisibleTo ( HQMecanicoBlip, root, false )

--------------------------------------------------------------------

function VerificarBlipEmprego(player)
	if player then
		acc = getPlayerAccount ( player )
		if isGuestAccount ( acc ) then return end
		setElementVisibleTo ( HQMecanicoBlip, player, false )
	end
end

setTimer(function()
	for i, pl in pairs(getElementsByType("player")) do
		if pl ~= (false or nil) then
			if getElementData ( pl, "Emprego" ) == "Mecanico" then return end
			VerificarBlipEmprego(pl)
		end
	end
end, 3000,0)

--------------------------------------------------------------------

function ComandoHQ ( source )
	if getElementData ( source, "Emprego" ) == "Mecanico" then
		if isElementVisibleTo ( HQMecanicoBlip, source ) then
			setElementVisibleTo ( HQMecanicoBlip, source, false )
			exports.Scripts_Dxmessages:outputDx(source, "Seu Local de Trabalho foi Desmarcado do Mapa!", "info")
		else
			setElementVisibleTo ( HQMecanicoBlip, source, true )
			exports.Scripts_Dxmessages:outputDx(source, "Seu Local de Trabalho foi Marcado no Mapa!", "info")
		end
	end
end
addCommandHandler ( cmd6, ComandoHQ )

function RecusarEmprego01 (source)
	exports.Scripts_OnMarkerMsgs_:delete(source)
	unbindKey ( source, LetraParaMarkers, "down", RecusarEmprego01 )
	if isElementVisibleTo ( HQMecanicoBlip, source ) then
		setElementVisibleTo ( HQMecanicoBlip, source, false )
	end
	removeElementData ( source, "Emprego", "Mecanico" )
	exports.Scripts_Dxmessages:outputDx(source, "Você se Demitiu do Emprego de Mecânico com Sucesso!", "warning")
end

function emarker(marker,md) 
	if (md) then
		if isPedInVehicle ( source ) then return end
		if marker == MarkerMecanico then
			if getElementData ( source, "Emprego" ) == "Mecanico" then
				exports.Scripts_OnMarkerMsgs_:create(source,"Aperte 'K' Para se Demitir do Emprego de Mecânico")
				bindKey ( source, LetraParaMarkers, "down", RecusarEmprego01 )
			end
		end
	end    
end
addEventHandler("onPlayerMarkerHit",getRootElement(),emarker)

function lmarker(marker,md)
	if (md) then
		if marker == MarkerMecanico then
			exports.Scripts_OnMarkerMsgs_:delete(source)            
			unbindKey ( source, LetraParaMarkers, "down", RecusarEmprego01 )
		end
	end
end
addEventHandler("onPlayerMarkerLeave",getRootElement(),lmarker)

canceltimer={}
function fix(source,cmd,pname)
	if getElementData(source, "Emprego" ) == "Mecanico" then
		local cliente = getPlayerFromPartialName(pname)
		if isElement(cliente) then
			if cliente == source then exports.Scripts_Dxmessages:outputDx(source, "Você não Pode Oferecer Reparos Para Você Mesmo!", "error") return end
			if isPedInVehicle(cliente) then
				local seat = getPedOccupiedVehicleSeat(cliente)
				if seat == 0 then
					local mecanico = getElementData(cliente,"cliente:mecanico")
					if isElement(mecanico) then
						exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Ja Esta Sendo Atendido Por um Mecanico!", "error")
					else
						local cx,cy,cz = getElementPosition(cliente)
						local x,y,z = getElementPosition(source)
						local dist = getDistanceBetweenPoints3D(x,y,z,cx,cy,cz)
						if dist <= 7 then
							local cmoney = getPlayerMoney(cliente)
							if cmoney >= ValorPorReparar then
								setElementData(cliente,"cliente:mecanico",source)
								exports.Scripts_Dxmessages:outputDx(source, "Você Ofereceu Serviços de Reparo para o Jogador "..getPlayerName(cliente), "warning")
								exports.Scripts_Dxmessages:outputDx(cliente, "O Mecanico "..getPlayerName(source).." Quer Reparar seu Veiculo Por $"..ValorPorReparar..", Digite /Aceitar ou /Recusar.", "warning")
								canceltimer[cliente] = setTimer(cancelfix,10000,1,cliente)
							else
								exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não tem Dinheiro Suficiente!", "error")
							end
						end
					end
				else
					exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não é o Motorista do Veiculo!", "error")
				end
			else
				exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não Esta em um Veiculo!", "error")
			end
		else
			exports.Scripts_Dxmessages:outputDx(source, "O Jogador Não Foi Encontrado", "error")
		end
	end
end
addCommandHandler(cmd1,fix)

--------------------------------------------------------------------

function recusar(source)
	local mecanico = getElementData(source,"cliente:mecanico")
	if isElement(mecanico) then
		exports.Scripts_Dxmessages:outputDx(mecanico, "O Jogador "..getPlayerName(source).." Recusou o Reparo!", "error") -- Mecanico
		exports.Scripts_Dxmessages:outputDx(source, "Você Recusou o Reparo", "success")
	end
	setElementData(source,"cliente:mecanico",nil)    
	if isTimer(canceltimer[source]) then
		killTimer(canceltimer[source])
	end
end
addCommandHandler(cmd2,recusar)

--------------------------------------------------------------------

function aceitar(source)
	local mecanico = getElementData(source,"cliente:mecanico")
	if isElement(mecanico) then
		if not isPedInVehicle(source) then
			exports.Scripts_Dxmessages:outputDx(mecanico, "O Jogador Aceitou o Reparo, Porem não Esta em um Veiculo!", "warning")
			exports.Scripts_Dxmessages:outputDx(source, "Você Não Pode Aceitar um Reparo Fora de um Veiculo!", "warning") return end
			--Procurado = getPlayerWantedLevel ( source )
			--if Procurado > 0 then
				--exports.Scripts_Dxmessages:outputDx(source, "Você Esta Procurado e Não Podera Aceitar o Reparo!", "warning")
				--exports.Scripts_Dxmessages:outputDx(mecanico, "O Jogador Aceitou o Reparo, Porem Estava Procurado, Reparo Cancelado!", "warning")
				--return
			--end
			exports.Scripts_Dxmessages:outputDx(mecanico, "O Jogador "..getPlayerName(source).." Aceitou o Reparo", "success")
			local cx,cy,cz = getElementPosition(mecanico)
			local x,y,z = getElementPosition(source)
			local dist = getDistanceBetweenPoints3D(x,y,z,cx,cy,cz)
			if dist <= 7 then    
				if isPedInVehicle(source) then
					local seat = getPedOccupiedVehicleSeat(source)
					if seat == 0 then            
						local vh = getPedOccupiedVehicle(source)
						if isElement(vh) then
							setElementHealth(vh,1000)
							fixVehicle(vh)
							setVehicleEngineState(vh,true)
							if isVehicleDamageProof(vh) then
								setVehicleDamageProof(vh,false)
							end
						end
						takePlayerMoney(source,ValorPorReparar)
						givePlayerMoney(mecanico,ValorPorReparar)
						exports.Scripts_Dxmessages:outputDx(mecanico, "Você Recebeu $"..ValorPorReparar.." Por Reparar um Veiculo!", "success")
						exports.Scripts_Dxmessages:outputDx(source, "Você Pagou $"..ValorPorReparar.." Ao Mecanico Por Reparar seu Veiculo!", "success")
						setElementData ( mecanico, "AirNewSCR_LiberarXP", "Sim" )
					end
				end
			else
				exports.Scripts_Dxmessages:outputDx(source, "O Mecanico Esta Muito Longe!", "error")
				exports.Scripts_Dxmessages:outputDx(mecanico, "Você Esta Muito Longe do Cliente!", "error")
			end
		end
		setElementData(source,"cliente:mecanico",nil)    
		if isTimer(canceltimer[source]) then
			killTimer(canceltimer[source])
		end
	end
end
addCommandHandler(cmd3,aceitar)

--------------------------------------------------------------------

function cancelfix(source)
	local mecanico = getElementData(source,"cliente:mecanico")
	if isElement(mecanico) then
		exports.Scripts_Dxmessages:outputDx(mecanico, "O Jogador "..getPlayerName(source).." Demorou Para Aceitar o Reparo!", "error")
	end
	exports.Scripts_Dxmessages:outputDx(source, "Você Demorou Demais Para Aceitar o Reparo!", "error")
	setElementData(source,"cliente:mecanico",nil)    
end

--------------------------------------------------------------------

function getPlayerFromPartialName(name)
	local name = name and name:gsub("#%x%x%x%x%x%x", ""?lower() or nil
	if name then
		for _, player in ipairs(getElementsByType("player")) do
			local name_ = getPlayerName(player?gsub("#%x%x%x%x%x%x", ""?lower()
			if name_:find(name, 1, true) then
				return player
			end
		end
	end
end

--------------------------------------------------------------------

addEventHandler("onVehicleDamage", getRootElement(),function(loss)
	if getElementType ( source ) == "vehicle" then
		if not isVehicleDamageProof(source) then
			local HP = getElementHealth(source)-loss        
			if HP <= 350 then 
				HP = 350 
				setElementHealth(source,350)
				setVehicleEngineState(source,false)
				setVehicleDamageProof(source,true)
				if isVehicleBlown(source) then
					fixVehicle(source)    
					setElementHealth(source,350)
					setVehicleDamageProof(source,true)
				end
			end
		end
	end
end)

--------------------------------------------------------------------

function DesligarAndLigar ( playerSource )
	if math.floor ( getElementHealth( source ) + 0.5 ) > 350 then 
		setVehicleDamageProof( source, false ) -- Não Quebrado
	else
		setVehicleEngineState( source, false ) -- Quebrado
		triggerClientEvent ( "Mecanico>Quebrado", playerSource )
	end
end
addEventHandler ( "onVehicleEnter", root, DesligarAndLigar )

--------------------------------------------------------------------

function MecanicoVem(source)
	for i, player in ipairs(getElementsByType("player")) do
		local uj = getElementData(player, "Emprego" ) or false
		--if type(uj) == "boolean" then
			if uj == "Mecanico" then
				exports.Scripts_Dxmessages:outputDx(player, "O Jogador "..getPlayerName(source).." Chamou Por um Mecanico! Digite /Localizar "..getPlayerName(source), "warning")
			end
		--end
	end        
end
addCommandHandler(cmd4,MecanicoVem)

--------------------------------------------------------------------

function ComandoMecanico ( ThePlayer )
	exports.Scripts_Dxmessages:outputDx(ThePlayer, "Os Mecanicos Foram Avisados, Aguarde no Local!", "warning")
	setElementData ( ThePlayer, "Chamado:Mecanico", true )
	setTimer ( function() removeElementData ( ThePlayer, "Chamado:Mecanico" ) end, 60000, 1 )
end
addCommandHandler(cmd4, ComandoMecanico )

--------------------------------------------------------------------

function ComandosProf ( ThePlayer )
	if getElementData ( ThePlayer, "Emprego" ) == "Mecanico" then
		playSoundFrontEnd ( ThePlayer, 43 )
		outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Profissão #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #BEE09AComandos da Profissão de Mecânico", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #55D444/HQ #ffffff- #9ABDE0Para Marcar / Desmarcar o seu Local de Trabalho", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #55D444/Reparar Nick #ffffff- #9ABDE0Para Reparar um Veiculo de outro Jogador", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #55D444/Localizar Nick #ffffff- #9ABDE0Para Localizar um Jogador", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #55D444/Deslocalizar #ffffff- #9ABDE0Para Deslocalizar um Jogador", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F96031» #FFD700Entre no Veiculo da Profissão, Aguarde um Chamado por um Mecanico!", ThePlayer, 255, 255, 255, true )
		outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Profissão #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~", ThePlayer, 255, 255, 255, true )
	end
end
addCommandHandler(cmd5, ComandosProf )

--------------------------------------------------------------------

function CriarVeiculosComData ()
	VeiculosComData = {
		createVehicle(525, 196.30507, -252.62512, 1.3, 0, 0, 180 ),
		createVehicle(525, 201.30507, -252.62512, 1.3, 0, 0, 180 ),
		createVehicle(525, 206.30507, -252.62512, 1.3, 0, 0, 180 ),
		createVehicle(525, 211.30507, -252.62512, 1.3, 0, 0, 180 ),
		createVehicle(525, 216.30507, -252.62512, 1.3, 0, 0, 180 ),
		createVehicle(525, 196.30507, -268.03806, 1.3, 0, 0, 0 ),
		createVehicle(525, 201.30507, -268.03806, 1.3, 0, 0, 0 ),
		createVehicle(525, 206.30507, -268.03806, 1.3, 0, 0, 0 ),
		createVehicle(525, 211.30507, -268.03806, 1.3, 0, 0, 0 ),
		createVehicle(525, 216.30507, -268.03806, 1.3, 0, 0, 0 ),
	}

	for i, veh in ipairs(VeiculosComData) do
		setElementData ( veh, "Emprego", "Mecanico" )
		setVehicleDamageProof(veh,true)
		setVehicleColor( veh, 255, 255, 255 )
		setVehiclePlateText ( veh, "RPGAMING" )
		addEventHandler("onVehicleStartEnter", veh, VerificarEmprego )
		--addEventHandler("onVehicleExit", veh, SairDoVeiculosComData )
		local tx, ty, tz = getElementPosition(veh)
		local rx, ry, rz = getElementRotation(veh)
		setVehicleRespawnPosition(veh, tx, ty, tz, rx, ry, rz)
	end
end
addEventHandler("onResourceStart", resourceRoot, CriarVeiculosComData )

function VerificarEmprego (thePlayer, seat)
	local Jogador = getElementData(thePlayer, "Emprego" )
	if seat == 0 then
		if Jogador == "Mecanico" then
		else
			cancelEvent()
			exports.Scripts_Dxmessages:outputDx(thePlayer, "Esse Veiculo é Exclusivo dos Mecânicos!", "error")
		end
	end
end

--[[function SairDoVeiculosComData ()
	local veh = source
	setTimer(function()
		if getVehicleOccupant(veh) == false then
			respawnVehicle(veh)
		end
	end, 30000, 1)
end
addEventHandler ( "onPlayerQuit", getRootElement(), SairDoVeiculosComData ) --]]

--------------------------------------------------------------------

local rElement = getRootElement() 
Tempo_Respawn = 5

function respawnVehicles(player, seconds)
	outputChatBox ( "[BCR]: Fique atento(a), respeite Todas Regras do nosso Servidor!", root, 255, 255, 255, true )
	outputChatBox ( "[BCR]: Participe de nossa comunidade, acesse nosso Grupo do WhatsApp. Link no Discord!", root, 255, 255, 255, true )
	for i, veh in ipairs(VeiculosComData) do
		if isEmpty( veh ) then
			setTimer ( function()
				respawnVehicle ( veh ) 
			end, 10000, 1 )
		end 
	end 
end
setTimer(respawnVehicles, Tempo_Respawn * 60000,0)

function isEmpty( vehicle ) 
	local passengers = getVehicleMaxPassengers( vehicle ) 
	if type( passengers ) == 'number' then 
		for seat = 0, passengers do 
			if getVehicleOccupant( vehicle, seat ) then 
				return false 
			end
		end 
	end
	return true 
end

Grupo = "Mecanico"

function Verificar_Emprego_Atual ( )
	for i, player in ipairs(getElementsByType("player")) do
		local acc = getPlayerAccount(player)
		if acc and not isGuestAccount(acc) then
			local accName = getAccountName (acc)
			if isObjectInACLGroup ("user."..accName, aclGetGroup ( Grupo ) ) then
				if getElementData ( player, "Emprego" ) == false then
					setElementData ( player, "Emprego", "Mecanico" )
				end
			elseif getElementData ( player, "Emprego" ) == "Mecanico" then
				setElementData ( player, "Emprego", false )
			end
		end
	end
end
setTimer ( Verificar_Emprego_Atual, 5000, 0 )

--------------------------------------------------------------------

 

 

Edited by Lord Henry
Código indentado e convertido de texto para Lua
Link to comment
  • Lord Henry changed the title to Como desvincula o emprego de mecânico da agência?

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