![]() |
|
#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 |
![]() |
|
|