#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. |
#2
|
|||
|
|||
I created an example mission, see attachment of this post.
|
#3
|
||||
|
||||
Nice Banks,i test it
__________________
My Cliff of Dover support for MG |
#4
|
||||
|
||||
This looks excellent, thank you Banks. I don't understand all those whining saying there 'is no co-op' - they don't see the bigger picture from coding like this.
@Farber, you are sure to read this, do you think this would be useful for the multisquad campaign or aren't we quite there yet? |
#5
|
|||
|
|||
I would have to know how many people were turning up and set out all the aircraft. Would be more viable with a smaller group.
This looks like the best coop so far though. |
#6
|
|||
|
|||
Downloaded the mission and played around with it this arvo. Although I've never played in a il2 Co-op I can see how it would work to let pilots join their flights and get into the action.
I guess the mission designer needs to put a lot of work into the briefings for the mission to get everyone up to full speed on their individual task and the overall objective(s) for the mission sorted out. Can they display waypoints for individual flight on the mission map? Just one question. Would there be anyway for pilots to alter their loadout (or is this against the essence of being in a co-op)? Cheers |
#7
|
|||
|
|||
Quote:
There is hope that in the future it will be possible to create user labels within script. But this feature is still bugged in the latest RC. Quote:
|
#8
|
|||
|
|||
Excellent news, many thanks Banks!
Is it possible to make an html(java?) file which when launched on a client PC would provide a GUI for this script? Hopefully data on already occupied seats can be transfered from server/other clients in real time (or on demand at least)? Last edited by Ataros; 10-15-2012 at 10:20 AM. |
#9
|
||||
|
||||
This is great! Thank you, Banks.
Is there a way to set some aircraft so that they don't show up on the list of aircraft at start? I suppose I could set the other aircraft to spawn on trigger so they aren't active in the game at the outset until someone triggers the spawn.
__________________
Pilot #1 (9:40 hours flying time, 3/0/1 Fighters, 7/2/0 Bombers). RIP No.401 Squadron Forum Using ReconNZ's Pilot Log Book |
#10
|
|||
|
|||
Thx for the script Banks....one question:
can i change the list of available planes when use !aircraft command?? e.g only red side. Salute! |
|
|