Jump to content
Sign in to follow this  
kegetys

ArmAlib v1.0

Recommended Posts

Thank you very very very much...i was working on my own RANKING system for our server with DTST tool ,but was working only with arma v.1.08.

Thank you again.

Share this post


Link to post
Share on other sites
Thank you very very very much...i was working on my own RANKING system for our server with DTST tool ,but was working only with arma v.1.08.

Thank you again.

a] Can you add there some function, which will return players id of selected player or object ?

b] Or new function, which we can use in command on player connected/disconnected function, which will return CORRECT player's id = game id ? This was not working in current arma.

Share this post


Link to post
Share on other sites
basic file write function would be very useful

so is that a "no" then?

should probably be 'chrooted' to arma directory tree and non-binary to fend off people willing to exploit this

Share this post


Link to post
Share on other sites
basic file write function would be very useful

so is that a "no" then?

What would that be needed for? I'd find it to be rather unsafe and too "low level" for ArmA scripting language.

Share this post


Link to post
Share on other sites

addon configuration

there's several versions of some addons out that each are put on a different setting that could easily be changed ingame, though lost on next level load

sure, people could use armalib's sqlite for it, but that would require everyone to have it

and i'm sure there's people who are not going to use it due to it's "dubious methods" - as some skipped (the also brilliant) dxdll

for security, probably best would be to chroot the function to somewhere like "%armadir%\addonconfig\"

my design rationale from the previous page, in case it was missed;

Quote[/b] ]original design was to have an external application that would configure the addon - which is not the optimal solution, but acceptable

with armalib i would either have to force everyone to have a background process altering files - which is unacceptable - or use sqlite - which would be limited to only those who have armalib, which is not a good solution at all either

ofcourse i could do two versions, but with twice the work and bugs

while a simple filewrite() from armalib would allow fluid functionality of both without conflict

Share this post


Link to post
Share on other sites
sure, people could use armalib's sqlite for it, but that would require everyone to have it

How about reading the topic?  wink_o.gif

SQLite is simple, fast, lightweight and easy to use & implement (It is entirely self-contained in ArmAlib)

No need for anything else but ArmAlib.

Share this post


Link to post
Share on other sites
addon configuration

there's several versions of some addons out that each are put on a different setting that could easily be changed ingame, though lost on next level load...

If you'd use armalib to save the settings, then people without armalib would not be able to save the settings anyway no matter which method is used. I dont see how it would be any different wether they're saved in the SQLite database or in a text file, the end result is the same.

Share this post


Link to post
Share on other sites

people without armalib could edit the config with notepad (as with some addons already - sightadjustment range-tables for example)

or the addon creator could make a tool that did the more complex configurations for them (as i did)

being able to do these changes without leaving arma would ofcourse be much more user friendly

but meh.. i'll just release two versions for now and merge them if a filewrite feature some day appears

this thing is awesome in any case

thanks

Share this post


Link to post
Share on other sites

hmm i am sick from SQLlite ...

SQLite is for most users not usable... this type of SQL lack any GUI SERVER/CLIENT tools/applications for WINXP32 or WINXP64.

Can you add there support for normal/standard/mostused MySQL or MSSQL DBF ?

Ideal thru ODBC DNS, so you dont need to "writte support" for connecting to the externals servers and so ... that make ODBC self for you. Something like:

$result=<stringCommand> getMyslq; (string witch result)

$result=<stringCommand> setMysql; (false/true)

- - -

To others:

Can someone explain me, where can i download SQLlite v3 server for WIN32 or 64bit with graphical GUI in standard installation file ? (setup.exe or setup.msi) ...i can't find that on theyr official sites.

Share this post


Link to post
Share on other sites
Can someone explain me, where can i download SQLlite v3 server for WIN32

Here and here wink_o.gif

Share this post


Link to post
Share on other sites
Can someone explain me, where can i download SQLlite v3 server for WIN32 or 64bit with graphical GUI in standard installation file ?

In case you were searching for GUI tools to display and modify the sqlite databases, you may find some here: SQLite Management Tools

I haven't used any of them, so I cannot give you recommendations.

Share this post


Link to post
Share on other sites
Can someone explain me, where can i download SQLlite v3 server for WIN32

Here and here wink_o.gif

OK ... i understand...whole database server is inside armalib application, and is running in memmory (as a part of armalib).

Well...when i understand that good, there is no way, how can i store statistics, ranks, or any other informations away from ArmaLib program to another computer ?

How can i access to armalib sqllite datas stored inside from PHP (web server) or from other arma servers around world with armalib, so they dont use own sqllite inside armalib but mine sqllite huh.gif

I am working on one mission with special ranking system and storing ability, like "captured flags/camps/cityes" and weapontemplates for any registered players on our forum and many other thinks. In mine case there can be more independent computers=dedicated servers around the world, but they must connect to mine MYSQL or MYSQL server.

