![]() |
|
#1
|
|||
|
|||
![]()
I used to have no problems with the FMB in il2 1946. I created many co-ops for Squad members to enjoy.
FMB in CoD seems to be too complex. What are scripts and why should I have to do something with them just to create a spawn time different from the standard 12.00 start time? Best Regards, MB_Avro. |
#2
|
|||
|
|||
![]()
The mission editor is very simple compared to other flight mission mission editors.
Creating a delayed spawn is also very easy, here is a thread describing how this is achieved, really is very simple. Creating new scripts is tough unless you know c#. But these are not essential or you can just use other peoples' scripts. What is needed is some decent documentation of features and such like.. this is the one thing that pisses me off, releasing a sim with such poor documentation, after soo many years in development is just crap. |
#3
|
|||
|
|||
![]()
If it's that simple, why does it need a forum for it's self?
Because it's not simple. In fact, while it IS very powerful, and some who knows it well (which to be honest, no one know's Clod's FMB well yet, 'cos it's not finished) can produce astonishing results, it bears the same relation to a worthwhile content editor for gamers to use as Notepad has to a proper CMS system. Yes, you can write a simple home page with Notepad. Yes, you "could" write Technet with notepad. But you wouldn't, and people don't. Simply put, the FMB interface and documentation is awful. It always was. It's just that with a total lack of content or a dynamic mission engine we feel the true and utter awfulness of the FMB more than ever. Seeing as the game lacks so much content I really think that the FMB forum is the one place it would be worthwhile for 1C to invest in a more tangible presence, helping thier customers supply content they themselves were too lazy or short sited to make. |
#4
|
|||
|
|||
![]()
Having its own forum section is no indication of its complexity/simplicity.
I had never played IL2 or looked at the FMB prior to CloD and it took me about 30 minutes to figure out everything except the custom scripting. Making simple missions is very easy. The only thing that is tricking is the scripting, as i simply do not know C#. This i could not agree more with. Last edited by MadTommy; 06-06-2011 at 12:12 PM. Reason: typo |
#5
|
||||
|
||||
![]()
I earn money for living by writing complex things in "notepad".
![]() Last edited by ZaltysZ; 06-06-2011 at 02:02 PM. |
#6
|
|||
|
|||
![]()
I don't find the FMB any more or less hard than the old one; there are some new features which people need to get accustomed to, that's all.
Scripting is another matter though. What is urgently needed is some scripting basics; there is some example code on the 'net, but I think the syntax of some of the code will have a lot of people stumped. Luckily I have an experienced programmer friend who has offered to each me some C# basics when he has time, but most people will not be so fortunate. |
#7
|
|||
|
|||
![]()
Purchased a book called "Introduction (or basic) course to C# programming" by a university professor last Saturday. It is only about 200 pages and makes things way easier.
Below is a sample code I wrote yesterday after just 2 days of reading it. Of cause I was using 2 pieces of code from other people: ZaltysZ and naryv, but the book provided enough understanding to combine them and finetune to my needs. Just 4 weeks ago I thought C# was beyond my comprehension. Now I think the basics of it are easier than basics of the English language. Do not expect developers include such a book into documentation, just go out and buy one. Code:
string[] activeSector = { "D3", "D4" }; // sectors attacked by ground groups string[] side = { "хз", "Red", "Blue"}; // army side int LastMissionLoaded = 0; double initTime; string currSide = " "; string currSector = " "; int missLoaded = 0; // debugging public override void Init(maddox.game.ABattle battle, int missionNumber) { base.Init(battle, missionNumber); MissionNumberListener = -1; //Listen to events of every mission //Planned missions MissionLoader(int offset, int repeat, string mission) MissionLoader(90, -1, "missions/Multi/Dogfight/BoF1/sub/0_1_gg.mis"); // 10s from main mission start and no repeate every -s MissionLoader(900, -1, "missions/Multi/Dogfight/BoF1/sub/0_2_gg.mis"); MissionLoader(300, -1, "missions/Multi/Dogfight/BoF1/sub/1_2_gg.mis"); MissionLoader(1200, -1, "missions/Multi/Dogfight/BoF1/sub/1_1_gg.mis"); } public void MissionLoader(int offset, int repeat, string mission) { if (offset > 0) Timeout(offset, () => { MissionLoader(0, repeat, mission); }); else { GamePlay.gpPostMissionLoad(mission); // debugging //GamePlay.gpHUDLogCenter( side[j].ToString() + " tanks are attacking sector " + activeSector[i].ToString() + "!"); missLoaded++; GamePlay.gpHUDLogCenter(String.Format("Mission {0} loaded.", missLoaded)); if (repeat > 300 ) Timeout(repeat, () => { MissionLoader(0, repeat, mission); }); } } public override void OnTrigger(int missionNumber, string shortName, bool active) { base.OnTrigger(missionNumber, shortName, active); for (int i = 0; i < activeSector.Length ; i++) { for (int j = 1; j < side.Length; j++) { string str = i.ToString() + "_" + (j).ToString() + "_gg"; if (str.Equals(shortName)) // checks trigger { GamePlay.gpPostMissionLoad("missions\\Multi\\Dogfight\\BoF1\\sub\\" + str + ".mis"); // loads tanks mission //GamePlay.gpHUDLogCenter(side[j].ToString() + " tanks are attacking sector " + activeSector[i].ToString() + "! ***test***"); currSide = side[j]; currSector = activeSector[i]; repeatGroundMsg(90, currSide, currSector); //initTime = 0.0; //Timeout(initTime += 90, () => //{ // GamePlay.gpHUDLogCenter(currSide.ToString() + " tanks are attacking sector " + currSector.ToString() + "! ***in cycle***"); // //GamePlay.gpHUDLogCenter(addStr + " tanks are attacking sector " + activeSector[i] + "!"); //}); break; } } } } private void repeatGroundMsg(int delay, string currSide, string currSector) { initTime = 0.0; Timeout(initTime += delay, () => { GamePlay.gpHUDLogCenter(currSide.ToString() + " tanks are attacking sector " + currSector.ToString() + "!"); // is .ToString() necessary here?? }); } OT, but as I do not want to start a new thread for this. Can Timeout(initTime += 90, () => be used inside a cycle? Does it prevents a cycle from further execution? I had some problems with triggers when Timeout(initTime += 90, () => was inside the onTrigger cycle. However current code is probably not different in essence from having Timeout(initTime += 90, () => inside the cycle but it works somehow )) Last edited by Ataros; 06-07-2011 at 07:20 AM. |
![]() |
|
|