Jump to content

Ayuda - Help (resource Petroleo) Español, English, Português


AndyAzh

Recommended Posts

Necesito ayuda con este script de trabajo para Petrolero. El trabajo consiste en que después de aceptar el trabajo en la agencia y en el punto de lugar. Agarrar un Camión, ingresar a una plataforma, seleccionar el destino o ruta, luego de eso se te añade el tráiler atrás del camión y llevarlo a una gasolinera dejar la carga y que te pague al dejarla.

Hasta ahí todo bien y funciona, excepto el pago. cuando dejas la carga no da el dinero, tampoco sale la alerta de haberla entregado. 

Lo compare con la mayoría de los scripts de trabajos que si pagan y no logro encontrar el fallo. ¿Alguien me podría decir que es lo que esta mal?

 

dejo el client y server, el meta y mapeo que tienen estan bien y funcionando. los paneles para elegir rutas tambien. Solo el final del recorrido es lo que no da el pago....

 

NOTA: el script original esta en portugues, yo voy traduciendo al español solo los dxDrawText, outputChatBox y los comandos por escrito,

este es el client  

↓↓↓↓↓↓

 

 

local screenW,screenH = guiGetScreenSize()
local resW, resH = 1366,768
local x, y = (screenW/resW), (screenH/resH)

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

function Window(rnames)
  if isElement(myWindow) then return end
  local screenW, screenH = guiGetScreenSize()
    
  myWindow = guiCreateWindow((screenW - x*485) / 2, (screenH - y*404) / 2, x*485, y*404, "Rotas", false)
  Rotas = guiCreateGridList(x*40, y*40, x*405, y*275, false, myWindow)
  guiWindowSetSizable(myWindow, false)
  guiSetAlpha(Rotas, x*0.70)
  guiGridListAddColumn( Rotas, "Rotas", x*0.85 )
    
  for k,v in pairs(rnames) do
   row =  guiGridListAddRow ( Rotas )
   guiGridListSetItemText ( Rotas, row, 1,  tostring(k), false, false )
  end
    
  showCursor(true)
    
  fechar = guiCreateButton(x*275, y*334, x*168, y*35, "Cerrar", false, myWindow)
  escolher = guiCreateButton(x*42, y*334, x*168, y*35, "Cargar", false, myWindow)
end
addEvent("JOBUS>AbrirPainel<Client", true)
addEventHandler("JOBUS>AbrirPainel<Client", localPlayer, Window)

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

function botoes(bt,state)
    if state == "up" and bt == "left" then
        if source == fechar then
            if isElement(myWindow) then
                destroyElement(myWindow)
                showCursor(false)
            end
        end
        if source == escolher then
            local selectedItemx = guiGridListGetSelectedItem(Rotas)
            local nome = guiGridListGetItemText(Rotas, selectedItemx, 1)
            if nome == nil then
            exports.Script_Textos:createNewDxMessage('Seleccione una ruta para cargar su camión!', 255, 255, 255) return end
            triggerServerEvent("request>Startrota>Server",localPlayer,localPlayer,nome)    
            if isElement(myWindow) then
                destroyElement(myWindow)
                showCursor(false)
            end            
        end
    end
end
addEventHandler("onClientGUIClick", root,botoes)

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

function blips(state,x,y,z)
    if state == true then
        if not isElement(blips) then
            blips = createBlip( x, y, z )
        end
    else
        if isElement(blips) then
            destroyElement(blips)
        end    
    end
end
addEvent("JOBUS>blips<Client", true)
addEventHandler("JOBUS>blips<Client", localPlayer, blips)

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

