Jump to content

Rutas de un job


aka Blue

Recommended Posts

Posted

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

Posted

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

Posted

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.

Posted
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 

  • MTA Team
Posted

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 

Posted

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 

Posted

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.

Posted

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 

Posted
Es que lo que quiero hacer es que las rutas se las cuente al jugador en cliente, no sé si me explico muy bien, lo siento si no es así.

Lo que quieres es contar la cantidad de rutas marcadas o las que faltan?

Posted

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.

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

Posted

Lo que necesito es la función cliente que se ejecutaria por entrar primera vez al vehiculo, eso es lo que quiero hacer xD.

Perdon por la confusión :S

Posted

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

Posted
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?

Posted

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.

Posted

Almacena la variable 'n' cuando se baje del auto, luego cuando se vuelva a subir que el conteo de tablas comience por el numero que hay en esa variable.

Posted

Vale pero... Como hago la parte de cuando se sube al vehiculo?

Tambien, lo de chocar el marker y que se cree el siguiente con su blip?

PD: Si, soy un pesado, lo siento xD.

Posted

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) 

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

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