Yeah that’s not going to work. When the user sets their status to invisible you need to send a contact offline packet (service id 2) instead of the online status packet you’re sending now. I had a problem with the offline notification showing up in the lower right hand corner but the state of the contact in my list didn’t change. I managed to fix this last night with the correct key pairs so in addition to the offline notification the buddy list now updates to the correct state.
Here’s the keypair map
Service Id = 2, Attribute = 1 (must be 1)
7 => Contact Id
10 => Unknown (observed as "0". Appears to be required)
13 => Unknown (observed as "0")
47 => Unknown (observed as "2". Including this but omitting 10 and 13 causes crash)
According to my notes the values were observed in 6.0.1922. If I apply the keypair matrix 10 is probably the online status and 13 is probably the client type (game, chat, mobile), but 47 probably isn’t a busy state as that’s assumed to be a boolean. I need to feed some other values to messenger to see what happens.
See packet handler @ https://github.com/TheGibletInitiative/Giblet/blob/master/Protocols/YMsg/src/Server/Processors/Mock/SetAway.cpp
See packet builder @ https://github.com/TheGibletInitiative/Giblet/blob/master/Protocols/YMsg/include/Protocols/YMsg/Server/Builders/ContactOffline.h