Jump to content
zooloo75

Addon-Free Stat Save System [Script]

Recommended Posts

I've decided to share my new stat saving scripts which I've created in about an hour.

The system can be used in any mission and is light-weight, versatile, and lag-free!

If you use this in your mission, all I ask is that you give me credit :)

The demo mission demonstrates the stat saving. (Saves the players position, direction, goggles, vests, uniforms, headgear, weapons, magazines, items, and backpack)

Download

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for informing us about the release :cool:

Release frontpaged on the Armaholic homepage.

===================================================

We have also "connected" these pages to your account on Armaholic.

This means in the future you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

Niceeeeeeeeeeeee - thanks ... will it be possible to adapt the scrip sothat it also saves AI positions etc ??

Edited by Spoor

Share this post


Link to post
Share on other sites

thumps up .....nice work....possible to release it for A2?

Share this post


Link to post
Share on other sites

The data is being saved in the clients profile and can probably be changed. I highly suggest saving the data on the server instead.

I tried creating an own addon free stat save aswell using (profileNameSpace getVariable "something") on a dedicated server and it was not able to get the saved variable though it was able to read the data on a hosted game. Maybe this scripting behaviour has changed with the ArmA 3 Beta?

Has this ever being tested on a dedicated server or just a hosted game?

Share this post


Link to post
Share on other sites
The data is being saved in the clients profile and can probably be changed. I highly suggest saving the data on the server instead.

I tried creating an own addon free stat save aswell using (profileNameSpace getVariable "something") on a dedicated server and it was not able to get the saved variable though it was able to read the data on a hosted game. Maybe this scripting behaviour has changed with the ArmA 3 Beta?

Has this ever being tested on a dedicated server or just a hosted game?

I already have a couple of people using this system. I know there is the vulnerability due to the saves being client side, but the benefits outweigh that.

This becomes extremely useful for those whose servers can't handle large continuous amounts of data being sent between clients and the server for traditional stat saving methods; it also allows a greater amount of saving to be done at a higher rate and of larger volume. A good example of usage is a server with a large number of players (64+) that require continuous stat saving of a large amount of variables with a great amount of data.

If someone really wants to hack their data, then there's already a chance they would hack on your server too -- and in that case it is up to the administration to handle them.

This isn't so much of a flaw in my system than it is a flaw with ArmA.

This system definitely works as a good friend of mine wanted me to replace his iniDB stat save system with my new addon-free solution due to the immense lag that he would get on his server. Once I got it all working, the server filled up and everyone was amazed by how fast the stats loaded (instantly) and how little lag there was. Not to mention that their stats actually saved successfully 100% of the time, and their stats saved every second. It's a real game changer and hopefully more mission developers decide to use this system or atleast get an idea from what it can do.

Edited by zooloo75

Share this post


Link to post
Share on other sites

If i know i can just change a file i see not the need to bypass the engine to risk the chance in getting banned when all i have to do to alter my stats is edit a file. As an administrator you will have little chance on noticing someone has changed his stats. I could even trick the system by making a backup copy of my stats, die and loose everything and just return back to my backup if i want to or create a bunch of backups for certain needs like teleporting over the map.

Please don´t get me wrong i appreciate your work for the community i just want to point out some serious issues on how easily something like this is to be abused. In a multiplayer environment i would never trust a client to be honest.

PS: Everything you saved in your scripts can be done on the server without the client to run any script or any data being send over the network. Values like weapons, magazines, items, position, health and so on are already present on the server for every player and can be saved there though doing it addonless might create a big profile file on the server and could cause some hard disk overload but actualy unlikly as i already saved alot of data in the profileNameSpace myself.

PS2: Downloaded your demo mission. Works fine in a hosted game but on a dedicated server it does not work for me. The serverID gets not loaded and changes then, resulting in no stats loaded for me. Like i said i noticed the same behaviour already with my scripting attempts and i suspect (profilenameSpace getVariable) does not work on dedicated servers due to engine limitation. Or have you got around that problem somehow?

Share this post


Link to post
Share on other sites
If i know i can just change a file i see not the need to bypass the engine to risk the chance in getting banned when all i have to do to alter my stats is edit a file. As an administrator you will have little chance on noticing someone has changed his stats. I could even trick the system by making a backup copy of my stats, die and loose everything and just return back to my backup if i want to or create a bunch of backups for certain needs like teleporting over the map.

Please don´t get me wrong i appreciate your work for the community i just want to point out some serious issues on how easily something like this is to be abused. In a multiplayer environment i would never trust a client to be honest.

PS: Everything you saved in your scripts can be done on the server without the client to run any script or any data being send over the network. Values like weapons, magazines, items, position, health and so on are already present on the server for every player and can be saved there though doing it addonless might create a big profile file on the server and could cause some hard disk overload but actualy unlikly as i already saved alot of data in the profileNameSpace myself.

PS2: Downloaded your demo mission. Works fine in a hosted game but on a dedicated server it does not work for me. The serverID gets not loaded and changes then, resulting in no stats loaded for me. Like i said i noticed the same behaviour already with my scripting attempts and i suspect (profilenameSpace getVariable) does not work on dedicated servers due to engine limitation. Or have you got around that problem somehow?

