Jump to content
mecharius

[Release] Anvil Mission Editor and Framework

Recommended Posts

Hellow,

I export sample mission and now i can`t open in Arma 3 Editor, him say me error to open mission.

Share this post


Link to post
Share on other sites

Glad to hear you are finding it useful. We've had some missions on the Tactical Gamer server made using the editor for a while now so its been relatively well tested with 15-20 players and multiple active objectives. Of course there were some teething issues to begin with, so a few application features were related to some early sorta bugs :) Let me know how your testing goes!

HV1cOOas.png?1

I have found, which I can not track down is randomly I have 2 AO's spawn first up when mission starts, this does not happen all times but is quite frequent,

Yes, this is a "feature" - it works ok for the Angel Fire mission so I haven't hunted it down yet. A fix will probably be in a later framework release.

If I use a destroy an object as mission objective and someone sneaks in and destroys it the AO is still active with all enemy but the mission is complete, my question do these enemy delete at any stage or are they going to be adding up populating the map.

The objectives currently use Bangabob's Enemy Occupation System to spawn enemies. For a destroy/intel/move type mission, when you move outside the spawn radius (~1000m off the top of my head) they will be despawned. If you move back in range they will respawn until you move out of range. There are some features like this of EOS that don't quite suit Anvil but at this point EOS is 95% there so there isn't any point reinventing the wheel.

On a side note I will likely look at making the spawn range configurable in the next version.

---------- Post added at 15:29 ---------- Previous post was at 15:24 ----------

Hellow,

I export sample mission and now i can`t open in Arma 3 Editor, him say me error to open mission.

Hi Santa, like last time its a bit hard to trouble shoot without more information.

The easiest thing would be for me to try to build and run the mission. If you are willing, could you share the "mission_data.json" file in the mission folder either here or via PM so I can try and see if I get a similar error? (The mission_data.json file is where Anvil saves its mission data so I'll be able to see the same as you see in the editor if you send it).

You could also try creating a new folder e.g. "MyMission.Altis" and copying the mission_data.json file to it. Open and export in Anvil and see if you get the same error.

Share this post


Link to post
Share on other sites

Santa, thanks for the PM. This is a known issue you were unlucky to come across (I've only had it twice in all the time I've been using the editor). To fix,

1. Close Anvil

2. Delete mission.sqm

3. Open Anvil

4. Export from Anvil

After that you should be good to go. Remember to backup your missions as you go! :)

Share this post


Link to post
Share on other sites

Now works for me!!!,

Ty for all.

---------- Post added at 17:52 ---------- Previous post was at 17:49 ----------

Hellow,

now have other error, using UPDATE FROM SQM.

2014-10-19 19:50:55.2767 MainWindow FATAL System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.

