📄 anongame_infos.c
字号:
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 + -