Здравейте! Вероятно използвате блокиращ рекламите софтуер. В това няма нищо нередно, много хора го правят.

     Но за да помогнете този сайт да съществува и за да имате достъп до цялото съдържание, моля, изключете блокирането на рекламите.

  Ако не знаете как, кликнете тук

Помощ относно Wine скрипт  [РЕШЕНА]

feed Всичко свързано с Линукс. Новини, проблеми, въпроси.
Десктоп Линукс дистибуции, сървърни Линукс дистрибуции, Линукс дистрибуции с общо предназначение, Linux Mint, Ubuntu, Arch Linux, Mandriva, PCLinuxOS, openSUSE, Fedora, Red Hat Enterprise Linux, CentOS, Suse Linux Enterprise Server, Debian, Cross Linux from Scratch, Slackware, Gentoo. Графични среди, новини, игри, драйвъри, въпроси, десктоп, сървър, браузъри, помощ.
Нова тема Отговори
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Помощ относно Wine скрипт

Мнение от Mozo »

Привет, отново искам помощ от програмистите, защото закъсах :mrgreen:

Искам да приготвя готова версия за Project Cars и използвам скриптовете на един руснак. Играта я подкарах в Playonlinux и съм извел всички необходими файлове за самостоятелния пакет, но има една малка особеност. Играта тръгва само когато се добави -dx9 в командата:

Код: Избери всички

wine pCARS.exe -dx9
Когато е в Playonlinux си добавям тоя ключ към шорткъта и няма ядове, играта върви великолепно, но не мога да разбера как да го направя със стартовия скрипт за самостоятелния пакет. Скриптът прави така, че се използва отделна версия на Wine, отделна папка home, която е в същата директория и т.н., без да е зависима по никакъв начин от текущата инсталация на Wine, като може и въобще да няма такава. Това осигурява факта, че играта ще тръгне навсякъде, защото вътре има всичко необходимо, заедно с настройките на Wine, самата игра, Wineprefix и пр.

Ето го и скрипта:

http://dox.bg/files/dw?a=7f2bbfc4ad

Ето го и в суров вариант:

Код: Избери всички

#!/bin/bash

### Wine standalone script
### Version 1.3.5
### Created by Kron
### Latest version - https://yadi.sk/d/IrofgqFSqHsPu

# Forbid root rights
if [ ! "$ROOT" ] && [ "$EUID" == "0" ]
then
echo "##########################################################################"
echo "НЕ ЗАПУСКАЙТЕ НИКАКИЕ СКРИПТЫ ЧЕРЕЗ КОМАНДУ sudo ИЛИ ОТ ПОЛЬЗОВАТЕЛЯ root!"
echo "##########################################################################"
exit
fi

## Variables

# User
export USER="$(id -u -n)"

# Directory
export SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
export DIR="$(dirname "$SCRIPT")"
export RHOME="$HOME"
export HOME="$DIR/home"

# Wine binaries
export USESYSWINE="no"
export WINETRICKS="$DIR/winetricks"

if [ "$USESYSWINE" == "yes" ]
then if [ -f "$DIR/syswine" ]
	then source "$DIR/syswine"
     fi

     if [ ! -f "$WINE" ]
     then if [ -f "/usr/bin/wine" ]
	then export WINE="/usr/bin/wine"
	       export REGEDIT="/usr/bin/regedit"
          elif [ -f "/usr/bin/wine-development" ]
	  then export WINE="/usr/bin/wine-development"
	       export REGEDIT="/usr/bin/regedit-development"
          elif [ -f "/usr/local/bin/wine" ]
	  then export WINE="/usr/local/bin/wine"
	       export REGEDIT="/usr/local/bin/regedit"
          fi

	  if [ "$WINE" ]
	  then rm -f "$DIR/syswine"
	       echo "export WINE='$WINE'" >> "$DIR/syswine"
	       echo "export REGEDIT='$REGEDIT'" >> "$DIR/syswine"
          fi
     fi