Can you help me with that ? There was ArmaDLL as attempt but not working anymore. There was arma DSTS but that project looks DEATH and works only with arma 1.08version.

Please...help us, and give there normal DATABASE support thru ODBC. We need only that your application send text string (which can contain anything from MySQL or MsSQL to any other commands ) and can receive results from local ODBC driver. http://www.connectionstrings.com/ ..

Kegetys, you are great person, your tools and work was everytime perfect. You have mine full respect. I am afraid, than when you dont do(or cant do) that...than NO one else.  So you are maybe our last chance/hope ...:)

So what we need:

1)

resultstring = "string" setSql; ...returns string "ok" or <errormessage>

resultstring = "string" getSql; ...returns string <resultstring> or <errormessage>

2)

resultnum = <object> getGameid; ...returns gameId of given object in which is player connected or null

3)

resultdate = getDateTime; ...returns string witch actual date and time stamp of server

Share this post


Link to post
Share on other sites

The scriptlink feature is there to allow you to build your own interfaces to whatever specialised system you might need, or you can use the http "wget" feature to send (small amounts of) data to a remote server. You can also make your own sqlite application that opens the ArmAlib databases and does whatever it wants with it (The faster "urpo" DB is locked when it is in use, but you should be able to open the "kalevi" database even when the game is accessing it too).

Share this post


Link to post
Share on other sites
The scriptlink feature is there to allow you to build your own interfaces to whatever specialised system you might need, or you can use the http "wget" feature to send (small amounts of) data to a remote server. You can also make your own sqlite application that opens the ArmAlib databases and does whatever it wants with it (The faster "urpo" DB is locked when it is in use, but you should be able to open the "kalevi" database even when the game is accessing it too).

Well i am not so good in programing to writte own application for moving datas between armalib and mysql or mssql database. But thank you for respond.

So you dont think on implement mysql support to your armalib in near future ? And other commands/functions from my previous post ?

Share this post


Link to post
Share on other sites
How can i access to armalib sqllite datas stored inside from PHP (web server) or from other arma servers around world with armalib, so they dont use own sqllite inside armalib but mine sqllite huh.gif

If the SQLite database is stored on the same machine as the web server, you can use PHP's SQLite functions to access it. If the SQLite db is stored on a different machine, you have to either create the possibility to query the db remotely (I don't know whether this is possible) or you have to program a synchronization task with your MySQL (or whatever) server.

A third solution would be to run a webserver on every game server (if not already) an create a symlink to the db files in a location accessible from the web (I suggest to add in http authentication). You can then use your main webserver to periodically pull the databases and store them on your server (with curl or fopen), where you can access them directly.

Share this post


Link to post
Share on other sites
So you dont think on implement mysql support to your armalib in near future ? And other commands/functions from my previous post ?

Unlikely, it is a rather "specialised" requirement, something that is not useful for the majority of arma users (Setting up and administering a mysql server, plus having the mission manage the connection, authentication, etc. is very complicated compared to the SQLite interface for example) and not necessarily so easy to implement.

The time/date function seems possible although in multiplayer missions you can already retrieve it using missionStart + time. The 'gameid' doesnt seem possible unless you can tell me where to (reliably) find that information from ArmA memory.

Share this post


Link to post
Share on other sites
... plus having the mission manage the connection, authentication, etc. is very complicated compared to the SQLite interface for example) and not necessarily so easy to implement.

... yes i understand, but when you use for that ODBC with DSN, you dont need to manage connection or authentication or anything else like some commands/coding/translating for mysql or etc.

Every gameserver admin simple can set all necessary information for connect (server address,login,password and dbf name) to his preffered database (in GUI) which is in "ODBC Data Source Administrator" in "Administrave Tools". ODBC is supported by any DBFs systems. ODBC is multiplatformal (win/linux/unix), is multiplatformal (C++,C#,VB,VB.NET,PHP,ASP.NET and many many else). ODBC is something like "common language" driver for any type of databases. You need to know only ODBC DSN name ( something like pointer to local ODBC mapped database ).

Simply you just make connect to ODBC name. Then you send string and read the answer. That can be done synchronous, or asynchronous, so schript can continue and answer appears later, so this dont slow down game. And there is no problem with more connection to ODBC resources/databases from more applications/computers at same time...all handle ODBC. You can use more connection to different servers or databases in one time also (administrators must set more ODBC DSN connection on servers).

I dont know how that really works, but must be simpler than implementation whole SQlite. But when you can do that, everyone can be happy smile_o.gif. You need some library for C++,C# or VB or VB.NET...i found for C# following commands:

(for ODBC with DSN name "myDSN")

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

  {

      OdbcConnection cn;

      OdbcCommand cmd;

      string MyString;

      MyString="Select * from Customers";

      cn= new OdbcConnection "dsn=myDSN;");

      cmd=new OdbcCommand(MyString,cn);

      cn.Open();

      MessageBox.Show("Connected");

      cn.Close();

}

