Magic number : 13
#!/bin/bash
# Date : (2009-06-07 15-40)
# Last revision : (2009-11-02 10-00)
# Wine version used : 1.1.32
# Distribution used to test : Fedora 11
# Author : NSLW
# Licence : Retail
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
TYTUL="Warcraft III : Reign Of Chaos"
PREFIX="WarcraftIII"
PATCHVERSION="124b"
WORKINGWINEVERSION="1.1.36"
LNG_DOWNLOADING="PlayOnLinux is downloading"
LNG_INSTINPROGRESS="Installation in progress..."
LNG_INSERTMEDIA="Please insert $TYTUL media into your disk drive."
LNG_SUCCES="$TYTUL has been installed successfully."
LNG_PATCHSUCCES="Patch for $TYTUL has been installed successfully"
LNG_PATCHQ="Do you want to patch your game?"
LNG_LANGVERQ="What is your language version?"
LNG_PATCHM="Let me choose patch manually"
LNG_PATCHA="Download patch automatically"
LNG_GFXMEM="How much memory do your graphic card have got?"
LNG_CHOOSEACTION="What do you want to do?"
LNG_PATCH="Patch game"
LNG_UPDATEWINEVER="Update Wine version to"
if [ "$POL_LANG" == "pl" ]; then
LNG_DOWNLOADING="PlayOnLinux pobiera"
LNG_INSTINPROGRESS="Instalacja w trakcie..."
LNG_INSERTMEDIA="Włóż dysk $TYTUL do twojego napędu."
LNG_SUCCES="$TYTUL został zainstalowany pomyślnie."
LNG_PATCHSUCCES="Łatka do $TYTUL została zainstalowana pomyślnie"
LNG_PATCHQ="Czy chcesz użyć łatki?"
LNG_LANGVERQ="Jaka jest twoja wersja językowa gry?"
LNG_PATCHM="Pozwól mi wybrać łatkę samodzielnie"
LNG_PATCHA="Pobierz łatkę automatycznie"
LNG_GFXMEM="Jak dużo pamięci ma twoja karta graficzna?"
LNG_CHOOSEACTION="Co chcesz zrobić?"
LNG_PATCH="Łataj grę"
LNG_UPDATEWINEVER="Zaktualizuj wersję Wine do"
LNG_WHICHWINEVER="Jakiej wersji Wine chciałbyś użyć?"
elif [ "$POL_LANG" == "de" ]; then
LNG_DOWNLOADING="PlayOnLinux ladet herunter"
LNG_INSTINPROGRESS="Es wird installiert..."
LNG_INSERTMEDIA="Bitte lege $TYTUL in dein Laufwerk ein."
LNG_SUCCES="$TYTUL ist erfolgreich installiert worden."
LNG_PATCHSUCCES="Patch für $TYTUL ist erfolgreich installiert worden."
LNG_PATCHQ="Willst du ein Patch einspielen?"
LNG_LANGVERQ="Wähle deine Sprache"
LNG_PATCHM="Lass mich Patch selbst aussuchen"
LNG_PATCHA="Lade Patch automatisch herunter"
LNG_GFXMEM="Wie viel Speicher hat deine Grafikkarte?"
LNG_CHOOSEACTION="Was willst du machen?"
LNG_PATCH="Patch einspielen"
LNG_UPDATEWINEVER="Aktualisiere Wine Version zu"
LNG_WHICHWINEVER="Welche Wine Version willst du benutzen?"
elif [ "$POL_LANG" == "fr" ]; then
LNG_GFXMEM="La taille de votre mémoire graphique?"
LNG_PATCHSUCCES="Patch pour $TYTUL installé avec succès"
fi
Get_Latest_Wine_Version()
{
cd "$REPERTOIRE/tmp"
POL_SetupWindow_download "$LNG_DOWNLOADING Wine versions list" "$TYTUL" "http://mulx.playonlinux.com/wine/linux-i386/LIST"
xyz=`cat "$REPERTOIRE/tmp/LIST" | sed -e 's/\.//g' | cut -d';' -f2 | sort -n | tail -n1`
echo "$(echo $xyz | cut -c1-1).$(echo $xyz | cut -c2-2).$(echo $xyz | cut -c3-4)"
}
Create_Patched_Wine_Version()
{
POL_SetupWindow_install_wine "$1"
cd "$REPERTOIRE/WineVersions"
POL_SetupWindow_wait_next_signal "Removing old patched Wine" "$TYTUL"
rm -fr "$1-$2"
POL_SetupWindow_detect_exit
POL_SetupWindow_wait_next_signal "Copying Wine $1" "$TYTUL"
cp -r "$1" "$1-$2"
POL_SetupWindow_detect_exit
POL_SetupWindow_wait_next_signal "Patching Wine $1 with $2" "$TYTUL"
rm -fr "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/ntdll.dll.so"
rm -fr "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/user32.dll.so"
rm -fr "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/ws2_32.dll.so"
rm -fr "$REPERTOIRE/WineVersions/$1-$2/usr/bin/wineserver"
cp "$WINEPREFIX/drive_c/windows/temp/ntdll.dll.so" "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/ntdll.dll.so"
cp "$WINEPREFIX/drive_c/windows/temp/user32.dll.so" "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/user32.dll.so"
cp "$WINEPREFIX/drive_c/windows/temp/ws2_32.dll.so" "$REPERTOIRE/WineVersions/$1-$2/usr/lib/wine/ws2_32.dll.so"
cp "$WINEPREFIX/drive_c/windows/temp/wineserver" "$REPERTOIRE/WineVersions/$1-$2/usr/bin/wineserver"
POL_SetupWindow_detect_exit
}
download_W3patches()
{
cd "$REPERTOIRE/ressources/"
if [ ! -e "$REPERTOIRE/ressources/$WORKINGWINEVERSION-mod.zip" ]; then
POL_SetupWindow_download "$LNG_DOWNLOADING Warcraft III patches" "$TYTUL" "http://www.sigmirror.com/files/52536_hdfvx/$WORKINGWINEVERSION-mod.zip"
fi
cd "$WINEPREFIX/drive_c/windows/temp/"
unzip "$REPERTOIRE/ressources/$WORKINGWINEVERSION-mod.zip"
./$WORKINGWINEVERSION-mod -y
cp battlenet/* ./
}
#procedure for patching Warcraft III
patch_W3()
{
POL_SetupWindow_browse "Select patch file downloaded from http://ftp.blizzard.com/pub/war3/patches/pc/" "$TYTUL" ""
POL_SetupWindow_wait_next_signal "$LNG_INSTINPROGRESS" "$TYTUL"
wine "$APP_ANSWER"
POL_SetupWindow_detect_exit
POL_SetupWindow_message "$LNG_PATCHSUCCES" "$TYTUL"
}
wget http://upload.wikimedia.org/wikipedia/en/6/66/WarcraftIII.jpg --output-document="$REPERTOIRE/tmp/leftnotscaled.jpeg"
convert "$REPERTOIRE/tmp/leftnotscaled.jpeg" -scale 150x356\! "$REPERTOIRE/tmp/left.jpeg"
POL_SetupWindow_Init "" "$REPERTOIRE/tmp/left.jpeg"
#Presentation
POL_SetupWindow_presentation "$TYTUL" "Blizzard Entertainment" "www.blizzard.com" "NSLW" "$PREFIX"
select_prefix "$REPERTOIRE/wineprefix/$PREFIX"
#Asking about patching
if [ -e "$REPERTOIRE/configurations/installed/$TYTUL" ]; then
POL_SetupWindow_menu "$LNG_CHOOSEACTION" "Actions" "$LNG_UPDATEWINEVER $WORKINGWINEVERSION~$LNG_PATCH" "~"
if [ "$APP_ANSWER" = "$LNG_UPDATEWINEVER $WORKINGWINEVERSION" ]; then
POL_SetupWindow_install_wine "$WORKINGWINEVERSION"
CHOSENWINEVERSION="$WORKINGWINEVERSION-W3"
download_W3patches
Create_Patched_Wine_Version "$WORKINGWINEVERSION" "W3"
Set_WineVersion_Assign "$CHOSENWINEVERSION" "$TYTUL"
elif [ "$APP_ANSWER" = "$LNG_PATCH" ]
then
patch_W3
fi
POL_SetupWindow_Close
exit
fi
POL_SetupWindow_message "$LNG_INSERTMEDIA"
POL_SetupWindow_cdrom
cd "$CDROM"
CHECK=$(find . -iwholename ./install.exe)
if [ "$CHECK" == "" ]; then
CHECK="installer.exe" #French
else
CHECK="install.exe"
fi
POL_SetupWindow_check_cdrom "$CHECK"
#adding CD-ROM as drive e: to winecfg
cd "$WINEPREFIX/dosdevices"
ln -s "$CDROM" e:
cd "$WINEPREFIX/drive_c/windows/temp/"
echo "[HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives]" > cdrom.reg
echo "\"e:\"=\"cdrom\"" >> cdrom.reg
regedit cdrom.reg
sleep 5
POL_SetupWindow_install_wine "$WORKINGWINEVERSION"
Use_WineVersion "$WORKINGWINEVERSION"
POL_SetupWindow_prefixcreate
#fetching PROGRAMFILES environmental variable
PROGRAMFILES=`wine cmd /c echo "%ProgramFiles%" |tr -d '\015' | tr -d '\010'`
PROGRAMFILES=${PROGRAMFILES:3}
POL_SetupWindow_wait_next_signal "$LNG_INSTINPROGRESS" "$TYTUL"
wine "$CDROM/$CHECK"
POL_SetupWindow_detect_exit
cd "$REPERTOIRE/ressources"
if [ "`sha1sum < win32codecs-20040703.tar.bz2 | sed 's/ .*//'`" != "b3cc72a5d9d4161d908969d3ba815aabfe9677a6" ]; then
POL_SetupWindow_download "$LNG_DOWNLOADING mp3 codec" "$TYTUL" "http://www.mplayerhq.hu/MPlayer/releases/codecs/win32codecs-20040703.tar.bz2"
fi
if [ "`sha1sum < quartz.dll | sed 's/ .*//'`" != "ed621c61a8b629b344e554464d7135c130913137" ]; then
POL_SetupWindow_wait_next_signal "$LNG_DOWNLOADING component needed for mp3 playback" "$TYTUL"
wget --referer="http://www.dlldump.com" "http://www.dlldump.com/dllfiles/Q/quartz.dll" --output-document=quartz.dll
POL_SetupWindow_detect_exit
fi
#coping what has been downloaded
cd "$WINEPREFIX/drive_c/windows/system32"
rm -f quartz.dll
cp "$REPERTOIRE/ressources/quartz.dll" quartz.dll
#overriding quartz.dll
cd "$WINEPREFIX/drive_c/windows/temp/"
echo "[HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides]" > override.reg
echo "\"quartz\"=\"native\"" >> override.reg
regedit override.reg
#registering mp3 codec
tar -jxvf "$REPERTOIRE/ressources/win32codecs-20040703.tar.bz2"
cp "$WINEPREFIX/drive_c/windows/temp/win32codecs-20040703/l3codecx.ax" "$WINEPREFIX/drive_c/windows/system32/l3codecx.ax"
cd "$WINEPREFIX/drive_c/windows/system32/"
wine regsvr32 l3codecx.ax
#cd "$WINEPREFIX/drive_c/$PROGRAMFILES/Warcraft III/"
#mv Movies MoviesOLD
#mkdir Movies
cd "$WINEPREFIX/drive_c/windows/temp/"
#asking about memory size
POL_SetupWindow_menu_list "$LNG_GFXMEM" "$TYTUL" "32-64-128-256-384-512-768-890-1024-2048" "-" "256"
VMS="$APP_ANSWER"
echo "[HKEY_CURRENT_USER\\Software\\Wine\\Direct3D]" > vms.reg
echo "\"VideoMemorySize\"=\"$VMS\"" >> vms.reg
regedit vms.reg
echo "[HKEY_CURRENT_USER\\Software\\Blizzard Entertainment\\Warcraft III\\Misc]" > seenintro.reg
echo "\"seenintromovie\"=dword:1" >> seenintro.reg
regedit seenintro.reg
#cleaning temp
cd "$WINEPREFIX/drive_c/windows/temp/"
rm -rf *
#asking about Battlenet patch
POL_SetupWindow_question "Do you want to use patched Wine? It fixes :\n-crash at savegame in campaign (by Andrey Turkin)\n-Battle.net (by Mike Kaplinskiy)" "$TYTUL"
if [ "$APP_ANSWER" == "TRUE" ] ;then
POL_SetupWindow_install_wine "$WORKINGWINEVERSION"
CHOSENWINEVERSION="$WORKINGWINEVERSION-W3"
download_W3patches
Create_Patched_Wine_Version "$WORKINGWINEVERSION" "W3"
fi
POL_SetupWindow_make_shortcut "$PREFIX" "$PROGRAMFILES/Warcraft III/" "Warcraft III.exe" "WarcraftIII.xpm" "$TYTUL" "" "-opengl"
Set_WineVersion_Assign "$CHOSENWINEVERSION" "$TYTUL"
POL_SetupWindow_message "$LNG_SUCCES" "$TYTUL"
#asking about patching
POL_SetupWindow_question "$LNG_PATCHQ" "$TYTUL"
if [ "$APP_ANSWER" == "TRUE" ]; then
POL_SetupWindow_menu "$LNG_CHOOSEACTION" "Actions" "$LNG_PATCHM~$LNG_PATCHA" "~"
if [ "$APP_ANSWER" == "$LNG_PATCHM" ]; then
patch_W3
elif [ "$APP_ANSWER" == "$LNG_PATCHA" ]
then
POL_SetupWindow_menu "$LNG_LANGVERQ" "Languages" "english~french~italian~german~spanish~polish~japanese~korean~chinese traditional~chinese simplified~czech~russian~taiwanese" "~"
LANGUAGEVERSION="$APP_ANSWER"
if [ "$APP_ANSWER" == "english" ]; then
LANGUAGEVERSIONSHRT="English"
elif [ "$APP_ANSWER" == "french" ]
then
LANGUAGEVERSIONSHRT="Francais"
elif [ "$APP_ANSWER" == "italian" ]
then
LANGUAGEVERSIONSHRT="Italiano"
elif [ "$APP_ANSWER" == "german" ]
then
LANGUAGEVERSIONSHRT="Deutsch"
elif [ "$APP_ANSWER" == "spanish" ]
then
LANGUAGEVERSIONSHRT="Castellano"
elif [ "$APP_ANSWER" == "polish" ]
then
LANGUAGEVERSIONSHRT="Polski"
elif [ "$APP_ANSWER" == "japanese" ]
then
LANGUAGEVERSIONSHRT="Japanese"
elif [ "$APP_ANSWER" == "korean" ]
then
LANGUAGEVERSIONSHRT="Korean"
elif [ "$APP_ANSWER" == "chinese traditional" ]
then
LANGUAGEVERSIONSHRT="Chinese_Trad"
elif [ "$APP_ANSWER" == "chinese simplified" ]
then
LANGUAGEVERSIONSHRT="Chinese_Simp"
elif [ "$APP_ANSWER" == "taiwanese" ]
then
LANGUAGEVERSIONSHRT="Taiwanese"
PATCHVERSION="122a"
elif [ "$APP_ANSWER" == "czech" ]
then
LANGUAGEVERSIONSHRT="Cesky"
elif [ "$APP_ANSWER" == "russian" ]
then
LANGUAGEVERSIONSHRT="Russian"
fi
cd "$REPERTOIRE/ressources"
#downloading patch
if [ ! -e "War3ROC_${PATCHVERSION}_${LANGUAGEVERSIONSHRT}.exe" ]; then
POL_SetupWindow_download "$LNG_DOWNLOADING War3ROC_${PATCHVERSION}_${LANGUAGEVERSIONSHRT}.exe" "Downloading patch" "http://ftp.blizzard.com/pub/war3/patches/pc/War3ROC_${PATCHVERSION}_${LANGUAGEVERSIONSHRT}.exe"
fi
POL_SetupWindow_wait_next_signal "$LNG_INSTINPROGRESS" "$TYTUL"
wine "War3ROC_${PATCHVERSION}_${LANGUAGEVERSIONSHRT}.exe"
POL_SetupWindow_detect_exit
POL_SetupWindow_message "$LNG_PATCHSUCCES" "$TYTUL"
fi
fi
POL_SetupWindow_reboot
POL_SetupWindow_Close
exit