elif [ -f "$DIR/syswine" ]
then rm "$DIR/syswine"
fi

if [ ! "$WINE" ]
then export WINE="$DIR/wine/bin/wine"
     export REGEDIT="$DIR/wine/bin/regedit"
fi

# Wine
export WINEPREFIX="$DIR/prefix"

#######################
export WINEDEBUG="-all"
#######################

export WINE_VER="$("$WINE" --version)"
export WINEDLLOVERRIDES="mscoree,mshtml="
export UPDATEPREFIX="yes"

################
export CSMT="on"
################

# Game
############################################
export GAME_NAME="Project Cars Game of the Year Edition"
export GAME_VER="11.0.0.0.1235"
export EXE="pCARS.exe"
export GAME_FOLDER="$WINEPREFIX/drive_c/Games/Project Cars Game of the Year Edition/"
#############################################

# Screen
####################
export WINDOWED="no"
export RESOLUTION="800x600"
export FIXRES="no"
##################

# Sound
####################
export USEALSA="yes"
####################

# Cores
export CORES="$(getconf _NPROCESSORS_ONLN)"

## Actions

# Exit if the files do not exist
if [ ! -f "$WINE" ] || [ ! -f "$WINETRICKS" ] || [ ! -d "$GAME_FOLDER" ]
then clear
	echo "Отсутствуют(ет):"
	echo

	if [ ! -f "$WINE" ]
	then echo "$WINE"
	fi

	if [ ! -f "$WINETRICKS" ]
	then echo "$WINETRICKS"
	fi

	if [ ! -d "$GAME_FOLDER" ]
	then echo "$GAME_FOLDER"
	fi

	exit
fi

# Create a home directory
if [ "$HOME" == "$DIR/home" ] && [ ! -d "$HOME" ]
then mkdir "$HOME"
fi

# Copy pulse config
if [ "$HOME" == "$DIR/home" ]
then if [ ! -d "$HOME/.config" ]
     then mkdir -p "$HOME/.config"
     fi

     if [ ! -d "$HOME/.pulse" ]
     then cp -R "$RHOME/.pulse" "$HOME"
     fi

     if [ ! -d "$HOME/.config/pulse" ]
     then cp -R "$RHOME/.config/pulse" "$HOME/.config"
     fi
fi

# Update prefix
if [ "$UPDATEPREFIX" == "yes" ]
then if [ ! -d "$WINEPREFIX/drive_c/users/$USER" ]
    then "$DIR/wine/bin/wineboot" -u

	# Disable d3d10 and d3d11
	"$WINETRICKS" d3d10=disabled d3d11=disabled

	# Disable GStreamer
	"$WINETRICKS" winegstreamer=disabled
    fi
fi

# Turn sound
if [ "$USEALSA" == "yes" ] && [ ! -f "$DIR/alsa" ]
then "$WINETRICKS" sound=alsa
	echo > "$DIR/alsa"
	rm -f "$DIR/pulse"
elif [ "$USEALSA" == "no" ] && [ ! -f "$DIR/pulse" ]
then "$WINETRICKS" sound=pulse
	echo > "$DIR/pulse"
	rm -f "$DIR/alsa"
fi

# Disable CSMT on 1-core CPU
if [ "$CORES" == "1" ]
then export CSMT="off"
fi

# Disable CSMT on non-Staging Wine
if [ "$CSMT" == "on" ] && [[ ! "$WINE_VER" == *"Staging"* ]]
then export CSMT="off"
fi

# Enable/Disable CSMT
if [ -f "$DIR/wine/share/wine/csmt.reg" ] && [ -f "$DIR/wine/share/wine/non-csmt.reg" ]
then if [ -f "$DIR/csmt_on" ] && [ "$CSMT" == "off" ]
     then "$REGEDIT" "$DIR/wine/share/wine/non-csmt.reg"
          rm "$DIR/csmt_on"
     elif [ ! -f "$DIR/csmt_on" ] && [ "$CSMT" == "on" ]
     then "$REGEDIT" "$DIR/wine/share/wine/csmt.reg"
	  echo > "$DIR/csmt_on"
     fi
