Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik: Cliffs of Dover > FMB, Mission & Campaign builder Discussions

Reply
 
Thread Tools Display Modes
  #1  
Old 10-18-2011, 07:50 PM
David198502's Avatar
David198502 David198502 is offline
Approved Member
 
Join Date: Dec 2009
Location: Austria
Posts: 1,536
Default

ok i tried to combine your last script with the one where the same airgroup gets respawned everytime you shot a certain amount down....

doesnt work...


PHP Code:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;


public class 
Mission AMission
{
    
Stopwatch MissionTimer = new Stopwatch();

    public 
override void OnBattleStarted()
    {
        
base.OnBattleStarted();
        
MissionTimer.Start();
        
MissionNumberListener = -1;
    }


    public 
override void OnActorCreated(int missionNumberstring shortNameAiActor actor)
    {
        
base.OnActorCreated(missionNumbershortNameactor);

        if (
actor is AiAircraft)
        {
            switch ((
actor as AiAircraft).InternalTypeName())
            {

                case 
"bob:Aircraft.He-111P-2":

                    
Timeout(240, () =>    // Time in Seconds
                         
{
                             (
actor as AiAircraft).Destroy();
                         });
                    break;
            }
        }
    }
    
int planecounter 0;

    
    public 
override void OnActorDead(int missionNumberstring shortNameAiActor actor, List<DamagerScoredamages)
    {
        
base.OnActorDead(missionNumbershortNameactordamages);

        
AiAction MakeNewAircraft GamePlay.gpGetAction("SpawnAircraft");

        if (
actor != null && MakeNewAircraft != null && actor is AiAircraft)
        {
            if (
actor.Name().Contains("BoB_RAF_F_FatCat_Early"))
            {
                
planecounter++;

                if (
planecounter == 2)
                {
                    
MakeNewAircraft.Do();
                    
GamePlay.gpHUDLogCenter("New Enemy spawned!");
                }
            }
        }
    }
 
    public 
override void OnTickGame()
    {
    
        if(
MissionTimer.Elapsed.TotalSeconds >= 180)  //Loads a mission every 180s
        
{
            
Random ZufaelligeMission = new Random();

            
MissionTimer.Restart(); // Sets timer to 0 and start again
    
            
switch (ZufaelligeMission.Next(1,65))
            {
                case 
1:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission1.mis");
                    break;
                case 
2:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission2.mis");
                    break;
                case 
3:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission3.mis");
                    break;
                case 
4:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission4.mis");
                    break;
                case 
5:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission5.mis");
                    break;
                case 
6:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission6.mis");
                    break;
                case 
7:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission7.mis");
                    break;
                case 
8:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission8.mis");
                    break;
                case 
9:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission9.mis");
                    break;
                case 
10:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission10.mis");
                    break;
                case 
11:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission11.mis");
                    break;
                case 
12:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission12.mis");
                    break;
                case 
13:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission13.mis");
                    break;
                case 
14:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission14.mis");
                    break;
                case 
15:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission15.mis");
                    break;
                case 
16:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission16.mis");
                    break;
                case 
17:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission17.mis");
                    break;
                case 
18:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission18.mis");
                    break;
                case 
19:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission19.mis");
                    break;
                case 
20:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission20.mis");
                    break;
                case 
21:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission21.mis");
                    break;
                case 
22:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission22.mis");
                    break;
                case 
23:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission23.mis");
                    break;
                case 
24:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission24.mis");
                    break;
                case 
25:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission25.mis");
                    break;
                case 
26:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission26.mis");
                    break;
                case 
27:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission27.mis");
                    break;
                case 
28:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission28.mis");
                    break;
                case 
29:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission29.mis");
                    break;
                case 
30:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission30.mis");
                    break;
                case 
31:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission31.mis");
                    break;
                case 
32:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission32.mis");
                    break;
                case 
33:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission33.mis");
                    break;
                case 
34:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission34.mis");
                    break;
                case 
35:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission35.mis");
                    break;
                case 
36:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission36.mis");
                    break;
                case 
37:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission37.mis");
                    break;
                case 
38:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission38.mis");
                    break;
                case 
39:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission39.mis");
                    break;
                case 
40:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission40.mis");
                    break;
                case 
41:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission41.mis");
                    break;
                case 
42:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission42.mis");
                    break;
                case 
43:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission43.mis");
                    break;
                case 
44:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission44.mis");
                    break;
                case 
45:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission45.mis");
                    break;
                case 
46:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission46.mis");
                    break;
                case 
47:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission47.mis");
                    break;
                case 
48:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission48.mis");
                    break;
                case 
49:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission49.mis");
                    break;
                case 
50:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission50.mis");
                    break;
                case 
51:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission51.mis");
                    break;
                case 
52:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission52.mis");
                    break;
                case 
53:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission53.mis");
                    break;
                case 
54:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission54.mis");
                    break;
                case 
55:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission55.mis");
                    break;
                case 
56:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission56.mis");
                    break;
                case 
57:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission57.mis");
                    break;
                case 
58:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission58.mis");
                    break;
                case 
59:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission59.mis");
                    break;
                case 
60:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission60.mis");
                    break;
                case 
61:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission61.mis");
                    break;
                case 
62:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission62.mis");
                    break;
                case 
63:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission63.mis");
                    break;
                case 
64:
                    
GamePlay.gpPostMissionLoad("missions\\Single\\apocalypseLondon\\mission64.mis");
                    break;
               
            }
        }
    }


__________________

Last edited by David198502; 10-18-2011 at 07:54 PM.
Reply With Quote
  #2  
Old 10-18-2011, 08:01 PM
FG28_Kodiak FG28_Kodiak is offline
Approved Member
 
Join Date: Dec 2009
Location: Swabia->Bavaria->Germany
Posts: 884
Default

Can i have the complete mission please?
Reply With Quote
  #3  
Old 10-18-2011, 09:18 PM
David198502's Avatar
David198502 David198502 is offline
Approved Member
 
Join Date: Dec 2009
Location: Austria
Posts: 1,536
Default

here it is...

it also would be great if the hurris of the main mission-could be destroyed after a while as well, but they should remain longer on the map then the He's...tried that by myself, but without luck, so i deleted the part again from the script.
Attached Files
File Type: zip London.zip (41.7 KB, 17 views)
__________________
Reply With Quote
  #4  
Old 10-19-2011, 05:01 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

FG28_Kodiak, it looks like PassThrough trigger works 2 times, when entering the zone and when exiting it. If there are several aircraft they can triger it several time as well. A solution is not to do any calculations or actions in onTrigger method but make them in some other method like OnTickGame if the trigger was active before. It looks like my mission works now with this workaround but it is not very convenient. If you have any advice I will be grateful.

The mission is here http://forum.1cpublishing.eu/showpos...1&postcount=10

Thanks again!
Reply With Quote
  #5  
Old 02-03-2012, 06:00 PM
Gromic's Avatar
Gromic Gromic is offline
Approved Member
 
Join Date: Aug 2010
Posts: 77
Default

Evening Chaps,

got a strange problem using a TTime trigger that isn't firing while being called though a submission that is loaded via the GamePlay.gpPostMissionLoad function.

If I load the mission by itself then the TTime trigger works fine. Apparently there's something within the main mission that seems to void a TTime trigger within a submission.

I've read through the entire thread but since I'm a noob at coding, I haven't found anything that adresses the issue specifically.

I'm sure most here will recognise the basic script. The Bold portion in the script below loads the submission:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{
 

 AiAircraft PlayerPlane;

// destroys aircraft abandoned by a player.
    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 OnPlaceLeave (Player player, AiActor actor, int placeIndex) 
    {
		base.OnPlaceLeave (player, actor, placeIndex);
		Timeout (1, () =>
				{damageAiControlledPlane (actor);}
			);
	}

	public override void OnAircraftCrashLanded (int missionNumber, string shortName, AiAircraft aircraft) 
    {
		base.OnAircraftCrashLanded (missionNumber, shortName, aircraft);
		Timeout (300, () =>
            { destroyPlane(aircraft); }
			);
	}
    public override void OnAircraftLanded (int missionNumber, string shortName, AiAircraft aircraft) 
    {
        base.OnAircraftLanded(missionNumber, shortName, aircraft);
        Timeout(300, () =>
            { destroyPlane(aircraft); }
            );
    }

/////////////////////////////////////////////////////////////////////////////
    //Listen to events of every (sub)mission
    public override void Init(maddox.game.ABattle battle, int missionNumber)
    {
        base.Init(battle, missionNumber);
        MissionNumberListener = -1; //Listen to events of every mission
    }

//////////////////////////////////////////////////////////////////////////////
// Loads random submissions

        public override void OnTrigger(int missionNumber, string shortName, bool active) 
        {
            if ("trigger01".Equals(shortName)  && active) 
            { 
                DoDamage();
            }
            GamePlay.gpGetTrigger(shortName).Enable = false;
        }
    
    
        private void DoDamage()
        {
            PlayerPlane = (AiAircraft)GamePlay.gpPlayer().Place();              
            // Initial Mission - can be any type    
            Random RandomIncident = new Random();
            
        	switch (RandomIncident.Next(1, 13))
			{
			    case 1:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB1.mis");        
			        break;
			    case 2:	
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB2.mis");       
			        break;
			    case 3:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB3.mis");
			        break;
			    case 4:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB4.mis");
			        break;
			    case 5:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB5.mis");
			        break;
			    case 6:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB6.mis");
			        break;
			    case 7:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB7.mis");
			        break;
			    case 8:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB8.mis");
			        break;
			    case 9:
			        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB9.mis");
            	                break;
            	            case 10:
            	                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB10.mis");
            	                break;
                            case 11:
            	                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB11.mis");
            	                break;
            	            case 12:
            	                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB12.mis");
            	                break;
			}        	
        	
        }
        public override void OnTickGame()
        {


		    // loads the 1st sub-mission in 5 min and repeates it every 10 min.
            if (Time.tickCounter() % 18000 == 9000) // 18000 = 10 min repeat. 9000 = 5 min delay. 
            // the 1st figure above must be always larger than 2nd!
            {
                Random RandomIncident = new Random();
		        // Fighter mission generation
                switch (RandomIncident.Next(1, 7))
                {
                    case 1:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB1.mis");
                        break;
                    case 2:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB3.mis");
                        break;
                    case 3:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB4.mis");
                        break;
                    case 4:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB9.mis");
                        break;
                    case 5:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB11.mis");
                        break;
                    case 6:
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB12.mis");
                        break;

                }

            }

	    // Loads Missions consecutively

		if (Time.tickCounter() % 756000 == 1800) // 756000 = 420 (7 Hours) min repeat. 1800 = 1 min delay. 
  		{
      		GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB7.mis");
            	{
                	GamePlay.gpHUDLogCenter("Monday, August 12 1940 08:01 am");
            	}
		}
        /* if (Time.tickCounter() % 108000 == 1800) // 108000 = 60 min repeat. 18000 = 10 min delay. 
        {
            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB6.mis");
            {
                GamePlay.gpHUDLogCenter("Monday, August 12 1940 08:00 am");
            }
        }
        if (Time.tickCounter() % 108000 == 1800) // 108000 = 60 min repeat. 18000 = 10 min delay. 
        {
            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB6.mis");
            {
                GamePlay.gpHUDLogCenter("Monday, August 12 1940 08:00 am");
            }
        }
        if (Time.tickCounter() % 108000 == 1800) // 108000 = 60 min repeat. 18000 = 10 min delay. 
        {
            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB6.mis");
            {
                GamePlay.gpHUDLogCenter("Monday, August 12 1940 08:00 am");
            }
        }
        if (Time.tickCounter() % 108000 == 1800) // 108000 = 60 min repeat. 18000 = 10 min delay. 
        {
            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/GHSCRIPTED/SUB6.mis");
            {
                GamePlay.gpHUDLogCenter("Monday, August 12 1940 08:00 am");
            }
        } */
    }

}
And here is the script that is loaded with the submission itself. The bolded portions call the trigger itself.

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
using maddox.GP;

