![]() |
|
#1
|
||||
|
||||
![]()
there it is...
|
#2
|
|||
|
|||
![]()
Ok, i see couldn't work
this is the main block: Code:
using System; using maddox.game; using maddox.game.world; using System.Collections.Generic; public class Mission : AMission { } so you must place public override void OnActorCreated(....) { ..... ..... } and public override void OnTickGame(...) { ..... ..... } between the brackets. Your fault was that you placed the OnActorCreated into the OntickGame and this is not allowed in C#. Hint: Open your Clod Console and you will see error messages if anything goes wrong. So should your code look like: Code:
using System; using maddox.game; using maddox.game.world; using System.Collections.Generic; public class Mission : AMission { public override void OnActorCreated(int missionNumber, string shortName, AiActor actor) { base.OnActorCreated(missionNumber, shortName, actor); if (actor is AiAircraft) { switch ((actor as AiAircraft).InternalTypeName()) { case "bob:Aircraft.He-111P-2": Timeout(600, () => // Time in Seconds { (actor as AiAircraft).Destroy(); }); break; } } } public override void OnTickGame() { // loads the 1st sub-mission in 10 min and repeates it every 60 min. if (Time.tickCounter() % 10800 == 180) // 108000 = 60 min repeat. 1800 = 10 min delay. // pls. note!!! the 1st figure above must be always larger than 2nd! { GamePlay.gpPostMissionLoad("missions/Single/mission1.mis"); // prints message on screen after mission load GamePlay.gpHUDLogCenter("Hello, world! Mission1.mis loaded!"); // prints message on screen in 10 minutes double initTime = 0.0; Timeout(initTime += 600, () => { GamePlay.gpHUDLogCenter("10 minutes into the 1st mission! Wow! It works!!!"); }); // prints message on screen in 5 minutes Timeout(initTime += 300, () => { GamePlay.gpHUDLogCenter("Wholy s.. it works!!!"); }); } // loads the 2nd sub-mission, etc. the same way if (Time.tickCounter() % 10800 == 1000) // 108000 = 60 min repeat, 54000 = 30 min delay. { GamePlay.gpPostMissionLoad("missions/Single/mission2.mis"); GamePlay.gpHUDLogCenter("Mission2.mis loaded!"); double initTime = 0.0; Timeout(initTime += 600, () => { GamePlay.gpHUDLogCenter("Mission2 10 min message!"); }); Timeout(initTime += 300, () => { GamePlay.gpHUDLogCenter("Mission2 15 min message!"); }); } // loads the 3rd sub-mission if (Time.tickCounter() % 10800 == 2000) // 60 min repeat, 50 min delay { GamePlay.gpPostMissionLoad("missions/Multi/Single/mission3.mis"); GamePlay.gpHUDLogCenter("Mission3.mis loaded!"); double initTime = 0.0; Timeout(initTime += 600, () => { GamePlay.gpHUDLogCenter("Mission3 10 min message!"); }); Timeout(initTime += 300, () => { GamePlay.gpHUDLogCenter("Now it really works! You are a genius! Have fun!"); }); } } } |
#3
|
|||
|
|||
![]()
Very interesting thread. Thank you, Kodiak.
I guess spawning the same group OnTrigger again and again may not work because when the group spawns the 2nd time it belongs to the second mission, etc. The game engine includes mission counter as far as I understand from naryv's examples. I think a long_name of a group may include a mission (submission) number. Maybe the way to load the same group OnTrigger is to make a sub-mission which includes both an airgroup and a trigger. Then load the same submission OnTrigger. Can not grasp it 100% myself, just thinking aloud. |
#4
|
|||
|
|||
![]()
No, that works, but you have to clear the trigger again, after it was triggered.
If you have the following for the trigger: Code:
if (("RedIntercept1".Equals(shortName) && active) && (CountAIAirplanes(1) <= maxRedAI)) { AiAction action = GamePlay.gpGetAction("RedIntercept1"); if (action != null) MissionTimer1Int.Restart(); MissionTimer1IntA.Start(); GamePlay.gpLogServer(null, "Intercept 1 triggered ", new object[] { }); //Testmeldung { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } Code:
if (MissionTimer1IntA.Elapsed.Minutes >= 30) //wieder freischalten des Triggers { GamePlay.gpGetTrigger("RedIntercept1").Enable = true; MissionTimer1IntA.Reset(); GamePlay.gpLogServer(null, "Trigger 1 clear", new object[] { }); //Testmeldung }
__________________
http://cornedebrouwer.nl/cf48e |
#5
|
||||
|
||||
![]()
ok Kodiak...i tried the script.
the He's of the main mission disappear after the 60seconds, but all other He's of the submissions will stay on the map... so i pasted the relevant part of the script in all the submissios to destroy these He's as well.....this works! ...but is it possible to edit the script of the main mission, that all He's, including the ones of the submissions, disappear? i looked at your brilliant tutorials on sturmovik.de and saw that its possible to destroy planes not only after a certain time, but when they cross a certain waypoint...but honestly im a bit overwhelmed by all its details that i dont consider myself capable of doing this by myself.... i also saw that it is possible to load submissions randomly...but in your tutorial you have some conditions which determine whether a mission is loaded or not(mission x will not be loaded if one destroys friendly vehicle)...i would like to load submissions randomly, regardless of any conditions, every xx seconds.is that possible? i think its a better solution for my purpose to load submissions by random than loading mission after mission in determined sequence, because this would add an surprising factor, and i think it would shorten the script drastically, if i want to have 20 or more submissions. btw, i really appreciate your help, and admire your patience with me!thx in advance... PHP Code:
Last edited by David198502; 10-17-2011 at 02:03 PM. |
#6
|
|||
|
|||
![]() Quote:
The best place for the MissionNumberListener is a method that called at the begin of a Mission. Normaly i use OnBattleStarted() Code:
public override void OnBattleStarted() { base.OnBattleStarted(); MissionNumberListener = -1; } Quote:
Code:
Random ZufaelligeMission = new Random(); switch (ZufaelligeMission.Next(1,5)) { case 1: GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen6Sub1.mis"); break; case 2: GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen6Sub2.mis"); break; case 3: GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen6Sub3.mis"); break; case 4: GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen6Sub4.mis"); break; } |
#7
|
||||
|
||||
![]()
ok tried it, but i still dont know when and how i use those parts....
this is what i have so far.... PHP Code:
after xx seconds i want the game to load one mission ,selected randomly out of 4 submissions. i also want the He's loaded with the submission to be destroyed after the xx seconds, like the ones from the main mission. and i want the game to repeat that process, so that every xx seconds a new mission is loaded randomly.....so that the mission can run forever Last edited by David198502; 10-17-2011 at 05:33 PM. |
![]() |
Thread Tools | |
Display Modes | |
|
|