void clanmate_list_update(const char *jid, const char *nickname, const char *profile_id, int status, int experience, int clan_points, int clan_role) { struct clanmate *f = list_get(session.clanmates, nickname); if (!f) return; clanmate_free_fields_(f); clanmate_set_fields_(f, jid, nickname, profile_id, status, experience, clan_points, clan_role); #ifdef DBUS_API dbus_api_update_buddy_list(); #endif }
void clanmate_list_update ( const char *jid, const char *nickname, const char *profile_id, int status, int experience, int clan_points, int clan_role, unsigned int invite_date, char *place_token, char *place_info_token, char *mode_info_token, char *mission_info_token ) { /* Handled by friend_list_update() */ if ( list_get ( session.profile.friends, nickname ) ) return; struct clanmate *f = list_get ( session.clan.clanmates, nickname ); if ( !f ) return; if ( status & STATUS_ONLINE ) { char *map; if ( place_token && place_info_token && strstr ( place_token, "pve" ) ) FORMAT ( map, "%s", place_info_token ); else if ( place_token && mission_info_token && strstr ( place_token, "pvp" ) ) FORMAT ( map, "@%s", mission_info_token + sizeof ( "@pvp_mission_display_name" ) ); else map = strdup ( KRED "@unknown" ); int NOTONLINE = STATUS_PLAYING | STATUS_AFK | STATUS_ROOM; if ( f->status == STATUS_OFFLINE ) LOGPRINT ( "%-20s " KGRN BOLD "%s\n", "PLAYER ONLINE", nickname ); else if ( ( f->status & NOTONLINE ) && !( status & NOTONLINE ) ) LOGPRINT ( "%-20s " KGRN BOLD "%s\n", "PLAYER ONLINE", nickname ); else if ( ( !( f->status & STATUS_AFK ) || ( f->status & ( STATUS_ROOM | STATUS_PLAYING ) ) ) && ( ( status & STATUS_AFK ) && !( status & ( STATUS_ROOM | STATUS_PLAYING ) ) ) ) LOGPRINT ( "%-20s " KYEL BOLD "%s\n", "PLAYER AFK", nickname ); else if ( !( f->status & STATUS_PLAYING ) && ( status & STATUS_PLAYING ) ) LOGPRINT ( "%-20s " KMAG BOLD "%-20s " KRST BOLD "%s\n", "PLAYER INGAME", nickname, map ); else if ( !( f->status & STATUS_ROOM ) && ( status & STATUS_ROOM ) ) LOGPRINT ( "%-20s " KGRN BOLD "%-20s " KRST BOLD "%s\n", "PLAYER INROOM", nickname, map ); free ( map ); } else if ( f->status & STATUS_ONLINE ) LOGPRINT ( "%-20s " KCYN BOLD "%s\n", "PLAYER OFFLINE", nickname ); clanmate_free_fields_ ( f ); clanmate_set_fields_ ( f, jid, nickname, profile_id, status, experience, clan_points, clan_role, invite_date, place_token, place_info_token, mode_info_token, mission_info_token ); #ifdef DBUS_API dbus_api_update_buddy_list ( ); #endif }