For administrators is not so big problem to setup mysql or mssql dbf server. And when is, there are lots free MySQL/MSSQL web host servers, so admins dont need to know anything about MsSQL or MySQL, they just have server addres, login, password and dbf name. Than they set to ODBC thru GUI and they must put ODBC name which would use your armalib.

Anyway, thank you for this tool, and the time function would be great too. So when missions end and start on server, there would be possible set the same time like in real world.

And where you can search GAMEID i dont know, but DSTS was able to receive GAMEID from game till 1.05 ( maybe 1.08 too ) http://forums.livecar.net/index.php?showforum=2 , maybe Nutty (autor of dsts) can tell you what to find and where.

Share this post


Link to post
Share on other sites
So you dont think on implement mysql support to your armalib in near future ? And other commands/functions from my previous post ?

Unlikely, it is a rather "specialised" requirement, something that is not useful for the majority of arma users (Setting up and administering a mysql server, plus having the mission manage the connection, authentication, etc. is very complicated compared to the SQLite interface for example) and not necessarily so easy to implement.

The time/date function seems possible although in multiplayer missions you can already retrieve it using missionStart + time. The 'gameid' doesnt seem possible unless you can tell me where to (reliably) find that information from ArmA memory.

You know, i forget how I was pulling it down. Laugh. The ID was pretty easy if i remember right. It's in the mapped out space that the game loads in the map and scripts though. Forget where (been almost six months easy since i touched the game).

Kudo's on your implementation of the armalib. Defiantly one of the best implementations I have seen. I thought about jumping in to add routeens but then i figured out how to manage it all via memory. So the app does not trigger any protection issues.

While i like SQL lite, hosted units tend to have access to a central DB server. Plus for a game server why not allow it to be offloaded. Saves CPU. In arma's case it's not a huge issue with how it's threaded. Who knows.

Share this post


Link to post
Share on other sites

This is great! I hope it stays updated Keg!

Someone could probably build a motion platform for Arma with this and an Arduino.. biggrin_o.gif

And a thinclient mission for clients, where the server could dynamically send down objectives..

Share this post


Link to post
Share on other sites

Does anyone know how to connect armalib through named pipe with a c# (.net) app? I can't seem to make it work...

Share this post


Link to post
Share on other sites

Hi,

just took a look into the config and found this:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">[vjoystick]

Any progress made in this?

Edit:

There is an undocumented (incomplete) feature in ArmAlib that allows remapping the joystick axes. To enable it you need to set enabled to 1 in the armalib/config.cfg (under [vjoystick]). When you run ArmA after this it should output the device GUIDs of all joysticks to 'my documents/arma/armalib/armalib.log'. You can then replace the guids of axis_X, etc. values in the config.cfg with the GUID of one of the detected joysticks.

That may or may not work :P

Share this post


Link to post
Share on other sites

Just dropping by to say hello and thanks for the amazing project, again. notworthy.gif

I've finally had time to use it and implemented a couple of features for players to load and save presets and favorites for various things.

Might release some to the public in the next months.

Share this post


Link to post
Share on other sites

FYI, simply informing the people:

I've had various reports of people with crashing / not working arma's when armalib was enabled, for now the causes seem to have been:

[*] X-Fire

[*] ATT

There have been compatibility issues reported with:

[*] Teamspeak Overlay

[*] Game/Voice Overlay (some TSO ripoff I guess)

However the game usually still ran, but the overlay text was dark colored, etc.

Basically any overlay program seems to experience some difficulty one way or the other.

Share this post


Link to post
Share on other sites

Just a thought: there should be a function to execute a program, load a dll or start a windows-service by mission-scripting. That way you dont need another app that you communciate with through scriptlink to be running all the time on the server. You might want to limit this function to apps in the armalib-directory or something so you cant damage the server.

Great work btw!

Share this post


Link to post
Share on other sites

@Ragnar - while that could be useful, the security considerations far outweigh the usefulness.

Simply too dangerous.

@Kegetys - excellent work! Thanks for sharing this, the multiple-joystick thing is worth it's weight in gold alone.

Now I have more reason to consider getting an X52 Pro, with it's programmable display...  missile count? enemy count? basic radar on stick display? Targeting system + MFD ????

Hmm time to think... Dynamic script download to client from server anyone?  Shame that ArmA's standard comms can't support this for each unique client, but this might just be a way to make it happen.

If this ArmALib proves as useful as I think it will then it may be sensible if it could be incorporated into a future patch so it can be used without user-download and installation blurb...?

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  

×