public class Mission : AMission
{
    private const int All = -1;
    private const int Allies = 1;
    private const int Axis = 2;

    public override void OnMissionLoaded(int missionNumber)
    {
        base.OnMissionLoaded(missionNumber);
    }


    public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
       base.OnTrigger(missionNumber, shortName, active);

        //Triggers for RAF actions
        //Report Examples
        //SendScreenMessageTo(Allies, "Message to Red");
        //SendScreenMessageTo(Axis, "Message to Blue");
        if ((shortName == "LW_Spawn_7A") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7A"); //TriggerName
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "LW_Spawn_7B") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7B"); //TriggerName
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "LW_Spawn_7C") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7C"); //TriggerName
            if (action != null)
            {
                action.Do();
            }

        }

        if ((shortName == "ALL_Radio_7A") && active)
        {
            AiAction action = GamePlay.gpGetAction("ALL_Radio_7A"); //TriggerName
            SendScreenMessageTo(Allies, "CH reports heavy buildup rallying at AX-16 flying low. We're loosing contact.");
            SendScreenMessageTo(Axis, "Bodo reports EG210 massing at AX-16.  Low level Jabo to attack radar at AP-17 and AR-18.");
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "LW_Radio_7A") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Radio_7A"); //TriggerName
            SendScreenMessageTo(Axis, "Bodo reports EG210 now AR-16. Attacking AP-17 and AR-18 radar in 5 minutes.");
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "GB_Radio_7A") && active)
        {
            AiAction action = GamePlay.gpGetAction("GB_Radio_7A"); //TriggerName
            SendScreenMessageTo(Allies, "SC reporting: Chain home station AP-17 Eastbourne is under attack!");
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "GB_Radio_7B") && active)
        {
            AiAction action = GamePlay.gpGetAction("GB_Radio_7B"); //TriggerName
            SendScreenMessageTo(Allies, "SC reporting: Chain home station AR-18 Rye is under attack!");
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "GB_Radio_7C") && active)
        {
            AiAction action = GamePlay.gpGetAction("GB_Radio_7C"); //TriggerName
            SendScreenMessageTo(Allies, "SC reporting: Chain home station AV-21 Dover is under attack!");
            if (action != null)
            {
                action.Do();
            }

        }
        if ((shortName == "GB_Radio_7D") && active)
        {
            AiAction action = GamePlay.gpGetAction("GB_Radio_7C"); //TriggerName
            SendScreenMessageTo(Allies, "SC reporting: Chain home station AS-22 Dunkirk is under attack!");
            if (action != null)
            {
                action.Do();
            }

        }
        GamePlay.gpGetTrigger(shortName).Enable = false;
    }
    private void SendScreenMessageTo(int army, string message)
    {
        if (army == All)
        {
            GamePlay.gpHUDLogCenter(message);
        }
        else
        {
            //Singleplayer (for Testing)
            if (GamePlay.gpRemotePlayers() == null ||
                GamePlay.gpRemotePlayers().Length <= 0)
            {
                if (GamePlay.gpPlayer() != null &&
                    GamePlay.gpPlayer().Army() == army)
                {
                    GamePlay.gpHUDLogCenter(message);
                }
            }
            else // Multiplayer
            {
                var playersInArmy = new List<Player>();

                foreach (var player in GamePlay.gpRemotePlayers())
                {
                    if (player.Army() == army)
                    {
                        playersInArmy.Add(player);
                    }
                }

                GamePlay.gpHUDLogCenter(playersInArmy.ToArray(), message);
            }
        }
    }
}
The triggers themselves are also properly defined within the .mis file of the submission, so that shouldn't be a problem. As stated, everything works fine when I load the mission by itself.

I'd appreciate any help or suggestions.

Danke schön

Gromic
__________________
I5-750 @ 3,8GHz / MSI P55-GD65 / MSI GTX570 Twin Frozr II / 4x2GB G.Skill 1600MHz / Corsair TX650 PSU / RAID 0 2x640GB WD Black
W7 Pro x64 SP1 / MS FFB2 +Saitek X45 / Freetrack + NP Clip Pro + PS3 Eye / Samsung BX2450 24" HDMI LED

Last edited by Gromic; 02-03-2012 at 08:03 PM. Reason: Format Edit
Reply With Quote
  #6  
Old 02-03-2012, 08:14 PM
Gromic's Avatar
Gromic Gromic is offline
Approved Member
 
Join Date: Aug 2010
Posts: 77
Default

Update

Been doing some "debugging" with a squadie who works in the field and now we're both scratching our heads.

We've implimented a gpHUDLogCenter Message just to see if the triggers are actually meeting thier requirements. They definately are and this begs the question why those three flights aren't spawning. This has us both stumped.

Code:
    public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
        //base.OnTrigger(missionNumber, shortName, active);
        {
		    GamePlay.gpHUDLogCenter(string.Format("Mission {0}, Name {1}, Active={2}", missionNumber, shortName, active));
	    }
        //Triggers for RAF actions
        //Report Examples
        //SendScreenMessageTo(Allies, "Message to Red");
        //SendScreenMessageTo(Axis, "Message to Blue");
        if ((shortName == "LW_Spawn_7A") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7A"); //TriggerName
            if (action != null)
            {
		        GamePlay.gpHUDLogCenter(string.Format("We have action {0}", action.Name));  
                action.Do();
            }

        }
        if ((shortName == "LW_Spawn_7B") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7B"); //TriggerName
            if (action != null)
            {
		        GamePlay.gpHUDLogCenter(string.Format("We have action {0}", action.Name));  
                action.Do();
            }

        }
        if ((shortName == "LW_Spawn_7C") && active)
        {
            AiAction action = GamePlay.gpGetAction("LW_Spawn_7C"); //TriggerName
            if (action != null)
            {
		        GamePlay.gpHUDLogCenter(string.Format("We have action {0}", action.Name));  
                action.Do();
            }

        }
We are getting messages stating the trigger number, name and its active status so now we know that the actual trigger is firing and getting passed through to action.Do(). Still, the aircraft tied to those triggers aren't spawning at the airfield. I figured it might be a problem with the airfield itself (spawn points) and tested with air starts. No luck.

Frustrating to say the least.

__________________
I5-750 @ 3,8GHz / MSI P55-GD65 / MSI GTX570 Twin Frozr II / 4x2GB G.Skill 1600MHz / Corsair TX650 PSU / RAID 0 2x640GB WD Black
W7 Pro x64 SP1 / MS FFB2 +Saitek X45 / Freetrack + NP Clip Pro + PS3 Eye / Samsung BX2450 24" HDMI LED
Reply With Quote
  #7  
Old 02-04-2012, 06:45 AM
Smokeynz Smokeynz is offline
Approved Member
 
Join Date: Apr 2011
Posts: 106
Default

Have you tried compiling the whole cs, including the new loaded sub mis into one complete cs?

As it stands the triggers are a little buggy, especially as dedicated style hosting. I suspect the DS is simplified allowing for basic operation and missing many advanced ops awaiting final Dedicated proper to be created.

I have been trying to get passthru triggers too work for players, proved to be quite difficult but have something semi functioning now.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 03:08 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.