at System.Collections.Generic.Dictionary`2.get_Item(TKey key)

at AnvilParser.ParserClass.GetToken(String path)

at AnvilEditor.Models.Mission.TrySQMGet[T](String path, T defaultValue)

at AnvilEditor.Models.Mission.UpdateFromSQM()

at AnvilEditor.MainWindow.RefreshMissionFromSqm(Object sender, RoutedEventArgs e)

at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)

at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)

at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)

at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)

at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)

at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)

at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)

at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)

at System.Windows.Input.RoutedCommand.ExecuteCore(Object parameter, IInputElement target, Boolean userInitiated)

at System.Windows.Input.CommandManager.TransferEvent(IInputElement newSource, ExecutedRoutedEventArgs e)

at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)

at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)

at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)

at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)

at System.Windows.Input.RoutedCommand.ExecuteCore(Object parameter, IInputElement target, Boolean userInitiated)

at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)

at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)

at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

at System.Windows.Threading.DispatcherOperation.InvokeImpl()

at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)

at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

at System.Windows.Threading.DispatcherOperation.Invoke()

at System.Windows.Threading.Dispatcher.ProcessQueue()

at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)

at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)

at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)

at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)

at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)

at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)

at System.Windows.Threading.Dispatcher.Run()

at System.Windows.Application.RunDispatcher(Object ignore)

at System.Windows.Application.RunInternal(Window window)

at System.Windows.Application.Run(Window window)

at AnvilEditor.App.Main()

Share this post


Link to post
Share on other sites

Thats a new one to me :)

Where you by an chance editing the mission.sqm by hand? Does your mission.sqm still have "overviewText" and "briefingName" in the mission.sqm file? Does your mission.sqm still have an "Intel" class at the top?

Edited by mecharius

Share this post


Link to post
Share on other sites

Sure mission.sqm have class intel.

class Intel

{

briefingName="Anvil Santa";

overviewText="Mision de Prueba Santa";

resistanceWest=0;

startWeather=0;

startWind=0;

forecastWeather=0;

forecastWind=0;

forecastWaves=0;

year=2035;

month=6;

day=24;

hour=12;

minute=0;

startFogDecay=0;

forecastFogDecay=0;

};

Share this post


Link to post
Share on other sites

Ok, some more digging has turned up some weird things in the way newer missions are being read in by Anvil. Not sure if there has been a mission.sqm change or it is just some specific mission.sqm syntax that is confusing Anvil. I'm debugging now.

---------- Post added at 12:09 ---------- Previous post was at 10:30 ----------

Ok, I've been throwing a 10,000 line mission SQM at Anvil and have found that in some cases the ArmA editor expresses positions in scientific notation - for instance the position I was having trouble with was

position[]={12517.008,-5.9033726e-005,12771.403};

The Anvil SQM parser didn't understand the scientific "-5.9033726e-005" and so was failing to read in the mission SQM. I've fixed this and am now doing some testing with missions I have before I bundle up a release, 5.4_fix_2.

Actually come to think of it, I wonder if this is the cause of the "very rare" known issue I've been encountered 2 or 3 times. Thanks very much Santa for your feedback / bug reports!

Share this post


Link to post
Share on other sites

Version 5.4 Hotfix 2 has now been released with the following change log:

FIXED Long standing issue with incomplete mission.sqm generation (Thanks to |r| Santa from the BI forums for helping debug)
FIXED Error when parsing some mission.sqm formats (caused by missing sections or use of scientific notation)
ADDED Line numbers and syntax highlighting to SQM Browser

Download is from the Version 5.4 downloads page. If you already have maps I suggest you download the smaller zip file and replace the contents in your Anvil Editor directory. Thanks to Santa for some feedback - please keep reporting any issues you come across :)

Share this post


Link to post
Share on other sites
Guest

Newest version frontpaged on the Armaholic homepage.

** A link to the Altis and Stratis maps bundled is also availble from our downloadpage!

================================================

We have also "connected" these pages to your account on Armaholic.

This means in the future you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

Anvil has ceased to function. Has been working fine for weeks and now it will not launch at all. last thing I remember doing was looking at the include script thingy and seeing what it was all about and then hitting cancel. Since then, crashes on start every time. I see something about that include script bit at the start of this log file. Deleting my previous Anvil folder and unpacking the downloaded archive resolved the issue but this is certainly something to address.

This is a fantastic utility that BI needs to adopt from the author (as well as BangaBob) and implement at game editor level.... It's that useful.

Now for the nit picking... any chance you can expand the utility of your EOS implementation to include the level of control that can be had over EOS, including bastion functionality?

2014-12-06 11:34:42.7023 MainWindow DEBUG -------------------------------------------------2014-12-06 11:34:42.7023 MainWindow DEBUG Launching Anvil Editor
2014-12-06 11:34:42.7023 MainWindow DEBUG Application Version: 5.4.0.0
2014-12-06 11:34:42.9523 MainWindow DEBUG Creating new map
2014-12-06 11:34:42.9523 MainWindow DEBUG  - Loading map Altis
2014-12-06 11:34:43.0843 MainWindow DEBUG Application Loaded
2014-12-06 11:34:44.8254 MainWindow FATAL System.InvalidOperationException: Failed to compare two elements in the array. ---> System.NullReferenceException: Object reference not set to an instance of an object.
  at AnvilEditor.Models.Mission.<.ctor>b__0(ScriptInclude a, ScriptInclude b)
  at System.Array.FunctorComparer`1.Compare(T x, T y)
  at System.Collections.Generic.ArraySortHelper`1.InsertionSort(T[] keys, Int32 lo, Int32 hi, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.IntroSort(T[] keys, Int32 lo, Int32 hi, Int32 depthLimit, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.IntrospectiveSort(T[] keys, Int32 left, Int32 length, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
  --- End of inner exception stack trace ---
  at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
  at System.Array.Sort[T](T[] array, Int32 index, Int32 length, IComparer`1 comparer)
  at System.Collections.Generic.List`1.Sort(Comparison`1 comparison)
  at AnvilEditor.Models.Mission..ctor()
  at AnvilEditor.MainWindow.<GenerateNewMission>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
