A3Antistasi / antistasi-1.x

Antistasi Unofficial Community old version
http://a3antistasi.enjin.com/
39 stars 44 forks source link

Save on disconnect #285

Open StefArma opened 6 years ago

StefArma commented 6 years ago

For some reason, when i quit a singleplayer game some things are saved regardless i persistent saved or not.

I already checked all the handledisconnect, the only one i found is abou calling fn_save_player which is in the \Save folder

Barbolani77 commented 6 years ago

Yes, I know the solution. It's been tough.

It seems when you copy arrays from another variable, whatever variable you change, the other does the same, it's like a quantic entanglement :) Even when the array is stored in different space (profileNameSpace).

To avoid this, you must do it in this way:

newVar = +oldVar; or newVar = []; newVar = newVar + oldVar;

So, anything you change, like staticsToSave, garrisons etc.. has to be done this way in the load account, saveFuncs and saveLoop.

I have to update WotP in github so you will know what I mean :)

Sparker95 commented 6 years ago

Irrelevant to the issue, it doesn't 'seem' that arrays behave as references to objects, but they are indeed made to behave this way. You can read about that on the wiki page dedicated to arrays.

Barbolani77 commented 6 years ago

Just try and if its solved you owe me some vodka, because I checked those scripts and those variables are not there. This, or Skynett :)

StefArma commented 6 years ago

https://github.com/A3Antistasi/antistasiofficial/blob/a2ef95b3209112c43160619105a00d5e12284302/AntistasiOfficial.Altis/Save/fn_saveGame.sqf#L56-L57

look at theese lines, might be an issue that there isn't a _ before the garage thingie? Also _hr is in the private [ ], jng isn't

StefArma commented 6 years ago

this is the garrison part

https://github.com/A3Antistasi/antistasiofficial/blob/a2ef95b3209112c43160619105a00d5e12284302/AntistasiOfficial.Altis/Save/fn_saveGame.sqf#L257-L262

but garrison looks into the private [ ]

zalexki commented 6 years ago

vehInGarage is defined as a global variable in file initVar.sqf so i don't think that's the problem (even if handling it in a global variable is probably not best option as you don't know which part of the code access/modify it)