aka Blue Posted June 11, 2016 Share Posted June 11, 2016 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
starksZ Posted June 11, 2016 Share Posted June 11, 2016 (edited) local n = 1 -- Contador de rutas local x, y, z = rutas[n][1], rutas[n][2], rutas[n][3] n = n + 1 Edited June 11, 2016 by Guest Link to comment
aka Blue Posted June 11, 2016 Author Share Posted June 11, 2016 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 Link to comment
starksZ Posted June 11, 2016 Share Posted June 11, 2016 Osea quieres guardar la ultima ruta ( O coordenada ) del marker? Podrías usar setElementData y guardar ahí la ultima posición Link to comment
aka Blue Posted June 11, 2016 Author Share Posted June 11, 2016 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
Enargy, Posted June 11, 2016 Share Posted June 11, 2016 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 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 0xCiBeR Posted June 11, 2016 MTA Team Share Posted June 11, 2016 O simplemente cuenta las entradas de tu tabla usando # y usas un condicional para saber si estas en la ultima 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
aka Blue Posted June 12, 2016 Author Share Posted June 12, 2016 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 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
Tomas Posted June 13, 2016 Share Posted June 13, 2016 ¿Up?... Explica un poco más de qué se trata así nos podemos imaginar bien lo que quieres hacer Link to comment
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 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
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 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
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 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í. Link to comment
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 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? Link to comment
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 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
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 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
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 Lo que necesito es la función cliente que se ejecutaria por entrar primera vez al vehiculo, eso es lo que quiero hacer . Perdon por la confusión Link to comment
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 Te he dado la función de los markers arriba, si no es eso nose que es. Link to comment
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 A ver, como me explico . 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... Link to comment
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 A ver, como me explico . 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
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 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
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 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. Link to comment
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 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 . Link to comment
Enargy, Posted June 13, 2016 Share Posted June 13, 2016 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
aka Blue Posted June 13, 2016 Author Share Posted June 13, 2016 Gracias por tu ayuda @Gaberiel, ahora lo testearé Link to comment
Recommended Posts