Jump to content

Recommended Posts

I started using inidbi2 to hold persistent player data on a server my friends want to run. I have 4 sqf files, following a tutorial I watched, for using inidbi2 to get this done

init.sqf

_clientID = clientOwner;
_playerUID = getPlayerUID player;
_playername = name player;

checkDatabaseEntry = [_clientID, _playerUID, _playername];
publicVariableServer "checkDatabaseEntry";

player addAction ["Save Data", 
{
    _playerUID = getPlayerUID player;
    _playerInventory = getUnitLoadout player;
    _saveData = [_playerUID, _playerInventory];
    publicVariableServer "saveData";
}];

"loadData" addPublicVariableEventHandler
{
    //private "_data";
    //_data = [_this select 1];
    _playerInventory = [_this select 1];


    player setUnitLoadout _playerInventory;
};

initServer.sqf

"checkDatabaseEntry" addPublicVariableEventHandler
{

    private "_data";
    _data = [_this select 1];
    _clientID = [_data select 0];
    _playerUID = [_data select 1];
    _playerName = [_data select 2];

    _inidbi = ["new", _playerUID] call OO_INIDBI;
    _entryExists = "exists" call _inidbi;

    if (_entryExists) then 
    {
        hint "Database Entry Found, Acquiring Data";
        null = [_playerUID, _clientID] execVM "getDatabaseEntry.sqf";
    }
    else
    {
        "Database Entry does not exist, creating Entry";
        null = [_clientID, _playerUID, _playerName] execVM "createDatabaseEntry.sqf";

    };
};

"saveData" addPublicVariableEventHandler
{
    private "_data";
    _data = [_this select 1];
    _playerUID = [_this select 0];
    _playerInventory = [_this select 1];

    _inidbi = ["new", _playerUID] call OO_INIDBI;

    ["write", ["Player Inventory", "Inventory", _playerInventory]] call _inidbi; 

}

getDatabaseEntry.sqf

_playerUID = [_this select 0];
_clientID = [_this select 1];
_inidbi = ["new", _playerUID] call OO_INIDBI

_playerInventory = ["read", ["Player Inventory", "Inventory", []]] call inidbi

loadData = _playerInventory;

_clientID publicVariableClient "loadData";

createDatabaseEntry.sqf

_clientID = [_this select 0];
_playerUID = [_this select 1];
_playerName = [_this select 2];

_inidbi = ["new", _playerUID] call OO_INIDBI;

["write", ["Player Info", "Name", _playerName]] call _iniddbi

 

Despite, my best efforts, I cannot get the scripts to work. Strangely, whenever I load in, despite following the tutorial to a T, Arma 3 seemingly skips over the checkDatabaseEntry event, and never runs it, as I never get the hint to pop up.

I am running this with inidbi2 on a Armahosts server, any help would be GREATLY appreciated

Thank you, Queen

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

×