Thread: chat messages
View Single Post
  #1  
Old 03-10-2012, 12:10 PM
_79_dev _79_dev is offline
Approved Member
 
Join Date: Sep 2010
Location: Dublin
Posts: 242
Default chat messages

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.
Reply With Quote