![]() |
#1
|
|||
|
|||
![]()
Hi would anyone advise how to add chat messages:
- every 15min - after player tok off in this example from wildwillie: Code:
//$reference IL2ClodCommanderStats.dll // v.1_0. script by FG28_Kodiak, ZaltysZ, Oreva, Small_Bee, RAF238thWildWillie using System; using System.Diagnostics; using System.Collections; using maddox.GP; using maddox.game; using maddox.game.world; using part; using System.Collections.Generic; using IL2ClodCommanderStats; public class Mission : AMission { #region Stats Initialization // For Connection to the IL2 Clod Commander Application // This allows you to store stats on players within Cliffs of Dover // Change the following to meet your needs // private static string serverName = ""; private static string serverIP = "127.0.0.1"; // Password is not used currently private static string serverPassword = "password"; private static Int32 serverPort = 27015; private StatsRecording stats = new StatsRecording(serverName, serverIP, serverPassword, serverPort); private Dictionary<String, AiActor> allActors = new Dictionary<String, AiActor>(); private List<ServerCommand> newCmds = new List<ServerCommand>(); private Stopwatch MissionTimer = new Stopwatch(); #endregion int LastMissionLoaded = 0; double initTime; // loading sub-missions public override void OnTickGame() { #region Stats Timer if (MissionTimer.Elapsed.TotalSeconds >= 5) // 5 seconds { MissionTimer.Restart(); // stopwatch reset to 0 and restart if (stats != null ) { newCmds = stats.getCommands(); if (newCmds != null && newCmds.Count > 0) ProcessCommands(newCmds); } } #endregion /////////////////////// /////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Base Scripts for Missions private bool isAiControlledPlane (AiAircraft aircraft) { if (aircraft == null) { return false; } Player [] players = GamePlay.gpRemotePlayers (); foreach (Player p in players) { if (p != null && (p.Place () is AiAircraft) && (p.Place () as AiAircraft) == aircraft) { return false; } } return true; } private void destroyPlane (AiAircraft aircraft) { if (aircraft != null) { aircraft.Destroy (); } } private void explodeFuelTank (AiAircraft aircraft) { if (aircraft != null) { aircraft.hitNamed (part.NamedDamageTypes.FuelTank0Exploded); } } private void destroyAiControlledPlane (AiAircraft aircraft) { if (isAiControlledPlane (aircraft)) { destroyPlane (aircraft); } } private void damageAiControlledPlane (AiActor actor) { if (actor == null || !(actor is AiAircraft)) { return; } AiAircraft aircraft = (actor as AiAircraft); if (!isAiControlledPlane (aircraft)) { return; } if (aircraft == null) { return; } aircraft.hitNamed (part.NamedDamageTypes.ControlsElevatorDisabled); aircraft.hitNamed (part.NamedDamageTypes.ControlsAileronsDisabled); aircraft.hitNamed (part.NamedDamageTypes.ControlsRudderDisabled); aircraft.hitNamed (part.NamedDamageTypes.FuelPumpFailure); 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")); } /***Timeout (240, () => {explodeFuelTank (aircraft);} ); * ***/ Timeout (300, () => {destroyPlane (aircraft);} ); } public override void Init(maddox.game.ABattle battle, int missionNumber) { base.Init(battle, missionNumber); MissionNumberListener = -1; //Listen to events of every mission } ////////////////////////////////////////// // Methods for Stats (You can add any code you may need after the Stats Region ////////////////////////////////////////// public override void OnBattleStarted() { base.OnBattleStarted(); #region Stats MissionTimer.Start(); // start the stopwatch #endregion } private void sendScreenMessageTo(int army, string msg, object[] parms) { List<Player> Players = new List<Player>(); // on Dedi the server or for singleplayertesting if (GamePlay.gpPlayer() != null) { if (GamePlay.gpPlayer().Army() == army || army == -1) Players.Add(GamePlay.gpPlayer()); } if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0) { foreach (Player p in GamePlay.gpRemotePlayers()) { if (p.Army() == army || army == -1) Players.Add(p); } } if (Players != null && Players.Count > 0) GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms); } private void ProcessCommands(List<ServerCommand> newCmds) { try { foreach (ServerCommand sc in newCmds) { if (sc.CommandType.Equals("HUDmsg")) { if (sc.ToWho.Equals("All")) GamePlay.gpHUDLogCenter(sc.Command); else if (sc.ToWho.Equals("Red")) { sendScreenMessageTo(1, sc.Command, null); } else if (sc.ToWho.Equals("Blue")) { sendScreenMessageTo(2, sc.Command, null); } else { if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0) { foreach (Player p in GamePlay.gpRemotePlayers()) { if (p.Name() == sc.ToWho) GamePlay.gpLogServer(new Player[] { p }, sc.Command, null); } } // Message is for a specific player based on player name in string sc.ToWho } } } } catch (Exception ex) { System.Console.WriteLine("Stats.ProcessCommands - Exception: " + ex); } } public override void OnActorCreated(int missionNumber, string shortName, AiActor actor) { #region stats base.OnActorCreated(missionNumber, shortName, actor); // Add actor to list of all Actors if (!allActors.ContainsKey(shortName)) allActors.Add(shortName, actor); try { stats.newActor(shortName, actor); } catch (Exception ex) { System.Console.WriteLine("Stats.OnActorCreated - Exception: " + ex); } #endregion } public override void OnPersonHealth(maddox.game.world.AiPerson person, maddox.game.world.AiDamageInitiator initiator, float deltaHealth) { #region stats base.OnPersonHealth(person, initiator, deltaHealth); try { stats.playerHealth(person, initiator, deltaHealth); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPersonHealth - Exception: " + ex); } #endregion } public override void OnPersonParachuteFailed(maddox.game.world.AiPerson person) { #region stats base.OnPersonParachuteFailed(person); try { stats.personParachute("Failed", person); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPersonParachuteFailed - Exception: " + ex); } #endregion } public override void OnPersonParachuteLanded(maddox.game.world.AiPerson person) { #region stats base.OnPersonParachuteLanded(person); try { stats.personParachute("Landed", person); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPersonParachuteLanded - Exception: " + ex); } #endregion } public override void OnPlayerArmy(maddox.game.Player player, int army) { #region stats base.OnPlayerArmy(player, army); try { stats.playerArmy(player, army); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPlayerArmy - Exception: " + ex); } #endregion } public override void OnPlayerConnected(maddox.game.Player player) { #region stats base.OnPlayerConnected(player); try { stats.pilotInfo(player); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPlayerConnected - Exception: " + ex); } #endregion // Your code here } public override void OnPlayerDisconnected(maddox.game.Player player, string diagnostic) { #region stats base.OnPlayerDisconnected(player, diagnostic); try { stats.playerDisconnect(player, diagnostic); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPlayerDisconnected - Exception: " + ex); } #endregion // Your code here } public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { #region stats base.OnPlaceEnter(player, actor, placeIndex); try { Point2d actorPos = new Point2d(actor.Pos().x, actor.Pos().y); String startingGrid = GamePlay.gpSectorName(actorPos.x, actorPos.y).ToString(); stats.sortieBegin(player, actor, placeIndex, actorPos, startingGrid); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPlaceEnter - Exception: " + ex); } #endregion //add your code here } public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex) { #region stats base.OnPlaceLeave(player, actor, placeIndex); try { stats.sortieEnd(player, actor, placeIndex); } catch (Exception ex) { System.Console.WriteLine("Stats.OnPlaceLeave - Exception: " + ex); } #endregion //add your code here Timeout(1, () => { damageAiControlledPlane(actor); } ); } public override void OnAircraftCrashLanded (int missionNumber, string shortName, AiAircraft aircraft) { #region stats base.OnAircraftCrashLanded (missionNumber, shortName, aircraft); try { Point2d actorPos = new Point2d(aircraft.Pos().x, aircraft.Pos().y); String gridRef = GamePlay.gpSectorName(actorPos.x, actorPos.y).ToString(); stats.aircraftLanded("CrashLanded", shortName, aircraft, actorPos, gridRef); System.Console.WriteLine("Stats.OnAircraftCrashLanded - ("+shortName+")"); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftCrashLanded - Exception: " + ex); } #endregion //add your code here Timeout (300, () => { destroyPlane(aircraft); } ); } public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft) { #region stats base.OnAircraftTookOff(missionNumber, shortName, aircraft); try { stats.aircraftTakeoff(shortName, aircraft); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftTookOff - Exception: " + ex); } #endregion //add your code here } public override void OnAircraftLanded (int missionNumber, string shortName, AiAircraft aircraft) { #region stats base.OnAircraftLanded(missionNumber, shortName, aircraft); try { Point2d actorPos = new Point2d(aircraft.Pos().x, aircraft.Pos().y); String gridRef = GamePlay.gpSectorName(actorPos.x, actorPos.y).ToString(); stats.aircraftLanded("Landed", shortName, aircraft, actorPos, gridRef); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftTookOff - Exception: " + ex); } #endregion //add your code here Timeout(300, () => { destroyPlane(aircraft); } ); } public override void OnActorDamaged(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator, NamedDamageTypes damageType) { #region stats base.OnActorDamaged(missionNumber, shortName, actor, initiator, damageType); try { stats.missionActorDamaged(shortName, actor, initiator, damageType); } catch (Exception ex) { System.Console.WriteLine("Stats.OnActorDamaged - Exception: " + ex); } #endregion //add your code here } public override void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType) { #region stats base.OnAircraftDamaged(missionNumber, shortName, aircraft, initiator, damageType); try { stats.missionAircraftDamaged(shortName, aircraft, initiator, damageType); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftDamaged - Exception: " + ex); } #endregion //add your code here } public override void OnAircraftCutLimb(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, LimbNames limbName) { #region stats base.OnAircraftCutLimb(missionNumber, shortName, aircraft, initiator, limbName); try { stats.missionAircraftCutLimb(shortName, aircraft, initiator, limbName); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftCutLimb - Exception: " + ex); } #endregion //add your code here } public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages) { #region stats base.OnActorDead(missionNumber, shortName, actor, damages); try { stats.missionActorDead(shortName, actor, damages); } catch (Exception ex) { System.Console.WriteLine("Stats.OnActorDead - Exception: " + ex); } #endregion //add your code here } public override void OnActorDestroyed(int missionNumber, string shortName, AiActor actor) { #region stats base.OnActorDestroyed(missionNumber, shortName, actor); try { stats.actorDestroyed(shortName, actor); } catch (Exception ex) { System.Console.WriteLine("Stats.OnActorDestroyed - Exception: " + ex); } #endregion //add your code here } public override void OnAircraftKilled(int missionNumber, string shortName, AiAircraft aircraft) { #region stats base.OnAircraftKilled(missionNumber, shortName, aircraft); try { stats.aircraftKilled(shortName, aircraft); } catch (Exception ex) { System.Console.WriteLine("Stats.OnAircraftKilled - Exception: " + ex); } #endregion //add your code here } public override void OnBattleStoped() { #region stats base.OnBattleStoped(); try { stats.battleStopped(); // Loop through list of AiActors and destroy them all List<string> keys = new List<string>(allActors.Keys); for (int i = 0; i < keys.Count; i++) { AiActor a = allActors[keys[i]]; AiAircraft aircraft = a as AiAircraft; if (aircraft != null) { aircraft.Destroy(); } else { AiGroundActor aiGroundActor = a as AiGroundActor; if (aiGroundActor != null) { aiGroundActor.Destroy(); } else { System.Console.WriteLine("Stats.OnBattleStoped - Unknown Actor (" + a.Name()+") ShortName ("+keys[i]+")"); } } } // stats.disconnectStats(); } catch (Exception ex) { System.Console.WriteLine("Stats.OnBattleStoped - Exception: " + ex); } #endregion //add your code here } ////////////////////////////////////////////////////////////////////////////////////////////////// }
__________________
![]() Asus P6T V2 Deluxe, I7 930, 3x2 GB RAM XMS3 Corsair1333 Mhz, Nvidia Leadtek GTX 470, Acer 1260p screen projector, Track IR 4 OS ver5, Saitek Pro Flight Rudder, Saitek X52, Win 7 x64 ultimate Last edited by _79_dev; 03-12-2012 at 07:43 AM. |
|
|