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);
    }
}