Jump to content

[RESOLVED]2.5.6 multiplayer playerid is given to same players


Recommended Posts

With the latest patch, there's a new issue with player id duplicated between different online players.

This is shown in a few ways -

1. players who did not get any kills, get kills on the score board from other players with the same id.

2. get player id and use callback actions from the API will work on the 2 players at the same time, for example move to spectators.

net.force_player_slot(playerID, 0, '')

 

This is effecting single unit groups, haven't managed to reproduce this on demand, but it reproduces sporadically on Blue Flag.

Link to post
Share on other sites
How could this go untreated for a week now?

 

MP is literally pointless when people get wrong kills or get kicked to spectator all the time.

 

Stop treating MP Players as as a separate less worthy society.

 

+1

Mastering others is strength. Mastering yourself is true power. - Lao Tze

Link to post
Share on other sites

For the explanation, we have seen 2 incidents -

1. We have a script using the API that throws players to spectator after they get killed, this is working by the DCS API.

What actually happens after updating to 2.5.6 - Players who weren't killed, and are in the 3D, get thrown back to spectators once other players on the server get killed.

This is the part that throws the players to spectators -

net.force_player_slot(playerID, 0, '')

 

The players which were killed were identified using the onGameEvent function by using the PlayerID -

function onGameEvent(eventName,arg1,arg2,arg3,arg4)
   --"friendly_fire", playerID, weaponName, victimPlayerID
   --"mission_end", winner, msg
   --"kill", killerPlayerID, killerUnitType, killerSide, victimPlayerID, victimUnitType, victimSide, weaponName
   --"self_kill", playerID
   --"change_slot", playerID, slotID, prevSide
   --"connect", playerID, name
   --"disconnect", playerID, name, playerSide, reason_code
   --"crash", playerID, unit_missionID
   --"eject", playerID, unit_missionID
   --"takeoff", playerID, unit_missionID, airdromeName
   --"landing", playerID, unit_missionID, airdromeName
   --"pilot_death", playerID, unit_missionID
end

 

2. Without relation to the API, we also notice that the in game score board is updating wrongfully.

Players who did not get any kills start to get kills which were not related to them in the in game score board. these get included once other players get killed.

 

The 2 above points lead to believe that player ids are duplicated between different players online.

The code on our part that throws players to spectators after they got killed, did not change between the versions, the actual file haven't been changed for the last month at least.

 

To get more information and help out with the investigation, I'm updating to the latest Open Beta and we will ask our players to fly and try to get this issue reproduced so logs can be generated and we can provide more information.

If you need more logs generated or any specific data from the API generated into a log file, let me know and I can set it up on the server while this runs.

Link to post
Share on other sites

A user on my server is reporting this:

From what i've seen, it appears that when one person takes a slot for the 1st time this slot was taken, the ID of that player is bound to that slot permanently. Therefore, when another player takes the same slot later, the slot is still bound to the same player

Looks lile the part responsible for removing id assignment between the slot and the player fails somehow

 

I'll try if I can get this tested later today or tomorrow.

Link to post
Share on other sites

Issue reproduced again, people were thrown out to spectators while others were being killed and in game scores were giving wrong information

Adding the dcs log file we got that should include the issue, hope it has enough information to showcase it.

dcs.log.zip

Link to post
Share on other sites

I've just finally managed to get a little bit of time to test it. But it is really hard to pinpoint. Best I can do is outline the things I have observed:

 

- I joined with player ID 5, which was previously assigned to another player I'll call player1

- I joined a slot, and the group ID my helicopter was assigned to had the same Unit ID as the f16 player1 joined previously. (This was edited: previously it said groupId, but it was the unit ID)

- the player with ID 4 left the server

- everything seemed fine, my kills were counted normally and no anomalies were observed

- another player connects and gets ID 6 as expected

- I fire another vikhr and the log is as expected including kill event.

- player with ID 6 enters a slot

- I fire another vikhr and hit the target. there is no kill event being dispatched, only unit_dead and

- this is is not entirely accurate in terms of when exactly this is observed unfortunately, should have taken a note, but i guess this is the point I realize I have 15 kills, when in reality it was ~5

- player with id 2 fires a weapon, hits and events are dispatched as expected

 

I also coincidentally noticed that my Unit ID was exactly the same as the different unit player1 (also client id 5 previously) had. Afaik Unit IDs are supposed to be unique, I guess this might be able to cause issues like this. I also find interesting that the unit ID matches the one who had the same client ID previously.

 

I have attached the log as well. Hope this helps.

The events I have described happened from about 14:45-15:35

dcs.log.rar


Edited by 0xDEADBEEF
Sorry for the edits, tried to make stuff more clear and make sure timeline is correct.
Link to post
Share on other sites

I just had another case where the wrong player was returned to spectators. The player with Client ID6 got killed. It triggered a Server side onGameEvent("kill", ...) with client ID 3, which apparently sent the wrong player to spectators. This time I could not find a relation to unit IDs. The player who got killed id a reconnect a little bit earlier, so he was not a "fresh client", if that's even a thing.

Link to post
Share on other sites

@c0ff & BIGNEWY

 

Adding another log file with added logs for connecting / disconnecting / slow switching / killed events.

I had a quick look, but it seems like some ids are assigned to the same connected players (check id - 3)

dcs.log.old.zip

Link to post
Share on other sites
How could this go untreated for a week now?

MP is literally pointless when people get wrong kills or get kicked to spectator all the time.

Stop treating MP Players as as a separate less worthy society.

 

+1

Windows 10 - Intel i7 7700K 4.2 Ghz (no OC) - Asus Strix GTX 1080 8Gb - 16GB DDR4 (3000 MHz) - SSD 500GB + WD Black FZEX 1TB 6Gb/s

Link to post
Share on other sites

Unfortunately this bug is still unfixed.

 

Please let us know if we can do anything to help you reproduce the issue. I (we) can run any script you want on the server to collect information that helps to reproduce. This is a serious issue for many servers, please let us help!

 

Edit: disregard, sorry! I got relayed incomplete information. It seems the scoreboard is still recording kills for others, but the kill event on the serverside script now returns the correct client id! I'll have a closer look when i find time.


Edited by 0xDEADBEEF
Link to post
Share on other sites

It (wrong client id returned in server side) did happen again after the server being up for 25 hours. One weird thing I noticed was a Unit:getName() threw an error: "Unit doesn't exist", even though the line before is "if unit:isExist() then" and apparently returned true.

 

I also notice inconsistencies with hit event. The initiator and the weapon are identical, however I cannot call getPlayerName() on the initiator, I get "attempt to call method 'getPlayerName' (a nil value)". All this started at the end of the log and the 24 hours prior.

 

log is attached. Interesting events happen at the end around 20:00.

dcs_log.rar

Link to post
Share on other sites
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...