Compare commits
24 Commits
e40c4e56d1
...
d91580f18e
Author | SHA1 | Date | |
---|---|---|---|
|
d91580f18e | ||
|
61216fb0dd | ||
|
ca175c2455 | ||
|
46b1d240c5 | ||
|
5b833ec542 | ||
|
0fa6efdf8d | ||
|
766013428f | ||
|
544e572bde | ||
|
a2a945bd46 | ||
|
14c03a4d85 | ||
|
1ca67cef0c | ||
|
bffcdc692d | ||
|
97467d9925 | ||
|
59d3ee4f4e | ||
|
b0fa4a4355 | ||
|
a031753a43 | ||
|
ded69ca4eb | ||
|
23be9fc637 | ||
|
df86ec0416 | ||
|
f5dd208f2a | ||
|
b0864223f0 | ||
|
2065560566 | ||
|
f27eb542b3 | ||
|
b1388658cb |
@ -2,6 +2,15 @@ You can help us in the development of the project on the website: https://linux-
|
||||
----------------------------------------
|
||||
Changelog:
|
||||
|
||||
###Scripts version 2386### / Date: 09.01.2025 / Download update size: 4 megabytes
|
||||
* corrected permissions when creating desktop files (thanks to Boria138)
|
||||
* fixed the function of rolling back scripts from the archive if there is no scripts_backup directory (thanks to Boria138)
|
||||
* added the ability to remove a game from the list in the Steam library using the functionality of changing the shortcut in PortProton (thanks to alex2844)
|
||||
* when adding a game to the steam library, a check for the availability of the steamgriddb site has been added (thanks alex2844)
|
||||
* added auto-installation of games (thanks to minergenon):
|
||||
* Last Chaos
|
||||
* Fractured Online
|
||||
|
||||
###Scripts version 2385### / stable / Date: 29.12.2024 / Download update size: 195 megabytes
|
||||
* cumulative update to the stable version of PortProton scripts
|
||||
|
||||
|
@ -2,6 +2,15 @@
|
||||
-----------------------------------------
|
||||
История изменений:
|
||||
|
||||
###Scripts version 2386### / Дата: 09.01.2025 / Размер скачиваемого обновления: 4 мегабайта
|
||||
* исправление прав при создании desktop файлов (спасибо Boria138)
|
||||
* исправлена функция отката скриптов из архива, если нет каталога scripts_backup (спасибо Boria138)
|
||||
* добавлена возможность удаления игры из списка в библиотеке Steam с помощью функционала изменения ярлыка в PortProton (спасибо alex2844)
|
||||
* при добавлении игры в библиотеку steam добавлена проверка на доступность сайта steamgriddb (спасибо alex2844)
|
||||
* добавлены автоустановки игр (спасибо minergenon):
|
||||
* Last Chaos
|
||||
* Fractured Online
|
||||
|
||||
###Scripts version 2385### / stable / Дата: 29.12.2024 / Размер скачиваемого обновления: 195 мегабайт
|
||||
* кумулятивное обновление стабильной версии скриптов PortProton
|
||||
|
||||
|
BIN
data_from_portwine/img/gui/fracturedonline.png
Normal file
BIN
data_from_portwine/img/gui/fracturedonline.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.5 KiB |
BIN
data_from_portwine/img/gui/lastchaos.png
Normal file
BIN
data_from_portwine/img/gui/lastchaos.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
@ -41,19 +41,22 @@ generateShortcutVDFHexAppId() {
|
||||
}
|
||||
|
||||
# Takes an signed 32bit integer and converts it to an unsigned 32bit integer
|
||||
generateShortcutGridAppId() {
|
||||
extractSteamId32() {
|
||||
# STUID32=$((STUID64 - 76561197960265728))
|
||||
echo $(($1 & 0xFFFFFFFF))
|
||||
}
|
||||
## ----------
|
||||
### END MAGIC APPID FUNCTIONS
|
||||
|
||||
getSteamShortcutsVdfFileHex() {
|
||||
STCFGPATH="$(getUserPath)"
|
||||
if [[ -n "${STCFGPATH}" ]]; then
|
||||
if [[ -z "${STCFGPATH}" ]]; then
|
||||
STCFGPATH="$(getUserPath)"
|
||||
fi
|
||||
if [[ -n "${STCFGPATH}" ]] && [[ -z "${SCPATH}" ]]; then
|
||||
SCPATH="${STCFGPATH}/shortcuts.vdf"
|
||||
if [[ -f "${SCPATH}" ]]; then
|
||||
LC_ALL=C perl -0777 -ne 'print unpack("H*", $_)' "${SCPATH}"
|
||||
fi
|
||||
fi
|
||||
if [[ -n "${SCPATH}" ]] && [[ -f "${SCPATH}" ]]; then
|
||||
LC_ALL=C perl -0777 -ne 'print unpack("H*", $_)' "${SCPATH}"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -71,10 +74,14 @@ getSteamShortcutEntryHex() {
|
||||
printf "%s" "${SHORTCUTSVDFINPUTHEX}" | grep -oP "${SHORTCUTSVDFMATCHPATTERN}\K.*?(?=${SHORTCUTVDFENDPAT})"
|
||||
}
|
||||
|
||||
getAppExe() {
|
||||
[[ -n "$1" ]] && listNonSteamGames | jq -r --arg id "$1" 'map(select(.id == $id)) | first(.[].exe)'
|
||||
}
|
||||
|
||||
getAppTarget() {
|
||||
exe=$(listNonSteamGames | jq -r --arg id "$1" 'map(select(.id == $id)) | first(.[].exe)')
|
||||
exe=$(getAppExe "$1")
|
||||
if [[ -n "${exe}" ]]; then
|
||||
if [[ "${exe}" =~ .sh$ ]] ; then
|
||||
if [[ "${exe}" =~ .sh$ ]]; then
|
||||
parseSteamTargetExe "${exe}"
|
||||
else
|
||||
echo "${exe}";
|
||||
@ -87,7 +94,7 @@ getSteamGameId() {
|
||||
}
|
||||
|
||||
getAppId() {
|
||||
listNonSteamGames | jq -r --arg exe "$1" 'map(select(.exe == $exe)) | first(.[]?.id)'
|
||||
[[ -n "$1" ]] && listNonSteamGames | jq -r --arg exe "$1" 'map(select(.exe == $exe)) | first(.[]?.id)'
|
||||
}
|
||||
|
||||
getSteamId() {
|
||||
@ -100,14 +107,16 @@ getSteamId() {
|
||||
if [[ -n "${SteamIds:-}" ]] && jq -e --arg key "$NOSTAPPNAME" 'has($key)' <<< "${SteamIds}" > /dev/null; then
|
||||
SteamAppId=$(jq -r --arg key "${NOSTAPPNAME}" '.[$key]' <<< "${SteamIds}")
|
||||
else
|
||||
if [[ -n "${1:-}" ]]; then
|
||||
if [[ -n "${1:-}" ]] && [[ "${USE_STEABGRIDDB:-1}" == "1" ]]; then
|
||||
getSteamGridDBId "${NOSTAPPNAME}" > /dev/null
|
||||
fi
|
||||
if [[ $SteamGridDBTypeSteam == true ]]; then
|
||||
SRES=$(curl -Ls -e "https://www.steamgriddb.com/game/${SteamGridDBId}" "https://www.steamgriddb.com/api/public/game/${SteamGridDBId}")
|
||||
SRES=$(curl -Ls --connect-timeout 5 -m 10 -e "https://www.steamgriddb.com/game/${SteamGridDBId}" "https://www.steamgriddb.com/api/public/game/${SteamGridDBId}")
|
||||
if jq -e ".success == true" <<< "${SRES}" > /dev/null 2>&1; then
|
||||
SteamAppId="$(jq -r '.data.platforms.steam.id' <<< "${SRES}")"
|
||||
fi
|
||||
elif [[ "${USE_STEABGRIDDB:-1}" == "0" ]]; then
|
||||
SteamAppId="$(curl -s --connect-timeout 5 -m 10 "https://api.steampowered.com/ISteamApps/GetAppList/v2/" | jq --arg name "${NOSTAPPNAME}" '.applist.apps[] | select(.name == $name) | .appid')"
|
||||
fi
|
||||
SteamIds=$(jq --arg key "${NOSTAPPNAME}" --arg value "${SteamAppId:-}" '. + {($key): $value}' <<< "${SteamIds:-$(jq -n '{}')}")
|
||||
echo "${SteamIds}" > "${cache_file}"
|
||||
@ -120,41 +129,70 @@ getSteamId() {
|
||||
getSteamGridDBId() {
|
||||
unset SteamGridDBId
|
||||
NOSTAPPNAME="$1"
|
||||
SGDBRES=$(curl -Ls -H "Authorization: Bearer ${SGDBAPIKEY}" "${BASESTEAMGRIDDBAPI}/search/autocomplete/${NOSTAPPNAME// /_}")
|
||||
if jq -e ".success == true and (.data | length > 0)" <<< "${SGDBRES}" > /dev/null 2>&1; then
|
||||
if jq -e '.data[0].types | contains(["steam"])' <<< "${SGDBRES}" > /dev/null; then
|
||||
SteamGridDBTypeSteam=true
|
||||
else
|
||||
SteamGridDBTypeSteam=false
|
||||
if [[ "${USE_STEABGRIDDB:-1}" == "1" ]] && [[ -n "${SGDBAPIKEY}" ]] && [[ -n "${BASESTEAMGRIDDBAPI}" ]] && curl -fs --connect-timeout 5 -m 10 -o /dev/null "${BASESTEAMGRIDDBAPI}"; then
|
||||
SGDBRES=$(curl -Ls --connect-timeout 5 -m 10 -H "Authorization: Bearer ${SGDBAPIKEY}" "${BASESTEAMGRIDDBAPI}/search/autocomplete/${NOSTAPPNAME// /_}")
|
||||
if jq -e ".success == true and (.data | length > 0)" <<< "${SGDBRES}" > /dev/null 2>&1; then
|
||||
if jq -e '.data[0].types | contains(["steam"])' <<< "${SGDBRES}" > /dev/null; then
|
||||
SteamGridDBTypeSteam=true
|
||||
else
|
||||
SteamGridDBTypeSteam=false
|
||||
fi
|
||||
SteamGridDBId="$(jq '.data[0].id' <<< "${SGDBRES}")"
|
||||
echo "${SteamGridDBId}"
|
||||
fi
|
||||
SteamGridDBId="$(jq '.data[0].id' <<< "${SGDBRES}")"
|
||||
echo "${SteamGridDBId}"
|
||||
else
|
||||
USE_STEABGRIDDB="0"
|
||||
fi
|
||||
}
|
||||
|
||||
getUserPath() {
|
||||
getUserIds() {
|
||||
SLUF="${HOME}/.local/share/Steam/config/loginusers.vdf"
|
||||
if [[ -f "${SLUF}" ]]; then
|
||||
STUIDS=()
|
||||
while read -r line; do
|
||||
if [[ "${line}" =~ ^[[:space:]]*\"([0-9]+)\"$ ]]; then
|
||||
STUIDS+=("$(extractSteamId32 "${BASH_REMATCH[1]}")")
|
||||
fi
|
||||
done < "${SLUF}"
|
||||
if [[ ${#STUIDS[@]} -gt 0 ]]; then
|
||||
echo "${STUIDS[@]}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
getUserId() {
|
||||
SLUF="${HOME}/.local/share/Steam/config/loginusers.vdf"
|
||||
if [[ -f "${SLUF}" ]]; then
|
||||
SLUFUB=false
|
||||
STUID64=""
|
||||
STUID=""
|
||||
while read -r line; do
|
||||
if [[ "${line}" =~ ^[[:space:]]*\"([0-9]+)\"$ ]]; then
|
||||
STUIDCUR="${BASH_REMATCH[1]}"
|
||||
SLUFUB=true
|
||||
elif [[ "${line}" == *'"MostRecent"'*'"1"' && ${SLUFUB} = true ]]; then
|
||||
STUID64="${STUIDCUR}"
|
||||
STUID=$(extractSteamId32 "${STUIDCUR}")
|
||||
break
|
||||
elif [[ "${line}" == "}" ]]; then
|
||||
SLUFUB=false
|
||||
fi
|
||||
done < "${SLUF}"
|
||||
if [ -n "${STUID64}" ]; then
|
||||
STUID32=$((STUID64 - 76561197960265728))
|
||||
STUIDPATH="${HOME}/.local/share/Steam/userdata/${STUID32}"
|
||||
if [[ -d "${STUIDPATH}" ]]; then
|
||||
if [[ -f "${STUIDPATH}/config/shortcuts.vdf" ]]; then
|
||||
echo "${STUIDPATH}/config"
|
||||
fi
|
||||
fi
|
||||
if [ -n "${STUID}" ]; then
|
||||
echo "${STUID}"
|
||||
fi
|
||||
}
|
||||
|
||||
getUserPath() {
|
||||
if [[ -n "${1:-}" ]]; then
|
||||
STUID="$1"
|
||||
else
|
||||
STUID="$(getUserId)"
|
||||
fi
|
||||
if [ -n "${STUID}" ]; then
|
||||
STUIDPATH="${HOME}/.local/share/Steam/userdata/${STUID}"
|
||||
if [[ -d "${STUIDPATH}" ]]; then
|
||||
if [[ -f "${STUIDPATH}/config/shortcuts.vdf" ]]; then
|
||||
echo "${STUIDPATH}/config"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@ -178,19 +216,22 @@ listInstalledSteamGames() {
|
||||
}
|
||||
|
||||
listNonSteamGames() {
|
||||
getSteamShortcutHex | while read -r SCVDFE; do
|
||||
jq -n \
|
||||
--arg id "$(parseSteamShortcutEntryAppID "${SCVDFE}")" \
|
||||
--arg name "$(parseSteamShortcutEntryAppName "${SCVDFE}")" \
|
||||
--arg exe "$(parseSteamShortcutEntryExe "${SCVDFE}")" \
|
||||
'{id: $id, name: $name, exe: $exe}'
|
||||
done | jq -s '.'
|
||||
getSteamShortcutHex | while read -r SCVDFE; do
|
||||
jq -n \
|
||||
--arg id "$(parseSteamShortcutEntryAppID "${SCVDFE}")" \
|
||||
--arg name "$(parseSteamShortcutEntryAppName "${SCVDFE}")" \
|
||||
--arg exe "$(parseSteamShortcutEntryExe "${SCVDFE}")" \
|
||||
--arg dir "$(parseSteamShortcutEntryStartDir "${SCVDFE}")" \
|
||||
--arg icon "$(parseSteamShortcutEntryIcon "${SCVDFE}")" \
|
||||
--arg args "$(parseSteamShortcutEntryLaunchOptions "${SCVDFE}")" \
|
||||
'{id: $id, name: $name, exe: $exe, dir: $dir, icon: $icon, args: $args}'
|
||||
done | jq -s '.'
|
||||
}
|
||||
|
||||
listSteamGames() {
|
||||
(
|
||||
jq -r 'map({AppId: .id, SteamAppId: .id, SteamGameId: .id, Name: .name}) | .[] | tostring' <<< "$(listInstalledSteamGames)"
|
||||
jq -r '.[] | tostring' <<< "$(listNonSteamGames)" | while read game; do
|
||||
jq -r '.[] | tostring' <<< "$(listNonSteamGames)" | while read -r game; do
|
||||
id=$(jq -r '.id' <<< "${game}")
|
||||
name=$(jq -r '.name' <<< "${game}")
|
||||
jq -r \
|
||||
@ -208,19 +249,22 @@ convertSteamShortcutAppID() {
|
||||
}
|
||||
|
||||
convertSteamShortcutHex() {
|
||||
# printf "%s" "$1" | xxd -r -p | tr -d '\0'
|
||||
LC_ALL=C perl -le 'print pack "H*", $ARGV[0]' "$1" | tr -d '\0'
|
||||
}
|
||||
|
||||
convertStringToSteamShortcutHex() {
|
||||
LC_ALL=C perl -e 'print unpack "H*", "$ARGV[0]" . "\x00"' "$(echo "$1" | tr -cd '[:alpha:]')"
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryHex() {
|
||||
SHORTCUTSVDFINPUTHEX="$1" # The hex block representing the shortcut
|
||||
SHORTCUTSVDFMATCHPATTERN="$2" # The pattern to match against in the block
|
||||
convertSteamShortcutHex "$(getSteamShortcutEntryHex "${SHORTCUTSVDFINPUTHEX}" "${SHORTCUTSVDFMATCHPATTERN}")"
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryExe() {
|
||||
SHORTCUTVDFEXEHEXPAT="000145786500" # 'Exe' ('exe' is 6578650a if we ever need it)
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFEXEHEXPAT}" | tr -d '"'
|
||||
parseSteamShortcutEntryAppID() {
|
||||
SHORTCUTVDFAPPIDHEXPAT="617070696400" # 'appid'
|
||||
convertSteamShortcutAppID "$(printf "%s" "$1" | grep -oP "${SHORTCUTVDFAPPIDHEXPAT}\K.{8}")"
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryAppName() {
|
||||
@ -228,9 +272,24 @@ parseSteamShortcutEntryAppName() {
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFNAMEHEXPAT}"
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryAppID() {
|
||||
SHORTCUTVDFAPPIDHEXPAT="617070696400" # 'appid'
|
||||
convertSteamShortcutAppID "$(printf "%s" "$1" | grep -oP "${SHORTCUTVDFAPPIDHEXPAT}\K.{8}")"
|
||||
parseSteamShortcutEntryExe() {
|
||||
SHORTCUTVDFEXEHEXPAT="000145786500" # 'Exe' ('exe' is 6578650a if we ever need it)
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFEXEHEXPAT}" | tr -d '"'
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryStartDir() {
|
||||
SHORTCUTVDFSTARTDIRHEXPAT="0001537461727444697200"
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFSTARTDIRHEXPAT}" | tr -d '"'
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryIcon() {
|
||||
SHORTCUTVDFICONHEXPAT="000169636f6e00"
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFICONHEXPAT}"
|
||||
}
|
||||
|
||||
parseSteamShortcutEntryLaunchOptions() {
|
||||
SHORTCUTVDFARGHEXPAT="00014c61756e63684f7074696f6e7300" # echo "0001$(convertStringToSteamShortcutHex "LaunchOptions")"
|
||||
parseSteamShortcutEntryHex "$1" "${SHORTCUTVDFARGHEXPAT}" | tr '\002' '\n' | head -n 1 | tr -d '\000'
|
||||
}
|
||||
|
||||
parseSteamTargetExe() {
|
||||
@ -255,7 +314,7 @@ restartSteam() {
|
||||
}
|
||||
|
||||
downloadImage() {
|
||||
if ! curl -Lf# -o "${STCFGPATH}/grid/$2" "$1"; then
|
||||
if ! curl -Lf# --connect-timeout 5 -m 10 -o "${STCFGPATH}/grid/$2" "$1"; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@ -272,54 +331,149 @@ downloadImageSteam() {
|
||||
}
|
||||
|
||||
downloadImageSteamGridDB() {
|
||||
SGDBIMGAPI="${BASESTEAMGRIDDBAPI}/$1/game/${SteamGridDBId}?limit=1"
|
||||
[[ -n "$3" ]] && SGDBIMGAPI+="&$3"
|
||||
[[ -n "$4" ]] && SGDBIMGAPI+="&$4"
|
||||
SGDBIMGRES=$(curl -Ls -H "Authorization: Bearer ${SGDBAPIKEY}" "${SGDBIMGAPI}")
|
||||
if jq -e ".success == true and (.data | length > 0)" <<< "${SGDBIMGRES}" > /dev/null 2>&1; then
|
||||
SGDBIMGURL=$(jq -r '.data[0].url' <<< "${SGDBIMGRES}")
|
||||
downloadImage "${SGDBIMGURL}" "$2"
|
||||
elif [[ -n "$3" ]]; then
|
||||
downloadImageSteamGridDB "$1" "$2" "" "$4"
|
||||
if [[ -n "${SteamGridDBId}" ]]; then
|
||||
SGDBIMGAPI="${BASESTEAMGRIDDBAPI}/$1/game/${SteamGridDBId}?limit=1"
|
||||
[[ -n "$3" ]] && SGDBIMGAPI+="&$3"
|
||||
[[ -n "$4" ]] && SGDBIMGAPI+="&$4"
|
||||
SGDBIMGRES=$(curl -Ls --connect-timeout 5 -m 10 -H "Authorization: Bearer ${SGDBAPIKEY}" "${SGDBIMGAPI}")
|
||||
if jq -e ".success == true and (.data | length > 0)" <<< "${SGDBIMGRES}" > /dev/null 2>&1; then
|
||||
SGDBIMGURL=$(jq -r '.data[0].url' <<< "${SGDBIMGRES}")
|
||||
downloadImage "${SGDBIMGURL}" "$2"
|
||||
elif [[ -n "$3" ]]; then
|
||||
downloadImageSteamGridDB "$1" "$2" "" "$4"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
addGrids() {
|
||||
if [[ -n "${SGDBAPIKEY}" ]]; then
|
||||
getSteamGridDBId "${name_desktop}" > /dev/null
|
||||
getSteamGridDBId "${name_desktop}" > /dev/null
|
||||
if [[ "${USE_STEABGRIDDB:-1}" == "0" ]]; then
|
||||
getSteamId > /dev/null
|
||||
fi
|
||||
if [[ -n "${SteamGridDBId}" ]]; then
|
||||
if [[ -n "${SteamGridDBId}" ]] || [[ -n "${SteamAppId}" ]]; then
|
||||
create_new_dir "${STCFGPATH}/grid"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID}.jpg" "mimes=image/jpeg" "dimensions=460x215,920x430" || downloadImageSteam "header.jpg" "${NOSTAIDGRID}.jpg" || echo "Failed to load header.jpg"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID}p.jpg" "mimes=image/jpeg" "dimensions=600x900,660x930" || downloadImageSteam "library_600x900_2x.jpg" "${NOSTAIDGRID}p.jpg" || echo "Failed to load library_600x900_2x.jpg"
|
||||
downloadImageSteamGridDB "heroes" "${NOSTAIDGRID}_hero.jpg" "mimes=image/jpeg" || downloadImageSteam "library_hero.jpg" "${NOSTAIDGRID}_hero.jpg" || echo "Failed to load library_hero.jpg"
|
||||
downloadImageSteamGridDB "logos" "${NOSTAIDGRID}_logo.png" "mimes=image/png" || downloadImageSteam "logo.png" "${NOSTAIDGRID}_logo.png" || echo "Failed to load logo.png"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID:-0}.jpg" "mimes=image/jpeg" "dimensions=460x215,920x430" || downloadImageSteam "header.jpg" "${NOSTAIDGRID:-0}.jpg" || echo "Failed to load header.jpg"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID:-0}p.jpg" "mimes=image/jpeg" "dimensions=600x900,660x930" || downloadImageSteam "library_600x900_2x.jpg" "${NOSTAIDGRID:-0}p.jpg" || echo "Failed to load library_600x900_2x.jpg"
|
||||
downloadImageSteamGridDB "heroes" "${NOSTAIDGRID:-0}_hero.jpg" "mimes=image/jpeg" || downloadImageSteam "library_hero.jpg" "${NOSTAIDGRID:-0}_hero.jpg" || echo "Failed to load library_hero.jpg"
|
||||
downloadImageSteamGridDB "logos" "${NOSTAIDGRID:-0}_logo.png" "mimes=image/png" || downloadImageSteam "logo.png" "${NOSTAIDGRID:-0}_logo.png" || echo "Failed to load logo.png"
|
||||
else
|
||||
echo "Game is not found"
|
||||
fi
|
||||
}
|
||||
|
||||
addNonSteamGame() {
|
||||
NOSTAPPNAME="${name_desktop}"
|
||||
NOSTSHPATH="${STEAM_SCRIPTS}/${name_desktop}.sh"
|
||||
NOSTEXEPATH="\"${NOSTSHPATH}\""
|
||||
NOSTICONPATH="${PORT_WINE_PATH}/data/img/${name_desktop_png}.png"
|
||||
if [[ -z "${NOSTSTDIR}" ]]; then
|
||||
NOSTSTDIR="\"${STEAM_SCRIPTS}\""
|
||||
addEntry() {
|
||||
if [[ -n "${SCPATH}" ]]; then
|
||||
if [[ -f "${SCPATH}" ]] ; then
|
||||
truncate -s-2 "${SCPATH}"
|
||||
OLDSET="$(grep -aPo '\x00[0-9]\x00\x02appid' "${SCPATH}" | tail -n1 | tr -dc '0-9')"
|
||||
NEWSET=$((OLDSET + 1))
|
||||
else
|
||||
printf '\x00%s\x00' "shortcuts" > "${SCPATH}"
|
||||
NEWSET=0
|
||||
fi
|
||||
NOSTAIDVDFHEXFMT="\x$(awk '{$1=$1}1' FPAT='.{2}' OFS="\\\x" <<< "$NOSTAIDVDFHEX")" # binary-formatted string hex of the above which we actually write out - ex: \xc1\xc2\x5a\xdc
|
||||
|
||||
{
|
||||
printf '\x00%s\x00' "${NEWSET}"
|
||||
printf '\x02%s\x00%b' "appid" "${NOSTAIDVDFHEXFMT}"
|
||||
printf '\x01%s\x00%s\x00' "AppName" "${NOSTAPPNAME}"
|
||||
printf '\x01%s\x00%s\x00' "Exe" "\"${NOSTEXEPATH}\""
|
||||
printf '\x01%s\x00%s\x00' "StartDir" "\"${NOSTSTDIR}\""
|
||||
printf '\x01%s\x00%s\x00' "icon" "${NOSTICONPATH}"
|
||||
printf '\x01%s\x00%s\x00' "ShortcutPath" ""
|
||||
printf '\x01%s\x00%s\x00' "LaunchOptions" "${NOSTARGS:-}"
|
||||
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "IsHidden" "\x00"
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "AllowDesktopConfig" "\x00"
|
||||
|
||||
# These values are now stored in localconfig.vdf under the "Apps" section,
|
||||
# under a block using the Non-Steam Game Signed 32bit AppID. (i.e., -223056321)
|
||||
# This is handled by `updateLocalConfigAppsValue` below
|
||||
#
|
||||
# Unsure if required, but still write these to the shortcuts.vdf file for consistency
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "AllowOverlay" "\x00"
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "OpenVR" "\x00"
|
||||
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "Devkit"
|
||||
printf '\x01%s\x00\x00' "DevkitGameID"
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "DevkitOverrideAppID"
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "LastPlayTime"
|
||||
printf '\x01%s\x00\x00' "FlatpakAppID"
|
||||
printf '\x00%s\x00' "tags"
|
||||
printf '\x08\x08\x08\x08'
|
||||
} >> "${SCPATH}"
|
||||
fi
|
||||
STCFGPATH="$(getUserPath)"
|
||||
if [[ -n "${STCFGPATH}" ]]; then
|
||||
}
|
||||
|
||||
removeNonSteamGame() {
|
||||
[[ -n "$1" ]] && appid="$1"
|
||||
[[ -n "$2" ]] && NOSTSHPATH="$2"
|
||||
[[ -z "${STUID}" ]] && STUID=$(getUserId)
|
||||
[[ -z "${STCFGPATH}" ]] && STCFGPATH="$(getUserPath ${STUID})"
|
||||
if [[ -n "${STCFGPATH}" ]] && [[ -z "${SCPATH}" ]]; then
|
||||
SCPATH="${STCFGPATH}/shortcuts.vdf"
|
||||
fi
|
||||
if [[ -n "${appid}" ]]; then
|
||||
games=$(listNonSteamGames)
|
||||
[[ -z "${NOSTSHPATH}" ]] && NOSTSHPATH=$(jq -r --arg id "${appid}" 'map(select(.id == $id)) | first(.[].exe)' <<< "${games}")
|
||||
if [[ -n "${NOSTSHPATH}" ]]; then
|
||||
mv "${SCPATH}" "${SCPATH//.vdf}_${PROGNAME}_backup.vdf" 2>/dev/null
|
||||
jq --arg id "${appid}" 'map(select(.id != $id))' <<< "${games}" | jq -c '.[]' | while read -r game; do
|
||||
NOSTAIDGRID=$(jq -r '.id' <<< "${game}")
|
||||
NOSTAPPNAME=$(jq -r '.name' <<< "${game}")
|
||||
NOSTEXEPATH=$(jq -r '.exe' <<< "${game}")
|
||||
NOSTSTDIR=$(jq -r '.dir' <<< "${game}")
|
||||
NOSTICONPATH=$(jq -r '.icon' <<< "${game}")
|
||||
NOSTARGS=$(jq -r '.args' <<< "${game}")
|
||||
NOSTAIDVDFHEX=$(bigToLittleEndian $(printf '%08x' "${NOSTAIDGRID}"))
|
||||
addEntry
|
||||
done
|
||||
rm -f "${STCFGPATH}/grid/${appid}.jpg" "${STCFGPATH}/grid/${appid}p.jpg" "${STCFGPATH}/grid/${appid}_hero.jpg" "${STCFGPATH}/grid/${appid}_logo.png"
|
||||
if [[ -f "${NOSTSHPATH}" ]]; then
|
||||
isInstallGame=false
|
||||
for STUIDCUR in $(getUserIds); do
|
||||
[[ "${STUIDCUR}" == "${STUID}" ]] && continue
|
||||
STCFGPATH="$(getUserPath ${STUIDCUR})"
|
||||
SCPATH="${STCFGPATH}/shortcuts.vdf"
|
||||
if [[ -n "$(getAppId "${NOSTSHPATH}")" ]]; then
|
||||
isInstallGame=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
unset STCFGPATH SCPATH
|
||||
if [[ ${isInstallGame} == false ]]; then
|
||||
rm "${NOSTSHPATH}"
|
||||
fi
|
||||
fi
|
||||
restartSteam
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
addNonSteamGame() {
|
||||
if [[ -z "${STCFGPATH}" ]]; then
|
||||
STCFGPATH="$(getUserPath)"
|
||||
fi
|
||||
if [[ -n "${STCFGPATH}" ]] && [[ -z "${SCPATH}" ]]; then
|
||||
SCPATH="${STCFGPATH}/shortcuts.vdf"
|
||||
fi
|
||||
if [[ -n "${SCPATH}" ]]; then
|
||||
[[ -z "${NOSTSHPATH}" ]] && NOSTSHPATH="${STEAM_SCRIPTS}/${name_desktop}.sh"
|
||||
NOSTAPPNAME="${name_desktop}"
|
||||
NOSTAIDGRID=$(getAppId "${NOSTSHPATH}")
|
||||
if [[ -z "${NOSTAIDGRID}" ]]; then
|
||||
NOSTEXEPATH="${NOSTSHPATH}"
|
||||
if [[ -z "${NOSTSTDIR}" ]]; then
|
||||
NOSTSTDIR="${STEAM_SCRIPTS}"
|
||||
fi
|
||||
NOSTICONPATH="${PORT_WINE_PATH}/data/img/${name_desktop_png}.png"
|
||||
NOSTAIDVDF="$(generateShortcutVDFAppId "${NOSTAPPNAME}${NOSTEXEPATH}")" # signed integer AppID, stored in the VDF as hexidecimal - ex: -598031679
|
||||
NOSTAIDVDFHEX="$(generateShortcutVDFHexAppId "$NOSTAIDVDF")" # 4byte little-endian hexidecimal of above 32bit signed integer, which we write out to the binary VDF - ex: c1c25adc
|
||||
NOSTAIDVDFHEXFMT="\x$(awk '{$1=$1}1' FPAT='.{2}' OFS="\\\x" <<< "$NOSTAIDVDFHEX")" # binary-formatted string hex of the above which we actually write out - ex: \xc1\xc2\x5a\xdc
|
||||
NOSTAIDGRID="$(generateShortcutGridAppId "$NOSTAIDVDF")" # unsigned 32bit ingeger version of "$NOSTAIDVDF", which is used as the AppID for Steam artwork ("grids"), as well as for our shortcuts
|
||||
NOSTAIDGRID="$(extractSteamId32 "$NOSTAIDVDF")" # unsigned 32bit ingeger version of "$NOSTAIDVDF", which is used as the AppID for Steam artwork ("grids"), as well as for our shortcuts
|
||||
|
||||
create_new_dir "${STEAM_SCRIPTS}"
|
||||
echo "#!/usr/bin/env bash" > "${NOSTSHPATH}"
|
||||
@ -334,47 +488,9 @@ addNonSteamGame() {
|
||||
|
||||
if [[ -f "${SCPATH}" ]] ; then
|
||||
cp "${SCPATH}" "${SCPATH//.vdf}_${PROGNAME}_backup.vdf" 2>/dev/null
|
||||
truncate -s-2 "${SCPATH}"
|
||||
OLDSET="$(grep -aPo '\x00[0-9]\x00\x02appid' "${SCPATH}" | tail -n1 | tr -dc '0-9')"
|
||||
NEWSET=$((OLDSET + 1))
|
||||
else
|
||||
printf '\x00%s\x00' "shortcuts" > "${SCPATH}"
|
||||
NEWSET=0
|
||||
fi
|
||||
|
||||
{
|
||||
printf '\x00%s\x00' "${NEWSET}"
|
||||
printf '\x02%s\x00%b' "appid" "${NOSTAIDVDFHEXFMT}"
|
||||
printf '\x01%s\x00%s\x00' "AppName" "${NOSTAPPNAME}"
|
||||
printf '\x01%s\x00%s\x00' "Exe" "${NOSTEXEPATH}"
|
||||
printf '\x01%s\x00%s\x00' "StartDir" "${NOSTSTDIR}"
|
||||
printf '\x01%s\x00%s\x00' "icon" "${NOSTICONPATH}"
|
||||
printf '\x01%s\x00%s\x00' "ShortcutPath" ""
|
||||
printf '\x01%s\x00%s\x00' "LaunchOptions" ""
|
||||
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "IsHidden" "\x00"
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "AllowDesktopConfig" "\x00"
|
||||
|
||||
# These values are now stored in localconfig.vdf under the "Apps" section,
|
||||
# under a block using the Non-Steam Game Signed 32bit AppID. (i.e., -223056321)
|
||||
# This is handled by `updateLocalConfigAppsValue` below
|
||||
#
|
||||
# Unsure if required, but still write these to the shortcuts.vdf file for consistency
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "AllowOverlay" "\x00"
|
||||
printf '\x02%s\x00%b\x00\x00\x00' "OpenVR" "\x00"
|
||||
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "Devkit"
|
||||
printf '\x01%s\x00\x00' "DevkitGameID"
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "DevkitOverrideAppID"
|
||||
printf '\x02%s\x00\x00\x00\x00\x00' "LastPlayTime"
|
||||
printf '\x01%s\x00\x00' "FlatpakAppID"
|
||||
printf '\x00%s\x00' "tags"
|
||||
printf '\x08\x08\x08\x08'
|
||||
} >> "${SCPATH}"
|
||||
|
||||
# TODO: замень использование steamgriddb на steam так как сайт steamgriddb у многих без VPN не работает
|
||||
# а пока просто блочим использование
|
||||
export DOWNLOAD_STEAM_GRID="0"
|
||||
addEntry
|
||||
|
||||
if [[ "${DOWNLOAD_STEAM_GRID}" == "1" ]] ; then
|
||||
pw_start_progress_bar_block "${translations[Please wait. downloading covers for]} ${NOSTAPPNAME}"
|
||||
|
@ -6168,7 +6168,7 @@ portwine_output_yad_shortcut () {
|
||||
echo "Path=${PORT_SCRIPTS_PATH}/"
|
||||
echo "Icon=${PORT_WINE_PATH}/data/img/${name_desktop_png}.png"
|
||||
} >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
chmod +x "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
|
||||
if [[ "${PW_SHORTCUT_MENU}" == "TRUE" ]] ; then
|
||||
try_remove_file "${HOME}/.local/share/applications/${name_desktop}.desktop"
|
||||
@ -6308,7 +6308,18 @@ portwine_change_shortcut () {
|
||||
then PW_SHORTCUT_DESKTOP="TRUE"
|
||||
else PW_SHORTCUT_DESKTOP="FALSE"
|
||||
fi
|
||||
PW_SHORTCUT_STEAM="FALSE"
|
||||
if [[ -n $PW_DELETE_STEAM ]]; then
|
||||
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh"
|
||||
NOSTSHPATH="${PW_DELETE_SHORTCUT_STEAM[0]//#@_@#/ }"
|
||||
NOSTAIDGRID=$(getAppId "${NOSTSHPATH}")
|
||||
if [[ -n "${NOSTSHPATH}" ]] && [[ -n "${NOSTAIDGRID}" ]]; then
|
||||
PW_SHORTCUT_STEAM="TRUE"
|
||||
else
|
||||
PW_SHORTCUT_STEAM="FALSE"
|
||||
fi
|
||||
else
|
||||
PW_SHORTCUT_STEAM="FALSE"
|
||||
fi
|
||||
|
||||
unset name_desktop
|
||||
create_name_desktop
|
||||
@ -6334,6 +6345,7 @@ portwine_change_shortcut () {
|
||||
PORTWINE_CHANGE_SHORTCUT=1
|
||||
if [[ $PW_YAD_OUT == 1 ]] ; then
|
||||
[[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB
|
||||
PW_SHORTCUT_STEAM="FALSE"
|
||||
portwine_delete_shortcut
|
||||
restart_pp
|
||||
fi
|
||||
@ -6341,24 +6353,29 @@ portwine_change_shortcut () {
|
||||
}
|
||||
|
||||
portwine_search_shortcut () {
|
||||
unset PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP
|
||||
PW_DELETE_MENU="$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_MENU// /#@_@#}"
|
||||
unset PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_STEAM PW_DELETE_SHORTCUT_DESKTOP
|
||||
if [[ -n "${portwine_exe}" ]]; then
|
||||
PW_DELETE_MENU="$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_MENU// /#@_@#}"
|
||||
|
||||
PW_DELETE_PP="$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_PP// /#@_@#}"
|
||||
PW_DELETE_PP="$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_PP// /#@_@#}"
|
||||
|
||||
if [[ -d "${HOME}/Desktop" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
fi
|
||||
if [[ -d "${HOME}/Рабочий стол" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
fi
|
||||
if [[ $(xdg-user-dir DESKTOP) ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
PW_DELETE_STEAM="$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_STEAM <<< "${PW_DELETE_SHORTCUT_STEAM[*]} ${PW_DELETE_STEAM// /#@_@#}"
|
||||
|
||||
if [[ -d "${HOME}/Desktop" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
fi
|
||||
if [[ -d "${HOME}/Рабочий стол" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
fi
|
||||
if [[ $(xdg-user-dir DESKTOP) ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop 2>/dev/null)"
|
||||
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /#@_@#}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@ -6371,6 +6388,11 @@ portwine_delete_shortcut () {
|
||||
for delete_shortcut in "${PW_DELETE_SHORTCUT_MENU[@]}" "${PW_DELETE_SHORTCUT_DESKTOP[@]}" ; do
|
||||
rm -f "${delete_shortcut//#@_@#/ }"
|
||||
done
|
||||
|
||||
if [[ "${PW_SHORTCUT_STEAM}" == "FALSE" ]] && [[ -n "${NOSTSHPATH}" ]] && [[ -n "${NOSTAIDGRID}" ]]; then
|
||||
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh"
|
||||
removeNonSteamGame "${NOSTAIDGRID}" "${NOSTSHPATH}"
|
||||
fi
|
||||
}
|
||||
|
||||
portwine_missing_shortcut () {
|
||||
@ -6965,7 +6987,7 @@ gui_edit_db_file () {
|
||||
}
|
||||
|
||||
gui_open_scripts_from_backup () {
|
||||
cd "${PORT_WINE_TMP_PATH}/scripts_backup/" || fatal
|
||||
[[ -d "${PORT_WINE_TMP_PATH}/scripts_backup/" ]] && cd "${PORT_WINE_TMP_PATH}/scripts_backup/" || cd "$HOME"
|
||||
PW_SCRIPT_FROM_BACKUP=$("${pw_yad}" --file --width=650 --height=500 \
|
||||
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "SCRIPTS FROM BACKUP" --file-filter="backup_scripts|scripts_v*.tar.gz" 2>/dev/null )
|
||||
YAD_STATUS="$?"
|
||||
|
26
data_from_portwine/scripts/pw_autoinstall/PW_FRACTURED_ONLINE
Executable file
26
data_from_portwine/scripts/pw_autoinstall/PW_FRACTURED_ONLINE
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Fractured Online (ENG)
|
||||
# image: fracturedonline
|
||||
# info_en: Fractured Online is the first open-world sandbox MMORPG mixing action combat with fully interactable environments, appealing equally to lovers of competitive and cooperative gameplay. Jump right into the fray from day one. Defeat your enemies through your own skill and cleverness, not equipment or level. Gather resources, craft, trade and venture into legendary travels as a solitary hero, or start a settlement with your guild and grow it into the next empire.
|
||||
# info_ru: Fractured Online — это первая массовая многопользовательская ролевая онлайн-игра с открытым миром, сочетающая динамичные сражения с полностью интерактивным окружением. Она одинаково понравится любителям соревновательного и кооперативного игрового процесса. С самого первого дня погрузитесь в бой. Побеждайте врагов благодаря собственным навыкам и смекалке, а не снаряжению или уровню. Собирайте ресурсы, создавайте предметы, торгуйте и отправляйтесь в легендарные путешествия в одиночку или создайте поселение со своей гильдией и превратите его в следующую империю.
|
||||
########################################################################
|
||||
export PW_PREFIX_NAME="FRACTURED_ONLINE"
|
||||
export LAUNCH_PARAMETERS="/S"
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/fractured-online-setup.exe"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Fractured Online"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://assets.fracturedmmo.com/clients/3f990010d1afb2cabadc44c6c849116c/fractured-online-setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Fractured Online."
|
||||
pw_run "${PW_AUTOINSTALL_EXE}"
|
||||
portwine_exe="$WINEPREFIX/drive_c/Program Files/Fractured Online/FracturedOnline.exe"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
25
data_from_portwine/scripts/pw_autoinstall/PW_LAST_CHAOS
Executable file
25
data_from_portwine/scripts/pw_autoinstall/PW_LAST_CHAOS
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Last Chaos
|
||||
# image: lastchaos
|
||||
# info_en: Last Chaos is a classic MMORPG with six classes, castle sieges, a Korean grind and kilometers of dungeons. The confrontation between Apollo and Eres is gaining momentum, so hurry up to take one of the sides.
|
||||
# info_ru: Last Chaos – классическая MMORPG с шестью классами, осадами замков, корейским гриндом и километрами подземелий. Противостояние Апполона и Эреса набирает обороты, так что спешите принять одну из сторон.
|
||||
########################################################################
|
||||
export PW_PREFIX_NAME="LAST_CHAOS"
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Last Chaos.zip"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Last Chaos"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://last-chaos.ru/download/Last%20Chaos.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Last Chaos."
|
||||
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"${WINEPREFIX}/drive_c/Program Files/"
|
||||
portwine_exe="${WINEPREFIX}/drive_c/Program Files/Last Chaos/LC.exe"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
@ -4,9 +4,10 @@ credits_devel () { echo "
|
||||
Boria138
|
||||
Vano Majukin
|
||||
Eljeyna
|
||||
chal55rus
|
||||
minergenon (chal55rus)
|
||||
SDR
|
||||
Mels
|
||||
alex2844
|
||||
Cefeiko
|
||||
Dezert1r
|
||||
Taz_mania
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Castro-Fidel (linux-gaming.ru)
|
||||
#SCRIPTS_NEXT_VERSION=2385
|
||||
#SCRIPTS_NEXT_VERSION=2386
|
||||
#SCRIPTS_STABLE_VERSION=2385
|
||||
########################################################################
|
||||
export AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET PW_WORLD_OF_SEA_BATTLE PW_RUSSIAN_FISHING PW_HO_YO_PLAY PW_FARLIGHT84 PW_WARFRAME PW_WGC PW_UBISOFT"
|
||||
|
Loading…
Reference in New Issue
Block a user