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

📄 anongame_infos.c

📁 打魔兽战网的都知道他是什么
💻 C
📖 第 1 页 / 共 5 页
字号:
    fclose(fp);    anongame_infos_loading_failure:    anongame_infos_set_defaults(anongame_infos);    anongame_infos_data_load();    return 0;}static int anongame_infos_data_load(void){    t_elem *curr;    t_packet *raw;    int j, k, size;    char ladr_count = 0;    char desc_count;    char mapscount_total;    char value;    char PG_gamestyles;    char AT_gamestyles;    char TY_gamestyles;    char anongame_prefix[ANONGAME_TYPES][5] = {			/* queue */	/* PG 1v1       */ {0x00, 0x00, 0x03, 0x3F, 0x00}, 	/*  0   */	/* PG 2v2       */ {0x01, 0x00, 0x02, 0x3F, 0x00},	/*  1   */	/* PG 3v3       */ {0x02, 0x00, 0x01, 0x3F, 0x00},	/*  2   */	/* PG 4v4       */ {0x03, 0x00, 0x01, 0x3F, 0x00},	/*  3   */	/* PG sffa      */ {0x04, 0x00, 0x02, 0x3F, 0x00},	/*  4   */	/* AT 2v2       */ {0x00, 0x00, 0x02, 0x3F, 0x02},	/*  5   */	/* AT tffa      */ {0x01, 0x00, 0x02, 0x3F, 0x02},	/*  6   */	/* AT 3v3       */ {0x02, 0x00, 0x02, 0x3F, 0x03},	/*  7   */	/* AT 4v4       */ {0x03, 0x00, 0x02, 0x3F, 0x04},	/*  8   */	/* TY           */ {0x00, 0x01, 0x00, 0x3F, 0x00},								/*  9   */	/* PG 5v5       */ {0x05, 0x00, 0x01, 0x3F, 0x00}, 	/* 10   */	/* PG 6v6       */ {0x06, 0x00, 0x01, 0x3F, 0x00},	/* 11   */	/* PG 2v2v2     */ {0x07, 0x00, 0x01, 0x3F, 0x00},	/* 12   */	/* PG 3v3v3     */ {0x08, 0x00, 0x01, 0x3F, 0x00},	/* 13   */	/* PG 4v4v4     */ {0x09, 0x00, 0x01, 0x3F, 0x00},	/* 14   */	/* PG 2v2v2v2   */ {0x0A, 0x00, 0x01, 0x3F, 0x00},	/* 15   */	/* PG 3v3v3v3   */ {0x0B, 0x00, 0x01, 0x3F, 0x00},	/* 16   */	/* AT 2v2v2     */ {0x04, 0x00, 0x02, 0x3F, 0x02}	/* 17   */    };    /* hack to give names for new gametypes untill there added to anongame_infos.c */    char *anongame_gametype_names[ANONGAME_TYPES] = {	"One vs. One",	"Two vs. Two",	"Three vs. Three",	"Four vs. Four",	"Small Free for All",	"Two vs. Two",	"Team Free for All",	"Three vs. Three",	"Four vs. Four",	"Tournament Game",	"Five vs. Five",	"Six Vs. Six",	"Two vs. Two vs. Two",	"3 vs. 3 vs. 3",	"4 vs. 4 vs. 4",	"2 vs. 2 vs. 2 vs. 2",	"3 vs. 3 vs. 3 vs. 3",	"Two vs. Two vs. Two"    };    t_clienttag game_clienttag[2] = { CLIENTTAG_WARCRAFT3_UINT, CLIENTTAG_WAR3XP_UINT };    char anongame_PG_section = 0x00;    char anongame_AT_section = 0x01;    char anongame_TY_section = 0x02;    /* set thumbsdown from the conf file */    for (j = 0; j < ANONGAME_TYPES; j++)	anongame_prefix[j][2] = anongame_infos_get_thumbsdown(j);    if ((raw = packet_create(packet_class_raw)) != NULL)    {	// assemble URL part with 3 URLs ( <1.15 )	packet_append_string(raw, anongame_infos_URL_get_URL(URL_server));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_player));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_tourney));	size = packet_get_size(raw);	// create compressed data	zlib_compress(packet_get_data_const(raw, 0, size), size, &anongame_infos->anongame_infos_data_war3->url_comp_data, &anongame_infos->anongame_infos_data_war3->url_comp_len);	zlib_compress(packet_get_data_const(raw, 0, size), size, &anongame_infos->anongame_infos_data_w3xp->url_comp_data, &anongame_infos->anongame_infos_data_w3xp->url_comp_len);	// append 4th URL for >= 1.15 clients	packet_append_string(raw, anongame_infos_URL_get_URL(URL_clan));	size = packet_get_size(raw);	zlib_compress(packet_get_data_const(raw, 0, size), size, &anongame_infos->anongame_infos_data_war3->url_comp_data_115, &anongame_infos->anongame_infos_data_war3->url_comp_len_115);	zlib_compress(packet_get_data_const(raw, 0, size), size, &anongame_infos->anongame_infos_data_w3xp->url_comp_data_115, &anongame_infos->anongame_infos_data_w3xp->url_comp_len_115);	for (k = 0; k < 2; k++)	{	    packet_set_size(raw, 0);	    mapscount_total = maplists_get_totalmaps(game_clienttag[k]);	    packet_append_data(raw, &mapscount_total, 1);	    maplists_add_maps_to_packet(raw, game_clienttag[k]);	    size = packet_get_size(raw);	    if (k == 0)	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_war3->map_comp_data, &anongame_infos->anongame_infos_data_war3->map_comp_len);	     else	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_w3xp->map_comp_data, &anongame_infos->anongame_infos_data_w3xp->map_comp_len);	}	for (k = 0; k < 2; k++)	{	    packet_set_size(raw, 0);	    value = 0;	    PG_gamestyles = 0;	    AT_gamestyles = 0;	    TY_gamestyles = 0;	    /* count of gametypes (PG, AT, TY) */	    for (j = 0; j < ANONGAME_TYPES; j++)		if (maplists_get_totalmaps_by_queue(game_clienttag[k], j))		{		    if (!anongame_prefix[j][1] && !anongame_prefix[j][4])			PG_gamestyles++;		    if (!anongame_prefix[j][1] && anongame_prefix[j][4])			AT_gamestyles++;		    if (anongame_prefix[j][1])			TY_gamestyles++;		}	    if (PG_gamestyles)		value++;	    if (AT_gamestyles)		value++;	    if (TY_gamestyles)		value++;	    packet_append_data(raw, &value, 1);	    /* PG */	    if (PG_gamestyles)	    {		packet_append_data(raw, &anongame_PG_section, 1);		packet_append_data(raw, &PG_gamestyles, 1);		for (j = 0; j < ANONGAME_TYPES; j++)		    if (!anongame_prefix[j][1] && !anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			packet_append_data(raw, &anongame_prefix[j], 5);			maplists_add_map_info_to_packet(raw, game_clienttag[k], j);		    }	    }	    /* AT */	    if (AT_gamestyles)	    {		packet_append_data(raw, &anongame_AT_section, 1);		packet_append_data(raw, &AT_gamestyles, 1);		for (j = 0; j < ANONGAME_TYPES; j++)		    if (!anongame_prefix[j][1] && anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			packet_append_data(raw, &anongame_prefix[j], 5);			maplists_add_map_info_to_packet(raw, game_clienttag[k], j);		    }	    }	    /* TY */	    if (TY_gamestyles)	    {		packet_append_data(raw, &anongame_TY_section, 1);		packet_append_data(raw, &TY_gamestyles, 1);		for (j = 0; j < ANONGAME_TYPES; j++)		    if (anongame_prefix[j][1] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			/* set tournament races available */			anongame_prefix[j][3] = tournament_get_races();			/* set tournament type (PG or AT)			 * PG = 0			 * AT = number players per team */			if (tournament_is_arranged())			    anongame_prefix[j][4] = tournament_get_game_type();			else			    anongame_prefix[j][4] = 0;			packet_append_data(raw, &anongame_prefix[j], 5);			maplists_add_map_info_to_packet(raw, game_clienttag[k], j);		    }	    }	    size = packet_get_size(raw);	    if (k == 0)	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_war3->type_comp_data, &anongame_infos->anongame_infos_data_war3->type_comp_len);	    else	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_w3xp->type_comp_data, &anongame_infos->anongame_infos_data_w3xp->type_comp_len);	}	for (k = 0; k < 2; k++)	{	    desc_count = 0;	    packet_set_size(raw, 0);	    for (j = 0; j < ANONGAME_TYPES; j++)		if (maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    desc_count++;	    packet_append_data(raw, &desc_count, 1);	    /* PG description section */	    for (j = 0; j < ANONGAME_TYPES; j++)		if (!anongame_prefix[j][1] && !anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		{		    packet_append_data(raw, &anongame_PG_section, 1);		    packet_append_data(raw, &anongame_prefix[j][0], 1);		    if (anongame_infos_get_short_desc(NULL, j) == NULL)			packet_append_string(raw, anongame_gametype_names[j]);		    else			packet_append_string(raw, anongame_infos_get_short_desc(NULL, j));		    if (anongame_infos_get_long_desc(NULL, j) == NULL)			packet_append_string(raw, "No Descreption");		    else			packet_append_string(raw, anongame_infos_get_long_desc(NULL, j));		}	    /* AT description section */	    for (j = 0; j < ANONGAME_TYPES; j++)		if (!anongame_prefix[j][1] && anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		{		    packet_append_data(raw, &anongame_AT_section, 1);		    packet_append_data(raw, &anongame_prefix[j][0], 1);		    packet_append_string(raw, anongame_infos_get_short_desc(NULL, j));		    packet_append_string(raw, anongame_infos_get_long_desc(NULL, j));		}	    /* TY description section */	    for (j = 0; j < ANONGAME_TYPES; j++)		if (anongame_prefix[j][1] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		{		    packet_append_data(raw, &anongame_TY_section, 1);		    packet_append_data(raw, &anongame_prefix[j][0], 1);		    packet_append_string(raw, anongame_infos_get_short_desc(NULL, j));		    packet_append_string(raw, anongame_infos_get_long_desc(NULL, j));		}	    size = packet_get_size(raw);	    if (k == 0)	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_war3->desc_comp_data, &anongame_infos->anongame_infos_data_war3->desc_comp_len);	    else	        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_w3xp->desc_comp_data, &anongame_infos->anongame_infos_data_w3xp->desc_comp_len);	}	packet_set_size(raw, 0);	/*FIXME: Still adding a static number (10)	   Also maybe need do do some checks to avoid prefs empty strings. */	ladr_count = 10;	packet_append_data(raw, &ladr_count, 1);	packet_append_data(raw, "OLOS", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_PG_1v1_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_1v1));	packet_append_data(raw, "MAET", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_PG_team_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_team));	packet_append_data(raw, " AFF", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_PG_ffa_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_ffa));	packet_append_data(raw, "2SV2", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_AT_2v2_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_2v2));	packet_append_data(raw, "3SV3", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_AT_3v3_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_3v3));	packet_append_data(raw, "4SV4", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_AT_4v4_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_4v4));	packet_append_data(raw, "SNLC", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_clan_1v1_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_1v1));	packet_append_data(raw, "2NLC", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_clan_2v2_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_2v2));	packet_append_data(raw, "3NLC", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_clan_3v3_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_3v3));	packet_append_data(raw, "4NLC", 4);	packet_append_string(raw, anongame_infos_DESC_get_DESC(NULL,ladder_clan_4v4_desc));	packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_4v4));        size = packet_get_size(raw);        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_war3->ladr_comp_data, &anongame_infos->anongame_infos_data_war3->ladr_comp_len);        zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos->anongame_infos_data_w3xp->ladr_comp_data, &anongame_infos->anongame_infos_data_w3xp->ladr_comp_len);	packet_destroy(raw);    }        if ((raw = packet_create(packet_class_raw)) != NULL)    {	t_anongame_infos_DESC *anongame_infos_DESC;	t_anongame_infos_data_lang *anongame_infos_data_lang_war3;	t_anongame_infos_data_lang *anongame_infos_data_lang_w3xp;	char * langID;	    	LIST_TRAVERSE(anongame_infos->anongame_infos_DESC_list, curr)	{	    anongame_infos_DESC = elem_get_data(curr);	    langID = anongame_infos_DESC->langID;	    anongame_infos_data_lang_war3 = anongame_infos_data_lang_init(langID);	    anongame_infos_data_lang_w3xp = anongame_infos_data_lang_init(langID);	    for (k = 0; k < 2; k++)	    {		desc_count = 0;		packet_set_size(raw, 0);		for (j = 0; j < ANONGAME_TYPES; j++)		    if (maplists_get_totalmaps_by_queue(game_clienttag[k], j))			desc_count++;		packet_append_data(raw, &desc_count, 1);		/* PG description section */		for (j = 0; j < ANONGAME_TYPES; j++)		    if (!anongame_prefix[j][1] && !anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			packet_append_data(raw, &anongame_PG_section, 1);			packet_append_data(raw, &anongame_prefix[j][0], 1);			if (anongame_infos_get_short_desc(langID, j) == NULL)			    packet_append_string(raw, anongame_gametype_names[j]);			else			    packet_append_string(raw, anongame_infos_get_short_desc(langID, j));			if (anongame_infos_get_long_desc(langID, j) == NULL)			    packet_append_string(raw, "No Descreption");			else			    packet_append_string(raw, anongame_infos_get_long_desc(langID, j));		    }		/* AT description section */		for (j = 0; j < ANONGAME_TYPES; j++)		    if (!anongame_prefix[j][1] && anongame_prefix[j][4] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			packet_append_data(raw, &anongame_AT_section, 1);			packet_append_data(raw, &anongame_prefix[j][0], 1);			packet_append_string(raw, anongame_infos_get_short_desc(langID, j));			packet_append_string(raw, anongame_infos_get_long_desc(langID, j));		    }		/* TY description section */		for (j = 0; j < ANONGAME_TYPES; j++)		    if (anongame_prefix[j][1] && maplists_get_totalmaps_by_queue(game_clienttag[k], j))		    {			packet_append_data(raw, &anongame_TY_section, 1);			packet_append_data(raw, &anongame_prefix[j][0], 1);			packet_append_string(raw, anongame_infos_get_short_desc(langID, j));			packet_append_string(raw, anongame_infos_get_long_desc(langID, j));		    }		size = packet_get_size(raw);		if (k == 0)		    zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos_data_lang_war3->desc_comp_data, &anongame_infos_data_lang_war3->desc_comp_len);		else		    zlib_compress(packet_get_data_const(raw,0,size), size, &anongame_infos_data_lang_w3xp->desc_comp_data, &anongame_infos_data_lang_w3xp->desc_comp_len);	    }	    packet_set_size(raw, 0);	    /*FIXME: Still adding a static number (10)	       Also maybe need do do some checks to avoid prefs empty strings. */	    ladr_count = 10;	    packet_append_data(raw, &ladr_count, 1);	    packet_append_data(raw, "OLOS", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_PG_1v1_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_1v1));	    packet_append_data(raw, "MAET", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_PG_team_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_team));	    packet_append_data(raw, " AFF", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_PG_ffa_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_PG_ffa));	    packet_append_data(raw, "2SV2", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_AT_2v2_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_2v2));	    packet_append_data(raw, "3SV3", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_AT_3v3_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_3v3));	    packet_append_data(raw, "4SV4", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_AT_4v4_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_AT_4v4));	    packet_append_data(raw, "SNLC", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_clan_1v1_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_1v1));	    packet_append_data(raw, "2NLC", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_clan_2v2_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_2v2));	    packet_append_data(raw, "3NLC", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_clan_3v3_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_3v3));	    packet_append_data(raw, "4NLC", 4);	    packet_append_string(raw, anongame_infos_DESC_get_DESC(langID, ladder_clan_4v4_desc));	    packet_append_string(raw, anongame_infos_URL_get_URL(URL_ladder_clan_4v4));	    anongame_infos_data_lang_war3->ladr_len = packet_get_size(raw);	    anongame_infos_data_lang_war3->ladr_data = (char *) xmalloc(anongame_infos_data_lang_war3->ladr_len);	    memcpy(anongame_infos_data_lang_war3->ladr_data, packet_get_data_const(raw, 0, anongame_infos_data_lang_war3->ladr_len), anongame_infos_data_lang_war3->ladr_len);	    zlib_compress(anongame_infos_data_lang_war3->ladr_data, anongame_infos_data_lang_war3->ladr_len, &anongame_infos_data_lang_war3->ladr_comp_data, &anongame_infos_da

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -