![]() |
#16
|
|||
|
|||
![]()
@ FG28_Kodiak
I am making a simple mission on Steppe map and trying to modify a script by TheEnlightenedFlorist which sends messages to a particular player in MP onPlaceEnter. I want to define a new method to do this in 3 languages, but I do not know how to do it correctly. Also I included a multi-engine aircraft into limited list and wonder if the script would kill its engines correctly. I included my questions into remarks. Would be grateful for any advice. Thank you for all your great help! Code:
using System; using System.Collections; using maddox.game; using maddox.game.world; using System.Collections.Generic; using System.Diagnostics; /** * Parts of the script were taken from: * * Operation Dynamo v2.0 * A multiplayer mission for IL-2 Sturmovik: Cliffs of Dover * @author TheEnlightenedFlorist * http://forum.1cpublishing.eu/showthread.php?t=23579&highlight=operation+dynamo * */ public class Mission : AMission { //allowed and currently flying aircraft int allowed109s = 12; int current109s = 0; int allowedSpit2s = 7; int currentSpit2s = 0; int allowed110s = 4; int current110s = 0; public override void OnBattleStarted() { base.OnBattleStarted(); //listen to events from all missions. MissionNumberListener = -1; } // Makes any FMB trigger/action pair work if they have the same name. //public override void OnTrigger(int missionNumber, string shortName, bool active) //{ // base.OnTrigger(missionNumber, shortName, active); // AiAction action = GamePlay.gpGetAction(ActorName.Full(missionNumber, shortName)); // if (action != null) // action.Do(); //} public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); // test // notAvailableMsg(); if (actor != null && actor is AiAircraft) { //check limited aircraft switch ((actor as AiAircraft).InternalTypeName()) { case "bob:Aircraft.Bf-109E-4": { current109s++; if (current109s > allowed109s) { (actor as AiAircraft).hitNamed(part.NamedDamageTypes.Eng0TotalFailure); notAvailableMsg(new Player[] { player }); //GamePlay.gpHUDLogCenter(new Player[] { player }, "Aircraft not available! Choose another aircraft."); } break; } case "bob:Aircraft.SpitfireMkIIa": { currentSpit2s++; if (currentSpit2s > allowedSpit2s) { (actor as AiAircraft).hitNamed(part.NamedDamageTypes.Eng0TotalFailure); notAvailableMsg(new Player[] { player }); //GamePlay.gpHUDLogCenter(new Player[] { player }, "Aircraft not available! Choose another aircraft."); } break; } case "bob:Aircraft.Bf-110C-7": { current110s++; if (current110s > allowed110s) { //(actor as AiAircraft).hitNamed(part.NamedDamageTypes.Eng0TotalFailure); // Is this line for single-engined only? только для одномоторных? // Will this do for multi-engine? int iNumOfEngines = (aircraft.Group() as AiAirGroup).aircraftEnginesNum(); for (int i = 0; i < iNumOfEngines; i++) { aircraft.hitNamed((part.NamedDamageTypes)Enum.Parse(typeof(part.NamedDamageTypes), "Eng" + i.ToString() + "TotalFailure")); } notAvailableMsg(new Player[] { player }); //GamePlay.gpHUDLogCenter(new Player[] { player }, "Aircraft not available! Choose another aircraft."); } break; } } } } // Trying to make a new method... Does it look correct? public void notAvailableMsg(Player player) { switch (player.LanguageName()) { case "de": GamePlay.gpHUDLogCenter(new Player[] { player }, "Too many aircrafts of this type! Choose another aircraft."); break; //need translation please case "ru": GamePlay.gpHUDLogCenter(new Player[] { player }, "Слишком много самолетов данного типа! Выберите другой самолет."); break; default: GamePlay.gpHUDLogCenter(new Player[] { player }, "Too many aircrafts of this type! Choose another aircraft."); break; } } public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex) { base.OnPlaceLeave(player, actor, placeIndex); if (actor != null && actor is AiAircraft) { //check limited aircraft switch ((actor as AiAircraft).InternalTypeName()) { case "bob:Aircraft.Bf-109E-4": current109s--; break; case "bob:Aircraft.SpitfireMkIIa": currentSpit2s--; break; case "bob:Aircraft.Bf-110C-7": current110s--; break; } } } Last edited by Ataros; 10-04-2011 at 10:39 PM. |
Thread Tools | |
Display Modes | |
|
|