static void xmpp_iq_gameroom_quickplay_succeeded_cb(const char *msg_id, const char *msg, void *args) { /* Answer: <iq from='k01.warface' type='get'> <query xmlns='urn:cryonline:k01'> <gameroom_quickplay_succeeded uid='xxxxxxxxxxxxxx' /> </query> </iq> */ char *data = wf_get_query_content(msg); if (data == NULL) return; char *uid = get_info(data, "uid='", "'", NULL); if (uid != NULL) { quickplay_succeeded(uid); xmpp_send_iq_result( JID_K01, msg_id, "<query xmlns='urn:cryonline:k01'>" "<gameroom_quickplay_succeeded uid='%s'/>" "</query>", uid); } free(uid); free(data); }
static void xmpp_iq_ping_cb(const char *msg_id, const char *msg, void *args) { /* Anwser to pings <iq from='warface' id='3160085767' to='XXXX@warface/GameClient' type='get'> <ping xmlns='urn:xmpp:ping'/> </iq> */ xmpp_send_iq_result( JID_HOST, msg_id, NULL, NULL); }
static void xmpp_iq_peer_status_update_cb(const char *msg_id, const char *msg, void *args) { /* Answer <iq from='xxxxxxx@warface/GameClient' type='get'> <query xmlns='urn:cryonline:k01'> <peer_status_update nickname='xxxx' profile_id='xxxx' status='13' experience='xxxx' place_token='' place_info_token=''/> </query> </iq> */ char *data = wf_get_query_content(msg); if (data == NULL) return; char *jid = get_info(msg, "from='", "'", NULL); char *nick = get_info(data, "nickname='", "'", NULL); char *pid = get_info(data, "profile_id='", "'", NULL); int status = get_info_int(data, "status='", "'", NULL); int exp = get_info_int(data, "experience='", "'", NULL); #ifdef DBUS_API dbus_api_emit_status_update(nick, status, exp, 0); #endif /* DBUS_API */ if (status == STATUS_OFFLINE || status & STATUS_LEFT) friend_list_update(NULL, nick, pid, status, exp); else friend_list_update(jid, nick, pid, status, exp); xmpp_send_iq_result( JID(jid), msg_id, "<query xmlns='urn:cryonline:k01'>" " <peer_status_update/>" "</query>", NULL); free(jid); free(nick); free(pid); free(data); }
static void xmpp_iq_preinvite_response_cb(const char *msg_id, const char *msg, void *args) { /* Answer: <iq from='k01.warface' type='get'> <query xmlns='urn:cryonline:k01'> <preinvite_response uid='xxxxxxxxxxxxxxx' accepted='1' pid='xxxxxx' from='xxxxx'/> </query> </iq> */ char *data = wf_get_query_content(msg); if (data == NULL) return; char *jid = get_info(msg, "from='", "'", NULL); char *from = get_info(data, "from='", "'", NULL); char *uid = get_info(data, "uid='", "'", NULL); char *pid = get_info(data, "pid='", "'", NULL); int accepted = get_info_int(data, "accepted='", "'", NULL); if (uid != NULL && jid != NULL && pid != NULL && from != NULL) { quickplay_preinvite_response(uid, jid, accepted); xmpp_send_iq_result( JID(jid), msg_id, "<query xmlns='urn:cryonline:k01'>" " <preinvite_response uid='%s' accepted='%d' from='%s' pid='%s'/>" "</query>", uid, accepted, from, pid); } free(from); free(jid); free(pid); free(uid); free(data); }
static void xmpp_iq_p2p_ping_cb(const char *msg_id, const char *msg, void *args) { /* Reply to peer to peer pings <iq from='xxxxx@warface/GameClient' id='uid0002d87c' type='get'> <query xmlns='urn:cryonline:k01'> <p2p_ping/> </query> </iq> */ char *from = get_info(msg, "from='", "'", NULL); xmpp_send_iq_result( JID(from), msg_id, "<query xmlns='urn:cryonline:k01'>" " <p2p_ping/>" "</query>", NULL); free(from); }
static void xmpp_iq_peer_player_info_cb(const char *msg_id, const char *msg, void *args) { /* Answer <iq from="xxx@warface/GameClient" id="xxxxxx" type="get"> <query xmlns="urn:cryonline:k01"> <peer_player_info/> </query> </iq> */ char *jid = get_info(msg, "from='", "'", NULL); char *clan_stats; if (session.profile.clan.id != 0) { FORMAT(clan_stats, " clan_name='%s' clan_role='%i'" " clan_position='%i' clan_points='%i'" " clan_member_since='%X'", session.profile.clan.name, session.profile.clan.role, session.profile.clan.own_position, session.profile.clan.points, session.profile.clan.joined); } else clan_stats = strdup(""); xmpp_send_iq_result( JID(jid), msg_id, "<query xmlns='urn:cryonline:k01'>" " <peer_player_info online_id='%s' nickname='%s'" " pvp_rating_rank='%u'" " primary_weapon='%s'" " banner_badge='%u' banner_mark='%u'" " banner_stripe='%u' experience='%u'" " items_unlocked='%u'" " challenges_completed='%u'" " missions_completed='%u'" " pvp_wins='%u' pvp_loses='%u' pvp_total_matches='%u'" " pvp_kills='%u' pvp_deaths='%u'" " playtime_seconds='%u'" " leavings_percentage='%f'" " coop_climbs_performed='%u'" " coop_assists_performed='%u'" " favorite_pvp_class='%u' favorite_pve_class='%u'" " %s />" "</query>", session.xmpp.jid, session.profile.nickname, session.profile.stats.pvp.rating_points, session.profile.primary_weapon, session.profile.banner.badge, session.profile.banner.mark, session.profile.banner.stripe, session.profile.experience, session.profile.stats.items_unlocked, session.profile.stats.challenges_completed, session.profile.stats.pve.missions_completed, session.profile.stats.pvp.wins, session.profile.stats.pvp.loses, session.profile.stats.pvp.wins + session.profile.stats.pvp.loses, session.profile.stats.pvp.kills, session.profile.stats.pvp.deaths, session.profile.stats.playtime_seconds, session.profile.stats.leavings_percentage, session.profile.stats.coop_climbs_performed, session.profile.stats.coop_assists_performed, session.profile.stats.pvp.favorite_class, session.profile.stats.pve.favorite_class, clan_stats); free(clan_stats); free(jid); }