APRENDIENDO A EDITA...
 

APRENDIENDO A EDITAR CON MIST (P. I)  

  RSS

Tordo
(@Tordo)
New Member
Joined: 17 years ago
Posts: 0
16/09/2016 5:48 pm  

[b]APRENDIENDO A USAR MIST - PARTE I[/b]

[b]¿Qué es Mist?[/b]

Mist, es un conjunto de funciones LUA, hechas especialmente para comple-mentar a todas las que ya posee la librería del motor del editor de misiones de DCS. Su nombre proviene de las iniciales del texto en inglés: MIssion Scripting Tools (Herramientas para Programación de Misiones).

Partamos coincidiendo, que toda misión planteada frente al mapa del Editor de Misiones (EM), es un problema a resolver. Hay veces, que con el conjunto de herramientas que el mismo EM te da, es suficiente. Pero en otras ocasiones, cuando querés desarrollar alguna cuestión más específica, puede que dicho problema se encuentre sin una solución adecuada o que te convenza. Por ejemplo, al establecer una zona, para saber si una unidad ha ingresado a ella. Eso es cosa sencilla, y no necesitás de nada extra. Pero… ¿Y qué si quisieras que dicha zona tuviese una forma irregular? No tenés modo de hacerlo con lo que el EM por sí sólo te ofrece, ya que sólo te permite crear zonas son circulares.

En tal caso, deberías empezar a desarrollar líneas de código, llamando a las funciones específicas, creando variables, comprobándolas, haciendo sub ruti-nas, obteniendo coordenadas, etc., etc., etc. Con Mist, y como verás más adelante, te será mucho más fácil y rápido hacerlo.
En otras palabras, Mist te permite extraer información de la misión en tiempo de ejecución, para luego utilizarla en lo que nos sea necesario. Podemos copiar un grupo, formar zonas poligonales, hacer aparecer unidades, etc.

[b]Tipos Diferentes de Funciones[/b]

En Mist, contás con diferentes tipos de Funciones. Algunas de ellas son pasi-vas, o sea que sólo obtienen información de los objetos que están en la misión, y otras son activas, ya que pueden activar banderas, hacer aparecer unidades, poner mensajes en pantalla, etc. Algunas activas, se combinan con otras pasivas, tal cual verás más adelante.

Las funciones de Mist son tantas que, si quisiera presentarlas a todas, me lle-varía más de 100 páginas poder hacerlo. Cómo la intención no es duplicar in-formación que podés encontrar en la web, prefiero dedicar el tiempo a expli-car las principales, dejándote el trabajo de replicar lo que aprendiste en funciones similares o del mismo tipo.

Los siguientes, son una traducción que he hecho de las diferentes categorías:

Propósitos Generales
Orientación de Unidades
Generadoras de Banderas
Tareas y Eventos
Conversión de Coordenadas
Conversión de Unidades
Utilidades
Comprobaciones
Vectores
Mensajes
Órdenes para Grupos
Datos de Grupos
Aparición de Grupos
Cadenas
Tiempo
Registros

LINK AL LINK DE PRESENTACIÓN DEL MOD EN INGLÉS:
https://forums.eagle.ru/showthread.php?t=98616

[b]¿Cómo se instala Mist?[/b]

Mist no es un mod como cualquier otro. Digamos que se trata de un intérprete, que contiene en su interior, librerías de funciones que ya están programa-das, para que sólo le demos algunos datos, y nos permita comprobar eventos, obtener resultados o establecer acciones. Eso implica, que cuando la misión se lance, Mist debe ser lo primero que deberá cargar.

Primero, deberás descargar la última versión oficial. El Mod está siempre en desarrollo debido a los cambios internos de las diferentes versiones de DCS World y a sus propias actualizaciones. En el momento de realizar este documento, es la 4.3.73. Cuando lo hayas hecho, tendrás un archivo “Mist_X.rar”.

En su interior, encontrarás una carpeta y dos archivos:

[img] [/img]

En la imagen ves remarcado el Mod. Es el que deberás cargar desde el editor, y el que te recomiendo que dejés a mano en un directorio sencillo de ubicar.

Ahora, abres del EM, inicias una misión nueva, le das un nombre y la salvás. Tras eso, vas a utilizar un disparador “UNA VEZ”, y en las reglas le pondrás “TIEMPO MAYOR QUE”, y le establecés unos 2 segundos. En las acciones, busca la que se llama “EJECUTAR ARCHIVO SCRIPT”, y en el cuadro abrir, vas a buscar la ubicación del archivo que te acabo de marcar en la imagen anterior. Si, por el contrario, llamamos a una función Mist, sin haber cargado primero la librería, LUA no sabrá interpretar lo que le decimos y nos devolverá un error.

