Jump to content

Eu queria desvincular o emprego de mecanico com a Agencia de Empregos!


Recommended Posts

--[[

 ################################################
 #                                              #
 #              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 by Lord Henry
Formatado texto para código Lua
Link to comment
  • Other Languages Moderators

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 by Lord Henry
  • Thanks 1
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...