Posted on April 15, 2018 at 23:55 (GMT +00:00) by
Colin
I've been quiet for these past
weeks months as I've been very busy working on some projects for my non-profit organisation
One Nature, I have also been using some of my spare time to play a bit of Elite Dangerous! However I made a bit time recently to put together a mysql/mariadb plugin for Arma server which can be used for saving persistent information across missions etc.
The current development of the plugin covers only the windows 32-bit dedicated server software, but I will update this to include 64-bit hopefully very soon. I have tried to keep it as plain and simple as possible, so it can be used like the regular mysql implementations. I have uploaded a sample mod that can be used server side, it should be extracted to your arma installation directory (see the bottom of the post).
Here is a quick sample mod that uses the plugin (please note you will need to create yourself a database and change connection settings. If you have problems, just drop me a message.
//
// PXSample mod
//
#include "PX\mysql.sqf";
// init db ?
[] call mysql_init;
mydb = ['root', 'yourpassword', 'databasename', 'localhost', 3306] call mysql_connect;
addMissionEventHandler ["EntityRespawned", {
params ["_obj", "_old"];
private ["_result", "_resource", "_row", "_uid"];
if (isPlayer _obj) then {
_uid = getPlayerUID _obj;
_result = [mydb, "SELECT acc_uid FROM accounts WHERE acc_uid = '%1' LIMIT 1;", _uid] call mysql_query;
if (_result == "") then {
_resource = [mydb] call mysql_store_result;
if (!(_resource == "")) then {
_row = [_resource] call mysql_fetch_row;
if (count _row > 0) then {
// player exists already? do something maybe
} else {
[mydb, "INSERT INTO accounts(acc_uid, acc_clientname, acc_last_conn_dt) VALUES('%1','%2',NOW());", _uid, name _obj] call mysql_query;
};
};
[_resource] call mysql_free_result;
};
};
}];
and note, this should only be used on a server side mod (not in a mission file, since you don't want your database password visible to players)
Download Plugin and Sample Mod here