Jump to content

Rutas de un job


aka Blue

Recommended Posts

Buenas a todos, estoy creando un job desde 0 con diferentes mejoras y demás. He creado ya todo lo básico de introducirse en el job, dimitir, blablá. Mi idea de dicho job es que se vayan marcando markers con un blip en el mapa, siguiendo el orden de una tabla y que lo vea solo el cliente (facil). Mi duda viene ahí cuando quiero hacer que cuando pises un marker automáticamente te señale otro hasta que termine la tabla de markers. ¿Cómo lo podría hacer si es posible? Gracias a todos los que quieran ayudar de antemano.

Tabla de rutas:

rutas = { 
    --posx, posy, posz, ultima? 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = false }, 
    { 10192, 123123, 4354, ultima = true } 
} 

Link to comment

Prefiero usar tablas. Es que verás, quiero hacer que al subirse a un determinado vehiculo, saque las posiciones de la tabla y empiece a crear los markers y los blips en el mapa. Así cuando pise un marker, se marque el otro y así sucesivamente. Necesitaría si es posible aunque sea un pequeño ejemplo de código. Estoy algo perdido ahora jaja.

Link to comment
Si, pero el tema es que quiero comprobar si es la ultima que pisa el camión y entonces realizar una función. Ese es el problema que tengo de momento :S
local n = 1 -- Contador de rutas 
local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3] 
n = n + 1 
  
if rutas[n] == nil then 
    outputChatBox("Esta es la ultima ruta!") 
    n = 1 
    return 
end 

Link to comment
  • MTA Team

O simplemente cuenta las entradas de tu tabla usando # y usas un condicional para saber si estas en la ultima :P

local n = 1 -- Contador de rutas 
local tR = #rutas -- Obtenemos el total de rutas 
local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3] 
n = n + 1 
if n == tR then 
    outputChatBox("Esta es la ultima ruta!") 
    n = 1 
    return 
end 

Link to comment

Estoy algo perdido, lol. Quiero hacer también que si entra sin tener alguna ruta hecha, que se le asigne de nuevo las rutas default, y si se ha quedado en una, que se le ponga la próxima, no se si me entendéis. Me estoy liando mucho con este sistema :S

Esto seria clientSide. Si, se que está mal.

local n = 1 -- Contador de rutas 
local tR = #rutas -- Obtenemos el total de rutas 
local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3] 
  
function nuevaRuta ( player ) 
    if player then 
        if not n == tR then 
            marker = createMarker ( x, y, z, "checkpoint", 10, 255, 255, 255, 255 ) 
        else 
            outputChatBox ( "Has acabado la ruta loco" ) 
        end 
    end 
    return false 
end 

Link to comment

Bien, pues lo que quiero hacer es un job que tenga que seguir unos markers indicados, los cuales, las posiciones de los mismos están en la tabla de 'rutas'. Esos markers también que tengan un blip asignado y al pisar uno, que se marque el siguiente hasta llegar al ultimo. Y en el ultimo que se ejecute una función.

PD: Quiero hacer un video en YouTube sobre eso también, que me lo han pedido en uno de los comentarios de los videos subidos.

Link to comment

Intenta con esto:

local n = 0 -- Contador de rutas 
local tR = #rutas -- Obtenemos el total de rutas 
local marker = {} 
  
function nuevaRuta ( player ) 
    if player then 
        if ( n <= tR ) then 
             
            if isElement(marker[n]) then -- Si existe un marcador antes de crear uno nuevo. 
                destroyElement(marker[n]) 
                marker[n] = nil              
            end 
             
            n = n + 1 
            local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3] 
            marker[n] = createMarker ( x, y, z, "checkpoint", 10, 255, 255, 255, 255 ) 
        else 
            outputChatBox ( "Has acabado la ruta loco" ) 
            destroyElement(marker[n-1]) 
            marker[n-1] = nil 
            n = 0 
        end 
    end 
    return false 
end 

Link to comment

Quiero hacer un job de basurero en el cual, cuando te subes a un trashmaster, empieces una ruta con checkpoints y blips indicados en el mapa. Cada vez que pises un checkpoint, te marque el siguiente de la tabla, hasta llegar al ultimo, donde realice una función.

