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

yDORrdn.png

Posted (edited)

local n = 1 -- Contador de rutas

local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3]

n = n + 1

Edited by Guest

El unico limite en la vida, es tu imaginacion.

Programar es la mejor forma de aprender a pensar.

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

yDORrdn.png

Posted

Osea quieres guardar la ultima ruta ( O coordenada ) del marker?

Podrías usar setElementData y guardar ahí la ultima posición

El unico limite en la vida, es tu imaginacion.

Programar es la mejor forma de aprender a pensar.

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.

yDORrdn.png

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 

Inactivo.

  • 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 

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
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 

yDORrdn.png

Posted
¿Up?...

Explica un poco más de qué se trata así nos podemos imaginar bien lo que quieres hacer

Currently developing for International Gaming Community - Join us!

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.

yDORrdn.png

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 

Inactivo.

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?

Inactivo.

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.

yDORrdn.png

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.

Inactivo.

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

yDORrdn.png

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

yDORrdn.png

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?

Inactivo.

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.

yDORrdn.png

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.

Inactivo.

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.

yDORrdn.png

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) 

Inactivo.

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

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