A3Wasteland / ArmA3_Wasteland.Altis

A3Wasteland is a survival sandbox mission for Arma 3 where two teams and independent players fight for survival. Built in collaboration between GoT, TPG, KoS, 404Games, and others.
http://a3wasteland.com
GNU Affero General Public License v3.0
102 stars 184 forks source link

Player logging in with standard gear, bank reset #244

Open LouDnl opened 9 years ago

LouDnl commented 9 years ago

On several occasions now I heard from players that they got stuck on the 'loading previous location' part. They would then get kicked from the server by a steam ticket check failed. When logging back in they would either get stuck again on this screen or could log back in again. When finally being able to log back in they would spawn in a standard outfit with huge backpack, rifle and no money.

LouDnl commented 9 years ago

Was using your new logging and already have a player logging in with default gear. Here are the extDB logs and server RPT's from before and after the server restart. He logged out before and logged back in after. His UID is: 76561198144993692 https://drive.google.com/file/d/0By5PInQAIAA6dGRiX2hCVW14bE0/view?usp=sharing

LouDnl commented 9 years ago

Will be testing your newest commits after our next restart.

ancientevil commented 9 years ago

having the same issue now and then. It occurs once every 1 or 2 weeks.

LouDnl commented 9 years ago

Still having this problem, even with the fix you tried to make. Had someone logging in with default arma gear again. This time within the same playing session (no restart of server). https://drive.google.com/file/d/0By5PInQAIAA6UEM2b3NGU0ZwWHc/view?usp=sharing Player UID is: 76561198114445347

AgentRev commented 9 years ago

Same problem as before, standard gear is saved on disconnect for some unknown reason.

Also, did he lose his bank money? The amount went from 116,073 to 0 in less than a minute.

LouDnl commented 9 years ago

Yes he lost his bank money and spawned in with standard gear.

AgentRev commented 9 years ago

Alright, the bank money reset happened 12 minutes before disconnection, so it could be a separate problem. Unless both issues are related to game network bugs or something.

LouDnl commented 9 years ago

Maybe the loss of bankmoney triggers something?

AgentRev commented 9 years ago

No, that would probably be "a greater problem is causing both bank money to fail saving and standard gear to overwrite the player save"

LouDnl commented 9 years ago

Maybe he whent to the spawn menu to be afk? He's not online anymore so I can't ask him.

AgentRev commented 9 years ago

I've been analyzing his data, and here's what I pieced up so far:

21:39:13 - Player connected 21:39:18 - Bank money loaded = 113573; PlayerSave not found, new spawn 21:39:45 - Player saved in Negades; Bank = 113573; Wallet = 2500 21:40:22 - Player saved in Negades; Bank = 113573; Wallet = 2500 21:41:21 - Player money saved; Bank = 116073; Wallet = 0 21:41:36 - Player saved in Negades near ATM; Bank = 116073; Wallet = 0 21:41:40 - Player disconnected; Inventory saved via HandleDisconnect 21:41:59 - Player connected 21:42:01 - Bank money loaded = 116073; Previous PlayerSave loaded in front of ATM 21:42:11 - Player saved in Negades near ATM; Bank = 116073; Wallet = 0 Possible unrecorded respawn 21:43:07 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:44:04 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:44:56 - Player save deleted, likely due to death 21:46:45 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:47:05 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:48:05 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:49:05 - Player saved in Agios Dionysios; Bank = 0; Wallet = 2500 21:49:43 - Player save deleted, likely due to death 21:50:37 - Player saved in Telos; Bank = 0; Wallet = 2500 21:51:06 - Player saved in Telos; Bank = 0; Wallet = 2500 21:52:05 - Player saved in Telos; Bank = 0; Wallet = 2500 21:53:05 - Player saved near Telos; Bank = 0; Wallet = 2500 21:54:25 - Player saved near Anthrakia; Bank = 0; Wallet = 2500 21:55:15 - Player disconnected; Standard gear saved via HandleDisconnect

LouDnl commented 9 years ago

Can I do anything for you to find the problem better? Need more logs?

LouDnl commented 9 years ago

