====== Information ====== * Call of Duty: Modern Warfare 2 (2009) * Steam ((https://store.steampowered.com/app/10180/Call_of_Duty_Modern_Warfare_2_2009/)) * IW4x ((https://iw4x.io/)) * :!: WIP ===== Prerequisites ===== * [[bsd:freebsd_15.1_xfce|FreeBSD 15.1 (Xfce)]] * [[bsd:notes:wine|Wine]] (old WoW64) ====== Dependencies ====== su - pkg install 'git' ====== Initial Prefix ====== mkdir -p ~/'.wine' && WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' WINEARCH='win32' wine wineboot --init && WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine winecfg /v 'win10' && WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v 'winemenubuilder.exe' /t 'REG_SZ' /d '' /f WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\Drivers' /v 'Graphics' /t 'REG_SZ' /d 'x11' /f WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\Direct3D' /v 'renderer' /t 'REG_SZ' /d 'gdi' /f ====== SteamCMD ====== ===== Install ===== mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam' wget -O '/tmp/steamcmd-win32.zip' -q --show-progress 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip' && bsdunzip -o -q -d ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam' '/tmp/steamcmd-win32.zip' 'steamcmd.exe' && rm -f '/tmp/steamcmd-win32.zip' ===== Login ===== WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamcmd.exe' +login 'Espionage724' +quit -overrideminos ====== Modern Warfare 2 ====== ===== Restore Files ===== mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps' && gio open ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps' ls -d ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/appmanifest_10180.acf' ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/appmanifest_10190.acf' ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2' ===== Install/Update ===== WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamcmd.exe' +login 'Espionage724' +app_update '10180' +quit WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamcmd.exe' +login 'Espionage724' +app_update '10190' +quit ===== Validate ===== WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamcmd.exe' +login 'Espionage724' +app_update '10180' validate +quit WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamcmd.exe' +login 'Espionage724' +app_update '10190' validate +quit ====== IW4x ====== * https://docs.iw4x.io/get-started/manual-install/linux-guide/#2-using-wine-prefix * https://github.com/iw4x/iw4x-client/releases * https://github.com/iw4x/iw4x-rawfiles/releases wget -O ~/'Downloads/IW4x-iw4x-latest.dll' -q --show-progress 'https://github.com/iw4x/iw4x-client/releases/latest/download/iw4x.dll' && mv -fv ~/'Downloads/IW4x-iw4x-latest.dll' ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.dll' wget -O ~/'Downloads/IW4x-release-latest.zip' -q --show-progress 'https://github.com/iw4x/iw4x-rawfiles/releases/latest/download/release.zip' && bsdunzip -o -q -d ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2' ~/'Downloads/IW4x-release-latest.zip' && rm -f ~/'Downloads/IW4x-release-latest.zip' ====== Settings ====== * https://github.com/ineedbots/iw4_bot_warfare#dvars * https://github.com/ineedbots/iw4_bot_warfare/issues/118 ===== Client ===== mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players' && ee ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players/iw4x_custom.cfg' // General seta net_noipx "1" seta sv_lanOnly "1" seta cl_packetdup "0" seta g_log "NUL" seta com_maxfps "0" seta ui_nativeCursor "1" seta r_preloadShaders "1" seta cl_autoRecord "0" seta cl_voice "0" // Graphics seta r_useD3D9Ex "0" seta r_fullscreen "1" seta r_noborder "0" seta r_vsync "0" seta r_mode "640x480" seta r_aspectRatio "standard" seta r_texFilterAnisoMax "16" seta r_texFilterAnisoMin "16" // Player seta name "Espionage724" seta clanName "RoE" seta cl_anonymous "1" seta cl_notifyFriendState "0" bind MOUSE3 "+melee" bind MWHEELDOWN "weapnext" // Bot Warfare seta bots_main_menu "0" seta bots_manage_fill "10" seta bots_main_chat "0" seta bots_skill "5" // End ===== Server ===== * https://github.com/iw4x/iw4-server-configs mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players' && ee ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players/iw4x_localhost.cfg' // Server set sv_hostname "IW4x (localhost)" set sv_motd "Welcome to your localhost server!" set net_port "28960" set g_password "" set sv_securityLevel "22" set sv_randomMapRotation "1" set sv_allowClientConsole "1" // General set net_noipx "1" set sv_lanOnly "1" set g_antilag "0" set cl_packetdup "0" set com_maxfps "0" set g_log "NUL" set cl_voice "0" // TDM set g_gametype "war" set sv_maprotation "gametype war map mp_afghan gametype war map mp_boneyard gametype war map mp_brecourt gametype war map mp_checkpoint gametype war map mp_derail gametype war map mp_estate gametype war map mp_favela gametype war map mp_highrise gametype war map mp_invasion gametype war map mp_nightshift gametype war map mp_quarry gametype war map mp_rundown gametype war map mp_rust gametype war map mp_subbase gametype war map mp_terminal gametype war map mp_underpass" // FFA //set g_gametype "dm" //set sv_maprotation "gametype dm map mp_afghan gametype dm map mp_boneyard gametype dm map mp_brecourt gametype dm map mp_checkpoint gametype dm map mp_derail gametype dm map mp_estate gametype dm map mp_favela gametype dm map mp_highrise gametype dm map mp_invasion gametype dm map mp_nightshift gametype dm map mp_quarry gametype dm map mp_rundown gametype dm map mp_rust gametype dm map mp_subbase gametype dm map mp_terminal gametype dm map mp_underpass" // Bot Warfare set bots_main_firstIsHost "1" set bots_main_waitForHostTime "0" set bots_manage_fill "17" set bots_main_menu "0" set bots_main_chat "0" set bots_skill "5" // End ====== Bot Warfare ====== * https://github.com/ineedbots/iw4_bot_warfare * https://docs.iw4x.io/guides/bot-warfare/ ===== Download Source ==== * https://github.com/ineedbots/iw4_bot_warfare/commits/master/ cd ~ && mkdir -p ~/'Projects' && rm -Rf ~/'Projects/IW4-Bot-Warfare/src' && git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/ineedbots/iw4_bot_warfare.git' ~/'Projects/IW4-Bot-Warfare/src' ===== Files ===== **** mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw' && cp -Rf ~/'Projects/IW4-Bot-Warfare/src/scriptdata' ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw/scriptdata' ===== IWD ===== **** 7z a -m'0=Copy' -t'zip' ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw/z_svr_bots.iwd' ~/'Projects/IW4-Bot-Warfare/src/maps' ~/'Projects/IW4-Bot-Warfare/src/scripts' && ls ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw/z_svr_bots.iwd' ====== Libraries ====== ===== DXVK ===== * https://github.com/doitsujin/dxvk ==== master ==== * https://github.com/doitsujin/dxvk/actions ((need to be signed into GitHub, and select the latest ''master'' artifacts package)) * Last tested: ''dxvk-master-9aa4e3da8d026b767de3c530e3b6bd0cdd9b0a76.zip'' bsdunzip -j -o ~/'Downloads/dxvk-master-'*'.zip' 'x32/d3d9.dll' -d ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/windows/system32' ==== Dll Override ==== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine REG ADD 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v 'd3d9' /t 'REG_SZ' /d 'native' /f ==== dxvk.conf ==== * https://github.com/doitsujin/dxvk/blob/master/dxvk.conf ee ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/dxvk.conf' ====== Scripts ====== ===== Server Start ===== mkdir -p ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)' && ee ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-localhost-server-start.sh' && chmod +x ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-localhost-server-start.sh' #!/bin/bash cd '/tmp' export WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' '/usr/local/bin/wine64.bin' ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' -dedicated -disable-notifies -disable-mongoose -disable-rate-limit-check +exec 'iw4x_localhost.cfg' +map_rotate unset 'WINEPREFIX' # End ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-localhost-server-start.sh' ===== IW4x Update ===== mkdir -p ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)' && ee ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-update.sh' && chmod +x ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-update.sh' #!/bin/bash cd '/tmp' wget -O ~/'Downloads/IW4x-iw4x-latest.dll' -q --show-progress 'https://github.com/iw4x/iw4x-client/releases/latest/download/iw4x.dll' mv -f ~/'Downloads/IW4x-iw4x-latest.dll' ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.dll' wget -O ~/'Downloads/IW4x-release-latest.zip' -q --show-progress 'https://github.com/iw4x/iw4x-rawfiles/releases/latest/download/release.zip' unzip -q -o ~/'Downloads/IW4x-release-latest.zip' -d ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2' rm -f ~/'Downloads/IW4x-release-latest.zip' zenity --title 'IW4x Updater' --text 'Client and Rawfiles update complete' --icon ~/'.wine/Icons/IW4x-256.png' --timeout '2' --info : # End ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-update.sh' ===== Bot Warfare Update ===== mkdir -p ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)' && ee ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-bot-warfare-update.sh' && chmod +x ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-bot-warfare-update.sh' #!/bin/bash cd '/tmp' git -C ~/'Projects/IW4-Bot-Warfare/src' reset --hard 'origin/master' git -C ~/'Projects/IW4-Bot-Warfare/src' pull origin 'master' --rebase cp -Rf ~/'Projects/IW4-Bot-Warfare/src/scriptdata' ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw' 7z a -m'0=Copy' -t'zip' ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/userraw/z_svr_bots.iwd' ~/'Projects/IW4-Bot-Warfare/src/maps' ~/'Projects/IW4-Bot-Warfare/src/scripts' zenity --title 'IW4x Updater' --text 'Bot Warfare update complete' --icon ~/'.wine/Icons/IW4x-256.png' --timeout '2' --info : # End ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-bot-warfare-update.sh' ===== Profile Back-up ===== mkdir -p ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)' && ee ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-profile-backup.sh' && chmod +x ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-profile-backup.sh' #!/bin/bash cd '/tmp' tar -czf ~/'Downloads/'$(date +%Y-%m-%d-%s)'-IW4x-Profile.tar.gz' -C ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/players' 'iw4x.stat' zenity --title 'IW4x Profile Backup' --text 'Profile Backed-up to Downloads' --icon ~/'.wine/Icons/IW4x-256.png' --timeout '1' --info # End ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-profile-backup.sh' ====== Desktop Launcher ====== ===== IW4x ===== mkdir -p ~/'.local/share/applications/wine/Programs/IW4x' && ee ~/'.local/share/applications/wine/Programs/IW4x/IW4x.desktop' && sed -i 's/'CHANGEME'/'$USER'/g' ~/'.local/share/applications/wine/Programs/IW4x/IW4x.desktop' && update-desktop-database --quiet ~/'.local/share/applications' [Desktop Entry] Name=IW4x Categories=Game; Path=/tmp Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' +exec 'iw4x_custom.cfg' +set 'r_fullscreen 1' +set 'g_antilag 0'" Type=Application StartupNotify=false Icon=/home/CHANGEME/.wine/Icons/IW4x-256.png StartupWMClass=iw4x.exe Actions=Server;Saves;Window;Update-IW4x;Update-Bots;Kill;Notes; [Desktop Action Server] Exec='/bin/bash' -c "kgx --working-directory='/tmp' -T 'IW4x [Server]' -e ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-localhost-server-start.sh'" Name=Local Server [Desktop Action Saves] Exec='/bin/bash' -c "~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-profile-backup.sh'" Name=Profile Back-up [Desktop Action Window] Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' +exec 'iw4x_custom.cfg' +set 'r_fullscreen 0' +set 'g_antilag 0'" Name=IW4x (Windowed) [Desktop Action Update-IW4x] Exec='/bin/bash' -c "kgx --working-directory='/tmp' -T 'IW4x [Updater]' -e ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-update.sh'" Name=Update Client + Rawfiles [Desktop Action Update-Bots] Exec='/bin/bash' -c "kgx --working-directory='/tmp' -T 'Bot Warfare [Updater]' -e ~/'Steam/scripts/Call of Duty Modern Warfare 2 (10180)/iw4x-bot-warfare-update.sh'" Name=Update Bot Warfare [Desktop Action Kill] Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wineserver -k" Name=Force-close IW4x [Desktop Action Notes] Exec='/bin/bash' -c "gio open 'https://wiki.realmofespionage.xyz/games:linux:wine:cod_mw2_2009_iw4x_steamcmd'" Name=Install Notes # End ==== Icon ==== **** mkdir -p ~/'.wine/Icons' && wrestool --output=$HOME/'.wine/Icons/IW4x-256.png' --extract --raw --type='3' --name='6' ~/'Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' ====== Quick Commands ====== ===== Winecfg ===== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' winecfg ===== Winetricks ===== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' winetricks ===== Registry Editor ===== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' regedit ===== Kill ===== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wineserver --kill ===== Execute ===== ==== IW4x ==== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' +exec 'iw4x_custom.cfg' +set 'r_fullscreen 1' +set 'g_antilag 0' === Window === **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' +exec 'iw4x_custom.cfg' +set 'r_fullscreen 0' +set 'g_antilag 0' ==== Server ==== **** WINEPREFIX=~/'.wine/Call of Duty Modern Warfare 2 (2009)' wine ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x.exe' -dedicated -disable-notifies -disable-mongoose -disable-rate-limit-check +exec 'iw4x_localhost.cfg' +map_rotate ===== Save Restore ===== * ''players/iw4x.stat'' mkdir -p ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players' && gio open ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/players' ===== Main Config ===== **** ee ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2/iw4x_config.cfg' ===== Root Folder ===== **** gio open ~/'.wine/Call of Duty Modern Warfare 2 (2009)/drive_c/Program Files/Steam/steamapps/common/Call of Duty Modern Warfare 2'