From 16a4f5a307fd9e9802ba5ad9d83da98e56b08274 Mon Sep 17 00:00:00 2001 From: Jan Date: Thu, 5 Oct 2023 20:16:54 +0200 Subject: [PATCH] Add documentation and example for getting started --- README.md | 4 + docs/GettingStarted.md | 43 + docs/example/ExtendZone/build.sh | 8 + docs/example/ExtendZone/ui/menu_custom.menu | 126 +++ docs/example/ExtendZone/ui/mod.txt | 9 + .../zone_source/ExtendZoneProject.zone | 14 + docs/example/ExtendZone/zone_source/ui.zone | 798 ++++++++++++++++++ 7 files changed, 1002 insertions(+) create mode 100644 docs/GettingStarted.md create mode 100644 docs/example/ExtendZone/build.sh create mode 100644 docs/example/ExtendZone/ui/menu_custom.menu create mode 100644 docs/example/ExtendZone/ui/mod.txt create mode 100644 docs/example/ExtendZone/zone_source/ExtendZoneProject.zone create mode 100644 docs/example/ExtendZone/zone_source/ui.zone diff --git a/README.md b/README.md index a64c6ebf4..396c0d228 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,10 @@ You now run `make` manually or use `./scripts/make_release.sh` or `./scripts/mak The resulting binaries can be found in `build/bin/`. +## Using the tools + +For information about how to use the tools see the ["Getting started" guide](docs/GettingStarted.md) + ## Legal OAT source code is licensed under [GPLv3](./LICENSE). diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md new file mode 100644 index 000000000..632ba5213 --- /dev/null +++ b/docs/GettingStarted.md @@ -0,0 +1,43 @@ +# Getting started + +## Unlinking a fastfile + +A good starting point is dumping an existing zone from your game installation to get a glance at how the raw asset data is structured. +The `Unlinker` tool will create a dump of a fastfile that can be linked again in the same form with the `Linker` tool. + +The `Unlinker` tool can be used the following: +```shell +# Load the original zone from the game folder. +# Change this if you have installed your game somewhere else +GAME_FOLDER='C:/Program Files (x86)/Steam/steamapps/common/Call of Duty Modern Warfare 3' + +# Verbose mode logs more details which can be useful to find errors +ARGS='--verbose' + +# Specify the search-path to include the main folder to automatically load its IWD files for image dumping. +# For T6 also specify sounds;zone/all;zone/english to load appropriate IPAKs and sound banks. +# You can skip specifying the search path but it will not dump images then. +ARGS="$ARGS --search-path \"$GAME_FOLDER/main;$GAME_FOLDER/zone/english\"" + +ZONE_TO_UNLINK="$GAME_FOLDER/zone/english/ui.ff" + +Unlinker $ARGS "$ZONE_TO_UNLINK" +``` + +The variables are only to better demonstrate the different parameters. +You can also of course combine them: + +```shell +Unlinker --verbose "C:/Program Files (x86)/Steam/steamapps/common/Call of Duty Modern Warfare 3/zone/english/ui.ff" +``` + +When using Windows you can also drag and drop a fastfile onto `Unlinker` which will run the unlinking tool with just the fastfile path and no additional parameters. + +After `Unlinker` ran successfully, you will have a `zone_dump` folder in your working directory. +It contains another folder `zone_raw` which contains the definitions for the unlinked fastfiles. +You can move the project definitions one level up in the folder structure to be able to use them with the `Linker` tool. +That means `zone_dump/zone_raw/ui` becomes `zone_raw/ui` + +## Extending a vanilla fastfile + +For an example of extending a fastfile, see [the example "ExtendZone"](example/ExtendZone). diff --git a/docs/example/ExtendZone/build.sh b/docs/example/ExtendZone/build.sh new file mode 100644 index 000000000..738e9d9c3 --- /dev/null +++ b/docs/example/ExtendZone/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Load the original zone from the game folder. +GAME_FOLDER='C:/Program Files (x86)/Steam/steamapps/common/Call of Duty Modern Warfare 3' + +# Load the original zone into the Linker to be able to use its assets from in-memory. +# If you want to overwrite the vanilla zone later +Linker --load "$GAME_FOLDER/zone/english/ui.ff" ExtendZoneProject \ No newline at end of file diff --git a/docs/example/ExtendZone/ui/menu_custom.menu b/docs/example/ExtendZone/ui/menu_custom.menu new file mode 100644 index 000000000..9691b68e6 --- /dev/null +++ b/docs/example/ExtendZone/ui/menu_custom.menu @@ -0,0 +1,126 @@ +{ + menuDef + { + name "menu_custom" + fullscreen 1 + rect 0 0 640 480 0 0 + style 1 + focuscolor 1 1 1 1 + onOpen + { + focusFirst; + } + onESC + { + close menu_custom; + } + itemDef + { + text "abcdefghijklmnopqrstuvwxzy ABCDEFGHIJKLMNOPQRSTUVWXYZ !@#$%^&*(){}~`/=\-',;" + rect 10 10 150 50 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.375 + textfont 5 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + speed 10 + } + itemDef + { + text "a long and narrow ticker, at 40 units per second. !@&#(?" + rect 200 10 250 25 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.375 + textfont 4 + forecolor 1 0 1 0.5 + bordercolor 0 1 1 0.5 + speed 40 + } + itemDef + { + text "abcdefghijklmnopqrstuvwxzy ABCDEFGHIJKLMNOPQRSTUVWXYZ !@#$%^&*(){}~`/=\-',;" + rect 10 70 150 50 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.4583 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + speed 20 + } + itemDef + { + text "Big Texted News Ticker. 20 units per second." + rect 200 70 150 50 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.5833 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + speed 20 + } + itemDef + { + text "A short ticker with a bunch of text." + rect 10 130 50 50 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.375 + textfont 6 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + speed 10 + } + itemDef + { + text "<>@#$%^&*()\tA ticker with no borders. And many spaces. $%^13" + rect 70 130 500 25 1 0 + decoration + type 20 + visible 1 + textscale 0.375 + textfont 3 + forecolor 1 1 1 0.5 + spacing 10 + speed 35 + } + itemDef + { + text "Color Test: ^1Red ^2Green ^3Yellow ^4Blue ^5Cyan ^6Magenta ^7White" + rect 10 220 500 25 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.375 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + speed 50 + } + itemDef + { + rect 10 190 500 25 1 0 + decoration + type 20 + border 1 + visible 1 + textscale 0.375 + forecolor 1 1 1 0.5 + bordercolor 0 1 1 0.5 + spacing 30 + speed 50 + newsfeed 1 + } + } +} diff --git a/docs/example/ExtendZone/ui/mod.txt b/docs/example/ExtendZone/ui/mod.txt new file mode 100644 index 000000000..29b8304b8 --- /dev/null +++ b/docs/example/ExtendZone/ui/mod.txt @@ -0,0 +1,9 @@ +{ + functionDef + { + name "FUNC_0" + value (player("teamname") == "TEAM_ALLIES"); + } + + loadMenu { "ui/menu_custom.menu" } +} diff --git a/docs/example/ExtendZone/zone_source/ExtendZoneProject.zone b/docs/example/ExtendZone/zone_source/ExtendZoneProject.zone new file mode 100644 index 000000000..7a10900d2 --- /dev/null +++ b/docs/example/ExtendZone/zone_source/ExtendZoneProject.zone @@ -0,0 +1,14 @@ +// Set the game to "Call Of Duty: Modern Warfare 3" +>game,IW5 + +// Overwrite the name of the zone to be "ui" +>name,ui + +// Add custom assets +material,,clanlvl_box +material,,xp +material,,gxp +menulist,ui/mod.txt + +// Include the assets of the original zone +include,ui \ No newline at end of file diff --git a/docs/example/ExtendZone/zone_source/ui.zone b/docs/example/ExtendZone/zone_source/ui.zone new file mode 100644 index 000000000..0044642ee --- /dev/null +++ b/docs/example/ExtendZone/zone_source/ui.zone @@ -0,0 +1,798 @@ +// Call Of Duty: Modern Warfare 3 +>game,IW5 + +localize,ui +techniqueset,,2d +techniqueset,,cinematic +menu,main +image,background_image_blur_less +material,background_image_blur_less +image,background_image +material,background_image +image,menu_cloud_overlay +material,mw2_main_cloud_overlay +image,gs_so_bw +material,game_select_so_bw +image,gs_so_color +material,game_select_so_color +material,,navbar_selection_bar_shadow +material,,white +image,gs_sp_bw +material,game_select_sp_bw +image,gs_sp_color +material,game_select_sp_color +image,gs_mp_bw +material,game_select_mp_bw +image,gs_mp_color +material,game_select_mp_color +image,mw3_logo_large +material,mw3_logo_large +menu,main_selection +image,navbar_edge +material,navbar_edge +image,navbar_tick +material,navbar_tick +material,,navbar_selection_bar +menu,main_campaign +image,icon_lock +material,icon_lock +image,playercard_short_bg +material,playercard_short_bg +image,group_icon +material,group_icon +image,playercard_scanlines_512 +material,playercard_scanlines_512 +menu,main_specops +menu,popup_modechoice +menu,popup_modechoice_simple +menu,resume_popmenu +menu,popmenu_overwrite_warning +menu,popmenu_autosave_warning +menu,popmenu_recommendation_so +menu,popmenu_recommendation_mp +image,arrow_scroll_u +material,arrow_scroll_u +image,arrow_scroll_d +material,arrow_scroll_d +menu,levels +menu,levels_act1 +menu,levels_act2 +menu,levels_act3 +image,difficulty_star +material,difficulty_star +image,difficulty_star_empty +material,difficulty_star_empty +menu,popmenu_specops_mission +menu,popmenu_specops_survival +image,ticker +material,motd_ticker_bg +image,,$white +material,dest_alpha_one +image,dest_alpha_zero +material,dest_alpha_zero +material,background_image_blur_less_dest_alpha_masked +material,mw2_main_cloud_overlay_write_dest_alpha +material,mw2_main_cloud_overlay_dest_alpha_masked +menu,survival_armory_frontend_root +menu,survival_armory_frontend_weapons +image,linedoublesided +material,linedoublesided +menu,survival_armory_frontend_pistol +menu,survival_armory_frontend_mpistol +menu,survival_armory_frontend_smg +menu,survival_armory_frontend_lmg +menu,survival_armory_frontend_asr +menu,survival_armory_frontend_sg +menu,survival_armory_frontend_sr +menu,survival_armory_frontend_upgrades +menu,survival_armory_frontend_equipment +menu,survival_armory_frontend_air_support +menu,levels_challenge +menu,popmenu_difficulty +menu,popmenu_levelselect_overwrite +menu,popmenu_specialops_difficulty +menu,popmenu_specialops_splitscreen_skip_difficulty +menu,popmenu_specialops_online_difficulty +menu,popmenu_specialops_splitscreen_difficulty_p1 +menu,popmenu_specialops_splitscreen_difficulty_p2 +menu,ingame_difficulty +material,,line_horizontal +menu,stats +image,voice_off +material,voice_off +material,,nottalkingicon +material,,talkingicon +menu,coop_lobby +menu,leave_lobby_warning +menu,player_popup_report +menu,menu_online_ended +image,facebook +material,facebook +image,navbar_selection_bar_flipped +material,navbar_selection_bar_flipped +menu,pc_options_video +menu,pc_options_audio +menu,pc_options_controls +menu,pc_options_voice +image,navbar_selection_bar_centered +material,navbar_selection_bar_centered +menu,pc_options_advanced_video +menu,apply_picmip_popmenu +menu,pc_options_movement +menu,pc_options_actions +menu,pc_options_look +menu,options_graphics +menu,options_graphics_texture +menu,options_control_defaults +menu,options_graphics_defaults +image,menu_background +material,mw2_main_background +material,mw2_main_sp_image +material,mw2_main_co_image +material,mw2_main_mp_image +image,mockup_bgglow +material,mockup_bg_glow +menu,brightness_adjust +image,logo_cod2 +material,logo_cod2 +image,dropshadow_tl +material,drop_shadow_tl +image,dropshadow_t +material,drop_shadow_t +image,dropshadow_tr +material,drop_shadow_tr +image,dropshadow_r +material,drop_shadow_r +image,dropshadow_br +material,drop_shadow_br +image,dropshadow_b +material,drop_shadow_b +image,dropshadow_bl +material,drop_shadow_bl +image,dropshadow_l +material,drop_shadow_l +menu,player_profile +menu,profile_create_popmenu +menu,profile_must_create_popmenu +menu,profile_del_sure_popmenu +menu,profile_exists_popmenu +menu,profile_create_fail_popmenu +menu,profile_create_too_many_popmenu +menu,profile_delete_fail_popmenu +menu,,briefing +menu,,connect +menu,quit_popmenu +menu,all_restart_popmenu +menu,vid_restart_popmenu +menu,sp_vid_restart_popmenu_listen +menu,mp_vid_restart_popmenu_listen +menu,vid_restart_popmenu_dead +menu,language_restart_popmenu +menu,snd_restart_popmenu +menu,popmenu_multi_only +menu,so_unlock_requirement +menu,so_locked_for_friend +menu,so_character_select_coop +menu,so_character_select_splitscreen +menu,only_host_can_choose +menu,offensive_warning +menu,offensive_warning_2 +menu,save_load_menu +menu,load_sure_popmenu +menu,save_del_sure_popmenu +menu,save_overwrite_popmenu +menu,save_name_popmenu +menu,popup_friend_report +menu,popup_recent_report +menu,popup_facebook_report +menu,popup_clan_report +menu,popup_friend_list_actions +menu,popup_recent_list_actions +menu,popup_facebook_list_actions +menu,popup_clan_list_actions +image,arrow_left +material,arrow_left +image,arrow_right +material,arrow_right +menu,page_friends +menu,user_group_popup +menu,page_recent +menu,page_elite_clan +menu,page_facebook +menu,popup_friends +menu,popup_update_clan_motd_success +menu,popup_elite_clan_updating_motd +menu,popup_friend_invite_sent +image,yellow_bar +material,bar_progress_yellow_custom +menu,specops_barracks +menu,popup_statswarning +image,specialty_new +material,specialty_new +menu,popup_callsign +menu,popup_use_elite_title +menu,popup_use_elite_tag +menu,popup_playername +menu,popup_serverpassword +menu,popup_joinpassword +image,emblem_lock +material,mw3_emblem_locked +menu,menu_playercard_icon_popup +image,title_locked +material,mw3_title_locked +menu,menu_playercard_title_popup +menu,popup_gettinglb +menu,menu_so_leaderboards +menu,popup_lb_so_group +menu,popup_lb_duration_survival_solo_level +image,gradient_fadein +material,gradient_fadein +menu,menu_lb_filter_survival_solo_level +menu,popup_lb_duration_survival_team_level +menu,menu_lb_filter_survival_team_level +menu,popup_lb_duration_mission_solo_level +menu,menu_lb_filter_mission_solo_level +menu,popup_lb_duration_mission_team_level +menu,menu_lb_filter_mission_team_level +menu,menu_so_leaderboard +menu,menu_lb_survival_solo +menu,menu_lb_survival_team +menu,menu_lb_mission_solo +menu,menu_lb_mission_team +menu,popup_facebook_legal +menu,popup_facebook_legal2 +menu,popup_facebook +menu,popup_facebook_authenticating +menu,popup_facebook_authentication_popup +menu,popup_facebook_unregister +menu,popup_facebook_unregistering +menu,popup_facebook_pc_username +menu,popup_facebook_pc_password +image,,$black +material,xpbar_stencilbase +menu,popup_summary_so +menu,popup_summary_so_ss +menu,menu_so_leaderboard_sd +menu,menu_so_leaderboard_hd +menu,popup_gettinglb_main +menulist,ui/menus.txt +menu,menu_tickertest +menulist,ui/test_menus.txt +menu,popmenu_specops_chaos +menu,popmenu_specops_survival_dlc +menu,spec_ops_dlc_go_to_store_popup +menu,spec_ops_dlc_missing_popup +menu,popup_modechoice_dlc +menu,popup_modechoice_simple_dlc +menu,popup_choose_content_survival +menu,popup_choose_content_survival_simple +menu,popup_choose_content_mission +menu,popup_choose_content_mission_simple +menu,menu_lb_survival_solo_dlc +menu,menu_lb_survival_team_dlc +menu,menu_lb_survival_solo_dlc_bonus +menu,menu_lb_survival_team_dlc_bonus +menu,popmenu_specops_mission_dlc +menu,menu_lb_mission_solo_dlc +menu,menu_lb_mission_team_dlc +menu,menu_lb_mission_solo_dlc_bonus +menu,menu_lb_mission_team_dlc_bonus +menu,menu_lb_chaos_solo +menu,menu_lb_chaos_team +menulist,ui/patch_menus.txt +image,so_nyse_ny_manhattan_lobby +material,levelshot_so_nyse_ny_manhattan_lobby +image,so_little_bros_lobby +material,levelshot_so_heliswitch_berlin_lobby +image,so_over_reactor_lobby +material,levelshot_so_zodiac2_ny_harbor_lobby +image,so_ied_berlin_lobby +material,levelshot_so_ied_berlin_lobby +image,so_jeep_paris_b_lobby +material,levelshot_so_jeep_paris_b_lobby +image,so_killspree_paris_a_lobby +material,levelshot_so_killspree_paris_a_lobby +image,so_stealth_prague_lobby +material,levelshot_so_stealth_prague_lobby +image,so_stealth_warlord_lobby +material,levelshot_so_stealth_warlord_lobby +image,so_littlebird_payback_lobby +material,levelshot_so_littlebird_payback_lobby +image,so_timetrial_london_lobby +material,levelshot_so_timetrial_london_lobby +image,so_assassin_payback_lobby +material,levelshot_so_assassin_payback_lobby +image,so_assault_rescue_2_lobby +material,levelshot_so_assault_rescue_2_lobby +image,so_milehigh_hijack_lobby +material,levelshot_so_milehigh_hijack_lobby +image,so_assaultmine_lobby +material,levelshot_so_assaultmine_lobby +image,so_deltacamp_lobby +material,levelshot_so_deltacamp_lobby +image,so_trainer2_so_deltacamp_lobby +material,levelshot_so_trainer2_so_deltacamp_lobby +image,so_rescue_hijack_lobby +material,levelshot_so_rescue_hijack_lobby +image,preview_mp_alpha_lobby +material,preview_mp_alpha_lobby +image,preview_mp_bootleg_lobby +material,preview_mp_bootleg_lobby +image,preview_mp_bravo_lobby +material,preview_mp_bravo_lobby +image,preview_mp_carbon_lobby +material,preview_mp_carbon_lobby +image,preview_mp_dome_lobby +material,preview_mp_dome_lobby +image,preview_mp_exchange_lobby +material,preview_mp_exchange_lobby +image,preview_mp_hardhat_lobby +material,preview_mp_hardhat_lobby +image,preview_mp_interchange_lobby +material,preview_mp_interchange_lobby +image,preview_mp_lambeth_lobby +material,preview_mp_lambeth_lobby +image,preview_mp_mogadishu_lobby +material,preview_mp_mogadishu_lobby +image,preview_mp_paris_lobby +material,preview_mp_paris_lobby +image,preview_mp_plaza2_lobby +material,preview_mp_plaza2_lobby +image,preview_mp_radar_lobby +material,preview_mp_radar_lobby +image,preview_mp_seatown_lobby +material,preview_mp_seatown_lobby +image,preview_mp_village_lobby +material,preview_mp_village_lobby +image,preview_mp_underground_lobby +material,preview_mp_underground_lobby +image,preview_mp_italy_lobby +material,preview_mp_italy_lobby +image,preview_mp_morningwood_lobby +material,preview_mp_morningwood_lobby +image,preview_mp_overwatch_lobby +material,preview_mp_overwatch_lobby +image,preview_mp_park_lobby +material,preview_mp_park_lobby +image,preview_mp_cement_lobby +material,preview_mp_cement_lobby +image,preview_mp_qadeem_lobby +material,preview_mp_qadeem_lobby +image,preview_mp_meteora_lobby +material,preview_mp_meteora_lobby +image,preview_mp_boardwalk_lobby +material,preview_mp_boardwalk_lobby +image,preview_mp_moab_lobby +material,preview_mp_moab_lobby +image,preview_mp_nola_lobby +material,preview_mp_nola_lobby +image,preview_mp_roughneck_lobby +material,preview_mp_roughneck_lobby +image,preview_mp_shipbreaker_lobby +material,preview_mp_shipbreaker_lobby +image,preview_mp_terminal_cls_lobby +material,preview_mp_terminal_cls_lobby +image,so_escape_rescue_2_lobby +material,levelshot_so_escape_rescue_2_so_lobby +image,so_infiltrate_intro_lobby +material,levelshot_so_so_infiltrate_intro_lobby +image,so_coop_vlad_ep01_lobby +material,levelshot_so_so_coop_vlad_ep01_lobby +image,so_escape_hamburg_lobby +material,levelshot_so_so_escape_hamburg_lobby +image,mw2_game_mp +material,levelshot_mw2_game_mp +image,mw2_game_sp +material,levelshot_mw2_game_sp +image,mw2_game_so +material,levelshot_mw2_game_so +image,mw2_game_mp_blur +material,levelshot_mw2_game_mp_blur +image,mw2_game_sp_blur +material,levelshot_mw2_game_sp_blur +image,mw2_game_so_blur +material,levelshot_mw2_game_so_blur +image,mw3_act1 +material,levelshot_mw3_act1_dest_alpha_masked +image,mw3_act2 +material,levelshot_mw3_act2_dest_alpha_masked +image,mw3_act3 +material,levelshot_mw3_act3_dest_alpha_masked +image,mw3_dubai +material,levelshot_mw3_dubai_dest_alpha_masked +image,mw3_persona +material,levelshot_mw3_persona_dest_alpha_masked +image,mw3_intro +material,levelshot_mw3_intro_dest_alpha_masked +image,mw3_london +material,levelshot_mw3_london_dest_alpha_masked +image,mw3_ny_manhattan +material,levelshot_mw3_ny_manhattan_dest_alpha_masked +image,mw3_ny_harbor +material,levelshot_mw3_ny_harbor_dest_alpha_masked +image,mw3_paris +material,levelshot_mw3_paris_dest_alpha_masked +image,mw3_paris_ac130 +material,levelshot_mw3_paris_ac130_dest_alpha_masked +image,mw3_warlord +material,levelshot_mw3_warlord_dest_alpha_masked +image,mw3_berlin +material,levelshot_mw3_berlin_dest_alpha_masked +image,mw3_payback +material,levelshot_mw3_payback_dest_alpha_masked +image,mw3_prague +material,levelshot_mw3_prague_dest_alpha_masked +image,mw3_prague2 +material,levelshot_mw3_prague2_dest_alpha_masked +image,mw3_castle +material,levelshot_mw3_castle_dest_alpha_masked +image,mw3_hijack +material,levelshot_mw3_hijack_dest_alpha_masked +image,mw3_rescue +material,levelshot_mw3_rescue_dest_alpha_masked +image,mw3_hamburg +material,levelshot_mw3_hamburg_dest_alpha_masked +image,menu_soldier_band_blur +material,mw2_main_soldier_band_blur +image,specialty_locked +material,specialty_locked +image,loadscreen_mp_highrise +material,loadscreen_mp_highrise +image,loadscreen_mp_crossfire +material,loadscreen_mp_crossfire +image,loadscreen_mp_crash +material,loadscreen_mp_crash +image,loadscreen_mp_strike +material,loadscreen_mp_strike +image,loadscreen_mp_overgrown +material,loadscreen_mp_overgrown +image,difficulty_kitten +material,difficulty_kitten +image,difficulty_star_grey +material,difficulty_star_gray +image,difficulty_star_hi_res +material,difficulty_star_hi_res +image,difficulty_star_grey_hi_res +material,difficulty_star_gray_hi_res +image,difficulty_star_grey_empty_hi_res +material,difficulty_star_empty_hi_res +image,difficulty_skull +material,difficulty_skull +image,viper_locked_box +material,veh_hud_bouncing_diamond +image,so_defend_ferris +material,levelshot_so_defend_ferris +image,so_dlc1 +material,levelshot_so_dlc1 +image,prestige_empty +material,rank_empty +image,mw2_prestige1 +material,rank_classic_prestige1 +image,mw2_prestige2 +material,rank_classic_prestige2 +image,mw2_prestige3 +material,rank_classic_prestige3 +image,mw2_prestige4 +material,rank_classic_prestige4 +image,mw2_prestige5 +material,rank_classic_prestige5 +image,mw2_prestige6 +material,rank_classic_prestige6 +image,mw2_prestige7 +material,rank_classic_prestige7 +image,mw2_prestige8 +material,rank_classic_prestige8 +image,mw2_prestige9 +material,rank_classic_prestige9 +image,mw2_prestige10 +material,rank_classic_prestige10 +image,rank_prestige_bo1 +material,rank_prestige_bo1 +image,rank_prestige_bo2 +material,rank_prestige_bo2 +image,rank_prestige_bo3 +material,rank_prestige_bo3 +image,rank_prestige_bo4 +material,rank_prestige_bo4 +image,rank_prestige_bo5 +material,rank_prestige_bo5 +image,rank_prestige_bo6 +material,rank_prestige_bo6 +image,rank_prestige_bo7 +material,rank_prestige_bo7 +image,rank_prestige_bo8 +material,rank_prestige_bo8 +image,rank_prestige_bo9 +material,rank_prestige_bo9 +image,rank_prestige_bo10 +material,rank_prestige_bo10 +image,rank_prestige_bo11 +material,rank_prestige_bo11 +image,rank_prestige_bo12 +material,rank_prestige_bo12 +image,rank_prestige_bo13 +material,rank_prestige_bo13 +image,rank_prestige_bo14 +material,rank_prestige_bo14 +image,rank_prestige_bo15 +material,rank_prestige_bo15 +image,rank_prestige_waw1 +material,rank_prestige_waw1 +image,rank_prestige_waw2 +material,rank_prestige_waw2 +image,rank_prestige_waw3 +material,rank_prestige_waw3 +image,rank_prestige_waw4 +material,rank_prestige_waw4 +image,rank_prestige_waw5 +material,rank_prestige_waw5 +image,rank_prestige_waw6 +material,rank_prestige_waw6 +image,rank_prestige_waw7 +material,rank_prestige_waw7 +image,rank_prestige_waw8 +material,rank_prestige_waw8 +image,rank_prestige_waw9 +material,rank_prestige_waw9 +image,rank_prestige_waw10 +material,rank_prestige_waw10 +stringtable,sp/survival_armories.csv +image,weapon_fnfiveseven +material,weapon_fnfiveseven +image,weapon_usp_45 +material,weapon_usp_45 +image,weapon_p99 +material,weapon_p99 +image,weapon_mp412 +material,weapon_mp412 +image,weapon_magnum +material,weapon_magnum +image,weapon_desert_eagle +material,weapon_desert_eagle +image,weapon_fmg9 +material,weapon_fmg9 +image,weapon_g18 +material,weapon_glock +image,weapon_skorpion +material,weapon_skorpion +image,weapon_mp9 +material,weapon_mp9 +image,weapon_mp5 +material,weapon_mp5k +image,weapon_mini_uzi +material,weapon_mini_uzi +image,weapon_pp90m1 +material,weapon_pp90m1 +image,weapon_ump45 +material,weapon_ump45 +image,weapon_mp7 +material,weapon_mp7 +image,weapon_p90 +material,weapon_p90 +image,weapon_mk46 +material,weapon_mk46 +image,weapon_m60e4 +material,weapon_m60e4 +image,weapon_sa80 +material,weapon_sa80 +image,weapon_pecheneg +material,weapon_pecheneg +image,weapon_mg36 +material,weapon_mg36 +image,weapon_m4_short +material,weapon_m4_short +image,weapon_ak47 +material,weapon_ak47 +image,weapon_g36 +material,weapon_g36 +image,weapon_m16a4 +material,weapon_m16a4 +image,weapon_scar_h +material,weapon_scar_h +image,weapon_fad +material,weapon_fad +image,weapon_acr +material,weapon_acr +image,weapon_model1887 +material,weapon_model1887 +image,weapon_ksg +material,weapon_ksg +image,weapon_spas12 +material,weapon_spas12 +image,weapon_usas12 +material,weapon_usas12 +image,weapon_aa12 +material,weapon_aa12 +image,weapon_striker +material,weapon_striker +image,weapon_mk14 +material,weapon_mk14 +image,weapon_type95 +material,weapon_type95 +image,weapon_cm901 +material,weapon_cm901 +image,weapon_missing_image2 +material,weapon_missing_image +image,weapon_attachment_acog_2 +material,weapon_attachment_acog +image,weapon_attachment_reflex_iw5 +material,weapon_attachment_reflex +image,weapon_attachment_remington_foregrip +material,weapon_attachment_grip +image,weapon_attachment_m203 +material,weapon_attachment_m203 +image,weapon_attachment_gp25 +material,weapon_attachment_gp25 +image,weapon_attachment_m320 +material,weapon_attachment_m320 +image,weapon_attachment_shotgun +material,weapon_attachment_shotgun +image,weapon_attachment_eotech_2 +material,weapon_attachment_eotech +image,weapon_fraggrenade +material,weapon_fraggrenade +image,weapon_flashbang +material,weapon_flashbang +image,weapon_c4 +material,weapon_c4 +image,weapon_claymore +material,weapon_claymore +image,weapon_riotshield_so +material,weapon_riotshield_so +image,weapon_rpg_survival +material,weapon_rpg_survival +image,weapon_dragunov +material,weapon_dragunov +image,weapon_msr +material,weapon_msr +image,weapon_barrett_m95 +material,weapon_barrett +image,weapon_rsass +material,weapon_rsass +image,weapon_as50 +material,weapon_as50 +image,weapon_l96a1 +material,weapon_l96a1 +image,specialty_longsprint +material,specialty_longersprint +image,specialty_fastreload +material,specialty_fastreload +image,specialty_quickdraw +material,specialty_quickdraw +image,specialty_bombsquad +material,specialty_bombsquad +image,specialty_steadyaim +material,specialty_steadyaim +image,specialty_stalker +material,specialty_stalker +image,iw5_hud_laststand +material,specialty_self_revive +image,ks_predator_missile +material,dpad_killstreak_predator_missile_static_frontend +image,equipment_body_armor +material,equipment_body_armor +image,equipment_sentry_gun +material,equipment_sentry_gun +image,equipment_grenade_launcher +material,equipment_grenade_launcher +image,ks_ac130 +material,dpad_killstreak_ac130_static_frontend +image,ks_precision_airstrike +material,dpad_killstreak_precision_airstrike_static_frontend +image,iw5_assault_team_so +material,menu_so_friendly_assault_team +image,iw5_riotshield_team_so +material,menu_so_friendly_riot_team +image,missions_color +material,missions_color +image,missions_desat +material,missions_desat +image,survival_color +material,survival_color +image,survival_desat +material,survival_desat +image,mission_sel1 +material,background_image_act1 +image,mission_sel2 +material,background_image_act2 +image,mission_sel3 +material,background_image_act3 +image,rank_pvt1 +material,rank_pvt1 +image,rank_pfc1 +material,rank_pfc1 +image,rank_spc1 +material,rank_spc1 +image,rank_cpl1 +material,rank_cpl1 +image,rank_sgt1 +material,rank_sgt1 +image,rank_ssgt1 +material,rank_ssgt1 +image,rank_sgtfc1 +material,rank_sfc1 +image,rank_msgt1 +material,rank_msgt1 +image,rank_fsgt1 +material,rank_1stsgt1 +image,rank_sgtmaj1 +material,rank_sgtmaj1 +image,rank_cmdsgtmaj1 +material,rank_cmdsgtmaj1 +image,rank_2ndlt1 +material,rank_2ndlt1 +image,rank_1stlt1 +material,rank_1stlt1 +image,rank_capt1 +material,rank_capt1 +image,rank_maj1 +material,rank_maj1 +image,rank_ltcol1 +material,rank_ltcol1 +image,rank_col1 +material,rank_col1 +image,rank_bgen1 +material,rank_bgen1 +image,rank_majgen1 +material,rank_majgen1 +image,rank_ltgen1 +material,rank_ltgen1 +image,rank_gen1 +material,rank_gen1 +image,rank_comm1 +material,rank_comm1 +image,iw5_prestige_1 +material,rank_prestige1 +image,iw5_prestige_2 +material,rank_prestige2 +image,iw5_prestige_3 +material,rank_prestige3 +image,iw5_prestige_4 +material,rank_prestige4 +image,iw5_prestige_5 +material,rank_prestige5 +image,iw5_prestige_6 +material,rank_prestige6 +image,iw5_prestige_7 +material,rank_prestige7 +image,iw5_prestige_8 +material,rank_prestige8 +image,iw5_prestige_9 +material,rank_prestige9 +image,iw5_prestige_10 +material,rank_prestige10 +image,bonusmaps_leaderboard_thumb +material,bonusmaps_leaderboard_thumb +image,loadscreen_mp_dlc +material,loadscreen_mp_bonusmaps +image,so_demolition_slava_hunt_lobby +material,levelshot_so_so_demolition_slava_hunt_lobby +image,so_spotlight_castle_lobby +material,levelshot_so_so_spotlight_castle_lobby +image,so_support_dam_specops_lobby +material,levelshot_so_so_support_dam_specops_lobby +image,so_rooftop_dubai_specops_lobby +material,levelshot_so_so_rooftop_dubai_specops_lobby +image,preview_mp_meteora +material,preview_mp_meteora +image,preview_mp_cement +material,preview_mp_cement +image,preview_mp_qadeem +material,preview_mp_qadeem +image,preview_mp_shipbreaker +material,preview_mp_shipbreaker +image,preview_mp_roughneck +material,preview_mp_roughneck +image,preview_mp_terminal_cls +material,preview_mp_terminal_cls +image,preview_mp_moab +material,preview_mp_moab +image,preview_mp_boardwalk +material,preview_mp_boardwalk +image,preview_mp_nola +material,preview_mp_nola +image,chaos_color +material,chaos_color +image,chaos_desat +material,chaos_desat +rawfile,ui