fi

# Get native screen resolution
if [ "$FIXRES" == "yes" ]
then if [ "$WINDOWED" == "no" ] && [ ! "$1" == "-sw" ] && [ -f "/usr/bin/xrandr" ]
     then export RESOLUTION="$(xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}')"
     else export FIXRES="no"
     fi
fi

# Info output
clear
echo "$WINE_VER"
echo "csmt: $CSMT"
echo "###############################"
echo "game: $GAME_NAME"
echo "version: $GAME_VER"
echo "###############################"
echo "home: $HOME"
echo

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE"
else "$WINE" "$EXE"
fi

# Restore screen resolution
if [ "$FIXRES" == "yes" ]
then "/usr/bin/xrandr" -s "$RESOLUTION"
fi
В секция # Game се вижда, променил съм всичко както трябва и играта се опитва да тръгне, но понеже никъде не е указано, че трябва да има и ключ -dx9 и крашва. Добавих го така:

Код: Избери всички

export EXE="pCARS.exe -dx9"
Но, логично, казва, че не може да намери такова екзе. Предполагам, че някой, който е наясно с този синтаксис, ще разгледа скрипта и ще види къде може да се добави този ключ :pray: Другото, което ми дойде на акъла е да се напише един скрипт с командата "wine pCARS.exe -dx9", да се сложи в директорията на играта и главният скрипт да редиректва към него, но той се опитва да го подкара с Wine и не става, не знам просто какво да напиша. В безизходица съм, хелп, нищо не разбирам от такива неща :mrgreen: :mrgreen: :mrgreen:
Прочетено: 486 пъти
Изображение
Потребителски аватар
cprog
Почетен член
Почетен член
Мнения: 1537
Регистриран: нед юли 19, 2015 08:19
Репутация: 14078
пол: Мъж

Re: Помощ относно Wine скрипт

Мнение от cprog »

Я опитай така опитай да подадеш параметъра на това място:

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE -dx9"
else "$WINE" "$EXE -dx9"
fi
CPU~Dual core AMD Athlon 64 X2 5200+ (-MCP-) speed~2700 MHz (max) Kernel~4.15.0-33-generic x86_64 Up~1 day Mem~4869.6/7976.7MB HDD~2400.5GB(45.8% used) Procs~313 Client~Shell inxi~2.3.56
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Re: Помощ относно Wine скрипт

Мнение от Mozo »

И аз там се сетих напосоки, но за съжаление не става :???:

Код: Избери всички

wine-2.7
csmt: off
###############################
game: Project Cars Game of the Year Edition
version: 11.0.0.0.1235
###############################
home: /media/sdb1/Cars/home

wine: cannot find ' -dx9'
Изображение
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Re: Помощ относно Wine скрипт

Мнение от Mozo »

Пробвах само на първия ред да го добавя, тогава не дава грешка, че не може да намери екзето, но пък си тръгва по нормалния начин и крашва, защото се опитва да подкара DX11, а неговата поддръжка в Wine още е супер зле, и плюе нормалната грешка:

Код: Избери всички

ERROR: Could Not Get Primary Adapter Handle
Изображение
Потребителски аватар
cprog
Почетен член
Почетен член
Мнения: 1537
Регистриран: нед юли 19, 2015 08:19
Репутация: 14078
пол: Мъж

Re: Помощ относно Wine скрипт

Мнение от cprog »

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE dx9"
else "$WINE" "$EXE dx9"
fi
Опитай без тире.
Аз тествах при мене следното просто нещо и сработи

[omdv@localhost ~]$ wine notepad filename
fixme:winediag:start_process Wine Staging 1.8.1 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
[omdv@localhost ~]$

Тоест така се подават параметри към програма пусната през wine
CPU~Dual core AMD Athlon 64 X2 5200+ (-MCP-) speed~2700 MHz (max) Kernel~4.15.0-33-generic x86_64 Up~1 day Mem~4869.6/7976.7MB HDD~2400.5GB(45.8% used) Procs~313 Client~Shell inxi~2.3.56
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Re: Помощ относно Wine скрипт

Мнение от Mozo »

Код: Избери всички

wine-2.7
csmt: off
###############################
game: Project Cars Game of the Year Edition
version: 11.0.0.0.1235
###############################
home: /media/sdb1/Cars/home

wine: cannot find 'pCARS.exe dx9'
:sad:

То това май всъщност е скриптът, който не намира екзето с тоя флаг, а не Wine. Самият Wine няма проблеми с този флаг :tard: Трябва да му се хване логиката на самия скрипт или пък да се пробва варианта да редиректва към друг скрипт в директорията на играта, както споменах по-горе 8-[
Изображение
Потребителски аватар
ivoarch
Начинаещ
Мнения: 64
Регистриран: ср апр 13, 2016 00:05
Репутация: 1221
пол: Мъж

Re: Помощ относно Wine скрипт  [РЕШЕНА]

Мнение от ivoarch »

Без да съм запознат какво точно е "-dx9" , е малко като да стреляш на посоки , но все пак .

Пробвай :

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE" -dx9
else "$WINE" "$EXE" -dx9
fi
Ако работи може да добавиш -dx9 в променлива .

Код: Избери всички

# Game
############################################
export GAME_NAME="Project Cars Game of the Year Edition"
export GAME_VER="11.0.0.0.1235"
export EXE="pCARS.exe"
export EXE_KEY="-dx9"
export GAME_FOLDER="$WINEPREFIX/drive_c/Games/Project Cars Game of the Year Edition/"
#############################################
После:

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE" "EXE_KEY"
else "$WINE" "$EXE" "$EXE_KEY"
fi
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Re: Помощ относно Wine скрипт

Мнение от Mozo »

Не, не, направо не си човек :hello1: :hello1: :hello1: :headbang: :headbang: :headbang: :заря: :вълна/ура: :ураааааа:

Много ти благодаря :поклон: :поклон: :поклон:

Тръгна по този начин:

Код: Избери всички

# Game
############################################
export GAME_NAME="Project Cars Game of the Year Edition"
export GAME_VER="11.0.0.0.1235"
export EXE="pCARS.exe"
export EXE_KEY="-dx9"
export GAME_FOLDER="$WINEPREFIX/drive_c/Games/Project Cars Game of the Year Edition/"
и добавяне на:

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE" "EXE_KEY"
else "$WINE" "$EXE" "$EXE_KEY"
fi
И ТРЪГНА!!! :headbang: :headbang: :headbang:

dx9 е да принудиш играта да използва DirectX9, защото поддръжката за DirectX11 в Wine още е зле и с него играта не тръгва, а използва именно него по дефолт. Когато самата игра има предвидена възможност за DX9, номерът минава. Ако играта няма, не става, разбира се. Има и друг начин - с -force-d3d9.

Отново голямо благодаря :поклон:
Изображение
Потребителски аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 295546
Регистриран: пет юни 01, 2007 14:18
Репутация: 365456
Местоположение: Somewhere In Time

Re: Помощ относно Wine скрипт

Мнение от Mozo »

Само да добавя, че махнах от четвъртия ред "$EXE_KEY":

Код: Избери всички

# Start game
cd "$GAME_FOLDER"
if [ "$WINDOWED" == "yes" ] || [ "$1" == "-sw" ]
then "$WINE" explorer /desktop=Game,$RESOLUTION "$EXE" "EXE_KEY" <--ето това
else "$WINE" "$EXE" "$EXE_KEY"
fi
Махнах го, защото още в текстовия редактор го даваше в червено, пък и играта си тръгна и без него
Изображение
Нова тема Отговори

  • Подобни теми
    Отговори
    Преглеждания
    Последно мнение

Върни се в “Линукс - инсталация, настройки, проблеми”