![]() |
|
#1
|
|||
|
|||
![]() Quote:
0:BoB_LW_StG77_Stab.000 after you land/crash/etc and create a new plane this one will be named: 1:BoB_LW_StG77_Stab.000 then next time 2:BoB_LW_StG77_Stab.000 etc. This also occurs with AI planes created using sub missions. WildWillie |
#2
|
|||
|
|||
![]()
I thought about this a bit more, I think you can solve this by creating a separate void
The trick is keep the 2 triggers separate, but instead of calling the action or text from the trigger call a void You need a bool or interger count in the trigger to act as a reference that the condition has been met then call the void within the void have conditional if statement or switch, in the case of each bool or interger count being this state or value then call the result if it hasnt had both triggers call yet nothing happens, or you could call a text message "half the column destroyed" . the following might work, it is something I use for other things, but no real reason this wont work here for this. code itself may require tweaking a little, but you get the idea Code:
private int column; public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); if ("Target1".Equals(shortName) && active) { column = column + 1; callcolumn(); GamePlay.gpGetTrigger(shortName).Enable = false; } if ("Target1_1".Equals(shortName) && active) { column = column + 1; callcolumn(); GamePlay.gpGetTrigger(shortName).Enable = false; } } private void callcolumn() { switch (column) { case 1 GamePlay.gpHUDLogCenter(" Half the Column destroyed!!!"); break; case 2 column = 0; GamePlay.gpHUDLogCenter("Column destroyed!!!"); break; } } Last edited by Smokeynz; 03-15-2012 at 06:12 AM. |
#3
|
|||
|
|||
![]()
Hey Smokeynz,
I got the full script working based on Kodiak's script above with a little tweaking, but was only working if the chiefs spawned from the beginning of the battle. If the Chiefs were flagged to 'spawn on sctipt' the triggers would not activate. So I have it all working great with the "bool Target1_1triggered = false;" script above. Kodiak came back to me with a possible fix to make the triggers activate if chiefs 'Spawn from script'. I gave it a quick go this morning before work but did not activate triggers, will test properly tonight. I will also give yours a shot as it is a different approach and would be interesting to see if "on the whole" it is a neater script or not. Will keep you both informed and send you the test mission tonight if I am stuck.
__________________
__________________ 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 |
#4
|
|||
|
|||
![]()
yes both work, the difference notwithstanding a little more complex with a void and switch, is it catches the half completed case for your outcome, and also you could add more triggers, like switch(column) for cases of 3, 4, 5, 6 and so on then do different things at different levels.
In this way you can also have other trigger results interact with main counter. Case selection can be more useful when you want it more flexible for different outcomes. A bool is true or false, so you really have only 2 states or maybe an elseif as a third. bool true and falses can end up in sequential if statements and you can trap yourself Last edited by Smokeynz; 03-14-2012 at 10:42 PM. |
#5
|
|||
|
|||
![]()
Awesome I understand, I am keen to put your code together and see how it works. Will try tonight
![]()
__________________
__________________ 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 |
#6
|
|||
|
|||
![]()
Made some test with the TGroupDestroyed trigger
Found a additional problem with the TGroupDestroyed trigger, the trigger is only active before the group reached the endpoint. On the endpoint the trigger is automaticaly disabled. Seems to be a feature and not a bug, but i think its good to know. One of my test the 0_Chief had the shortest way (few meters), i don't destroy any target, only fly around. After the trigger is disabled automatically it no longer possible to activate the trigger. Server: Des_1 Trigger: True Server: Des_2 Trigger: True Server: Des_3 Trigger: True Server: -------------------------- Server: Des_1 Trigger: True Server: Des_2 Trigger: True Server: Des_3 Trigger: True Server: -------------------------- Server: Des_1 Trigger: True Server: Des_2 Trigger: True Server: Des_3 Trigger: True Server: -------------------------- Server: Des_1 Trigger: True Server: Des_2 Trigger: True Server: Des_3 Trigger: True Server: -------------------------- Server: Des_1 Trigger: False Server: Des_2 Trigger: True Server: Des_3 Trigger: True Server: -------------------------- Server: Die Schlacht ist beendet. My testscript and mission, the script shows the state of trigger every 10sec. : Code:
[PARTS] core.100 bob.100 [MAIN] MAP Land$English_Channel_1940 BattleArea 251703 183294 91819 60561 10000 TIME 12 WeatherIndex 0 CloudsHeight 1000 BreezeActivity 10 ThermalActivity 10 player BoB_LW_LG2_I.000 [GlobalWind_0] Power 3.000 0.000 0.000 BottomBound 0.00 TopBound 1500.00 GustPower 5 GustAngle 45 [splines] [AirGroups] BoB_LW_LG2_I.01 [BoB_LW_LG2_I.01] Flight0 1 Class Aircraft.Bf-109E-4 Formation FINGERFOUR CallSign 26 Fuel 100 Weapons 1 Skill 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 [BoB_LW_LG2_I.01_Way] NORMFLY 288810.19 211014.55 500.00 300.00 NORMFLY 290995.02 216329.47 500.00 300.00 [CustomChiefs] [Chiefs] 0_Chief Vehicle.AEC_Matador gb 2_Chief Vehicle.AEC_Matador gb 1_Chief Vehicle.AEC_Matador gb [0_Chief_Road] 291352.13 215913.05 38.40 0 2 4.17 291328.78 215953.20 38.40 [2_Chief_Road] 291173.38 215887.72 38.40 0 5 2.08 S 2563 0 0.80 40.00 P 291185.31 215916.13 S 2563 0 0.62 20.00 P 291263.63 216119.81 S 2563 0 0.24 20.00 P 291455.81 216619.78 291470.13 216668.56 38.40 [1_Chief_Road] 291638.69 216413.20 38.40 0 7 4.17 S 2564 0 0.25 20.00 P 291552.34 216412.75 S 2564 0 0.32 20.00 P 291449.75 216409.33 S 2564 0 0.50 20.00 P 291139.50 216399.00 S 2562 0 0.58 20.00 P 291026.44 216393.27 S 2562 0 0.84 40.00 P 290816.22 216703.83 290805.72 216727.70 38.40 [Stationary] [Buildings] [BuildingsLinks] [Trigger] Des_1 TGroupDestroyed 0_Chief 50 Des_2 TGroupDestroyed 1_Chief 50 Des_3 TGroupDestroyed 2_Chief 50 Code:
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using maddox.game; using maddox.game.world; public class Mission : AMission { Stopwatch MessageTimer = new Stopwatch(); public override void OnBattleStarted() { base.OnBattleStarted(); MessageTimer.Start(); MissionNumberListener = -1; } public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages) { base.OnActorDead(missionNumber, shortName, actor, damages); GamePlay.gpLogServer(null, "Actor: {0}", new object[] { actor.Name() }); } public override void OnTickGame() { base.OnTickGame(); if (MessageTimer.Elapsed.TotalSeconds >= 10) { GamePlay.gpLogServer(null, "Des_1 Trigger: {0}", new object[] { GamePlay.gpGetTrigger("Des_1").Enable.ToString() }); GamePlay.gpLogServer(null, "Des_2 Trigger: {0}", new object[] { GamePlay.gpGetTrigger("Des_2").Enable.ToString() }); GamePlay.gpLogServer(null, "Des_3 Trigger: {0}", new object[] { GamePlay.gpGetTrigger("Des_3").Enable.ToString() }); GamePlay.gpLogServer(null, "--------------------------", null); MessageTimer.Restart(); } } public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); GamePlay.gpLogServer(null, "Trigger: {0}", new object[] { shortName }); GamePlay.gpHUDLogCenter(null, "Trigger: {0}", new object[] { shortName }); GamePlay.gpGetTrigger(shortName).Enable = false; } } |
#7
|
|||
|
|||
![]()
Interesting, although not unexpected considering the detroyed trigger task is to activate on object destroyed, I mean how many times must it be kaput!
Probably a worth while exercise to look at all triggers in a similar way to see what "features" they have. For example, for the pass through trigger, from what I've seen it can be handled in a number of ways. if (shortName.Equals(shortName) && active) { //do somthing GamePlay.gpGetTrigger(shortName).Enable = false; } if you use only the following ,You can use the trigger in both true and false and it is always live. if (shortName.Equals(shortName)) { //do somthing } if you use only the following , it appears to only activate on true if (shortName.Equals(shortName) && active) { //do somthing } if you use only the following , it appears to only activate on true and disabled after use if (shortName.Equals(shortName) && active) { //do somthing GamePlay.gpGetTrigger(shortName).Enable = false; } So with that in mind, maybe leaving the following out of the destroy trigger it will stay live. GamePlay.gpGetTrigger(shortName).Enable = false; |
![]() |
|
|