The forum

[script] Tropico 3

Author Replies
NSLW Thursday 4 March 2010 at 18:50
NSLW

Hello,
I wrote script which installs Tropico 3. It also can patch the game (tested on patch 1.09 and 1.13 for Polish version) after it's been installed
Wine version : 1.1.39
Distribution : Fedora
Distribution Version : 12 (32 bit)
Graphics card : Nvidia, GeForce 9xxx
Drivers of the graphics card : 195.36.03

Icon for the game:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash
# Date : (2010-03-04 18-00)
# Last revision : (2010-03-05 16-00)
# Wine version used : 1.1.39
# Distribution used to test : Fedora 12
# Author : NSLW
# Licence : Retail
# Depend : ImageMagick
 
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
 
TYTUL="Tropico 3"
PREFIX="Tropico3"
WORKINGWINEVERSION="1.1.39"
 
POL_SetupWindow_make_icon_for_shortcut()
{
convert "$HOME/.local/share/icons/$2" -geometry 32X32 "$REPERTOIRE/icones/32/$1"
}
 
is_checked ()
{
    if [ "$(echo "$PATCHSET" | grep -o "$1")" != "" ]; then
    echo "1"
    else
    echo "0"
    fi
}
 
PATCHFILE[0]="Tropico3_patch_v1.04_ddsetup.exe"
PATCHFILE[1]="Tropico3.patch.v1.09.exe"
PATCHFILE[2]="Tropico3Patch109-113_Installer.exe"
PATCHFILE[3]="trop3109fix_cz.exe"
PATCHFILE[4]="Tropico3Patch100Russian.exe"
PATCHFILE[5]="Tropico3Patch100-111Russian.exe"
PATCHFILE[6]="patchCD_Tropico3_v1.13.exe"
PATCHFILE[7]="Other patch"
 
#procedure for patching Tropico 3
patch_Tropico3()
{
POL_SetupWindow_checkbox_list "Check patch files you've got on your hard disk." "Patch list" "${PATCHFILE[0]}~${PATCHFILE[1]}~${PATCHFILE[2]}~${PATCHFILE[3]}~${PATCHFILE[4]}~${PATCHFILE[5]}~${PATCHFILE[6]}~${PATCHFILE[7]}" "~"
PATCHSET="$APP_ANSWER"
 
for i in `seq 0 7`;
do
 
if [ "$(is_checked "${PATCHFILE[$i]}")" = "1" ]
then
POL_SetupWindow_browse "Where is your ${PATCHFILE[$i]} located ?" "$TYTUL" ""
POL_SetupWindow_wait_next_signal "Installation in progress..." "$TYTUL"
wine "$APP_ANSWER"
POL_SetupWindow_detect_exit
fi
 
done
POL_SetupWindow_message "Patches for $TYTUL have been installed successfully" "$TYTUL"
}
 
#starting the script
wget http://upload.wikimedia.org/wikipedia/en/2/26/Tropico_3_Box_Art.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"
 
POL_SetupWindow_presentation "$TYTUL" "Kalypso Media" "www.tropico3.com" "NSLW" "$PREFIX"
 
select_prefix "$REPERTOIRE/wineprefix/$PREFIX"
 
#asking about patching
if [ -e "$REPERTOIRE/configurations/installed/$TYTUL" ]; then
POL_SetupWindow_menu "What do you want to do?" "Actions" "Patch game" "~"
 
if [ "$APP_ANSWER" == "Patch game" ]; then
patch_Tropico3
fi
 
POL_SetupWindow_Close
exit
fi
 
#asking for CDROM and checking if it's correct one
POL_SetupWindow_message "Please insert $TYTUL media into your disk drive."
POL_SetupWindow_cdrom
POL_SetupWindow_check_cdrom "setup.exe"
 
#downloading specific Wine
POL_SetupWindow_install_wine "$WORKINGWINEVERSION"
Use_WineVersion "$WORKINGWINEVERSION"
 
#creating application's own prefix
POL_SetupWindow_prefixcreate
 
#fetching PROGRAMFILES environmental variable
PROGRAMFILES="Program Files"
POL_LoadVar_PROGRAMFILES
 
#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
 
#installing .NET Framework 2.0 which is required to successfuly finish DirectX installation
POL_Call POL_Install_dotnet20
 
#starting installation
wine start /unix "$CDROM/setup.exe"
POL_SetupWindow_message "Click \\"Next\\" when installation will finish." "$TYTUL"
 
#asking about memory size of graphic card
POL_SetupWindow_menu_list "How much memory do your graphic card have got?" "$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
echo "\\"Multisampling\\"=\\"enabled\\"" >> vms.reg
regedit vms.reg
 
#overriding dlls required for playing sound (more can be red at http://bugs.winehq.org/show_bug.cgi?id=21248)
cd "$WINEPREFIX/drive_c/windows/temp"
echo "[HKEY_CURRENT_USER\\\\Software\\\\Wine\\\\DllOverrides]" > override.reg
echo "\\"mmdevapi\\"=\\"\\"" >> override.reg
regedit override.reg
 
#cleaning temp
cd "$WINEPREFIX/drive_c/windows/temp/"
rm -rf *
 
#making shortcut
POL_SetupWindow_make_shortcut "$PREFIX" "$PROGRAMFILES/Kalypso/Tropico 3" "tropico3.exe" "" "$TYTUL" "" ""
Set_WineVersion_Assign "$WORKINGWINEVERSION" "$TYTUL"
POL_SetupWindow_make_icon_for_shortcut "$TYTUL" "*_tropico3.0.png"
 
POL_SetupWindow_message "$TYTUL has been installed successfully" "$TYTUL"
 
#asking about patching
POL_SetupWindow_question "Do you want to patch your game?" "$TYTUL"
if [ "$APP_ANSWER" == "TRUE" ] ;then
patch_Tropico3
fi
 
POL_SetupWindow_Close
exit

Edited by NSLW

Berillions Thursday 4 March 2010 at 19:46
Berillions

Hello NSLW,

When you write this :
1
2
3
echo "[HKEY_CURRENT_USER\\\\Software\\\\Wine\\\\DllOverrides]" > override.reg
echo "\\"mmdevapi\\"=\\"disabled\\"" >> override.reg
regedit override.reg


mmdevapi is disabled correctly but when you want to go to the library in winecfg, wine crash.
You can test but for me, i have this problem.

So to resolve this problem, you must to write this :
1
2
3
4
5
cat << EOF > override.reg
[HKEY_CURRENT_USER\\\\Software\\\\Wine\\\\DllOverrides]
"mmdevapi"=""
EOF
regedit override.reg


Berillions

Edited by Berillions


NSLW Friday 5 March 2010 at 16:05
NSLW

Fixed now. Sound worked in game also with string set to disabled that's why I didn't spot my mistake earlier.

Thanks for checking my script.

This site allows content generated by members, and we promptly remove any content that infringes copyright according to our Terms of Service. To report copyright infringement, please send a notice to dmca@playonlinux.com