#1
|
|||
|
|||
New coop script
This new coop script doesn't use the mission menu, instead the commands are typed into the chat console. Thus the dummy aircraft are no longer needed.
Steps: 1) You must add the following line to your conf.ini or confs.ini (if you want to use the dedicated server): Code:
[rts] scriptAppDomain = 0 3) Add the following script to the mission: Code:
using System; using System.Collections.Generic; using System.Text; using maddox.game; using maddox.game.world; //$reference parts/core/gamePlay.dll public class Mission : AMission { public override void OnBattleInit() { base.OnBattleInit(); if (GamePlay is GameDef) { (GamePlay as GameDef).EventChat += new GameDef.Chat(Mission_EventChat); } } void Mission_EventChat(IPlayer from, string msg) { if (msg.StartsWith("!help")) { Chat("Commands: !aircraft, !select#", from); } if (msg.StartsWith("!aircraft") || msg.StartsWith("!select")) { List<Tuple<AiAircraft, int>> aircraftPlaces = new List<Tuple<AiAircraft, int>>(); if (GamePlay.gpArmies() != null && GamePlay.gpArmies().Length > 0) { foreach (int army in GamePlay.gpArmies()) { if (GamePlay.gpAirGroups(army) != null && GamePlay.gpAirGroups(army).Length > 0) { foreach (AiAirGroup airGroup in GamePlay.gpAirGroups(army)) { if (airGroup.GetItems() != null && airGroup.GetItems().Length > 0) { foreach (AiActor actor in airGroup.GetItems()) { if (actor is AiAircraft) { AiAircraft Aircraft = actor as AiAircraft; for (int place = 0; place < Aircraft.Places(); place++) { aircraftPlaces.Add(new Tuple<AiAircraft, int>(Aircraft, place)); } } } } } } } } if (msg.StartsWith("!aircraft")) { int i = 0; foreach (Tuple<AiAircraft, int> aircraftPlace in aircraftPlaces) { string playerName = ""; Player player = aircraftPlace.Item1.Player(aircraftPlace.Item2); if (player != null) { playerName = " " + player.Name(); } Chat("#" + i + ": " + aircraftPlace.Item1.Name() + " " + aircraftPlace.Item1.TypedName() + " " + aircraftPlace.Item1.CrewFunctionPlace(aircraftPlace.Item2) + " " + playerName, from); i++; } } else if (msg.StartsWith("!select")) { msg = msg.Replace("!select", ""); int i = -1; if (int.TryParse(msg, out i) && i < aircraftPlaces.Count) { Tuple<AiAircraft, int> aircraftPlace = aircraftPlaces[i]; if (aircraftPlace.Item1.Player(aircraftPlace.Item2) == null) { from.PlaceEnter(aircraftPlace.Item1, aircraftPlace.Item2); } else { Chat("Place occupied.", from); } } else { Chat("Please enter a valid aircraft number, e.g. !select0, !select1, !select2, ...", from); } } } } public void Chat(string line, IPlayer to) { if (GamePlay is GameDef) { (GamePlay as GameDef).gameInterface.CmdExec("chat " + line + " TO " + to.Name()); } } } !help - this will show the available commands !aircraft - this will show a list of all available aircraft starting with the id of the aircraft !select# - this will place the player into the aircraft, replace # with the id of the aircraft, e.g. !select0 will place you into the first aircraft and so on. Last edited by 41Sqn_Banks; 10-13-2012 at 10:31 PM. |
|
|