A joins room
B joins room
A changes var V
B gets notice of var
B leaves to other room
A changes var V again
A goes also goes to that other room
A changes var V2
B gets notice and also checks var V on A as passed by the uservarchange event
var V on A still has old value from the first change
This happens because on userenter only the user object for the currentroom gets updated. While on uservars it passes with the event the user object from whichever room it got to first in the loop in syshandler.
The core of this problem is that user objects don't get removed from old rooms (possibly because the client doesnt get notifications about users leaving from other rooms )
A quick fix for people who dont use multijoin, change line 534 in syshandler to:
Code: Select all
if (returnUser == null && room == sfs.getActiveRoom())