local g_screenX, g_screenY = guiGetScreenSize(); 
local gScale = 0.3; 
local gAlphaDistance = 25; 
local gMaxDistance = 50;
local gTextAlpha = 120; 
local gTextSize = 0.7; 
local gAlphaDiff = gMaxDistance - gAlphaDistance;  
gScale = 1 / gScale * 800 / g_screenY; 
local gMaxScaleCurve = { { 0, 0 }, { 3, 3 }, { 13, 5 } }; 
local gTextScaleCurve = { { 0, 0.8 }, { 0.8, 1.2 }, { 99, 99 } }; 
local gTextAlphaCurve = { { 0, 0 }, { 25, 100 }, { 120, 190 }, { 255, 190 } }; 

local x = 269.73334
local y = 1415.76489
local z = 10
                
addEventHandler("onClientRender",getRootElement(), 
function() 
    
    local px,py,pz = getElementPosition(getLocalPlayer()) 
    
    local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
    if distance <= 50 then
    
    local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) 
    if not sx then return end 
    
    local scale = 1 / ( gScale * ( distance / gMaxDistance ) ); 
    local alpha = ( ( distance - gAlphaDistance ) / gAlphaDiff ); 
    alpha = ( alpha < 0 ) and gTextAlpha or gTextAlpha - ( alpha * gTextAlpha ); 
    scale = math.evalCurve( gMaxScaleCurve, scale ); 
    local textscale = math.evalCurve( gTextScaleCurve, scale ); 
    local textalpha = math.evalCurve( gTextAlphaCurve, alpha ); 
    
    dxDrawText ( ">>Entrada del Area de Cargamento>>", sx, sy - 30, sx, sy - 30, tocolor ( 0, 0, 0, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    dxDrawText ( ">>Entrada del Area de Cargamento>>", sx -2, sy - 30 -2, sx -1, sy - 30 -2, tocolor ( 255, 0, 0, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    
end 
end 
)

local x = 269.34631
local y = 1393.52222
local z = 10
                
addEventHandler("onClientRender",getRootElement(), 
function() 
    
    local px,py,pz = getElementPosition(getLocalPlayer()) 
    
    local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
    if distance <= 50 then
    
    local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) 
    if not sx then return end 
    
    local scale = 1 / ( gScale * ( distance / gMaxDistance ) ); 
    local alpha = ( ( distance - gAlphaDistance ) / gAlphaDiff ); 
    alpha = ( alpha < 0 ) and gTextAlpha or gTextAlpha - ( alpha * gTextAlpha ); 
    scale = math.evalCurve( gMaxScaleCurve, scale ); 
    local textscale = math.evalCurve( gTextScaleCurve, scale ); 
    local textalpha = math.evalCurve( gTextAlphaCurve, alpha ); 
    
    dxDrawText ( "<<Salida del Area de Cargamento<<", sx, sy - 30, sx, sy - 30, tocolor ( 0, 0, 0, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    dxDrawText ( "<<Salida del Area de Cargamento<<", sx -2, sy - 30 -2, sx -1, sy - 30 -2, tocolor ( 255, 0, 0, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    
end 
end 
)

local x = 192.2998046875
local y = 1400.599609375
local z = 10
                
addEventHandler("onClientRender",getRootElement(), 
function() 
    
    local px,py,pz = getElementPosition(getLocalPlayer()) 
    
    local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
    if distance <= 50 then
    
    local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) 
    if not sx then return end 
    
    local scale = 1 / ( gScale * ( distance / gMaxDistance ) ); 
    local alpha = ( ( distance - gAlphaDistance ) / gAlphaDiff ); 
    alpha = ( alpha < 0 ) and gTextAlpha or gTextAlpha - ( alpha * gTextAlpha ); 
    scale = math.evalCurve( gMaxScaleCurve, scale ); 
    local textscale = math.evalCurve( gTextScaleCurve, scale ); 
    local textalpha = math.evalCurve( gTextAlphaCurve, alpha ); 
    
    dxDrawText ( "Area del Cargamento", sx, sy - 30, sx, sy - 30, tocolor ( 0, 0, 0, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    dxDrawText ( "Area del Cargamento", sx -2, sy - 30 -2, sx -1, sy - 30 -2, tocolor ( 8, 114, 246, textalpha ), textscale * gTextSize, "arial", "center", "bottom", false, false, false, true ); 
    
end 
end 
)
  
function math.evalCurve( curve, input ) 
    if input < curve[ 1 ][ 1 ] then 
        return curve[ 1 ][ 2 ]; 
    end 
    for idx = 2, #curve do 
        if input < curve[ idx ][ 1 ] then 
            local x1 = curve[ idx - 1 ][ 1 ]; 
            local y1 = curve[ idx - 1 ][ 2 ]; 
            local x2 = curve[ idx ][ 1 ]; 
            local y2 = curve[ idx ][ 2 ]; 
            local alpha = ( input - x1 ) / ( x2 - x1 ); 
            return math.lerp( y1, y2, alpha ); 
        end 
    end 
    return curve[ #curve ][ 2 ]; 
end 
  
function math.lerp( from, to, alpha ) 
    return from + ( to-from ) * alpha; 
end 

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

 

y este es el server ↓↓↓↓↓

PetroleiroPickup = createPickup ( 283.75128, 1432.13159, 10.79398, 3, 1210)
MarkerPetroleiro = createMarker ( 283.75128, 1432.13159, 10.79398, "cylinder", 1.2, 255, 255, 255, 0 )
attachElements ( MarkerPetroleiro, PetroleiroPickup, 0, 0, -1 )
BlipPetroleiro = createBlipAttachedTo ( MarkerPetroleiro, 42 )
setBlipVisibleDistance ( BlipPetroleiro, 150 )

safe = createMarker ( 192.2998046875, 1400.599609375, 9, "cylinder", 11, 0, 255, 0, 0)

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

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

LetraParaMarkers = "k"
cmd1 = "hq"
cmd2 = "profesion"

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

local HQPetroleiroBlip = createBlip ( 270.59879, 1409.27441, 10.46635 )
setElementVisibleTo ( HQPetroleiroBlip, root, false )

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

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

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

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

function ComandoHQ ( source )
    if getElementData ( source, "Emprego" ) == "Petroleiro" then
    if isElementVisibleTo ( HQPetroleiroBlip, source ) then
    setElementVisibleTo ( HQPetroleiroBlip, source, false )
    exports.Scripts_Dxmessages:outputDx(source, "Su lugar de trabajo ha sido deseleccionado del mapa!", "info")
    else
    setElementVisibleTo ( HQPetroleiroBlip, source, true )
    exports.Scripts_Dxmessages:outputDx(source, "Su lugar de trabajo ha sido marcado en el mapa!", "info")
end
end    
end    
addCommandHandler ( cmd1, ComandoHQ )

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

function AceitarEmprego02 (source)
exports.Scripts_OnMarkerMsgs_:delete(source)
unbindKey ( source, LetraParaMarkers, "down", AceitarEmprego02 )
if getElementData ( source, "AirNew>Encaminhamento" ) == "Petroleiro" then
setElementData ( source, "AirNew>Encaminhamento", false )
setElementData ( source, "Emprego", "Petroleiro" )
exports.Scripts_Dxmessages:outputDx(source, "Ahora trabaja como trabajador petrolero, para obtener más información escriba (/profesión )", "success")
else
exports.Scripts_Dxmessages:outputDx(source, "Debe ser derivado de la Agencia de Empleo para trabajar en este lugar!", "error")
end
end

function RecusarEmprego02 (source)
exports.Scripts_OnMarkerMsgs_:delete(source)
unbindKey ( source, LetraParaMarkers, "down", RecusarEmprego02 )
if isElementVisibleTo ( HQPetroleiroBlip, source ) then
setElementVisibleTo ( HQPetroleiroBlip, source, false )
end
removeElementData ( source, "Emprego", "Petroleiro" )
exports.Scripts_Dxmessages:outputDx(source, "Usted renunció exitosamente al trabajo de petrolero!", "warning")
end

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

function ComandosProf ( ThePlayer )
if getElementData ( ThePlayer, "Emprego" ) == "Petroleiro" then
playSoundFrontEnd ( ThePlayer, 43 )
outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Profesion #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #BEE09AComandos de la profesión de petrolero", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #55D444/HQ #ffffff- #9ABDE0Para marcar / desmarcar su lugar de trabajo", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #FFD700Sube al camión y conduce hasta el área de carga.", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #FFD700DEBES IR POR LA ENTRADA DE LA DERECHA, POSICIONAR EN LA PLATAFORMA AMARILLA DEL MEDIO.", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #FFD700En el área de carga presione la letra 'K' para seleccionar la carga", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F96031» #FFD700Y SALIR POR EL OTRO LADO PARA INICIAR EL VIAJE.", ThePlayer, 255, 255, 255, true )
outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Profesion #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~", ThePlayer, 255, 255, 255, true )
end
end
addCommandHandler(cmd2, ComandosProf )

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

function emarker(marker,md) 
    if (md) then
      if not isPedInVehicle ( source ) then
        if marker == MarkerPetroleiro then
            if getElementData ( source, "Emprego" ) == "Petroleiro" then
            exports.Scripts_OnMarkerMsgs_:create(source,"Presione 'K' para renunciar al trabajo de petrolero")
            bindKey ( source, LetraParaMarkers, "down", RecusarEmprego02 )
        else
            exports.Scripts_OnMarkerMsgs_:create(source,"Presione 'K' para aceptar el trabajo de aceite")
            bindKey ( source, LetraParaMarkers, "down", AceitarEmprego02 )
        end
        end
        end
        local seat = getPedOccupiedVehicleSeat ( source )
        if seat == 0 then
        if marker == safe then
            bindKey ( source, LetraParaMarkers, "down", pickjobonbus )
            exports.Scripts_OnMarkerMsgs_:create(source,"Presione 'K' para cargar su camión")
        end
        if marker == ppcik[source] then
            bindKey ( source, LetraParaMarkers, "down", ifPlayerEnterOnMarker )
            exports.Scripts_OnMarkerMsgs_:create(source,"Presione 'K' para descargar su camión")
        end
      end
  end    
end
addEventHandler("onPlayerMarkerHit",getRootElement(),emarker)

function lmarker(marker,md)
    if (md) then
        if marker == MarkerPetroleiro then
            exports.Scripts_OnMarkerMsgs_:delete(source)            
            unbindKey ( source, LetraParaMarkers, "down", AceitarEmprego02 )
            unbindKey ( source, LetraParaMarkers, "down", RecusarEmprego02 )
        end
        if marker == safe then
            unbindKey ( source, LetraParaMarkers, "down", pickjobonbus )
            exports.Scripts_OnMarkerMsgs_:delete(source)
        end
        if marker == ppcik[source] then
            unbindKey ( source, LetraParaMarkers, "down", ifPlayerEnterOnMarker )
            exports.Scripts_OnMarkerMsgs_:delete(source)
        end
    end
end
addEventHandler("onPlayerMarkerLeave",getRootElement(),lmarker)

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

atualrotnumber = {}
ppcik = {}
blips = {}

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

rotas = {
    ["Puesto de Fort Carson - $7000"] = {
        {70.36392, 1218.65625, 18.81190},
    },
    ["Puesto de Bone County - $9000"] = {
        {612.14429, 1695.00281, 6.99219},
    },
    ["Puesto de Tierra Robada - $14000"] = {
        {-1477.12805, 1863.58386, 32.63281},
    },
    ["Puesto de Tierra Robada II - $14500"] = {
        {-1328.97241, 2672.06689, 50.06250},
    },
    ["Puesto de Redsands West - $13500"] = {
        {1595.82605, 2198.85205, 10.82031},
    },
    ["Puesto de Spinybed - $29000"] = {
        {2147.65674, 2747.65161, 10.82031},
    },
    ["Puesto de The Emerald Isle - $16000"] = {
        {2202.37598, 2474.13965, 10.82031},
    },
    ["Puesto de Las Venturas - $14000"] = {
        {2639.75928, 1106.16931, 10.82031},
    },
    ["Puesto de Las Venturas II - $13000"] = {
        {2115.28882, 920.22015, 10.82031},
    },
    ["Puesto de Montgomery - $16000"] = {
        {1382.29285, 460.14056, 20.34520},
    },
    ["Puesto de Dillimore - $17500"] = {
        {654.96869, -559.74841, 16.50149},
    },
    ["Puesto de Temple - $28500"] = {
        {1004.65613, -936.75317, 42.32813},
    },
    ["Puesto de Idlewood - $32000"] = {
        {1942.37158, -1772.88501, 13.64063},
    },
    ["Puesto de Flint County - $39500"] = {
        {-93.53500, -1174.47327, 2.28485},
    },
    ["Puesto de Whetstone - $59000"] = {
        {-1605.74585, -2714.55273, 48.53347},
    },
    ["Puesto de Angel Pine - $53050"] = {
        {-2244.26880, -2561.07104, 31.92188},
    },
    ["Puesto de Juniper Hallow - $45000"] = {
        {-2410.03662, 976.18658, 45.42539},
    },
    ["Puesto de Easter Basin - $39200"] = {
        {-1675.65918, 413.23929, 7.17969},
    },
}

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

pay={
     ["Puesto de Fort Carson - $700"] = 7000,
     ["Puesto de Bone County - $900"] = 9000,
     ["Puesto de Tierra Robada - $1400"] = 14000,
     ["Puesto de Tierra Robada II - $1450"] = 14500,
     ["Puesto de Redsands West - $1350"] = 13500,
     ["Puesto de Spinybed - $2900"] = 29000,
     ["Puesto de The Emerald Isle - $1600"] = 16000,
     ["Puesto de Las Venturas - $1400"] = 14000,
     ["Puesto de Las Venturas II - $1300"] = 13000,
     ["Puesto de Montgomery - $1600"] = 16000,
     ["Puesto de Dillimore - $1750"] = 17500,
     ["Puesto de Temple - $2850"] = 28500,
     ["Puesto de Idlewood - $3200"] = 32000,
     ["Puesto de Flint County - $3950"] = 39500,
     ["Puesto de Whetstone - $5900"] = 54000,
     ["Puesto de Angel Pine - $5350"] = 53500,
     ["Puesto de Juniper Hallow - $4500"] = 45000,
     ["Puesto de Easter Basin - $3920"] = 39200,
}

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

function receivert(source,rotaname)
 if isElement(ppcik[source]) then
  destroyElement(ppcik[source])
 end    
 triggerClientEvent(source,"JOBUS>blips<Client",source,false)
 setElementData(source,"rtname",rotaname)
 atualrotnumber[source] = 1
 gerarrota(source)
end
addEvent("request>Startrota>Server", true)
addEventHandler("request>Startrota>Server",getRootElement(), receivert)

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

function ifPlayerEnterOnMarker ( source )
if isPedInVehicle(source) then
    if not isElementWithinMarker(source, ppcik[source]) then return end
        if isElement(ppcik[source]) then
        local vh = getPedOccupiedVehicle(source)
        local id = getElementModel(vh)
            if id == 514 then
                if ( getVehicleTowedByVehicle ( vh ) == CargaPet[source] ) then
                local rname = getElementData(source,"rtname") or nil
                    if rname == nil then return end
                    destroyElement(ppcik[source])
                    triggerClientEvent(source,"JOBUS>blips<Client",source,false)        
                        if atualrotnumber[source] <= #rotas[rname] then
                        gerarrota(source)
                            elseif atualrotnumber[source] == #rotas[rname]+1 then
                            setElementData(source,"rtname",rname)
                            atualrotnumber[source] = 1
                            local rec = pay[rname]
                            givePlayerMoney(source,tonumber(rec))    
                            local vh = getPedOccupiedVehicle(source)
                            destroyElement ( CargaPet[source] )    
                            setElementData(source,"rtname",nil)
                            exports.Scripts_Dxmessages:outputDx(source, "Su carga se descargó y recibió $"..rec.." Por su servicio!", "success")
                            unbindKey ( source, LetraParaMarkers, "down", ifPlayerEnterOnMarker )
                            exports.Scripts_OnMarkerMsgs_:delete(source)
                            
                        end
                else
                exports.Scripts_Dxmessages:outputDx(source, "No puede descargar su camión sin su carga!", "error")
                end
            end
        end
    end
end

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

function pickjobonbus(source)
    if not isElement(source) then return end
    
    local im = isPedInVehicle(source)
    if im == false then return end    
    
    local job = getElementData(source,"Emprego") or false
    if job == false or job == nil then
    exports.Scripts_Dxmessages:outputDx(source, "No es un petrolero, por lo que no puede usar este comando!", "error") return end
    if job == "Petroleiro" then
    
    local vh = getPedOccupiedVehicle(source)
    if isElement(vh) then
    local x,y = getElementPosition(vh)
    local x1,y1 = getElementPosition(source)
    local dist = getDistanceBetweenPoints2D(x,y,x1,y1)
    local issafe = isElementWithinMarker(vh,safe)
    local id = getElementModel(vh)
    local seat = getPedOccupiedVehicleSeat(source)
        if dist > 0 then return end
            if id == 514 then        
                if seat == 0 then
                local speedX, speedY, speedZ = getElementVelocity ( vh  )
                local actualSpeed = (speedX^2 + speedY^2 + speedZ^2)^(0.5) 
                local KMH = math.floor(actualSpeed*180)
                    if KMH >= 1 then
                    exports.Scripts_Dxmessages:outputDx(source, "Detener el camión para cargar!", "warning") return end
                        if issafe == false then return end
                        
                        unbindKey ( source, LetraParaMarkers, "down", pickjobonbus )
                        exports.Scripts_OnMarkerMsgs_:delete(source)
                        
                        triggerClientEvent(source,"JOBUS>AbrirPainel<Client",source,rotas)
                end
            end
        end
    end
end

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

--[[function setPlayerBlipColor( thePlayer , r, g, b ,a) 
    if not a then
    a = 255
    end
    local blips = getElementsByType( "blip" ) 
    
    for k, theBlip in ipairs( blips ) do 
    if getElementAttachedTo( theBlip ) == thePlayer then 
    setBlipColor ( theBlip, r, g, b ,a )
    end 
    end 
end --]]

CargaPet = {}

function gerarrota(source)
    
    local rname = getElementData(source,"rtname") or nil
    if rname == nil then return end
    
    if not isElement(ppcik[source]) and isPedInVehicle(source) then
    
    local vh = getPedOccupiedVehicle(source)
    local id = tonumber(atualrotnumber[source])
    local x,y,z = rotas[rname][id][1],rotas[rname][id][2],rotas[rname][id][3]
    
    ppcik[source] = createMarker (x, y,z, "checkpoint", 5, 255, 0, 0, 50,source)
    triggerClientEvent(source,"JOBUS>blips<Client",source,true,x,y,z)
    atualrotnumber[source] = id+1
        
    local vh = getPedOccupiedVehicle(source)
    local xe,ye,ze = getElementPosition ( source )
    
    if CargaPet[source] and isElement( CargaPet[source] ) then
    destroyElement ( CargaPet[source] )
    CargaPet[source] = nil
    end
    
    CargaPet[source] = createVehicle ( 584, xe,ye,ze +15 )
    setTimer ( attachTrailerToVehicle, 50, 1, vh, CargaPet[source] )
    setTimer ( attachTrailerToVehicle, 1000, 1, vh, CargaPet[source] )
    setTimer ( attachTrailerToVehicle, 5000, 1, vh, CargaPet[source] )
    
    exports.Scripts_Dxmessages:outputDx(source, "Su camion fue cargado, siga el ícono marcado en el mapa para descargar su carga!", "info")
    
end
end

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

function sair ( quitType )
 if isElement(ppcik[source]) then
  destroyElement(ppcik[source])
  end
end
addEventHandler ( "onPlayerQuit", getRootElement(), sair )

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

function removeHelmetOnExit ( thePlayer, seat, jacked )
    local job = getElementData(thePlayer,"Emprego") or false
    if job ~= "Petroleiro" then return end
    local rname = getElementData(thePlayer,"rtname") or nil
    if rname == nil then return end
    if ( getElementModel ( source ) == 514 ) then 
    canceljobtimer (thePlayer)
    end
end
addEventHandler ( "onVehicleExit", getRootElement(), removeHelmetOnExit )

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

function SairDoCaminhao ( thePlayer, seat, jacked )
   local rname = getElementData(thePlayer,"rtname") or nil
   if rname == nil then return end
   canceljobtimer (thePlayer)
   exports.Scripts_Dxmessages:outputDx(thePlayer, "Te bajaste del camión y tu carga fue destruida!", "warning")
end
addEventHandler ( "onVehicleExit", getRootElement(), SairDoCaminhao )

--------------------------------------------------------------------
   
function canceljobtimer(source)
 if isElement(ppcik[source]) then
  destroyElement(ppcik[source])
 end    
 triggerClientEvent(source,"JOBUS>blips<Client",source,false)    
 atualrotnumber[source] = 1
 setElementData(source,"rtname",nil)
 if isElement( CargaPet[source] ) then
  destroyElement ( CargaPet[source] )
 end
end

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

function canceljobdeath()
    local job = getElementData(source,"Emprego") or false
    if job ~= "Petroleiro" then return end
    local rname = getElementData(source,"rtname") or nil
    if rname == nil then return end
    canceljobtimer(source)
    DestruirPetroleiroVeiculo(source)
    exports.Scripts_Dxmessages:outputDx(source, "Moriste y tu carga fue destruida!", "warning")
    end
addEventHandler( "onPlayerWasted", getRootElement( ),canceljobdeath)

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

function CriarVeiculosComData ()
VeiculosComDataPetroleiro = {
createVehicle(514, 282.71198, 1389.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1384.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1379.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1374.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1369.41418, 12.35385, 0, 0, 90 ),

createVehicle(514, 282.71198, 1364.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1359.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1354.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1349.41418, 12.35385, 0, 0, 90 ),
createVehicle(514, 282.71198, 1344.41418, 12.35385, 0, 0, 90 ),

createVehicle(514, 282.71198, 1339.41418, 12.35385, 0, 0, 90 ),
}

for i, veh in ipairs(VeiculosComDataPetroleiro) do
setElementData ( veh, "Emprego", "Petroleiro" )
setVehicleDamageProof(veh,true)
setVehicleColor( veh, 0, 0, 0 )
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 == "Petroleiro" then    
    else
    cancelEvent()
    exports.Scripts_Dxmessages:outputDx(thePlayer, "Este vehículo es exclusivo para petroleros!", "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() 
  
function respawnVehicles(player, seconds)
    for i, veh in ipairs(VeiculosComDataPetroleiro) do
        if isEmpty( veh ) then 
                respawnVehicle ( veh ) 
            end 
        end 
    end
setTimer(respawnVehicles, 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

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

Link to post
function ifPlayerEnterOnMarker (hit )
if getElementType(hit) == 'player' or getElementType(hit) == 'ped' then 
    if isPedInVehicle(hit) then
        if not isElementWithinMarker(hit, ppcik[source]) then return end
            if isElement(ppcik[source]) then
            local vh = getPedOccupiedVehicle(hit)
            local id = getElementModel(vh)
                if id == 514 then
                    if ( getVehicleTowedByVehicle ( vh ) == CargaPet[hit] ) then
                    local rname = getElementData(source,"rtname") or nil
                        if rname == nil then return end
                        destroyElement(ppcik[source])
                        triggerClientEvent(hit,"JOBUS>blips<Client",resourceRoot,false)        
                            if atualrotnumber[hit] <= #rotas[rname] then
                            gerarrota(hit)
                                elseif atualrotnumber[hit] == #rotas[rname]+1 then
                                setElementData(hit,"rtname",rname)
                                atualrotnumber[hit] = 1
                                local rec = pay[rname]
                                givePlayerMoney(hit,tonumber(rec))    
                                local vh = getPedOccupiedVehicle(hit)
                                destroyElement ( CargaPet[hit] )    
                                setElementData(hit,"rtname",nil)
                                exports.Scripts_Dxmessages:outputDx(hit, "Su carga se descargó y recibió $"..rec.." Por su servicio!", "success")
                                unbindKey ( hit, LetraParaMarkers, "down", ifPlayerEnterOnMarker )
                                exports.Scripts_OnMarkerMsgs_:delete(source)
                                
                            end
                    else
                    exports.Scripts_Dxmessages:outputDx(hit, "No puede descargar su camión sin su carga!", "error")
                    end
                end
            end
        end
    end
end

Si no me equivoco esa es la función, búscala y reemplaza. Debería funcionar de ésta manera

Link to post
5 hours ago, _SAXI_ said:

function ifPlayerEnterOnMarker (hit )
if getElementType(hit) == 'player' or getElementType(hit) == 'ped' then 
    if isPedInVehicle(hit) then
        if not isElementWithinMarker(hit, ppcik[source]) then return end
            if isElement(ppcik[source]) then
            local vh = getPedOccupiedVehicle(hit)
            local id = getElementModel(vh)
                if id == 514 then
                    if ( getVehicleTowedByVehicle ( vh ) == CargaPet[hit] ) then
                    local rname = getElementData(source,"rtname") or nil
                        if rname == nil then return end
                        destroyElement(ppcik[source])
                        triggerClientEvent(hit,"JOBUS>blips<Client",resourceRoot,false)        
                            if atualrotnumber[hit] <= #rotas[rname] then
                            gerarrota(hit)
                                elseif atualrotnumber[hit] == #rotas[rname]+1 then
                                setElementData(hit,"rtname",rname)
                                atualrotnumber[hit] = 1
                                local rec = pay[rname]
                                givePlayerMoney(hit,tonumber(rec))    
                                local vh = getPedOccupiedVehicle(hit)
                                destroyElement ( CargaPet[hit] )    
                                setElementData(hit,"rtname",nil)
                                exports.Scripts_Dxmessages:outputDx(hit, "Su carga se descargó y recibió $"..rec.." Por su servicio!", "success")
                                unbindKey ( hit, LetraParaMarkers, "down", ifPlayerEnterOnMarker )
                                exports.Scripts_OnMarkerMsgs_:delete(source)
                                
                            end
                    else
                    exports.Scripts_Dxmessages:outputDx(hit, "No puede descargar su camión sin su carga!", "error")
                    end
                end
            end
        end
    end
end

Si no me equivoco esa es la función, búscala y reemplaza. Debería funcionar de ésta manera

 

 

Gracias SAXI, pero aun sigue sin funcionar y me tira el siguiente error en la consola:

 

[23:46:50] WARNING: [Agencia]\Petrolero\AirNew_s.lua:275: Bad argument @ 'isElementWithinMarker' [Expected marker at argument 2, got nil]

 

y ya que estamos, y que soy nuevo en el foro de hace muy poco, como haces para copiar el codigo de notepad++ asi como lo haz hecho con colores y todo?

Link to post

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