⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clan.c

📁 打魔兽战网的都知道他是什么
💻 C
📖 第 1 页 / 共 3 页
字号:
}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 + -