#11
|
||||
|
||||
@Kodiak, I'm looking at the script you posted to nullify multiple spawn events:
Quote:
Hope its no trouble to ask, I'm just learning the ropes here.... cheers Freyah |
#12
|
|||
|
|||
You get the triggername via shortName.
So you can check the trigger with a if clause. OnTrigger(..) should look like: Code:
public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); if ("109".Equals(shortName)) { AiAction Action = GamePlay.gpGetAction(shortName); // if your action has an other Name than your trigger change GamePlay.gpGetAction(shortName) into GamePlay.gpGetAction("ActionName") if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; // if trigger is TPassThru to avoid multiple activation return; // leave method to avoid second call of the Action } AiAction Action = GamePlay.gpGetAction(shortName); if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; } |
#13
|
||||
|
||||
Thanks for the speedy reply !! I think I'm understanding it better now, will test it out soon! Can I do this over and over in the same script, to get the same effect for other triggers of the same type? eg 109 , Spit , 110 , etc.
|
#14
|
|||
|
|||
Yes, simply add an other if clause (in a script you can only use one method, a second OnTrigger would cause an error, so you must modify the existing):
Code:
public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); if ("109".Equals(shortName)) { AiAction Action = GamePlay.gpGetAction(shortName); // if your action has an other Name than your trigger change GamePlay.gpGetAction(shortName) into GamePlay.gpGetAction("ActionName") if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; // if trigger is TPassThru to avoid multiple activation return; // leave method to avoid second call of the Action } if ("Spit".Equals(shortName)) { AiAction Action = GamePlay.gpGetAction(shortName); // if your action has an other Name than your trigger change GamePlay.gpGetAction(shortName) into GamePlay.gpGetAction("ActionName") if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; // if trigger is TPassThru to avoid multiple activation return; // leave method to avoid second call of the Action } AiAction Action = GamePlay.gpGetAction(shortName); if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; } Last edited by FG28_Kodiak; 05-27-2012 at 03:27 PM. |
#15
|
||||
|
||||
Thankyou Kodiak! That works like a charm. Got it to work using this :
Code:
using System; using System.Collections; using System.Collections.Generic; using maddox.game; using maddox.game.world; public class Mission : AMission { public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); if ("109".Equals(shortName)) { AiAction Action = GamePlay.gpGetAction("109"); // if your action has an other Name than your trigger change GamePlay.gpGetAction(shortName) into GamePlay.gpGetAction("ActionName") if (Action != null) Action.Do(); GamePlay.gpGetTrigger(shortName).Enable = false; // if trigger is TPassThru to avoid multiple activation return; // leave method to avoid second call of the Action } } } I'm very grateful for your time and for this lesson! I'm in your debt Sir! Now to tackle the Multiple trigger ones..... Cheers, Freyah |
#16
|
|||
|
|||
Freyhay, this should give you a head start with multiple grouped trigger objective.
All 3 ships must be destroyed before the objective is complete. Use it for just about anything. Your Triggers are called Ship1, ship2 etc. Code:
int TotalRedShipsDestroyed = 0; const string Objective_Ships = " English Supply Tankers 3 of 3,"; //BlueObjective RedShips Destroyed bool ship1 = false; //English Supply Tanker 1 of 3 ship1 bool ship2 = false; //English Supply Tanker 2 of 3 ship2 bool ship3 = false; //English Supply Tanker 3 of 3 ship3 public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); if ("ship1".Equals(shortName) && active) { TotalRedShipsDestroyed++; GamePlay.gpLogServer(null, "British Ship " + TotalRedShipsDestroyed.ToString() + " of 10 destroyed!!!", new object[] { }); ship1 = true; } if ("ship2".Equals(shortName) && active) { TotalRedShipsDestroyed++; GamePlay.gpLogServer(null, "British Ship " + TotalRedShipsDestroyed.ToString() + " of 10 destroyed!!!", new object[] { }); ship2 = true; } if ("ship3".Equals(shortName) && active) { TotalRedShipsDestroyed++; GamePlay.gpLogServer(null, "British Ship " + TotalRedShipsDestroyed.ToString() + " of 10 destroyed!!!", new object[] { }); ship3 = true; } if (ship1 && ship2 && ship3) { GamePlay.gpHUDLogCenter("English Supply ships headding North have been destroyed!!!"); GamePlay.gpGetTrigger(shortName).Enable = false; Timeout(10, () => { GamePlay.gpLogServer(null, "Blue Objective Completed!!!", new object[] { }); GamePlay.gpHUDLogCenter("Blue Objective Completed!!!"); Objective_Total_Blue += (Objective_Ships); }); } }
__________________
__________________ Win7, 64bit Ultra Asus P8P67Pro MB Intel i7-2600K Coursair 16GB (4x 4GB), DDR3-1600MHz Gainward Nvidia 580GTX 3GB DDR5 850-Watt Modular Power Supply WIN7 and COD on Gskill SSD 240GB 40" Panasonic LCD TrackIR5 + Thrustmaster Warthog stick, throttle & pedals |
#17
|
||||
|
||||
Thankyou hc_wolf! I will certainly try it out !
|
#18
|
|||
|
|||
Just trying 1st mission and wanted to use trigger.
What and where is "script spawn C"? |
#19
|
|||
|
|||
Its in the triggers menu
|
#20
|
|||
|
|||
Alpha
Thanks for reply. As commented in original question I am totally new to FMB in CLOD. I also read post by Kodiak. I cannot see any item menu that is like "script spawn C". I have attached screen shot of what I see. Any help appreciated. Cheers |
|
|