Jump to content
code34

iniDBI2 - Save and Load data to the server or your local computer without databases!

Recommended Posts

Okay, I found out why it didn't work. It was the inidb2_x64.dll that was missing.

 

However I have the next problem. As a beginner up until now i was fuguring out how inidbi2 worked. What do I have to do to run those scripts on the server only? The way I do it now saves the data on each client.

Share this post


Link to post
Share on other sites
On 10.04.2017 at 0:42 PM, MoaB said:

What do I have to do to run those scripts on the server only?

Just use serverMod (https://community.bistudio.com/wiki/Arma_3_Startup_Parameters#Server_Options) startup parameter to load iniDBi2.

 

On 10.04.2017 at 0:42 PM, MoaB said:

As a beginner up until now i was fuguring out how inidbi2 worked.

https://forums.bistudio.com/forums/topic/158353-inidbi-save-and-load-data-to-the-server-or-your-local-computer-without-databases/?do=findComment&comment=2712532

Also read my posts from topic related to previous version of iniDBi:

 

Share this post


Link to post
Share on other sites

Found a way, postet by somebody here click, My Problem was with the server-client interaction.

 

Next question: since inidbi uses a .dll file, does it run on a linux server?

Share this post


Link to post
Share on other sites
23 minutes ago, MoaB said:

Next question: since inidbi uses a .dll file, does it run on a linux server?

 

On 22.11.2015 at 7:16 PM, code34 said:

inidbi2 is a rebuild from scratch of inidbi project with C# and SQF++ for windows client/server

:down:

Share this post


Link to post
Share on other sites

Ooops :down: I'll have to use iniDBI then.

 

thanks for the reply though

Share this post


Link to post
Share on other sites
1 hour ago, MoaB said:

I'll have to use iniDBI then.

Unfortunattely, iniDBi(2) supports Windows only.

AFAIK, extDB supports Linux.

Share this post


Link to post
Share on other sites

I was looking for something that doesn't use a database since that would be overkill for just saving position, direction and loadout.

 

I found a linux port of iniDBI, going to try that.

 

Up until now i just used the profileNameSpace to store those variables on the client pc.

Share this post


Link to post
Share on other sites

If i make some test with iniDBI2 i get everytime the output any

my code is

 

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

hint format["In der _inidbi Variable steht: %1", _inidbi];

sleep 5;

_version = "getVersion" call _inidbi;

hint format["Die iniDBI2 Version lautet: %1 ", _version];

sleep 5;

_exist = "exists" call _inidbi;

hint format["In _exist steht: %1", _exist];

sleep 5;

_sections = "getSections" call _inidbi;

hint format["In _sections steht: %1", _sections];

sleep 5;

What can i do ?

Share this post


Link to post
Share on other sites

I think inidbi2 not working correctly on x64 bit servers :( I managed it to load dll, but nothing can be done after :(

22:16:18 CallExtension loaded: inidbi2 (C:\Program Files\Steam\steamapps\common\Arma 3\@inidbi2\inidbi2_x64.dll) [x݈]

When i creating new db using _inidbi = ["new", "newdatabase"] call OO_INIDBI; nothing is created.

When Im trying to check version using "getVersion" call _inidbi; it return:

21:58:18 "Version: any"
21:58:28 "Version: any"


 

Share this post


Link to post
Share on other sites

@GameBoss, very strange. I placed inidbi2_x64.dll into @inidbi2 folder; iniDBi2 is loaded by arma3server_x64.exe using -serverMod startup parameter and it works fine for me.

Share this post


Link to post
Share on other sites

I don't have any problems either using the 64bit. Runs constant.

Share this post


Link to post
Share on other sites

I have player persistence working (with a mod from Ravage), but I need something for trucks and helis and containers (like tents). Anyone use inidbi2 for that? Or have an examples? 

 

Share this post


Link to post
Share on other sites
13 hours ago, zigeris said:

I have player persistence working (with a mod from Ravage), but I need something for trucks and helis and containers (like tents). Anyone use inidbi2 for that? Or have an examples? 

 

I used code34's OOPDW (Object Oriented Persistent Data World) script for that. It's basically an extension of inidbi2 (and needs it to run). Then I put an addaction on the vehicles and the players set which ones to save by setting a variable for that object. The server scans all the objects and saves whichever ones are marked to be saved. (May not be the best idea in the world but it's what worked for me!)

  • Like 1

Share this post


Link to post
Share on other sites

I kinda like that idea, I hadn't thought about giving the players the option.

 

Fire

Share this post


Link to post
Share on other sites
22 hours ago, FireWalker said:

I kinda like that idea, I hadn't thought about giving the players the option.

 

Fire

Don't get me wrong, it'll be some work to implement. I had to get only the types of vehicles and containers I wanted to be saved to have the addaction. Then I had to replace that addaction to remove the object from the saved list. And I had to add all the correct variables when I reloaded them from the database on a server restart etc.... Took me quite a while to sort all through it but it's possible.

Then you'll have to add all the actions ravage uses like refuel, repair, salvage etc.....

 

Good luck!!

  • Like 1

Share this post


Link to post
Share on other sites

@cdn_biggdogg

 

The way I have it now is there is a certain number of editor placed vehicles in the map with the rvg_owned variable on them so they always spawn ready to go. Those certain vehicles automatically save to inidbi2 and they have a "blue" colored addAction on them that lets the player know that they can save gear inside and be persistent. The addAction doesnt do anything, its more of just a hint that will always come on. It actually works really well, its just clunky script wise.

 

Share this post


Link to post
Share on other sites
1 minute ago, FireWalker said:

@cdn_biggdogg

 

The way I have it now is there is a certain number of editor placed vehicles in the map with the rvg_owned variable on them so they always spawn ready to go. Those certain vehicles automatically save to inidbi2 and they have a "blue" colored addAction on them that lets the player know that they can save gear inside and be persistent. It actually works really well, its just clunky script wise.

 

Ahh. I had the vehicles spawning randomly in as well I had my own loot script running that I could save those containers as well, which spawned in randomly. I had to get creative to get it all to work.

Share this post


Link to post
Share on other sites

Hey FireWalker and cdn_biggdogg,

 

did you already share your persistance code for RAVAGE missiuons in the Editing section of the forums?  If not, could you be so kind to do it and/or post the code here as well?  I'd like to have a script solutioin fpr my RAVAGE missions allowing full persistence like you two described it,  but so far the only option I fouhnd was to use the ALiVE saving system with it's local database option for that. it woould require anyone willing to try my missions to dl ALiVE, then get used to this mod's UI and controls... 

 

So I would gladly try if I can get your code to work with RAVAGE missions, if you would like to share it, which I do hope... :f:

 

Kind Regards,

 

tourist

Share this post


Link to post
Share on other sites

Hi, im create this script.

InitPlayerLocal.sqf ------------ Auto init / Intro Black Screen / Check Database / Wait Time For Charges / Create Profile (if no exists) / Load Profile (if exists) / Autosave Profile for 5 Minutes (Optional)

Save_Profile.sqf----------------- Check Database / Save Profile / Save: Location+Direction+Oxygen+Health+Inventory

Load_Profile.sqf----------------- Check Database / Load Profile / Load: Location+Direction+Oxygen+Health+Inventory

 

Im job for more options and updates, example Save/Load: Vehicles, Ranking, etc...  

 

InitPlayerLocal.sqf

//////////////////////////////////////////////////////////////////
// Function file for:	Arma 3
// Created by:			Savage
// Clan: 				CalaverasCMP
// Web : 				www.CalaverasCMP.com
//////////////////////////////////////////////////////////////////

// Auto init /////////////////////////////////////////////////////

sleep 0.001; // Wait time.
titleCut ["", "BLACK FADED", 999]; // Start black screen intro

_player = _this select 0;
// _player = player; // You
_player_id = getPlayerUID player; // Number of Steam ID
_player_name = profileName; // Name of player

_db = ["new", _player_id] call OO_INIDBI; // Call database
_check_db = "exists" call _db; // Check if database exists, if exists return TRUE, if not the result is FALSE
// systemChat format ["DataBase exists: ---%1---", _check_db]; //Debug

sleep .001; // Wait time

if (_check_db) then { // If _check_db is TRUE load this

	_load_profile = execVM "Load_Profile.sqf"; // Execute SQF
	sleep .001;	// Wait Time
	titleText ["Loading Your Profile...\n\nPlease Wait!","PLAIN", 5]; // Show text on center screen
	titleFadeOut 2;
	sleep 10; // Wait time
	
	} else { // If _check_db is FALSE load this
	
	_save_profile = execVM "Save_Profile.sqf"; // Execute SQF
	sleep .001; // Wait time
	titleText ["Creating your profile...\n\nPlease wait!","PLAIN", 5]; // Show text on center screen
	titleFadeOut 2;
	sleep 10; // Wait time
};

sleep .001; // Wait time

"dynamicBlur" ppEffectEnable true;   
"dynamicBlur" ppEffectAdjust [6];   
"dynamicBlur" ppEffectCommit 0;     
"dynamicBlur" ppEffectAdjust [0.0];  
"dynamicBlur" ppEffectCommit 5;  
	
titleCut ["", "BLACK IN", 5]; // Close black screen

sleep 2; // Wait time

// Auto Save Profile /////////////////////////////////////////////
[]spawn {
	while {true} do {
	sleep 300; // wait time (300 Seconds = 5 Minutes).
	_auto_save_profile = execVM "Save_Profile.sqf"; // Execute SQF
	systemChat "Profile Save"; // Show message on system chat
	};
};
//////////////////////////////////////////////////////////////////

 

Save_Profile.sqf

//////////////////////////////////////////////////////////////////
// Function file for:	Arma 3
// Created by:			Savage
// Clan: 				CalaverasCMP
// Web : 				www.CalaverasCMP.com
//////////////////////////////////////////////////////////////////

// Save Profile //////////////////////////////////////////////////

// _player = _this select 1;
_player = player; // You
_player_id = getPlayerUID player; // Number of Steam ID
_player_name = profileName; // Name of player

_db = ["new", _player_id] call OO_INIDBI; // Call database
_check_db = "exists" call _db; // Check if database exists, if exists return TRUE, if not the result is FALSE
// systemChat format ["DataBase exists: ---%1---", _check_db]; //Debug

sleep .002; // Wait time

//============	Save Stats
//PLAYER
_write_db = ["write", [_player_name, "location", position _player]] call _db;
_write_db = ["write", [_player_name, "direction", getDir _player]] call _db;
_write_db = ["write", [_player_name, "oxygen", getOxygenRemaining _player]] call _db;
_write_db = ["write", [_player_name, "health", damage _player]] call _db;

//INVENTORY
_write_db = ["write", [_player_name, "getUnitLoadout", getUnitLoadout _player]] call _db;

sleep .002;// Wait Time

systemChat "Save Profile Complete"; // Show System Chat

 

Load_Profile.sqf

//////////////////////////////////////////////////////////////////
// Function file for:	Arma 3
// Created by:			Savage
// Clan: 				CalaverasCMP
// Web : 				www.CalaverasCMP.com
//////////////////////////////////////////////////////////////////

// Load Profile //////////////////////////////////////////////////

// _player = _this select 1;
_player = player; // You
_player_id = getPlayerUID player; // Number of Steam ID
_player_name = profileName; // Name of player

_db = ["new", _player_id] call OO_INIDBI; // Call database
_check_db = "exists" call _db; // Check if database exists, if exists return TRUE, if not the result is FALSE
// systemChat format ["DataBase exists: ---%1---", _check_db]; //Debug

sleep .002; // Wait time

//============	Load Stats
// PLAYER
_read_db = ["read", [_player_name, "location"]] call _db;
_player setPos _read_db;
sleep .001;

_read_db = ["read", [_player_name, "direction"]] call _db;
_player setDir _read_db;
sleep .001;

_read_db = ["read", [_player_name, "health"]] call _db;
_player setDamage _read_db;
sleep .001;

_read_db = ["read", [_player_name, "oxygen"]] call _db;
_player setOxygenRemaining _read_db;
sleep .001;

// INVENTORY
_read_db = ["read", [_player_name, "getUnitLoadout"]] call _db;
_player setUnitLoadout _read_db;
sleep .001;

systemChat "Load Profile Complete";

Thanks for this mod......[Code34]...........!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Share this post


Link to post
Share on other sites

Does this setup, save zeus objects and every Thing? Or how Does it work? And Does it load after server restarts? 

Share this post


Link to post
Share on other sites
On 21/12/2017 at 5:40 AM, kennyleif said:

Does this setup, save zeus objects and every Thing? Or how Does it work? And Does it load after server restarts? 

Hi, only save and load profile (health, oxygen, loadout, direction and location), you can restart, change the name of the mission, but the database will always be the same, remember that the data is saved on the server, not on the client. I'm working on a new script update, my idea is that you can store vehicles, equipment boxes, objects, etc.

Thanks for your question

Share this post


Link to post
Share on other sites

I forgot to mention that I took the audacity to upload the mod (INIDBI2) to the workshop, with the two .dll (32 & 64 bits) inside the root folder, in the description I mention the link to the original post. If it is inappropriate or offensive that I did this, I eliminate it from the workshop. regards

 

INIDBI2 Workshop

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

×