[img] [/img]
[i]Los 2 (dos) segundos, es para dar tiempo a la misión a cargar e inicializar sus variables y tablas, y que luego proceda a cargar Mist, tras lo cual, ya podemos usar todas las funciones.[/i]

[b]Funciones que activan banderas[/b]

Personalmente, creo que estas son las funciones más sencillas para comenzar a poner en práctica. Se pueden comprobar fácilmente. Lo que hacen, es dada cierta condición, volver cierta una bandera.

mist.flagFunc.mapobjs_dead_zones

Lo que esta función hace al ser puesta en marcha, es comprobar si algún ob-jeto del mapa ha sido destruido dentro de la zona que le indicamos, y como consecuencia, volver verdadera una bandera que le indicamos. Puede ser un puente, un edificio, la estación de trenes, o lo que necesitemos. Obviamente, será más sencillo y exclusivo cuando se trate de objetos aislados que fácil-mente podamos encerrar dentro de una zona pequeña. Es importante enten-der, que una vez que la bandera se vuelve verdadera, este script deja de comprobar. También cabe aclarar que, si el objeto en cuestión está destruido previo a ser comprobado, la bandera se volverá verdadera inmediatamente (es una limitación con lo que hay que lidiar por el momento).

mist.flagFunc.mapobjs_dead_zones{ zones = {.Puente1.}, flag = 90 }

Esta función MIST, es capaz de comprobar la destrucción de un objeto cual-quiera dentro de una zona creada por nosotros y a la cual llamamos “Puente1”, y cuando eso suceda, hará a la bandera 90 como verdadera.

¿Pero cómo se implementa esta comprobación en el EM?

Simplemente hay que ponerla en marcha en el momento que creamos adecuado (de ahí la importancia de tener residente el Mist bien al principio).

A continuación, te voy a ir guiando paso a paso para que puedas comprobar la eficacia de la función.

[b]Ejemplo de Comprobación[/b]

1) Habiendo realizado lo anterior para cargar el MOD, buscá un puente en el mapa, el que menos te guste, y colocale una zona de unos 300 metros. Llamala: “Puente1” (respetá las mayúsculas y las minúsculas por-que en LUA eso tiene validez). Ubicá el centro de la zona, justo arriba del centro longitudinal de la estructura.

2) Luego, vas a los disparadores, y a continuación del que hiciste para cargar Mist, vas a hacer lo que vez en la imagen a continuación:

[img] [/img]

Podrías copiar y pegar el texto que remarqué abajo a la derecha. Pero si te interesa empezar a trabajar con código avanzado, yo recomiendo que te acostumbrés a escribir el lenguaje, por más que eso te lleve a uno que otro error.

El “TIEMPO MAYOR QUE (5)”, es sólo para que te prepares para ver el suceso. Recordá o anotate los tiempos para que, en caso de fallos, saber que pudo haberlos provocado.

3) Vas a usar la misma zona que detecta el objeto destruido, para poder destruirlo (de ahí que te pedí que el centro estuviera justo encima).

[img] [/img]

Vas a usar un “TIEMPO MAYOR QUE (10)” y en las Acciones elijes “EX-PLOSIÓN”. Dejá los valores por defecto. Con un volumen de 1000, te asegurás que ese puente sea historia. Sólo asegurate que la zona sea Puente1.

4) Por último, y para comprobar que la Bandera 90 se ha vuelto verdade-ra, ya que la función MIST ha detectado la destrucción del objeto en la zona llamada Puente1, vas a usar esa Regla, y en las Acciones, un “MENSAJE PARA TODOS” que diga: “PUENTE DESTRUIDO”.

[img] [/img]

Si todo se hizo bien, lo que ves a continuación debe ser el resultado.

[img] [/img]

Ahora bien. Esta función, tiene su otra variante. Supongamos que vamos a bombardear ciudades, y queremos comprobar que un “cierto número” de edificios, han sido destruidos por las bombas. Entonces, lo que haremos será en-cerrar el o los pueblos con zonas, y le diremos el número mínimo de objetos que deberán ser destruidos en cada una, para que la bandera se vuelva verdadera.

mist.flagFunc.mapobjs_dead_zones{
zones = {.pueblo1., .pueblo2., .pueblo3.},
flag = 1050,
req_num = 5
}

En el ejemplo anterior, se establecen 5 objetos, en pueblo1, pueblo2, y pueblo3, tras lo cual, la bandera 1050 se volverá cierta.

Y eso no es todo. Tal cual lo dije antes, esta comprobación se pone en mar-cha cuando nosotros lo queramos. Pero también se puede comprobar que una segunda bandera no sea cierta, para que la comprobación no se detenga.

mist.flagFunc.mapobjs_dead_zones{
zones = {.Vaziani., .Sogunlug., .tbilisi-lochini.},
flag = 999,
req_num = 10,
stopflag = 10000
}

Ahora es la bandera 10000, la que, de ser cierta, detendrá la comprobación sobre 10 objetos destruidos en las zonas llamadas Vaziani, Sogunlug, tbilisi-lochini.

Veamos un ejemplo más:
mist.flagFunc.mapobjs_dead_zones{
zones = {.Sukhumi.},
flag = 610,
req_num = 18
stopflag = 77
}

La Bandera 610 se volverá verdadera y el script se detendrá, cuando en la zona llamada Sukhumi, se destruyan 18 objetos mínimo. Pero todo el proceso se detendrá, si la bandera 77 se ha vuelto verdadera.

En la siguiente parte, aprenderemos a utilizar Zonas personalizadas (no circulares), para comprobar sucesos.

[b]FIN PARTE I[/b]

Versión PDF
https://drive.google.com/file/d/0BykHOOkjkdpXUjd1c01IZHp6YWs/view?usp=sharing

[Editado por Tordo el 16/09/2016 a las 23:42]


Quote
CHUMBO
(@CHUMBO)
New Member
Joined: 12 years ago
Posts: 0
16/09/2016 5:59 pm  

Claudio querido, con esto arranca oficialmente nuestra relación Amor/Odio, porque se que me vas a poner a laburar. pero bueno, manos a la obra :birra: :birra: :birra: :birra:


ReplyQuote
Gandalf
(@Gandalf)
New Member
Joined: 19 years ago
Posts: 0
16/09/2016 6:17 pm  

Buenisimo Claudio!!

El Mist es una herramienta increible!!
Hay varios scripts que usamos en la edicion que realmente son una delicia para hacer cositas con el editor.

Si bien asusta un poco el lenguaje para los que no sabemos nada de programacion, hay que meter la mano en la masa y probar de a poco para familiarizarce con el lenguaje!!
Y con estos tips no hay excusa para no probarlos :birra:


ReplyQuote
Tordo
(@Tordo)
New Member
Joined: 17 years ago
Posts: 0
16/09/2016 8:44 pm  

Agregada al final del primer post, la versión pdf.

:hola:


ReplyQuote
trueno
(@trueno)
New Member
Joined: 13 years ago
Posts: 0
16/09/2016 8:46 pm  

De la ostia!!!!


ReplyQuote
Tordillo
(@Tordillo)
New Member
Joined: 5 years ago
Posts: 0
19/09/2016 5:44 am  

Hola Tordo, muy buena la guía. Me queda una duda con los últimos ejemplos, ¿qué implica el campo “STOPFLAG”?, vos decís que se puede comprobar que una segunda bandera no sea cierta, para que la comprobación no se detenga, por lo que entiendo el STOPFLAG chequea que la bandera 10000 sea cierta para detener el scirpt, osea que si el puente fue destruido pero la bandera 10000 es falsa, activa la bandera 999, pero no detiene el script y sigue chequeando, ¿es correcto?. Pero por lo que comentas en el ejemplo siguiente, el STOPFLAG detiene el scirpt si la bandera 77 es verdadera aunque no se hayan alcanzado los 18 objetos destruidos.


ReplyQuote
Tordo
(@Tordo)
New Member
Joined: 17 years ago
Posts: 0
19/09/2016 6:00 am  

Tordillo, tenés razón. Mi gramática jugó una mala pasada ahí. 🙂

Cuando se inicia el proceso de comprobación, ponés en marcha una rutina que no se detendrá hasta que el o los objetos (según el número requerido) se haya o hayan destruido o destruidos. Pero en la función se puede establecer una STOPFLAG, que lo que hace de volverse cierta, es detener dicha rutina, sin la necesidad que los objetos sean alcanzados. Un ejemplo práctico te va a sacar las dudas del todo.

[i]"El A-10C tiene la tarea de bombardear el Puente1, salvo que el grupo de blindados, hayan podido arribar a la zona y asegurarlo."[/i]