Do you still want me to log? Or can I change back to non debug extDB2 files?

AgentRev commented 9 years ago

I don't have any more time to look into this until my semester is complete, at the end of May.

LouDnl commented 9 years ago

Ok we'll have to wait then :)

AgentRev commented 9 years ago

I may have an idea to fix the standard gear problem, although I don't know if it will also fix bank reset. So, the idea would be to add an init field to all the player units in mission.sqm, in order to assign a "Respawn" event to all of them server-side, as to be able to track respawns without relying exclusively on client data, which I think is the cause of gear reset. Any firing of that respawn event will tell the server not to save any inventory data until the client confirms that the player is ready. I will do some experiments to check viability.

I just wish BIS would fix this goddamn bug, it would make it so much easier.

LouDnl commented 9 years ago

I upvoted it and asked if Dwarden would please get it assigned.

LouDnl commented 9 years ago

Dwarden asks if you can check if this bug you reported still exists in the current latest RC version.

AgentRev commented 9 years ago

Nice! Will implement the fix once it's brought to the stable branch. Again, I don't know if it's gonna fix the bank reset, but in theory it should allow me to prevent the standard gear issue.

LouDnl commented 9 years ago

Have you tested it yet? Thats what Dwarden asks. To see if its still there in RC. The bug u reported.

AgentRev commented 9 years ago

I don't know, I don't switch to RC anymore because it messes up my files like half of the time. If the fix I suggested was implemented then normally it will solve the bug without a doubt. If I could get just the functions_f.pbo from RC, then I could check if it's truly fixed.

LouDnl commented 9 years ago

No he didn’t say it was implemented. Dwarden asked if we could test if it was fixed.

ancientevil commented 9 years ago

We havent heard anymore more problems on our DADS #1 server. Running latest perfbuild from BIS dropbox.

LouDnl commented 9 years ago

Would be nice if you could test on RC.

Player count on my server has dropped, but still hearing about this bug.

AgentRev commented 9 years ago

Tested on RC, still present.

LouDnl commented 9 years ago

Ok thanks. Will let Dwarden know.

LouDnl commented 9 years ago

Unfortunatly still getting players where bank accounts are reset. This time the player died and disconnected when he was in the respawn menu.

RPT and extDB log: http://arma.nl-united.nl/logs.7z

RPT log shows this: 2015/07/08, 14:49:25 "onPlayerDisconnected - ["Tommy","76561198085099283"]" 2015/07/08, 14:49:25 Client: Remote object 11:0 not found 2015/07/08, 14:49:25 "HandleDisconnect - ["Tommy","76561198085099283"] - alive: true - local: true"

extDB log shows this: [14:49:02:087 +02:00] [Thread 3280] extDB2: Extension Input from Server: 1:364272:deletePlayerSave:76561198085099283:1 [14:49:02:087 +02:00] [Thread 3280] extDB2: Extension Output to Server: [1] [14:49:02:087 +02:00] [Thread 3004] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Input: deletePlayerSave:76561198085099283:1

Need any other logs?

LouDnl commented 9 years ago

Wait I only the logs from before the disconnect I see. Download these too: http://arma.nl-united.nl/logs2.7z

When he reconnected his bank money was still there. It dissapeared during connect I think?

extDB:

[19:28:10:014 +02:00] [Thread 5092] extDB2: Extension Input from Server: 1:258305:insertOrUpdatePlayerInfo:76561198085099283:BankMoney=2535332:BankMoney=VALUES(BankMoney) [19:28:10:014 +02:00] [Thread 5092] extDB2: Extension Output to Server: [1] [19:28:10:014 +02:00] [Thread 3920] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Input: insertOrUpdatePlayerInfo:76561198085099283:BankMoney=2535332:BankMoney=VALUES(BankMoney) [19:28:10:014 +02:00] [Thread 5092] extDB2: Extension Input from Server: 1:258305:insertOrUpdatePlayerSave:76561198085099283:1:1:Thirst=99.277855:Thirst=VALUES(Thirst) [19:28:10:014 +02:00] [Thread 5092] extDB2: Extension Output to Server: [1] [19:28:10:014 +02:00] [Thread 4732] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Input: insertOrUpdatePlayerSave:76561198085099283:1:1:Thirst=99.277855:Thirst=VALUES(Thirst)