Normalmente los Jobs tienen que cuando te bajes del vehiculo, se quite el progreso. Pues yo quiero que al bajar del vehiculo, siga el marker siguiente en el minimapa y seguir la ruta perfectamente.

PD: Las comprobaciones de cuando sale el jugador del servidor o se le cae, las hago yo, no hay problema. Pero tengo bastante duda con lo que mencioné arriba.

Link to comment
Quiero hacer un job de basurero en el cual, cuando te subes a un trashmaster, empieces una ruta con checkpoints y blips indicados en el mapa. Cada vez que pises un checkpoint, te marque el siguiente de la tabla, hasta llegar al ultimo, donde realice una función.

Normalmente los Jobs tienen que cuando te bajes del vehiculo, se quite el progreso. Pues yo quiero que al bajar del vehiculo, siga el marker siguiente en el minimapa y seguir la ruta perfectamente.

PD: Las comprobaciones de cuando sale el jugador del servidor o se le cae, las hago yo, no hay problema. Pero tengo bastante duda con lo que mencioné arriba.

Estas diciendo una cosa y luego otra, dijiste que querías contar las rutas al jugador y ahora que el marcador no se borre al bajarte del auto; entonces no lo elimines al bajarte.

Link to comment
A ver, como me explico xD. Quiero hacer que cuando el jugador entre por primera vez al Trashmaster o termine la ruta, se le inicie la ruta nuevamente entrando al vehiculo, de modo cliente, es decir, que lo vea el únicamente...

Que comience desde la primera ruta o las no ha tomado aun?

Link to comment

Si entra por primera vez al vehiculo, que se le asigne la ruta normal. Es decir, desde la primera asignada en la tabla hasta la ultima. Si lleva una ya hecha, pues que siga con las demás, vamos, sin borrar nada. Lo suyo seria hacer que si se sube nuevamente al vehiculo al acabar la ruta, que empiece de nuevo.

Link to comment

Me tome de hacerlo por ti, no lo he probado pero si no es lo que buscas nose como ayudarte.

local n = 1 -- Contador de rutas 
local tR = #rutas -- Obtenemos el total de rutas 
local marker = {} 
local theFirstTime = {} 
  
function nuevaRuta(nm) 
    local x, y, z = rutas[nm][1], rutas[nm][2], rutas[nm][3] 
    marker[nm] = createMarker ( x, y, z, "checkpoint", 10, 255, 255, 255, 255 ) 
end 
  
function siguienteRuta(nm) 
    if ( n <= tR ) then 
        local lastMarker = nm - 1    
         
        if isElement(marker[lastMarker]) then -- Si existe un marcador antes de crear uno nuevo. 
            destroyElement(marker[lastMarker]) 
            marker[lastMarker] = nil             
        end 
            
        nuevaRuta(nm) 
    else 
        destruirRuta() 
    end 
end 
  
function destruirRuta() 
    outputChatBox ( "Has acabado la ruta loco" ) 
    destroyElement(marker[nm]) 
    marker[nm] = nil 
    n = 0 
end 
  
  
addEventHandler("onMarkerHit", resourceRoot,  
function(elem) 
    if getElementType(elem) == "vehicle" then 
        if getVehicleName(elem) ~= "Trashmaster" then return end 
        local thePlayer = getVehicleController(elem) 
        if thePlayer then 
            if isElement(marker[n]) then 
                siguienteRuta(n + 1) 
            end 
        end 
    end 
end) 
  
addEventHandler("onVehicleExit", root,  
function(player, seat) 
    if getVehicleName(source) ~= "Trashmaster" then return end 
    if isElement(marker[n]) then 
        destroyElement(marker[n]) 
        marker[n] = nil 
    end 
end) 
  
addEventHandler("onVehicleEnter", root,  
function(player, seat) 
    if getVehicleName(source) ~= "Trashmaster" then return end 
     
        if ( theFirstTime[player] == nil ) then 
            theFirstTime[player] = true 
        else 
            siguienteRuta(n + 1) 
            return 
        end 
         
        nuevaRuta(n) 
    end 
end) 

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...