En tal ejemplo, la STOPFLAG (o bandera de detenimiento), estaría dada por el arribo de los blindados a la zona del puente (lo han asegurado, y por tal motivo, ya no hay necesidad de atacar el puente ni de estar contínuamente comprobando si es destruido).

Si no se entiende, busco otra forma de explicarlo, Tordillo.

:hola:


ReplyQuote
Tordillo
(@Tordillo)
New Member
Joined: 5 years ago
Posts: 0
19/09/2016 6:06 am  

Perfectirijillo, muchas gracias.
:hola:


ReplyQuote
Tordo
(@Tordo)
New Member
Joined: 17 years ago
Posts: 0
19/09/2016 6:08 am  

[quote][b]tordillo escribió[/b]: ...chequea que la bandera 10000 sea cierta para detener el scirpt, osea que si el puente fue destruido pero la bandera 10000 es falsa, activa la bandera 999, pero no detiene el script y sigue chequeando, ¿es correcto?. [/quote]

Ahí hay una mala interpretación acerca de las banderas.

Cuando una misión comienza, todas las banderas son falsas. Si en el primer disparador, vos preguntás por cualquier bandera, todas te van a devolver como respuesta: "FALSA".

Uno vuelve verdadera una bandera, para saber que se ha dado un suceso que necesitamos comprobar. Por ejemplo, que una unidad se ha destruido. Entonces, si queremos activar otra unidad porque esa ha sido destruida, nos bastará por preguntar por esa bandera para saber si la unidad sigue viva o se ha vuelto "kaput". 😀

Que una bandera sea falsa, no implica que otra sea verdadera. Una bandera es un ente único e independiente. Puede ser Falsa, o Verdadera, o contener un valor numérico y funcionar como un acumulador. 🙂


ReplyQuote
Tordillo
(@Tordillo)
New Member
Joined: 5 years ago
Posts: 0
19/09/2016 6:37 am  

Si, asi lo entendia el tema de las banderas, pero no estaba seguro de lo que chequeaba el campo STOPFLAG
Gracias


ReplyQuote
Baco
 Baco
(@Baco)
New Member
Joined: 19 years ago
Posts: 0
10/07/2017 9:18 pm  

A la pelottita, cada día mas difícil hacer misiones jejeje, o ya me canse de estudiar.. anyway, con muuuucha calma veré que sale. pero muy interesante el tema de las banderas.
pero se acabaron los dias de una misión en dos horitas...


ReplyQuote
Gandalf
(@Gandalf)
New Member
Joined: 19 years ago
Posts: 0
11/07/2017 8:50 am  

😀 😀
Tal cual Juan!!!
Hoy día te lleva una semana de laburo hacer algo sencillo. Lo haces, lo probas, no anda, la volvés a hacer, le encontras los errores..... Bueh y sigue la maratón hasta que la probas on line y lo que andaba en single player ya no anda en MP.
Y guay que no haya un update en medio que te despelote todo otra vez!!.

Igual crear una misión es fabuloso y se aprende mucho. Más si usas scripts!!!
Están apareciendo scripts que hacen las misiones dinamicas. Por ejemplo la de Nevada que hacemos los lunes/miércoles con el M2k es de ese estilo y te diré que van bastante bien encaminados!!!
Ojalá que lo hagan oficial ya que todo es laburo de gente de la comunidad!!!

[Editado por Gandalf el 11/07/2017 a las 11:51]


ReplyQuote
Polten
(@Polten)
New Member
Joined: 5 years ago
Posts: 0
12/07/2017 11:07 am  

Si quieren complicarse la vida en serio, denle una mirada al [url= http://flightcontrol-master.github.io/MOOSE/]MOOSE[/url].
Y [url= https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg/videos]aquí[/url] tienen videos que muestran algunas de las cosas que se pueden hacer con esos scripts.


ReplyQuote
Gandalf
(@Gandalf)
New Member
Joined: 19 years ago
Posts: 0
12/07/2017 3:22 pm  

Lo intente descular hace un tiempo pero soy de madera para la programación.
Prefiero el MOOSE de chocolat 😀


ReplyQuote
Baco
 Baco
(@Baco)
New Member
Joined: 19 years ago
Posts: 0
12/07/2017 4:05 pm  

Man es casi programación, jerarquías, herencias objetos.. Casi como cuando mi jermu me quiso empezar a explicar c++ jajaja, ni jota caze...


ReplyQuote
Share:
Copyright © 2020 Foro Historico — Primer WordPress theme by GoDaddy

Please Login or Register