If people are going to hack, then they're going to hack, that's that. There's no way to stop anyone from hacking. Mission devs can actually monitor the stats if they coded their mission to do so. Also about your PS, this is just an example - mission specific stuff that is calculated/done on the client can utilize this by not having to send all the data to the server (causing lag). @PS2: create your own serverID instead of having a randomly generated one.

Share this post


Link to post
Share on other sites

this is pretty amazing!

while i can see that it might be a little vulnerable in some scenarios i also think that the pros outweigh the cons by far. let's not forget that saving isn't only required for public Life servers. a lot of communities that enjoy stuff like MSO can make great use of this system without having to compromise on their mission design to make saving work without lag or huge efforts with external sql data bases.

this fills a big gap in my opinion. clans can use this to go back to unfinsihed missions or keep track of how well their members do in their operations or simply turn the mission list of their server into a dynamic campaign by carrying over gear from one to another mission. the possibilities are endless.

congrats to another useful and well executed release zooloo75. you are also setting a great example by sharing all of this!

Share this post


Link to post
Share on other sites
this is pretty amazing!

while i can see that it might be a little vulnerable in some scenarios i also think that the pros outweigh the cons by far. let's not forget that saving isn't only required for public Life servers. a lot of communities that enjoy stuff like MSO can make great use of this system without having to compromise on their mission design to make saving work without lag or huge efforts with external sql data bases.

this fills a big gap in my opinion. clans can use this to go back to unfinsihed missions or keep track of how well their members do in their operations or simply turn the mission list of their server into a dynamic campaign by carrying over gear from one to another mission. the possibilities are endless.

congrats to another useful and well executed release zooloo75. you are also setting a great example by sharing all of this!

Thanks for understanding. This may be the only option for those who want stat saving for their mission without using any addons, or if server side stat saving isn't an option due to lag or complexity. It's also useful for clans too. My system does exactly what I promised it would do.

Share this post


Link to post
Share on other sites
You can't make a PBO private, but you can have the stat save functions loaded to the player by the server. If you need more help add me on Steam.

its not my topic :confused:

....look better :p

Share this post


Link to post
Share on other sites

I'm not master coder or anything but couldn't you do a check to see if the client-sided save file was the same when the player last left the server? and then if the system detects a change, give the player a warning like a 3 strike system then kick them or flat out kick or ban them?

Share this post


Link to post
Share on other sites

Nice, but:

Dedicated server does not load profileNamespace (didnt test it with saveProfileNamespace) that means:

Player's profile namespace might get spammed with new variable name every server restart -> players might end up with huge profile.vars after few months.

It is not crash resistant now -> profile namespace is automaticaly saved once game is properly shut down, if game crashes nothing is saved. You might want to use saveProfileNamespace in the loop

Edited by aeroson

Share this post


Link to post
Share on other sites

I have 1 answer, 1 suggestion and 1 question.

Answer:

@aeroson: If you use the same variables in profileNameSpace, it will overwrite them instead of creating new ones. So it won't make the profile.vars huge.

Question: Is it possible to make hashcodes for the player data and store them server side to evaluate if loaded data has been tampered with?

Suggestion: Looking at the Cookie laws(websites), don't you think the player must know if a server stores data in his profileNamespace?

Very good work on this script though. Be sure to expand it even more!

Edited by Ed
Forgot to commend

Share this post


Link to post
Share on other sites
I have 1 answer, 1 suggestion and 1 question.

Answer:

@aeroson: If you use the same variables in profileNameSpace, it will overwrite them instead of creating new ones. So it won't make the profile.vars huge.

Question: Is it possible to make hashcodes for the player data and store them server side to evaluate if loaded data has been tampered with?

Suggestion: Looking at the Cookie laws(websites), don't you think the player must know if a server stores data in his profileNamespace?

Very good work on this script though. Be sure to expand it even more!

@Question: Whatever you're capable of doing is possible.

@Cookie Law: Just did some research on it - it seemed like it only applied to UK companies and it is now dead. Even more so, if it applied to this, then it would apply to the game saves, variables, etc too, which wouldn't make much logical sense.

  • Like 1

Share this post


Link to post
Share on other sites

could this save kills? and if i could how would i go about doing that?

Share this post


Link to post
Share on other sites
could this save kills? and if i could how would i go about doing that?

It can save whatever you want it to save. If you need help with the system, add me on Steam: Zooloo75.

Share this post


Link to post
Share on other sites

Hi all,

I currently run a GoT Wasteland server and I am trying to integrate this, once I unpack the PBO file and put the information into the Init.sqf, I put the Statsave folder in the addons folder of the mission file and point it to the right place in the Init.sqf. When I join the server it tells me that it has loaded my stats but it doesn't, will it be a case that the mission file is somehow overriding the stats?

Share this post


Link to post
Share on other sites
Hi all,

I currently run a GoT Wasteland server and I am trying to integrate this, once I unpack the PBO file and put the information into the Init.sqf, I put the Statsave folder in the addons folder of the mission file and point it to the right place in the Init.sqf. When I join the server it tells me that it has loaded my stats but it doesn't, will it be a case that the mission file is somehow overriding the stats?

Same here!Just says "it has loaded my stats" but it did not!

Share this post


Link to post
Share on other sites

Why you dont make an update of this script ! It's very interessing for missions interteams !

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

×