NeoGM Posted July 24, 2019 Share Posted July 24, 2019 (edited) --[[ ################################################ # # # Script Criado Por # # FACEBOOK.COM/AIRNEWSCR # # # # # ################################################ --]] 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 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 else if getElementData ( player, "Emprego" ) == "Mecanico" then setElementData ( player, "Emprego", false ) end end end end end setTimer ( Verificar_Emprego_Atual, 5000, 0 ) -------------------------------------------------------------------- Edited July 24, 2019 by Lord Henry Formatado texto para código Lua Link to comment
Other Languages Moderators Lord Henry Posted July 24, 2019 Other Languages Moderators Share Posted July 24, 2019 (edited) Texto corrigido para se adequar as regras de formatação do fórum. Movido para a seção correta de Programação em Lua. Da próxima vez, utilize o botão <> do fórum para postar códigos em vez de colar direto no texto. Veja as regras do fórum aqui: Edited July 24, 2019 by Lord Henry 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now