Jump to content
Sign in to follow this  
kegetys

ArmAlib v1.0

Recommended Posts

Here's a little project I have been working on for a while calle "ArmAlib". A bit similar to fwatch, it adds new scripting capabilities to the game which allow, for example SQLite database access.

It works on ArmA v1.14 client and Windows dedicated server. Linux dedicated is not supported. The documentation is a bit poor at the moment because writing it is rather annoying but hopefully you can figure it all out.

New features it allows are:

- Access to two SQLite databases with SQL syntax (for saving and loading data)

- HTTP GET support to retrieve data from the web

- Windows clipboard access (set and get string)

- Setting mouse cursor position (same as ArmA function 'setMousePosition' which does not work)

- Retrieving mouse information, including cursor position, "relative" positions and button states

- Setting TrackIR X,Y,Z and roll axis freedom for "6DOF" support

- Retrieving the current viewdistance, camera X/Y FOV, current screen resolution and arma command line

- Night vision goggles effect detection

- 'ScriptLink' feature, which allows real time communication with external applications using a Windows named pipe

- Debug output

Download the installer package from my ArmA site

There is also a samples package with a few simple missions for testing some of the features

I have tested it quite alot, but there still can be some nasty bugs left. If you get crashes when using it, dont bother BIS with the crash reports, its propably not their fault :P I have tested it on Windows XP SP2 client & server and Windows 2000 pro server, other OS might or might not have some unknown problems.

ArmAlib is activated by a "proxy" DSOUND.DLL file which is installed into the ArmA directory. If you have some serious problems (Such as the game not starting) removing this file will disable ArmAlib permantently. '-noarmalib' parameter can also be used with arma.exe to disable ArmAlib loading.

edit: Updated to version 1.01, download from the same location

edit: Updated to version 1.02, to support ArmA v1.15 beta. download from the same location

Share this post


Link to post
Share on other sites

Wow, I didnt expect this!

Arma Extended dll does somewhat the same as Fwatch but I really missed the wget function. The SQL functions sound great too, but does it work with mySQL? (as most servers have installed) I dont know that much about SQL variants  wink_o.gif

Ill start coding soon I guess!

Share this post


Link to post
Share on other sites

The nice thing about sqlite is that you don't even need a databaseserver installed. This means you can just pack it and it will use the .db file as a database a bit like MSAccess, but very fast and without the nasty size limits and less chance of data corruption too.

Sounds like a very nice project!

Share this post


Link to post
Share on other sites

great tool smile_o.gif i was dreaming about loading data into SQL databases two weeks ago biggrin_o.gif

Share this post


Link to post
Share on other sites

No car race demo mission this time? tounge2.gif

Thanks. smile_o.gif

Share this post


Link to post
Share on other sites

I gave the wget function a try, and it works like a charm!

Currently I have the real world time on my screen while playing ArmA, usefull for the late games  rofl.gif

Im planning to make some server tools using this. Like sending messages to the servers players or kicking them without being there yourself, etc.

The possibilitys are endless now. But my imagination isnt...

Share this post


Link to post
Share on other sites

Sounds nice smile_o.gif

Can someone record the 6DOF thingy? I really like to see how that works in ArmA (don't have TrackIR yet)

I don't know about most of the other stuff though.

One thing I do know is that Kegetys still is the guru here! :P

Share this post


Link to post
Share on other sites

This could be a GOD SEND for our bigger tournaments like AToW and IC-Arma.

Thanks again for our wonderful contributions Kegetys!

Share this post


Link to post
Share on other sites

@Keygety's... rather than me having to trawl through the Python docs... do you know off the top of your head how one tells Python to reference the ctypes module... so your pipe scripting example can work...

edit: ahhh... i see that ctypes has been excluded from the amd64 build... that'd be the probelm then...

edit2: if you are running 2.5 x64 AMD python you may want this aswell... ctypes1.0.2

Share this post


Link to post
Share on other sites

Great stuff! Thanks for sharing!

/KC

Share this post


Link to post
Share on other sites

the 6DOF simple is just AWSOME!

someone should make a stand alone mod for this!!

now the big question:

what things can be done using this

and what things we dont want them to be done using this while it can

Share this post


Link to post
Share on other sites

Awesome work kegetys :-)

