📄 clan.c
字号:
}extern t_connection *clanmember_get_conn(t_clanmember * member){ t_account * account; if (!(member)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanmember"); return NULL; } if (!(account = member->memberacc)) { eventlog(eventlog_level_error,__FUNCTION__,"member as NULL account"); return NULL; } return account_get_conn(account);}extern char clanmember_get_status(t_clanmember * member){ if (!(member)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanmember"); return 0; } if ((member->status == CLAN_NEW) && (now - member->join_time > prefs_get_clan_newer_time() * 3600)) { member->status = CLAN_PEON; member->clan->modified = 1;#ifdef WITH_SQL member->modified = 1;#endif } return member->status;}extern int clanmember_set_status(t_clanmember * member, char status){ if (!(member)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanmember"); return -1; } if (member->status != status) { member->status = status; member->clan->modified = 1;#ifdef WITH_SQL member->modified = 1;#endif } return 0;}extern time_t clanmember_get_join_time(t_clanmember * member){ if (!(member)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanmember"); return 0; } return member->join_time;}extern t_clan *clanmember_get_clan(t_clanmember * member){ if (!(member)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanmember"); return 0; } return member->clan;}extern const char *clanmember_get_online_status(t_clanmember * member, char *status){ return clanmember_get_online_status_by_connection(clanmember_get_conn(member), status);}extern const char *clanmember_get_online_status_by_connection(t_connection * conn, char *status){ if (conn && (conn_get_state(conn)!=conn_state_empty)) { t_game *game; t_channel *channel; if ((game = conn_get_game(conn)) != NULL) { if (game_get_flag(game) == game_flag_private) (*status) = SERVER_W3XP_CLAN_MEMBER_PRIVATE_GAME; else (*status) = SERVER_W3XP_CLAN_MEMBER_GAME; return game_get_name(game); } if ((channel = conn_get_channel(conn)) != NULL) { (*status) = SERVER_W3XP_CLAN_MEMBER_CHANNEL; return channel_get_name(channel); } (*status) = SERVER_W3XP_CLAN_MEMBER_ONLINE; } else (*status) = SERVER_W3XP_CLAN_MEMBER_OFFLINE; return NULL;}extern int clanmember_set_online(t_connection * c){ t_clanmember *member; t_account *acc; if (!c) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL connection"); return -1; } if ((acc = conn_get_account(c)) && (member = account_get_clanmember(acc))) { clanmember_on_change_status(member); } return 0;}extern int clanmember_set_offline(t_connection * c){ t_clanmember *member; t_account *acc; if (!c) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL connection"); return -1; } if ((acc = conn_get_account(c)) && (member = account_get_clanmember_forced(acc))) { clanmember_on_change_status(member); } return 0;}extern int clan_get_created(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } return clan->created;}extern int clan_set_created(t_clan * clan, int created){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } clan->created = created; return 0;}extern char clan_get_modified(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } return clan->modified;}extern int clan_set_modified(t_clan * clan, char modified){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } clan->modified = modified; return 0;}extern char clan_get_channel_type(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } return clan->channel_type;}extern int clan_set_channel_type(t_clan * clan, char channel_type){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } clan->channel_type = channel_type; return 0;}extern t_list *clan_get_members(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return NULL; } return clan->members;}extern char const *clan_get_name(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return NULL; } return clan->clanname;}extern int clan_get_clantag(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return 0; } return clan->clantag;}extern char const *clan_get_motd(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return NULL; } return clan->clan_motd;}extern int clan_set_motd(t_clan * clan, const char *motd){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } if (!(motd)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL motd"); return -1; } else { if (clan->clan_motd) xfree((void *) clan->clan_motd); clan->clan_motd = xstrdup(motd); } return 0;}extern unsigned int clan_get_clanid(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return 0; } return clan->clanid;}extern int clan_set_creation_time(t_clan * clan, time_t c_time){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return -1; } clan->creation_time = c_time; return 0;}extern time_t clan_get_creation_time(t_clan * clan){ if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return 0; } return clan->creation_time;}extern t_clanmember *clan_add_member(t_clan * clan, t_account * memberacc, char status){ t_clanmember *member; if (!(clan)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clan"); return NULL; } if (!(clan->members)) { eventlog(eventlog_level_error, __FUNCTION__, "found NULL clan->members"); return NULL; } member = xmalloc(sizeof(t_clanmember)); member->memberacc = memberacc; member->status = status; member->join_time = now; member->clan = clan;#ifdef WITH_SQL member->modified = 1;#endif list_append_data(clan->members, member); account_set_clanmember(memberacc, member); clan->modified = 1; return member;}extern int clan_remove_member(t_clan * clan, t_clanmember * member){ t_elem * elem; if (!member) return -1; if (list_remove_data(clan->members, member, &elem) < 0) { eventlog(eventlog_level_error, __FUNCTION__, "could not remove member"); return -1; } if (member->memberacc != NULL) { account_set_clanmember(member->memberacc, NULL); storage->remove_clanmember(account_get_uid(member->memberacc)); } xfree((void *) member); clan->modified = 1; return 0;}extern t_clan *clan_create(t_account * chieftain_acc, int clantag, const char *clanname, const char *motd){ t_clan *clan; t_clanmember *member; clan = xmalloc(sizeof(t_clan)); member = xmalloc(sizeof(t_clanmember)); if (!(clanname)) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL clanname"); xfree((void *) clan); xfree((void *) member); return NULL; } clan->clanname = xstrdup(clanname); if (!(motd)) clan->clan_motd = xstrdup("This is a newly created clan"); else clan->clan_motd = xstrdup(motd); clan->creation_time = now; clan->clantag = clantag; clan->clanid = ++max_clanid; clan->created = 0; clan->modified = 1; clan->channel_type = prefs_get_clan_channel_default_private(); clan->members = list_create(); member->memberacc = chieftain_acc; member->status = CLAN_CHIEFTAIN; member->join_time = clan->creation_time; member->clan = clan;#ifdef WITH_SQL member->modified = 1;#endif list_append_data(clan->members, member); account_set_clanmember(chieftain_acc, member); return clan;}extern int clan_destroy(t_clan * clan){ if (!clan) return 0; if (clan->clanname) xfree((void *) clan->clanname); if (clan->clan_motd) xfree((void *) clan->clan_motd); clan_remove_all_members(clan); xfree((void *) clan); return 0;}extern int clan_get_member_count(t_clan * clan){ t_elem *curr; int count = 0; LIST_TRAVERSE(clan->members, curr) { if ((elem_get_data(curr)) != NULL) count++; } return count;}extern int str_to_clantag(const char *str){ int clantag = 0; if (!str) return 0; if (str[0]) { clantag = str[0] << 24; if (str[1]) { clantag += str[1] << 16; if (str[2]) { clantag += str[2] << 8; if (str[3]) clantag += str[3]; } } } return clantag;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -