Merge branch 'testing' introduces game specific wine versions. Breaks
Mac compatibility. Please see the wiki for an alternative option.
This commit is contained in:
commit
43005a75b6
@ -45,6 +45,13 @@ EOF
|
||||
export DIALOGOPTS='--no-lines --visit-items'
|
||||
|
||||
|
||||
# Alerts, for when user needs to read something.
|
||||
alert() {
|
||||
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t
|
||||
echo
|
||||
read -rp "Press enter to continue." continue
|
||||
}
|
||||
|
||||
# Check for latest news
|
||||
check_news() {
|
||||
trap return INT
|
||||
@ -284,7 +291,7 @@ download() {
|
||||
fi
|
||||
# Skip if the item is in cache.
|
||||
test -e "${cache}/${dest}" && continue
|
||||
if ! curl -L4 --output "${cache}/${dest}" "${i}" ; then
|
||||
if ! curl -L4 -C - --retry 10 --output "${cache}/${dest}" "${i}" ; then
|
||||
echo "Could not download \"$i\"..."
|
||||
exit 1
|
||||
fi
|
||||
@ -305,7 +312,9 @@ get_bottle() {
|
||||
"puzzle-divided"*) ;&
|
||||
"revelation"*) ;&
|
||||
"swamp"*) ;&
|
||||
"triple -triad"*) export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
|
||||
"triple -triad"*)
|
||||
install_wine "7.7" "32"
|
||||
export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
|
||||
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
|
||||
# ESP Pinball games
|
||||
"esp-pinball-classic"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
|
||||
@ -346,6 +355,16 @@ get_bottle() {
|
||||
"challenge-of-the-horse"*) export WINEPREFIX="${HOME}/.local/wine/tunmi13";;
|
||||
*) export WINEPREFIX="${HOME}/.local/wine/${game%|*}";;
|
||||
esac
|
||||
# Wine version for bottles
|
||||
if [[ "$game" =~ entombed ]]; then
|
||||
install_wine "6.18" "32"
|
||||
fi
|
||||
if [[ "$game" =~ rs-games ]]; then
|
||||
install_wine "7.0" "32"
|
||||
fi
|
||||
if [[ "$game" =~ shadow-line ]]; then
|
||||
install_wine "7.7" "32"
|
||||
fi
|
||||
}
|
||||
|
||||
get_installer() {
|
||||
@ -418,7 +437,7 @@ echo "Loading documentation, please wait..."
|
||||
local gameDoc="$(find "$gamePath" -type f -iname 'user_manual.html' -or -iname 'user_manual.htm' | head -1)"
|
||||
# Game name specific docs, add the name to the for loop.
|
||||
if [[ -z "$gameDoc" ]]; then
|
||||
for i in "troopanum.txt" ; do
|
||||
for i in "troopanum.txt" "superdeekout.txt" ; do
|
||||
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
|
||||
done
|
||||
fi
|
||||
@ -457,6 +476,33 @@ echo "Loading documentation, please wait..."
|
||||
exit 0
|
||||
}
|
||||
|
||||
install_wine() {
|
||||
# Requires wine version, e.g. 7.7 and architecture, 32|64
|
||||
if [[ $# -ne 2 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
# Figure out wineInstallationPath
|
||||
wineInstallationPath="${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/wine_$2/$1"
|
||||
export wine="${wineInstallationPath}/bin/wine"
|
||||
# If the path exists, wine should already be installed.
|
||||
# Just make sure we didn't wind up with a empty directory for some reason
|
||||
rmdir "${wineInstallationPath}" 2> /dev/null
|
||||
if [[ -d "${wineInstallationPath}" ]]; then
|
||||
return
|
||||
fi
|
||||
mkdir -p "${wineInstallationPath}" 2> /dev/null
|
||||
# This probably does not need to be cached, so download to tmp.
|
||||
installationFile="$(mktemp)"
|
||||
local v=$2
|
||||
v="${v/32/x86}"
|
||||
v="${v/64/x64}" # Probably wrong, so just a place holder.
|
||||
# If this goes wrong, bail out
|
||||
set -e
|
||||
{ curl -L --output "${installationFile}" "https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-x86/PlayOnLinux-wine-${1}-upstream-linux-${v}.tar.gz"
|
||||
tar xf "${installationFile}" -C "${wineInstallationPath}"; } | dialog --progressbox "Installing $2 bit Wine version $1." -1 -1
|
||||
set +e
|
||||
}
|
||||
|
||||
winetricks() {
|
||||
# Report used packages to the winetricks maintainer so he knows they are being used.
|
||||
if ! [[ -e "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage" ]]; then
|
||||
@ -502,14 +548,19 @@ install_rhvoice() {
|
||||
download "${RHVoice[${voiceName}]}"
|
||||
winetricks -q win8
|
||||
echo "Installing RHVoice ${voiceName^}..."
|
||||
wine "${cache}/${voiceFile}" &
|
||||
${wine} "${cache}/${voiceFile}" &
|
||||
sleep 20
|
||||
wineserver -k
|
||||
${wine}server -k
|
||||
}
|
||||
|
||||
install_wine_bottle() {
|
||||
# 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps.
|
||||
export WINEARCH="${WINEARCH:-win32}"
|
||||
# Figure out if we are using a specific version of wine
|
||||
export wine="${wine:-$(command -v wine)}"
|
||||
# Set the WINE and WINESERVER environmental variables so winetricks will use the right installation.
|
||||
export WINE="${wine}"
|
||||
export WINESERVER="${wine}server"
|
||||
if [[ -z "$bottle" ]]; then
|
||||
local bottle="${game,,}"
|
||||
bottle="${bottle//[[:space:]]/-}"
|
||||
@ -532,9 +583,11 @@ install_wine_bottle() {
|
||||
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
|
||||
fi
|
||||
# This is in a brace list to pipe through dialog.
|
||||
{ DISPLAY="" wineboot -u
|
||||
wine msiexec /i z:"$monoPath" /quiet
|
||||
wine msiexec /i z:"$geckoPath" /quiet
|
||||
{ echo -n "Using "
|
||||
${wine} --version
|
||||
DISPLAY="" ${wine}boot -u
|
||||
${wine} msiexec /i z:"$monoPath" /quiet
|
||||
${wine} msiexec /i z:"$geckoPath" /quiet
|
||||
if [[ "${*}" =~ (speechsdk|sapi) ]]; then
|
||||
install_rhvoice
|
||||
fi
|
||||
@ -546,11 +599,16 @@ install_wine_bottle() {
|
||||
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
|
||||
fi
|
||||
winetricks -q isolate_home $@ ${winVer:-winxp} ${winetricksSettings}; } | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
|
||||
# make it easy for game scripts to know which version of wine to use.
|
||||
echo "WINE=\"${WINE}\"" > "$HOME/.local/wine/${bottle}/agm.conf"
|
||||
echo "WINESERVER=\"${WINESERVER}\"" >> "$HOME/.local/wine/${bottle}/agm.conf"
|
||||
}
|
||||
|
||||
|
||||
# Install games
|
||||
game_installer() {
|
||||
export LANG="en_US.UTF-8"
|
||||
# Try to deal with systems in other languages
|
||||
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
|
||||
# Create the menu of installed games
|
||||
declare -a menuList
|
||||
@ -714,14 +772,17 @@ game_launcher() {
|
||||
exit 0
|
||||
fi
|
||||
get_bottle "$game"
|
||||
# make sure wine is actually set to something
|
||||
export wine="${wine:-wine}"
|
||||
echo -n "launching "
|
||||
${wine} --version
|
||||
local winePath="${game#*|}"
|
||||
winePath="${winePath%\\*.exe}"
|
||||
local wineExec="${game#*|}"
|
||||
wineExec="${wineExec%|*}"
|
||||
wineExec="${wineExec##*\\}"
|
||||
# kill any previous existing wineservers for this prefix in case they didn't shut down properly.
|
||||
wineserver -k
|
||||
# launch the game
|
||||
${wine}server -k
|
||||
# launch the game
|
||||
if command -v qjoypad &> /dev/null ; then
|
||||
mkdir -p ~/.qjoypad3
|
||||
@ -752,16 +813,16 @@ game_launcher() {
|
||||
if [[ "$game" =~ light-battles ]]; then
|
||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||
fi
|
||||
if [[ "$game" =~ mist-world ]]; then
|
||||
"${0%/*}/speech/speak_window_title.sh" mw.exe &
|
||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||
fi
|
||||
if [[ "$game" =~ ^bokurano-daibouken-2\| ]]; then
|
||||
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
|
||||
fi
|
||||
if [[ "$game" =~ ^bokurano-daibouken\| ]]; then
|
||||
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
|
||||
fi
|
||||
if [[ "$game" =~ shadow-line ]]; then
|
||||
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
||||
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
|
||||
fi
|
||||
if [[ "$game" =~ bokurano-daibouken-3 ]]; then
|
||||
dictPath="$(winepath "${winePath}")"
|
||||
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
|
||||
@ -790,6 +851,13 @@ game_launcher() {
|
||||
if [[ "$game" =~ sequence-storm ]]; then
|
||||
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
|
||||
fi
|
||||
if [[ "$game" =~ shadow-line ]]; then
|
||||
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
||||
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
|
||||
fi
|
||||
if [[ "$game" =~ sketchbook ]]; then
|
||||
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
||||
fi
|
||||
if [[ "$game" =~ audiodisc ]]; then
|
||||
wine "$winePath\\$wineExec"
|
||||
exit 0
|
||||
@ -798,9 +866,9 @@ game_launcher() {
|
||||
wine "$winePath\\$wineExec"
|
||||
exit 0
|
||||
fi
|
||||
if [[ "$game" =~ rs-games ]] || [[ "$game" =~ screaming-strike-2 ]]; then
|
||||
if [[ "$game" =~ screaming-strike-2 ]]; then
|
||||
pushd "$(winepath "$winePath")"
|
||||
wine "$wineExec"
|
||||
${wine} "$wineExec"
|
||||
popd
|
||||
exit 0
|
||||
fi
|
||||
@ -818,10 +886,10 @@ game_launcher() {
|
||||
fi
|
||||
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
|
||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||
wine64 start /realtime /d "${winePath}" "$wineExec"
|
||||
else
|
||||
wine start /d "${winePath}" "$wineExec" /realtime
|
||||
# switch to wine64 for 64 bit prefix.
|
||||
[[ "${wine}" == "wine" ]] && export wine="wine64"
|
||||
fi
|
||||
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
@ -889,6 +957,7 @@ export BOX86_NOBANNER=1
|
||||
unset noCache
|
||||
# Manual installation is not default, make sure it's unset
|
||||
unset manualInstall
|
||||
unset version
|
||||
|
||||
|
||||
# The list of games available for installation.
|
||||
@ -1013,6 +1082,7 @@ gameList=(
|
||||
"Manamon 2"
|
||||
#"Marina Break"
|
||||
#"Minecraft"
|
||||
"Mist World"
|
||||
"Monkey Business"
|
||||
"MudSplat French"
|
||||
"MudSplat English"
|
||||
@ -1045,19 +1115,21 @@ gameList=(
|
||||
"Sequence Storm"
|
||||
#"Shades of Doom 1.2"
|
||||
"Shades of Doom"
|
||||
#"Shadow Line"
|
||||
"Shadow Line"
|
||||
"Shooter"
|
||||
"Silver Dollar"
|
||||
"Slender Lost Vision"
|
||||
"Sonic the Hedgehog"
|
||||
"Sonic Zoom"
|
||||
#"Space Defender"
|
||||
"Super Deekout"
|
||||
"Super Dogs Bone Hunt"
|
||||
"Super Egg Hunt"
|
||||
"Super Liam"
|
||||
"Super Mario Bros"
|
||||
"Survive the Wild"
|
||||
"Swamp"
|
||||
"Tactical Battle"
|
||||
"Technoshock"
|
||||
"Ten Pin Alley"
|
||||
"The Blind Swordsman"
|
||||
@ -1207,6 +1279,7 @@ case "${game}" in
|
||||
add_launcher "c:\Program Files\AudioQuake\AudioQuake.exe"
|
||||
echo
|
||||
echo "After you launch the game, press tab then enter and it should begin speaking."
|
||||
alert
|
||||
;;
|
||||
"Battle of the Hunter")
|
||||
export bottle="tunmi13"
|
||||
@ -1911,23 +1984,25 @@ case "${game}" in
|
||||
add_launcher "c:\Program Files\Endless Runner\runner.exe"
|
||||
;;
|
||||
"Entombed")
|
||||
export version="6.18"
|
||||
install_wine "$version" "32"
|
||||
export winVer="win7"
|
||||
install_wine_bottle speechsdk msvcrt40 gdiplus ie7 wmp11 mf
|
||||
# Ok, more dotnet.
|
||||
LC_ALL=C DISPLAY="" winetricks -q dotnet40 xna40
|
||||
wineserver -k # Sigh.
|
||||
${wine}server -k # Sigh.
|
||||
download "http://blind-games.com/newentombed/EntombedSetup.exe" "https://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe" "https://stormgames.wolfe.casa/downloads/Entombed.exe.config" "https://stormgames.wolfe.casa/downloads/mfplat.dll"
|
||||
mkdir -p "${WINEPREFIX}/drive_c/temp"
|
||||
pushd "${WINEPREFIX}/drive_c/temp"
|
||||
7z x "${cache}/SSCERuntime-ENU.exe"
|
||||
wine msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
|
||||
${wine} msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
|
||||
rm *
|
||||
popd
|
||||
pushd "${WINEPREFIX}/drive_c/Program Files/Microsoft SQL Server Compact Edition/v3.5"
|
||||
wine regsvr32 sqlceoledb35.dll
|
||||
wine regsvr32 sqlceca35.dll
|
||||
${wine} regsvr32 sqlceoledb35.dll
|
||||
${wine} regsvr32 sqlceca35.dll
|
||||
popd
|
||||
wine "${cache}/EntombedSetup.exe" /silent
|
||||
${wine} "${cache}/EntombedSetup.exe" /silent
|
||||
pushd "${WINEPREFIX}/drive_c/Program Files/Entombed"
|
||||
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.Entity.dll ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.dll .
|
||||
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/sql* .
|
||||
@ -2262,6 +2337,24 @@ EOF
|
||||
done
|
||||
# And of course, add the launcher.
|
||||
;;
|
||||
"Mist World")
|
||||
export winVer="win7"
|
||||
get_installer "Mist World_Setup.exe" "https://drive.google.com/file/d/12YeUqorkkMT46ZSR5pcfWxSY8DHOLxZ-/view?usp=share_link"
|
||||
install_wine_bottle
|
||||
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
|
||||
7z x -o"$WINEPREFIX/drive_c/Program Files/Mist World" "$cache/Mist World_Setup.exe"
|
||||
sed -i 's/1024m/768m/g' "$WINEPREFIX/drive_c/Program Files/Mist World/mw.exe.vmoptions"
|
||||
cp "$WINEPREFIX/drive_c/Program Files/Mist World/"{mw.exe.vmoptions,update.exe.vmoptions}
|
||||
find "$WINEPREFIX/drive_c/Program Files/Mist World" -iname "nvdaControllerClient32.dll" -exec cp "$cache/nvda2speechd32.dll" "{}" \;
|
||||
add_launcher 'c:\Program Files\Mist World\mw.exe'
|
||||
echo
|
||||
echo "If you do not have an account, There is a script in game-scripts to help."
|
||||
echo "Launch the game, press enter on create account, then drop into a console so the game window does not lose focus."
|
||||
echo "Change to the game-scripts directory and run"
|
||||
echo "./mist_world_account_creator.sh and follow the prompts."
|
||||
echo "To login, type your email address, press tab, and type your password. Press enter to confirm."
|
||||
alert
|
||||
;;
|
||||
"Monkey Business")
|
||||
export winVer="win7"
|
||||
install_wine_bottle vb6run dx8vb speechsdk quartz
|
||||
@ -2446,10 +2539,12 @@ EOF
|
||||
add_launcher "c:\Program Files\RTR Offline\rtr.exe"
|
||||
;;
|
||||
"RS Games")
|
||||
export version="7.0"
|
||||
install_wine "$version" "32"
|
||||
export winVer="win7"
|
||||
install_wine_bottle speechsdk
|
||||
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
||||
wine "${cache}/rsgames-client-setup-2.01.exe" /silent
|
||||
${wine} "${cache}/rsgames-client-setup-2.01.exe" /silent
|
||||
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
||||
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
|
||||
;;
|
||||
@ -2492,10 +2587,12 @@ EOF
|
||||
"Sketchbook")
|
||||
export winVer="win7"
|
||||
install_wine_bottle speechsdk
|
||||
download "http://games.ims-productions.com/SBYW/SBYW.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files/scrolling battles" "${cache}/SBYW.zip"
|
||||
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
||||
mv -v "${cache}/sounds.zip" "${cache}/SBYW-sounds.zip"
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW.zip"
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW-sounds.zip"
|
||||
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
||||
add_launcher "c:\Program Files\scrolling battles\SBYW.exe"
|
||||
add_launcher "c:\Program Files\sketchbook\SBYW.exe"
|
||||
;;
|
||||
"Sequence Storm")
|
||||
get_installer "sequence-storm-win64.zip" "https://special-magic-games-llc.itch.io/sequence-storm"
|
||||
@ -2521,18 +2618,21 @@ EOF
|
||||
add_launcher "c:\Program Files\Shades of Doom 2.0\sod.exe"
|
||||
;;
|
||||
"Shadow Line")
|
||||
export winVer="win8" speechsdk
|
||||
export version="7.7"
|
||||
install_wine "$version" "32"
|
||||
export winVer="win8"
|
||||
install_wine_bottle
|
||||
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe"
|
||||
wine "${cache}/shadowrine_fullvoice3.171.exe" /sp-
|
||||
$wine "${cache}/shadowrine_fullvoice3.171.exe" /sp- &
|
||||
xdotool sleep 30 key --clearmodifiers --delay=500 Return
|
||||
xdotool key --clearmodifiers --delay=500 Return
|
||||
xdotool key --clearmodifiers --delay=500 Return
|
||||
xdotool key --clearmodifiers --delay=500 Return
|
||||
xdotool sleep 300 key --clearmodifiers --delay=500 Down
|
||||
echo "Running installer, this will take approximately 3 minutes..."
|
||||
xdotool sleep 180 key --clearmodifiers --delay=500 Down
|
||||
xdotool key --clearmodifiers --delay=500 space
|
||||
xdotool key --clearmodifiers --delay=500 alt+i
|
||||
wineserver -w
|
||||
xdotool key --clearmodifiers --delay=500 alt+f
|
||||
${wine}server -w
|
||||
add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe"
|
||||
;;
|
||||
"Silver Dollar")
|
||||
@ -2584,6 +2684,41 @@ EOF
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
|
||||
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \;
|
||||
add_launcher "c:\Program Files\space_defender\sdefender.exe"
|
||||
;;
|
||||
"Super Deekout")
|
||||
install_wine_bottle vb6run dx8vb
|
||||
download "http://www.danielzingaro.com/superdeekout_setup.exe" "http://www.danielzingaro.com/sd_full.exe"
|
||||
${wine} "${cache}/superdeekout_setup.exe" &
|
||||
xdotool sleep 15 key --delay 100 y 2> /dev/null
|
||||
xdotool sleep 3 key --delay 250 alt+n 2> /dev/null
|
||||
xdotool key --delay 250 alt+a 2> /dev/null
|
||||
xdotool key --delay 250 space 2> /dev/null
|
||||
xdotool key --delay 250 alt+n 2> /dev/null
|
||||
xdotool key --delay 250 alt+n 2> /dev/null
|
||||
xdotool key --delay 250 alt+n 2> /dev/null
|
||||
xdotool key --delay 250 alt+i 2> /dev/null
|
||||
xdotool sleep 15 key --delay 250 alt+f 2> /dev/null
|
||||
xdotool sleep 3 key --delay 250 n 2> /dev/null
|
||||
${wine}server -k
|
||||
7z x -y -o"$WINEPREFIX/drive_c/Program Files/Super Deekout" "${cache}/sd_full.exe"
|
||||
echo "Super Deekout needs some information before it will run:"
|
||||
alert
|
||||
read -erp "Please enter your first name: " fname
|
||||
read -erp "Please enter your last name: " lname
|
||||
read -erp "Please enter your email address: " email
|
||||
${wine} "c:\Program Files\Super Deekout\config.exe" &
|
||||
xdotool sleep 5 key --delay 100 Return 2> /dev/null
|
||||
xdotool sleep 3 type --clearmodifiers --delay 100 "${fname}"
|
||||
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
|
||||
xdotool sleep 1 type --clearmodifiers --delay 100 "${lname}"
|
||||
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
|
||||
xdotool sleep 1 type --clearmodifiers --delay 100 "${email}"
|
||||
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
|
||||
xdotool sleep 15 key --delay 100 u 2> /dev/null
|
||||
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
|
||||
xdotool sleep 1 key --delay 250 Return 2> /dev/null
|
||||
${wine}server -k
|
||||
add_launcher "c:\Program Files\Super Deekout\super.exe"
|
||||
;;
|
||||
"Super Dogs Bone Hunt")
|
||||
install_wine_bottle vb6run dx8vb speechsdk
|
||||
@ -2621,6 +2756,8 @@ EOF
|
||||
add_launcher "c:\Program Files\Survive the Wild\stw.exe"
|
||||
;;
|
||||
"Swamp")
|
||||
export version="7.7"
|
||||
install_wine "${version}" "32"
|
||||
export bottle="aprone"
|
||||
export winVer="win7"
|
||||
export winetricksSettings="vd=1024x768"
|
||||
@ -2633,14 +2770,22 @@ EOF
|
||||
if curl -L --output "${cache}/SwampPatch.zip" "https://www.kaldobsky.com/audiogames/SwampPatch.zip" ; then
|
||||
unzip -o -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPatch.zip"
|
||||
fi
|
||||
wine 'c:\Program Files\swamp\checkup.exe' /verysilent
|
||||
#wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
|
||||
$wine 'c:\Program Files\swamp\checkup.exe' /verysilent
|
||||
#$wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
|
||||
# Delete music if requested.
|
||||
if [[ $deleteMusic -eq 0 ]]; then
|
||||
rm -frv "$WINEPREFIX/drive_c/Program Files/swamp/sounds/Music/"
|
||||
fi
|
||||
add_launcher "c:\Program Files\swamp\Swamp.exe"
|
||||
;;
|
||||
"Tactical Battle")
|
||||
install_wine_bottle speechsdk
|
||||
LC_ALL=C DISPLAY="" winetricks -q dotnet462
|
||||
${wine}server -k
|
||||
download "https://blindgamers.com/downloads/Tactical%20Battle%20Dev.zip"
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files/Tactical Battle" "${cache}/Tactical Battle Dev.zip"
|
||||
add_launcher "c:\Program Files\Tactical Battle\Tactical Battle.exe"
|
||||
;;
|
||||
"Technoshock")
|
||||
install_wine_bottle
|
||||
download "http://tiflocomp.ru/download/games/technoshock_140b_en.zip" "http://tiflocomp.ru/download/games/technoshock140b_en_update.zip"
|
||||
@ -2833,6 +2978,7 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
|
||||
echo "To bypass these dialogs, press alt+o, then press enter until speech starts."
|
||||
echo "To be sure that each new dialog has had time to complete, wait a second between each press of enter."
|
||||
echo "In each subsequent launch, you will need to hit enter a couple times before it starts speaking."
|
||||
alert
|
||||
;;
|
||||
"Warsim")
|
||||
get_installer "Warsim Full Game.zip" "https://huw2k8.itch.io/warsim"
|
||||
|
61
game-scripts/mist_world_account_creator.sh
Executable file
61
game-scripts/mist_world_account_creator.sh
Executable file
@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
export DISPLAY="${DISPLAY:-:0}"
|
||||
|
||||
read -rp "Select create account from the menu, press enter to continue." continue
|
||||
echo
|
||||
|
||||
# Read email address
|
||||
echo "Enter email address:"
|
||||
read -r email
|
||||
|
||||
# Validate email address format
|
||||
if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
|
||||
# Type email address
|
||||
xdotool type --delay=75 "$email"
|
||||
# Press tab
|
||||
xdotool sleep 0.5 key --delay=75 Tab
|
||||
# Press enter
|
||||
xdotool sleep 0.5 key --delay=75 Return
|
||||
else
|
||||
echo "Invalid email format. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Press tab
|
||||
|
||||
#xdotool sleep 0.5 key --delay=75 Tab
|
||||
# Press enter
|
||||
#xdotool sleep 0.5 key --delay=75 Return
|
||||
|
||||
echo "Please check your email for the verification code."
|
||||
|
||||
# Read verification code
|
||||
echo "Enter verification code:"
|
||||
read -r code
|
||||
|
||||
# Type verification code
|
||||
xdotool type --delay=1000 $code
|
||||
# press tab
|
||||
xdotool sleep 0.5 key --delay=75 Tab
|
||||
# Press enter
|
||||
xdotool sleep 0.5 key --delay=75 Return
|
||||
|
||||
# Read password
|
||||
echo "Enter password between 6 and 16 characters, 1 uppercase letter 1 number required:"
|
||||
read -r password
|
||||
|
||||
# Type password
|
||||
xdotool type --delay=500 "$password"
|
||||
# Press tab
|
||||
xdotool sleep 0.5 key --delay=75 Tab
|
||||
# Type password again
|
||||
xdotool sleep 0.5 type --delay=500 "$password"
|
||||
# Press tab
|
||||
xdotool sleep 0.5 key --delay=75 Tab
|
||||
# Press enter
|
||||
xdotool sleep 0.5 key --delay=75 Return
|
||||
|
||||
echo "Account created!"
|
||||
|
||||
exit 0
|
@ -3,7 +3,8 @@
|
||||
# Modified from the script at:
|
||||
# https://gist.github.com/fdietze/6768a0970d7d732b7fbd7930ccceee2a
|
||||
|
||||
set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
|
||||
# The next line has been commented because if there's nothing in clipboard the script breaks.
|
||||
# set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
|
||||
shopt -s expand_aliases
|
||||
|
||||
|
||||
|
@ -77,6 +77,14 @@ if [[ -z "${WINEPREFIX}" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get wine version if available
|
||||
if [[ -r "${WINEPREFIX}/agm.conf" ]]; then
|
||||
source "${WINEPREFIX}/agm.conf"
|
||||
export WINE
|
||||
export WINESERVER
|
||||
fi
|
||||
wine="${WINE:-$(command -v wine)}"
|
||||
|
||||
msgbox() {
|
||||
# Returns: None
|
||||
# Shows the provided message on the screen with an ok button.
|
||||
@ -124,7 +132,7 @@ menulist() {
|
||||
|
||||
restore_voice() {
|
||||
if [[ $doRestore -eq 0 ]]; then
|
||||
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
|
||||
fi
|
||||
}
|
||||
@ -142,7 +150,7 @@ set_voice() {
|
||||
RHVoiceName="${RHVoiceName##*/}"
|
||||
fullVoice="${voiceListFullName[$counter]}"
|
||||
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
|
||||
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
# Remove any existing rate change for voices
|
||||
$sed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg"
|
||||
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg"
|
||||
@ -161,14 +169,14 @@ test_voice() {
|
||||
RHVoiceName="${RHVoiceName##*/}"
|
||||
fullVoice="${voiceListFullName[$counter]}"
|
||||
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
|
||||
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
|
||||
cat << "EOF" > "${bottle}/drive_c/windows/temp/speak.vbs"
|
||||
dim speechobject
|
||||
set speechobject=createobject("sapi.spvoice")
|
||||
speechobject.speak "This is a test of your chosen voice. It contains multiple sentences and punctuation, and is designed to give a full representation of this voices qualities."
|
||||
EOF
|
||||
wine cscript "c:\windows\temp\speak.vbs"
|
||||
${wine} cscript "c:\windows\temp\speak.vbs"
|
||||
}
|
||||
|
||||
# Handle voice restore, but only if voice changed
|
||||
@ -181,7 +189,7 @@ dim speechobject
|
||||
set speechobject=createobject("sapi.spvoice")
|
||||
speechobject.speak ""
|
||||
EOF
|
||||
wine cscript "c:\windows\temp\speak.vbs"
|
||||
${wine} cscript "c:\windows\temp\speak.vbs"
|
||||
|
||||
# Create an array of available voices.
|
||||
ifs="$IFS"
|
||||
|
@ -13,12 +13,12 @@ is_function() {
|
||||
configure_arch() {
|
||||
packageList=(
|
||||
cabextract
|
||||
curl
|
||||
dialog
|
||||
dos2unix
|
||||
gawk
|
||||
unzip
|
||||
w3m
|
||||
wget
|
||||
wine
|
||||
winetricks
|
||||
wine_gecko
|
||||
@ -34,6 +34,8 @@ configure_arch() {
|
||||
alsa-lib
|
||||
mesa
|
||||
openal
|
||||
sox
|
||||
sqlite3
|
||||
translate-shell
|
||||
xz
|
||||
gst-plugins-bad
|
||||
@ -41,6 +43,7 @@ configure_arch() {
|
||||
gst-plugins-ugly
|
||||
gst-libav
|
||||
p7zip
|
||||
xdg-utils
|
||||
)
|
||||
if [[ "$(uname -m)" == "x86_64" ]]; then
|
||||
# Enable multilib
|
||||
@ -72,6 +75,7 @@ configure_arch() {
|
||||
|
||||
configure_debian() {
|
||||
packageList=(
|
||||
curl
|
||||
dialog
|
||||
gawk
|
||||
gstreamer1.0-plugins-bad:i386
|
||||
|
Loading…
Reference in New Issue
Block a user