[19:28:51:235 +02:00] [Thread 5092] extDB2: Extension Input from Server: 1:258305:insertOrUpdatePlayerInfo:76561198085099283:BankMoney=0:BankMoney=VALUES(BankMoney) [19:28:51:236 +02:00] [Thread 5092] extDB2: Extension Output to Server: [1] [19:28:51:236 +02:00] [Thread 3920] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Input: insertOrUpdatePlayerInfo:76561198085099283:BankMoney=0:BankMoney=VALUES(BankMoney) [19:28:51:237 +02:00] [Thread 3920] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Result: [1,[]] [19:28:51:300 +02:00] [Thread 5092] extDB2: Extension Input from Server: 1:258305:insertOrUpdatePlayerSave:76561198085099283:1:1:Hunger=100,Thirst=100,Position='["4105.458496","13797.391602","0.0014534"]',Direction=143.419098,Stance='"Pknl"',Backpack='"B_AssaultPack_blk"',WastelandItems='[["cannedfood",2],["water",2],["repairkit",2]]':Hunger=VALUES(Hunger),Thirst=VALUES(Thirst),Position=VALUES(Position),Direction=VALUES(Direction),Stance=VALUES(Stance),Backpack=VALUES(Backpack),WastelandItems=VALUES(WastelandItems) [19:28:51:300 +02:00] [Thread 5092] extDB2: Extension Output to Server: [1] [19:28:51:300 +02:00] [Thread 3920] extDB2: SQL_CUSTOM_V2: Trace: UniqueID: 1 Input: insertOrUpdatePlayerSave:76561198085099283:1:1:Hunger=100,Thirst=100,Position='["4105.458496","13797.391602","0.0014534"]',Direction=143.419098,Stance='"Pknl"',Backpack='"B_AssaultPack_blk"',WastelandItems='[["cannedfood",2],["water",2],["repairkit",2]]':Hunger=VALUES(Hunger),Thirst=VALUES(Thirst),Position=VALUES(Position),Direction=VALUES(Direction),Stance=VALUES(Stance),Backpack=VALUES(Backpack),WastelandItems=VALUES(WastelandItems)

AgentRev commented 9 years ago

Both links 404'd

LouDnl commented 9 years ago

I see that my idiot self deleted the files. Here's a new zip with all of them in: http://arma.nl-united.nl/logs.7z

LouDnl commented 9 years ago

Still an issue unfortunatly.

AgentRev commented 9 years ago

Which one? or both?

LouDnl commented 9 years ago

Heard the bank reset less frequent. But the logging in with default gear still happens quite often. Both sometimes start with being invisible or being unable to move. I'll try and catch some logs if it happens again.

AgentRev commented 9 years ago

Waitaminit... I think I know how to solve default gear... On this line, try changing

!(_unit getVariable ["playerSpawning", false])

to

!(_unit getVariable ["playerSpawning", true])

Default gear is normally caused by a botched respawn that occured on or before player disconnect, thus causing HandleDisconnect to save inventory. If playerSpawning is not initialized on the botched unit, in theory this would fix the problem!

Well, maybe not all occurances, but certainly the majority of them. I guess setting playerSpawning to true immediately on death would eliminate those that manage to slip through the above fix, although that would need to be tested for side effects first.

LouDnl commented 9 years ago

Will try that and update both servers with it :+1:

LouDnl commented 9 years ago

Here we go :) https://github.com/LouDnl/ArmA3_Wasteland.Altis/commit/471402420761fb5d4593dcfbc45b194d7b4701c7

AgentRev commented 9 years ago

About bank money, did you get any report since the last fix? (e7efbf8d74f0ac51158fd509689f0de3f03e9aaa)

LouDnl commented 9 years ago

1 or 2 maybe, but could be false positives. Will keep an eye out for it.

AgentRev commented 9 years ago

Any new reports, or is everything fine so far?

LouDnl commented 9 years ago

None yet. But our servers have been down a lot the pas week and a half due to ddos attacks.