--- lbbs/src/user_info_display.c 2025/10/23 14:57:02 1.12 +++ lbbs/src/user_info_display.c 2025/10/25 13:09:42 1.14 @@ -51,6 +51,8 @@ int user_info_display(USER_INFO *p_user_ int ip_mask_level; const char *p_action_title; char action_str[LINE_BUFFER_LEN]; + int life; + int user_level; const char *user_level_name; char intro_f[BBS_user_intro_max_len]; int intro_len; @@ -62,6 +64,12 @@ int user_info_display(USER_INFO *p_user_ int ret; int i; + if (p_user_info == NULL) + { + log_error("NULL pointer error\n"); + return -1; + } + article_cnt = get_user_article_cnt(p_user_info->uid); astro_name = get_astro_name(p_user_info->birthday); @@ -143,19 +151,29 @@ int user_info_display(USER_INFO *p_user_ login_ip[0] = '\0'; } - user_level_name = get_user_level_name(p_user_info->exp); + if (p_user_info->life == 333 || p_user_info->life == 365 || p_user_info->life == 666 || p_user_info->life == 999) // Immortal + { + life = p_user_info->life; + } + else + { + life = p_user_info->life - (int)((time(NULL) - p_user_info->last_login_dt) / 86400 + 1); + } + + user_level = get_user_level(p_user_info->exp); + user_level_name = get_user_level_name(user_level); intro_len = lml_render(p_user_info->intro, intro_f, sizeof(intro_f), 0); snprintf(user_info_f, sizeof(user_info_f), "\n%s (%s) 上站 [%d] 发文 [%d]\n" "上次在 [%s] 从 [%s] 访问本站 经验值 [%d]\n" - "离线于 [%s] 等级 [%s] 星座 [%s]\n" + "离线于 [%s] 生命 [%d] 等级 [%s(%d)] 星座 [%s]\n" "%s\033[1m%s\033[m" "%s\n%s\n", p_user_info->username, p_user_info->nickname, p_user_info->visit_count, article_cnt, str_last_login_dt, (session_cnt > 0 ? login_ip : "未知"), p_user_info->exp, - (session_cnt > 0 ? "在线或因断线不详" : str_last_logout_dt), user_level_name, astro_str, + (session_cnt > 0 ? "在线或因断线不详" : str_last_logout_dt), life, user_level_name, user_level + 1, astro_str, (session_cnt > 0 ? "目前在线,状态如下:\n" : ""), (session_cnt > 0 ? action_str : ""), (intro_len > 0 ? "\033[0;36m个人说明档如下:\033[m" : "\033[0;36m没有个人说明档\033[m"), intro_f);