Saludos,
Bueno, a Nag, que parece que es el que mas entiende en este tema, con el objetivo de que los demas que queramos aprender sobre los scripts del COD, si no te importa, ya que veo que te lo has empapado y que seguramente conoces mejor el inglés que yo... expondré aquí lo que voy observando de tus scripts de la mision de Airbase y me dices si estoy en lo cierto o me equivoco.
El menú de script se divide en tres pestañas;
- Activadores: Donde se declaran los distintos "gatillos" o activadores, triggers o como se quieran llamar, son objetos que detectan cuando se produce un cambio, la destrucción de un objeto, un tiempo x transcurrido, la entrada de un avion en una zona determinada y por decirlo de alguna forma lo comunican para poder realizar acciones cuando estos se activan. Por ejemplo, si creamos un activador que se active cuando un barco de un comboy es destruido, podemos enviar un mensaje en el chat diciendo que al convoy X lo estan atacando.
- Acciones: Son, como su propio nombre dice, acciones que se producen cuando se activa un activador. Por ejemplo, en el caso anterior, una vez el activador que detecta la destrucción del barco se activa, un grupo de 4 Spitfires despegan de la base X y se dirige a la posicion del convoy.
- Script: Esta es la parte mas compleja, no se en que lenguaje está escrita, pero analizando poco a poco puedo observar.
Se declaran quizás las librerias que se van a emplear, como en VB por ejemplo.
using System;
using System.Text;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;
Cominezo del script, dentro de sus "llaves" va todo el codigo. (¿cierto?¿porque tiene un nombre distinto al de la mision)
public class Mission : AMission
Por lo que parece en el siguiente codigo se añade al menú de comunicaciones unas lineas que al activarlas se produce una acción, es decir, otra forma de hacer que se ejecute una acción sin que sea con un activador, en este caso se añade al menú inicial.
{
private void setMainMenu( Player player ) {
GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "Llamar llorando al cuartel" },
new bool[] { true } );
}
Se añade una variable "player" que será ejecutada por un player (es decir, por cualquier jugador, supongo) la funcion que añade al menú de comunicaciones se llama GamePlay.gpSetOrderMissionMenu("variable","iniciación","0", "cadena de texto que se mostrará", "new bool[]{true}");
Se añade una linea en el siguiente menú, es decir, en el submenú.
private void setSubMenu( Player player )
{
GamePlay.gpSetOrderMissionMenu( player, true, 1, new string[] { "Pedir escolta" }, new bool[] { false } );
}
En las siguientes lineas se observa si cualquier jugador selecciona del menú la orden "-Llamar al cuartel llorando-Pedir escolta" se activará el vuelo de spitfires, ¿pero como se activa este vuelo?
En la siguiente función parece esta el meollo de la cuestión.
public override void OnOrderMissionMenuSelected( Player player, int ID, int menuItemIndex ) {
if( ID == 0 ) { // main menu si ID = 0 - ¿ID? entonces entra en el if
if( menuItemIndex == 1 ) si el menu seleccionado es el 1 entonces muestra el submenu player
{
setSubMenu( player );
}
} else if( ID == 1 ) { // sub menu si no si ID = 1 es decir, si se activa "pedir escolta"
if (menuItemIndex == 1) parece lo mismo de arriba
{
Player[] all = { player }; ni idea
AiActor where = player.Place(); Obtiene la ubicacion del que llama a la escolta
AiAircraft aircraft = (GamePlay.gpPlayer().Place() as AiAircraft);
AiAction action = GamePlay.gpGetAction("Escolta1"); activa la accion "escolta1" la cual en tu script parece que crea el vuelo de spitfires
{
action.Do();
}
setMainMenu( player );
}
}
}
Vamos que con este script, practicamente lo unico que se hace es crear el menu y submenu para la llamada a la escolta y en caso de que esta se produzca crear el vuelo y dirigirlo hacia el que los ha llamado.
Hay mas cositas, como el tema de los radares alemanes, que imagino que crearan unos vuelos de Bf de alerta temprana o algo parecido... a ver si nos vas arrojando un poco de información para ver si nos animamos y le metemos mano...