2014-12-06 11:34:45.3095 MainWindow FATAL System.InvalidOperationException: Failed to compare two elements in the array. ---> System.NullReferenceException: Object reference not set to an instance of an object.
  at AnvilEditor.Models.Mission.<.ctor>b__0(ScriptInclude a, ScriptInclude b)
  at System.Array.FunctorComparer`1.Compare(T x, T y)
  at System.Collections.Generic.ArraySortHelper`1.InsertionSort(T[] keys, Int32 lo, Int32 hi, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.IntroSort(T[] keys, Int32 lo, Int32 hi, Int32 depthLimit, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.IntrospectiveSort(T[] keys, Int32 left, Int32 length, IComparer`1 comparer)
  at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
  --- End of inner exception stack trace ---
  at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)
  at System.Array.Sort[T](T[] array, Int32 index, Int32 length, IComparer`1 comparer)
  at System.Collections.Generic.List`1.Sort(Comparison`1 comparison)
  at AnvilEditor.Models.Mission..ctor()
  at AnvilEditor.MainWindow.<GenerateNewMission>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
  at System.Windows.Threading.DispatcherOperation.InvokeImpl()
  at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
  at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  at System.Windows.Threading.DispatcherOperation.Invoke()
  at System.Windows.Threading.Dispatcher.ProcessQueue()
  at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
  at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
  at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
  at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
  at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
  at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
  at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
  at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
  at System.Windows.Threading.Dispatcher.Run()
  at System.Windows.Application.RunDispatcher(Object ignore)
  at System.Windows.Application.RunInternal(Window window)
  at System.Windows.Application.Run(Window window)
  at AnvilEditor.App.Main()

Edited by lawndartleo

Share this post


Link to post
Share on other sites

Hey, looks like for whatever reason there is a mismatch between the scripts included in the mission and the included scripts config file. I'll have another look at this in the next release and see if I can make it a bit more robust (bug report) In the meantime if you are willing to post or PM me the contents of your dodgy "data/supported_scripts.json" file as well as a screenshot of your "mission_raw\fw_scripts" directory so I can see which folders are there that would also help a lot.

As far as opening up more of the EOS functionality, this is unlikely at the moment. I think EOS is great but for a couple of reasons its a bit of a pain to bend it to Anvil's way of thinking. In the back of my head I am ultimately going to EOS with a simpler and cleaner system which is slightly better suited to Anvil. This is mainly because:

  • I'm already forking EOS to provide extra SQF interfaces and a "callback" system so that it will work with Anvil which makes upgrades/bugfixes hard to integrate.
  • The source code of EOS is not laid out in a way I find easy to read so its a bit of a chore to make the changes
  • I find EOS can break immersion because it doesn't cache down to the individual EI level so every time the enemy spawn in they are different troops and at 100% strength.
  • I'd love to build a "defend" mission for Anvil driven by something like bastion, however there are quite a few changes that would be required on the Anvil side and a few preliminary attempts I made at integrating EOS' Bastion were unsuccessful.
  • So far its just me coding Anvil (with lots of feedback from you guys and the tacticalgamer.com guys) so ultra-ambitious changes are slow going especially as I want to make sure they are well tested before releasing.

Share this post


Link to post
Share on other sites

Thank you for the response Mecharius.

Unfortunately I have nothing more to send besides the above because I scrapped the entire folder and restored the original archive... so no more problems AND no more logs.

Thank you for the explanation of EOS implementation. I didn't realize that the implementation was more of an integration.

Share this post


Link to post
Share on other sites

Hello. I have just started with your editor and would like to know if it is possible to add perhaps manually support for third party scripts in supported_scripts.json? Can you explain if possible and what to do if a scipt has multiple entries in init.sqf and description.ext ( being it #include "dialogue\define.hpp" or class RscTitles {#include "dialogue\RscTitles.hpp"}; or alike... ) or should we be adding these manually. Thank you.

PS: TPWCAS AI suppression system in included scripts opens a page for download A2 version 5.51 while A3 version is 5.5

May we suggest supported scripts?

Edited by _MaSSive

Share this post


Link to post
Share on other sites
Hello. I have just started with your editor and would like to know if it is possible to add perhaps manually support for third party scripts in supported_scripts.json? Can you explain if possible and what to do if a scipt has multiple entries in init.sqf and description.ext ( being it #include "dialogue\define.hpp" or class RscTitles {#include "dialogue\RscTitles.hpp"}; or alike... ) or should we be adding these manually. Thank you.

If you go to the edit menu and select "Add included script" you can add an additional included script. You can have as many lines in the respective sections as you want there. Does this answer your question? (Some of the features beyond the basics are not very well / at all documented... maybe I should do a video :))

PS: TPWCAS AI suppression system in included scripts opens a page for download A2 version 5.51 while A3 version is 5.5

May we suggest supported scripts?

After a lot of thought, supported / bundled scripts were removed in 5.4 (see changelog). This was done for three main reasons:

  • I don't have the time / patience to request permission from authors to distribute their scripts and then maintain the latest version in the download.
  • I want as much traffic to go to sites like armaholic so that they can show ads and help fund the service they offer the community.
  • To make it easier for users to add their own supported scripts or for me to add ones to the library

As a result there are a number of predefined supported scripts but only a very few select scripts are included in the Anvil download. This is unlikely to change.

If you have an updated link for TPWCAS feel free to post it here and I will update the supported scripts file for the next version.

Share this post


Link to post
Share on other sites
Anvil has ceased to function. Has been working fine for weeks and now it will not launch at all. last thing I remember doing was looking at the include script thingy and seeing what it was all about and then hitting cancel. Since then, crashes on start every time. I see something about that include script bit at the start of this log file. Deleting my previous Anvil folder and unpacking the downloaded archive resolved the issue but this is certainly something to address.

This is fixed in the next release. Thanks for reporting your issue!

Share this post


Link to post
Share on other sites

Thank you for your efforts.

Is there anything we users can do to help you expand map availability? Not capable of much more than grunt work, myself... but if that helps. With the availability of all the classic maps (AiA) there is certainly a want of this.

Edited by lawndartleo

Share this post


Link to post
Share on other sites

I'd love to have more maps in Anvil! The main issue is getting an image which is high enough quality so that it is usable in the editor. Once I have an image (with clear grid lines) I can do the config work that Anvil requires to convert map image coordinates to game map coordinates and back again.

If anybody is able to provide me with suitable map images (and clear evidence of permission to use them!) then I am more than happy to include them in the next release. There is a discussion about how to get these images here - http://forums.bistudio.com/showthread.php?178733-High-resolution-PDF-Image-Altis-Map-free-license&highlight=high+resolution+map - although the idea in the end was to use 10T's maps as he had done the bulk of the hard work already. For Anvil maps without the terrain textures are probably a bit easier to work with, although the textured maps look nice :)

I've approached a few map makers to get their maps on board but they don't seem to have a handy image "lying around".

Share this post


Link to post
Share on other sites

The cheat code works fine for me. How can I help?

AiA pretty much all output into EMF format. Shapur for whatever reason outputs at LEGO block resolution (what happened to vector???). Its bad. The rest are very good.

Edited by lawndartleo

Share this post


Link to post
Share on other sites

Awesome! Why don't you send me a link to your favourite map and I'll see how easy the process is. Once I have that sorted out we can try others... Nice one!

Share this post


Link to post
Share on other sites

lets go smallish for addition #1. I do not know what exactly your expectations are of map quality and the output we get from using the cheat is locked in. I can't change it. I think for mission creation purposes its fine but its certainly coarse compared to the vector format presented in game.

I've decided to go old school... Utes. great for incursions by low player counts. More to follow as you care to handle them. DropBox link PM'd.

Share this post


Link to post
Share on other sites

Utes is done!

Send me links to the EMF files of the maps you would like added and I'll make sure they are in the next release. If they aren't BI maps I'll need evidence of permission to include the image files from the original author. If we don't have that I can set up the map so it is supported in the editor but you will have to supply your own map image "somehow".

I still can't get the typography command to work so if you can see your way to doing Bornholm and Caribou Frontier I'd be a happy man :)

EDIT: Shapur is also done.

Edited by mecharius
make what I mean about maps with no perms clear

Share this post


Link to post
Share on other sites

When you use the cheat do you get a quick flash of a black box with some note about topograhy mode enabled?

After you see that box, hit M to bring up the map.

My output was in c:/

CF is available for A3?!?!?.... or does it just work with AiA?

Edited by lawndartleo

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×