Перейти к содержанию

[SOLVED] Проблема с автопатчером L2Walker под Linux


Рекомендуемые сообщения

Привет, если вы тоже столкнулись с проблемой того, что волкер не всегда патчится при запуске под linux, я написал скрипт, который автоматизирует процесс запуска, надеюсь, будет кому-то полезно:

#!/bin/bash
#echo off

echo "How many windows should be running? [3]"
read targetNum
targetNum=${targetNum:-3}

#put path to your bot folder here:
cd /home/username/.wine/drive_c/Games/l2bot

echo "Checking WP..."
pgrep WP667f && echo "WP already running" || (nohup wine WPF/WP667f.exe < /dev/null &>/dev/null &)

echo "Checking WSS..."
pgrep WSS && echo "WSS already running" || (nohup wine WSS.exe < /dev/null &>/dev/null &)

echo "Getting ready..."
sleep 2

for attempt in {1..50}
do
	echo "Attempt: " $attempt
	nohup wine L2Walker.exe < /dev/null &>/dev/null &
	sleep 2

	#clean not patched
	wmctrl -lp | grep "L2Walker 10.8.6" | grep -v Patched | while read -r d z pid rest; do kill "$pid"; done

	#count patched
	running=($(pgrep -c L2Walker))

	if [ $running == $targetNum ]; then
		echo "enough!"
		break
	fi
done

 

Изменено пользователем Himela
  • Like 3
Ссылка на сообщение
Поделиться на другие сайты
  • Admin изменил название на [SOLVED] Проблема с автопатчером L2Walker под Linux

Ничоси, оно под вайном работает? Я думал WP будет испытывать проблемки, ан нет. А если в WSS даблкликом тыкать по процессу, патчится? Или задача была просто не морочиться и отловить тот раз, когда пропатчит сам?

Ссылка на сообщение
Поделиться на другие сайты
On 05.06.2021 at 09:31, Intervence said:

Ничоси, оно под вайном работает? Я думал WP будет испытывать проблемки, ан нет. А если в WSS даблкликом тыкать по процессу, патчится? Или задача была просто не морочиться и отловить тот раз, когда пропатчит сам?

Работает :) 

Да, у WP много проблем и мало инструментов для отладки, основная проблема именно на запуске - он может не увидеть новый процесс, может вообще зависнуть при старте волкера (в таком случае приходится убивать и WP, и то окно волкера, которое послужило проблемой) - в итоге старт даже 3х окон ручками - это процесс минут на 10.

WSS при дабл-клике тоже фейлится (причем как на непропатченном, так и на пропатченном) - ругается на несоответствие версии, хотя в автоматическом режиме может пропатчить. Поэтому, да - задача была просто отловить те N раз, когда он пропатчит сам.

Quote

Игроки под linux больше любят играть в запуск игр, чем в сами игры

по скрипту апдейт - слипы можно еще чуть-чуть поднять - в зависимости от скорости компа может не хватать

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

Если будет полезно - обновление скрипта:

  1. Перенес запуск WPF в конец, т.к. он не нужен для старта окон, но может повиснуть в процессе
  2. Добавил запуск полезных программ:
    1. Sublime (если надо быстро подправить какой-то скрипт);
    2. Chrome;
    3. Папку с ботом в менеджере файлов (для ручного перезапуска при необходимости)

Код:

#!/bin/bash
#echo off

echo "How many bot windows should be running? [3]"
read targetNum
targetNum=${targetNum:-3}

#TODO: put here the favorite file manager
fileManager=caja
#TODO: replace here the path to bot folder
botPath=/home/user/.wine/drive_c/Games/l2bot

cd $botPath

#######
# WSS #
#######


echo "Checking WSS..."
if pgrep WSS; then
	echo "WSS already running"
else
	echo "Starting WSS..."
	nohup wine WSS.exe < /dev/null &>/dev/null &
	sleep 2
	for attempt in {1..50}
	do
		if pgrep WSS; then
			echo "WSS started"
			break
		else
			echo "Wait for WSS: " $attempt
			sleep 2
		fi
	done
fi


#######
# bot #
#######

for attempt in {1..50}
do
	echo "Walker Attempt: " $attempt
	nohup wine L2Walker.exe < /dev/null &>/dev/null &
	sleep 3

	#clean not patched
	wmctrl -lp | grep "L2Walker 10.8.6" | grep -v Patched | while read -r d z pid rest; do kill "$pid"; done

	#count patched
	running=($(pgrep -c L2Walker))

	if [ $running == $targetNum ]; then
		echo "enough!"
		break
	fi
done

running=($(pgrep -c L2Walker))

if [ $running != $targetNum ]; then
	echo "Aborting..."
	sleep 1
	exit 0
fi

######
# WP #
######
echo "Checking WP..."
if pgrep WP667f; then
	echo "WP already running"
else
	echo "Starting WP..."
	nohup wine WPF/WP667f.exe < /dev/null &>/dev/null &
	sleep 2
	for attempt in {1..50}
	do
		if pgrep WP667f; then
			echo "WP started"
			break
		else
			echo "Wait for WP: " $attempt
			sleep 2
		fi
	done
fi

########
# soft #
########

pgrep sublime && echo "Sublime...ok" || (echo "Starting sublime..."; nohup /opt/sublime_text/sublime_text &)
pgrep sublime && echo "Chrome...ok" || (echo "Starting chrome..."; nohup /opt/google/chrome/chrome &)
# TODO: doesn't work on mint
#pgrep $fileManager && echo "File Manager...ok" || (echo "Starting File Manager..."; nohup $fileManager &)
nohup $fileManager $botPath &

 

  • Like 1
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...