Buddy behavior
A user can add a buddy or delete a buddy.
The following list details scenarios for when User A adds User B as a buddy:
If User B is offline, then User A sees User B as unavailable.
When User B comes online, the following actions occur:
If User B has an accept rule for User A, then User A sees User B's online status.
If User B has a block rule for User A, then User A sees User B as unavailable.
If User B does not have a block rule or an accept rule, and vx_req_account_anonymous_login.buddy_managment_mode is set to mode_auto_accept, then User A sees User B as available.
If User B does not have a block rule or an accept rule, and vx_req_account_anonymous_login.buddy_managment_mode is set to mode_block, then User A sees User B as available.
If User B does not have a block rule or an accept rule, and vx_request_account_anonymous_login.buddy_managment_mode is set to mode_application, then User B receives a vx_evt_subscription message.
The game can then either ignore the subscription or issue a vx_req_account_send_subscription_reply_t message, and can either block or accept the subscription.
The following code displays an example of the process for handling an incoming buddy request:
void HandleEvtSubscription(vx_evt_subscription *evt)
{
// Only approve buddies that have "wizard" in the name.
if (strstr(evt->buddy_uri, "wizard"))
{
vx_req_account_send_subscription_reply_t *req;
vx_req_account_send_subscription_reply_create(&req);
req->account_handle = vx_strdup(evt->account_handle);
req->buddy_uri = vx_strdup(evt->buddy_uri);
req->rule_type = rule_allow;
vx_issue_request3(&req->base, &request_count);
}
}