There's been a few more ppl before you who created similair projects, im hoping this one can become really successful.

Question like the others though; SQLite, but no MySQL; What is the reason for this? We can all create solutions for this ofcourse, however for those that only run with MySQL servers, I wonder why just SQLite smile_o.gif

Share this post


Link to post
Share on other sites
Question like the others though; SQLite, but no MySQL; What is the reason for this? We can all create solutions for this ofcourse, however for those that only run with MySQL servers, I wonder why just SQLite smile_o.gif

SQLite is simple, fast, lightweight and easy to use & implement (It is entirely self-contained in ArmAlib). Expecting everyone to run a separate MySQL server to save some variables would be inconvinient and a rather bloated solution (and propably slower in most cases). If you need MySQL access for some special purpose, then you could use the "scriptlink" feature to make your own MySQL interface using an external application.

Share this post


Link to post
Share on other sites
SQLite is simple, fast, lightweight and easy to use & implement (It is entirely self-contained in ArmAlib). Expecting everyone to run a separate MySQL server to save some variables would be inconvinient and a rather bloated solution (and propably slower in most cases). If you need MySQL access for some special purpose, then you could use the "scriptlink" feature to make your own MySQL interface using an external application.

smile_o.gif "simple, fast and lightweight" that was expectable. However, I would've expected the support for MySQL next to it, basicly because most communities and guys already run MySQL servers for various services, now it would mean another SQL server next to it, and if needed; creating interface between their MySQL data and SQLite data.

I didnt ask it for myself, rather for the average-joe server admin and players etc, who probably have no clue how to add MySQL support to your program smile_o.gif

In any case, I can understand the choice to use SQLite (by default), I somehow just expected it would support MySQL next to it (Without the need for scripting/programming interface knowledge smile_o.gif

Share this post


Link to post
Share on other sites

Kegetys. I congratulate you on this, yet another, great work of yours.

The SQL thing sounds great since using this it will be possible (if I understand it right) to for example save and load missions created with RTE, or play MP campaigns using RTE + mission save feature.

Detecting NVGs is a thing I have personally missed.

And I cannot even think of how to use scriptlink, I'm not that computer literate. But I can bet someone will figure out how.

Share this post


Link to post
Share on other sites
now it would mean another SQL server next to it

There is no server for SQLite, all its functionality is contained within ArmAlib. It is basically the same as what fwatch had with its basic save/load variable thing, except SQLite just happens to use SQL syntax so you have better control over the saved data and can do complex queries instead of just 'load variable X'.

Share this post


Link to post
Share on other sites
now it would mean another SQL server next to it

There is no server for SQLite, all its functionality is contained within ArmAlib. It is basically the same as what fwatch had with its basic save/load variable thing, except SQLite just happens to use SQL syntax so you have better control over the saved data and can do complex queries instead of just 'load variable X'.

Thanks for the info. I guess I was confused with SQLBase server, instead of SQLite smile_o.gif

Share this post


Link to post
Share on other sites

I guess this addon adds the potential to ArmA AI scripts that the AI can actually 'remember' how the last mission battle developed / what tactics were used by human players, right ?

Imagine an Evolution session where the AI already knows what you'll do - surprise surprise. smile_o.gif

Thx Keg mate, great addon

Share this post


Link to post
Share on other sites

Quick and dirty 6DOF track IR vid for those asking. It's ace biggrin_o.gif

Might take a few mins for it to clear through youtube.

Top work Kegs, clever bugger that you are... Only complaint is that it's not universal (depends on script in mission to work) but I suppose an addon version that applies the effect to all vehicles could be done. Looking at the script i think it's even possible to define the amount you can 'move around' in each vehicle by class, so you could have an addon that lets you define more latteral freedom in an open-sided chopper than in one with doors for example. Top!

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
Sign in to follow this  

×