mirror of
https://github.com/bakustarver/rpgmakermlinux-cicpoffs.git
synced 2025-04-21 13:42:19 +02:00
1577 lines
43 KiB
Bash
1577 lines
43 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
version='1.1.3'
|
|
export mainfd="$HOME/desktopapps"
|
|
export nwjsfm="$mainfd/nwjs/nwjs"
|
|
export LD_LIBRARY_PATH="$mainfd/nwjs/nwjs/packagefiles/:$LD_LIBRARY_PATH"
|
|
|
|
export yadp="$nwjsfm/packagefiles/yad"
|
|
tyranounpacker="$nwjsfm/packagefiles/tyranodataextract"
|
|
electronfd="$mainfd/electron-tyrano"
|
|
mkxpzp="$mainfd/mkxp-z"
|
|
evbunpack="$nwjsfm/packagefiles/evbunpack"
|
|
ndmodulesfd="$nwjsfm/packagefiles/tyranobuilder/node_modules"
|
|
|
|
defp="$nwjsfm/nwjs"
|
|
export defpn="$nwjsfm"
|
|
export DWNWJSNODEBUG=true
|
|
|
|
nwjslist=$(ls -p "$defp" | grep -v "www" | grep /)
|
|
|
|
nwjsonlylist=$(echo "$nwjslist" | grep -v "sdk")
|
|
nwjssdkonlylist=$(echo "$nwjslist" | grep "sdk")
|
|
|
|
if echo "$nwjslist" | grep -q "\-sdk"; then
|
|
# sdkinstalled=true
|
|
latestinstallednwjsfd=$(echo "$nwjssdkonlylist" | sort -V | uniq | tail -n 1)
|
|
# allversionsnwjs=$(echo "$nwjslist" | sed -e 's@-sdk-@@g' -e 's@nwjs-@@g' -e 's@-linux-.*@@g' | sort -V | uniq)
|
|
else
|
|
latestinstallednwjsfd=$(echo "$nwjslist" | tail -n 1)
|
|
fi
|
|
allversionsnwjs=$(echo "$nwjslist" | sed -e 's@sdk-@@g' -e 's@nwjs-@@g' -e 's@-linux-.*@@g' | sort -V | uniq | tac)
|
|
#
|
|
# echo "$latestinstallednwjsfd"
|
|
# exit
|
|
githubscriptwget=$(timeout 7s wget -qO- "https://raw.githubusercontent.com/bakustarver/rpgmakermlinux-cicpoffs/main/installgithub.sh" )
|
|
|
|
# latestinstallednwjsfd=$(ls -p "$defp" | grep / | sort -V | tail -n 1 )
|
|
|
|
|
|
if [ -n "$githubscriptwget" ]; then
|
|
githubversion=$(echo "$githubscriptwget" | sed -n 's/version=//p')
|
|
if [ "$version" != "$githubversion" ]; then
|
|
if { echo "$version"; echo "$githubversion"; } | sort --version-sort -C; then
|
|
echo "A new rpgmaker-linux update has been found, to get the latest version use
|
|
$ rpgmaker-linux --fullupdate
|
|
|
|
|
|
"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
|
|
arch=$(uname -m)
|
|
archcheckmessage=$(echo "$arch" | sed -e 's@x86_64@, x86-64, version@g' -e 's@aarch64@, ARM aarch64,@g' -e 's@i686@, Intel 80386,@g' -e 's@i386@, Intel 80386,@g' -e 's@armv7l@, ARM,@g' -e 's@armhf@, ARM,@g')
|
|
if [[ "$arch" == *"arm"* ]]; then
|
|
armsys=true
|
|
fi
|
|
|
|
checkthebinaryarch() {
|
|
if ! [ -f "$1" ]; then
|
|
echo "Missing file $1"
|
|
# echo "Use
|
|
# $ rpgmaker-linux "
|
|
exit;
|
|
fi
|
|
|
|
if ! file "$1" | grep -q "$archcheckmessage" ; then
|
|
# Use $ wget -qO- installscript.sh | bash
|
|
file "$1"
|
|
echo "Wrong architecture!! Use
|
|
$ rpgmaker-linux --fullupdate
|
|
to get correct version"
|
|
exit 1;
|
|
fi
|
|
}
|
|
|
|
checkthebinariesarch() {
|
|
"$cicpoffs"
|
|
# - ask for download?
|
|
# - set custom path
|
|
"$nwjstestpath/nw"
|
|
# cicpoffspath
|
|
|
|
}
|
|
|
|
|
|
makedesktopfile() {
|
|
# $mountpath
|
|
geticonpath=$(sed -n 's/.*"icon": "//p' "$nwjstestpath/package.json" | sed -e 's@"@@g')
|
|
if [ "$engine" = "mz" ] && [ -z "$PACKAGEJSONPATH" ]; then
|
|
geticonpath=$(echo "$geticonpath" | sed -e 's@www/@@g');
|
|
fi
|
|
ndirname="$npath"
|
|
|
|
ndrbasen=$(basename "$ndirname")
|
|
iconpath="$ndirname/$geticonpath"
|
|
if [ -z "$dsavepath" ]; then
|
|
dsavepath="$ndirname"
|
|
fi
|
|
|
|
if ! [ -f "$dsavepath/$ndrbasen.desktop" ]; then
|
|
echo "[Desktop Entry]
|
|
Name=$ndrbasen
|
|
Exec=env gamef=\"$ndirname\" $nwjsfm/packagefiles/nwjsstart-cicpoffs.sh
|
|
Type=Application
|
|
Categories=Game
|
|
StartupNotify=true
|
|
MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;
|
|
Icon=$iconpath
|
|
Terminal=true" > "$dsavepath/$ndrbasen.desktop"
|
|
chmod +x "$dsavepath/$ndrbasen.desktop"
|
|
fi
|
|
}
|
|
|
|
makelocalshortcut() {
|
|
dsavepath=""
|
|
makedesktopfile
|
|
}
|
|
|
|
makedesktopshortcut() {
|
|
dsavepath=$(xdg-user-dir DESKTOP)
|
|
makedesktopfile
|
|
}
|
|
|
|
makethemenushortcut() {
|
|
dsavepath="$HOME/.local/share/applications/"
|
|
makedesktopfile
|
|
}
|
|
|
|
pixi5install() {
|
|
echo "Installing pixi5"
|
|
newjsfd="$nwjsfm/packagefiles/rpgmaker-mv-pixi5/js"
|
|
curjs="$mountpath/js"
|
|
if grep "pixi.js - v5." "$curjs/libs/pixi.js"; then
|
|
echo "The pixi5 lib is already installed"
|
|
else
|
|
mv "$curjs" "$mountpath/js-backup"
|
|
cp -r "$newjsfd" "$mountpath"
|
|
cp -r "$mountpath/js-backup/plugins" "$curjs"
|
|
cat "$mountpath/js-backup/plugins.js" > "$curjs/plugins.js"
|
|
echo "pixi5 was installed"
|
|
fi
|
|
#pixi func
|
|
}
|
|
|
|
|
|
relocaterpgmaker() {
|
|
echo test
|
|
}
|
|
|
|
plugininstallfunc() {
|
|
# echo "Installing the text hooker plugin"
|
|
yourplugin="$1"
|
|
bnpl=$(basename "$1" | sed -e 's@.js@@g')
|
|
pluginslistfile="$mountpath/js/plugins.js"
|
|
|
|
if grep -q "$bnpl\",\"status\":true," "$pluginslistfile"; then
|
|
echo "The $bnpl plugin is already installed"
|
|
else
|
|
cp "$pluginslistfile" "$pluginslistfile.bk"
|
|
sed -e "s@^\[@[\n$pluginset@g" -i "$pluginslistfile"
|
|
cp "$yourplugin" "$mountpath/js/plugins/";
|
|
|
|
fi
|
|
}
|
|
|
|
|
|
texthookerpluginuninstall() {
|
|
echo "Uninstalling the text hooker plugin"
|
|
pluginsfile="$mountpath/js/plugins.js"
|
|
if grep -q 'Clipboard_llule","status":true,' "$pluginsfile"; then
|
|
sed -e 's@{"name":"Clipboard_llule".*@@g' -i "$pluginsfile"
|
|
else
|
|
echo "The text hooker plugin is not installed"
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
fivehundredslotsplugininstall() {
|
|
pluginset='{"name":"CustomizeMaxSaveFile","status":true,"description":"Customize max save file number","parameters":{"SaveFileNumber":"500"}},'
|
|
plugininstallfunc "$nwjsfm/packagefiles/plugins/CustomizeMaxSaveFile.js"
|
|
|
|
}
|
|
|
|
texthookerplugininstall() {
|
|
pluginset='{"name":"Clipboard_llule","status":true,"description":"","parameters":{}},'
|
|
plugininstallfunc "$nwjsfm/packagefiles/plugins/Clipboard_llule.js"
|
|
|
|
}
|
|
|
|
|
|
|
|
sourcelinks() {
|
|
|
|
echo "Github page
|
|
https://github.com/bakustarver/rpgmakermlinux-cicpoffs
|
|
|
|
Patreon page
|
|
https://www.patreon.com/user/about?u=121421184
|
|
|
|
Buymeacoffe page
|
|
https://www.buymeacoffee.com/rpgmakerlinux"
|
|
}
|
|
|
|
incompletefeaturefunc() {
|
|
echo "$arg" in development, wait for it on this site.
|
|
echo "https://github.com/bakustarver/rpgmakermlinux-cicpoffs"
|
|
}
|
|
|
|
|
|
fullupdatereinstall() {
|
|
echo "$githubscriptwget" | bash
|
|
}
|
|
|
|
unpackexe() {
|
|
gameexe="$1"
|
|
gameexefd="$1-extracted"
|
|
originalexe=$(echo "$1" | sed -e 's@\.exe@@g' -e 's@$@_original.exe-extracted@g')
|
|
"$evbunpack" "$gameexe" "$gameexefd"
|
|
# find "$gameexefd" -type f \( -name "*.exe" \) -delete
|
|
cp -r "$gameexefd"/* "$npath"
|
|
mkdir "$originalexe"
|
|
}
|
|
|
|
tyranoextractv4exe() {
|
|
if [ -n "$exenpath" ]; then
|
|
# kdialog --msgbox "hhhcc"
|
|
"$tyranounpacker" exe "$exenpath" "$npath"
|
|
else
|
|
exenpath=$(ls -p "$npath" | grep -v "/$" | grep "\.exe$")
|
|
"$tyranounpacker" exe "$exenpath" "$npath"
|
|
fi
|
|
}
|
|
|
|
tyranolndatafd() {
|
|
rm "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/tyranoeng/data"
|
|
if [ -f "$npath/data/others/translate/main.js" ]; then
|
|
cat "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/pathches/tf/main.js" > "$npath/data/others/translate/main.js"
|
|
fi
|
|
ln -fs "$npath/data" "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/tyranoeng"
|
|
}
|
|
|
|
|
|
mkxpzdownload() {
|
|
if [ "$arch" = "i686" ]; then
|
|
echo For this release, i686 not supported
|
|
|
|
fi
|
|
# mkxpzarch=$(echo "$arch" )
|
|
|
|
if [ -n "$REINSTALLMKXPZ" ]; then
|
|
echo Reinstalling mkxpz
|
|
rm -rf "$mkxpzp"
|
|
fi
|
|
|
|
link="https://github.com/bakustarver/rpgmakermlinux-cicpoffs/releases/download/libraries/mkxp-z.$arch.zip"
|
|
wget -O /tmp/mkxp-z.zip "$link"
|
|
unzip -d "$mkxpzp" /tmp/mkxp-z.zip
|
|
sed -e "s@\"RGSS@\"$mkxpzp/RGSS@g" -i "$mkxpzp/mkxp.json"
|
|
rm /tmp/mkxp-z.zip
|
|
# else
|
|
# echo For this release, supported x86_64 only
|
|
# fi
|
|
}
|
|
|
|
mkxpzdialog() {
|
|
$yadp --image="dialog-question" \
|
|
--title "Rpg Maker VX Ace / VX/ XP Launcher: $line" \
|
|
--text "Mkxp-z module is not installed\nWould you like to download it?\n+292 mb" \
|
|
--button="Yes:0" \
|
|
--button="No:1" \
|
|
retmkxpz=$?
|
|
|
|
if [[ $retmkxpz -eq 1 ]]; then
|
|
exit;
|
|
elif [[ $retmkxpz -eq 0 ]]; then
|
|
mkxpzdownload;
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
electron-tyrano-downloader() {
|
|
yarch=$(echo "$arch" | sed -e 's@x86_64@x64@g' -e 's@i686@ia32@g' -e 's@aarch64@arm64@g')
|
|
link="https://github.com/electron/electron/releases/download/v9.4.4/electron-v9.4.4-linux-$yarch.zip"
|
|
wget -O /tmp/electron-tyrano.zip "$link"
|
|
unzip -d "$electronfd" /tmp/electron-tyrano.zip
|
|
rm /tmp/electron-tyrano.zip
|
|
}
|
|
|
|
tyranocheckelectron() {
|
|
$yadp --image="dialog-question" \
|
|
--title "Tyranobuilder Launcher: $line" \
|
|
--text "Found electron game $line!\nHow would you like to open it?" \
|
|
--button="Electron (Recomended):0" \
|
|
--button="NWJS:1" \
|
|
--button="Exit:2"
|
|
rettyranoelectron=$?
|
|
if [ -n "$asarpath" ]; then
|
|
"$tyranounpacker" asarapp "$asarpath" "$npath/resources/app"
|
|
fi
|
|
|
|
|
|
if [[ $rettyranoelectron -eq 0 ]]; then
|
|
|
|
|
|
if ! [ -f "$electronfd/electron" ]; then
|
|
electron-tyrano-downloader
|
|
fi
|
|
|
|
rm "$electronfd/resources/app"
|
|
sed '/$.userenv = function/,/};/c\
|
|
$.userenv = function () {\
|
|
return "pc";\
|
|
};' -i "$npath/resources/app/tyrano/libs.js"
|
|
ln -fs "$npath/resources/app" "$electronfd/resources/"
|
|
usetyranoelectron=true
|
|
elif [[ $rettyranoelectron -eq 1 ]]; then
|
|
rm "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/tyranoeng/data"
|
|
ln -fs "$npath/resources/app/data" "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/tyranoeng"
|
|
usetyranoelectron=""
|
|
elif [[ $rettyranoelectron -eq 2 ]]; then
|
|
exit;
|
|
fi
|
|
}
|
|
|
|
mkxpzdialogoptions() {
|
|
$yadp --image="dialog-question" \
|
|
--title "Mkxp-z Options: $line" \
|
|
--text "Found the rppmaker game $line!\nHow would you like to open it?" \
|
|
--button="Linux mkxp-z:0" \
|
|
--button="Windows mkxp-z (Requires Wine):1" \
|
|
--button="Exit:2"
|
|
rettyranoelectron=$?
|
|
|
|
|
|
if [[ $rettyranoelectron -eq 0 ]]; then
|
|
mkxpopt=linux
|
|
|
|
elif [[ $rettyranoelectron -eq 1 ]]; then
|
|
mkxpopt=wine
|
|
elif [[ $rettyranoelectron -eq 2 ]]; then
|
|
exit;
|
|
fi
|
|
}
|
|
|
|
godotdownloadsdk() {
|
|
if [ -z "$execpath" ]; then
|
|
exen=$(ls -p "$npath" | grep -v "/$" | grep "\.exe$" )
|
|
fi
|
|
|
|
|
|
while IFS= read -r line; do
|
|
godotold=""
|
|
exenn=$(echo "$line" | sed "s@.exe@@g" )
|
|
# echo hhh
|
|
strgodotexe=$(strings "$npath/$line")
|
|
versiongodot=$(echo "$strgodotexe" | grep -m 1 'Godot Engine v' | sed -e 's@.* v@@g' -e 's@.official@@g' )
|
|
if [ -z "$versiongodot" ]; then
|
|
# echo zzz
|
|
versiongodot=$(echo "$strgodotexe" | grep -B 1 "User-Agent:" | grep "[0-9]\.[0-9]\." | grep -v "User-Agent:" | sed -e 's@.official@@g' )
|
|
# echo "exe $exenpath"
|
|
godotold=true
|
|
fi
|
|
if [ -z "$versiongodot" ]; then
|
|
versiongodot=$(echo "$strgodotexe" | grep '[0-9]\.[0-9]\.[0-9]\.stable\.' )
|
|
fi
|
|
# echo "$exen"
|
|
# echo "cc $versiongodot"
|
|
|
|
if [ -n "$versiongodot" ]; then
|
|
n1godot=$(echo "$versiongodot" | sed -e 's@\.[a-Z].*@@g')
|
|
n2godot=$(echo "$versiongodot" | sed -e 's@.*\.@@g')
|
|
garch=$(echo "$arch" | sed -e 's@86_64@86_64@g' -e 's@i686@x86_32@g' -e 's@aarch64@arm64@g' -e 's@armv7l@arm32@g')
|
|
versinid="_linux.$garch.zip"
|
|
if [ "$n2godot" = "custom_build" ]; then
|
|
$yadp --image="dialog-question" \
|
|
--title "Godot SDK Downloader: $line" \
|
|
--text "It seems that this version of the Godot game has the own custom compilation\nand there may be problems with it!\nWould you like to download the standard SDK for this game?" \
|
|
--button="Yes:0" \
|
|
--button="Exit:1"
|
|
retgodotcustom=$?
|
|
if [[ $retgodotcustom -eq 0 ]]; then
|
|
customsdk=true;
|
|
n2godot="stable"
|
|
elif [[ $retgodotcustom -eq 1 ]]; then
|
|
exit;
|
|
fi
|
|
fi
|
|
|
|
# https://downloads.tuxfamily.org/godotengine/3.5.2/
|
|
if [ "$godotold" = "true" ]; then
|
|
# echo "ccc $garch"
|
|
garch=$(echo "$garch" | sed -e 's@x86_64@64@g' -e 's@x86_32@32@g')
|
|
if [ "$garch" = "64" ] && [ "$garch" = "32" ]; then
|
|
echo "The Godot version don't have any arm versin";
|
|
exit;
|
|
fi
|
|
versinid="_x11.$garch.zip"
|
|
godotsdklink="https://downloads.tuxfamily.org/godotengine/$n1godot/Godot_v$n1godot-$n2godot$versinid"
|
|
else
|
|
if [ "$n2godot" = "stable" ]; then
|
|
godotsdklink="https://downloads.tuxfamily.org/godotengine/$n1godot/Godot_v$n1godot-$n2godot$versinid"
|
|
else
|
|
godotsdklink="https://downloads.tuxfamily.org/godotengine/$n1godot/$n2godot/Godot_v$n1godot-$n2godot$versinid"
|
|
fi
|
|
fi
|
|
if wget -q --spider "$godotsdklink"; then
|
|
dglink="$godotdownloadsdk"
|
|
fi
|
|
|
|
archivngodot=$(basename "$godotsdklink")
|
|
binname=$(echo "$archivngodot" | sed -e 's@.zip@@g')
|
|
if ! [ -f "$npath/$exenn.$garch" ]; then
|
|
wget -c "$godotsdklink" -P "$npath"
|
|
unzip -d "$npath" "$npath/$archivngodot";
|
|
mv "$npath/$binname" "$npath/$exenn.$garch";
|
|
rm "$npath/$archivngodot";
|
|
fi
|
|
"$npath/$exenn.$garch"
|
|
exit;
|
|
else
|
|
echo "Can't find the Godot version in exe"
|
|
fi
|
|
done <<< "$exen"
|
|
}
|
|
|
|
tyranoelectron() {
|
|
if [ -n "$asarpath" ]; then
|
|
"$tyranounpacker" asarapp "$asarpath" "$npath/resources/app"
|
|
fi
|
|
rm "$electronfd/resources/app"
|
|
sed '/$.userenv = function/,/};/c\
|
|
$.userenv = function () {\
|
|
return "pc";\
|
|
};' -i "$npath/resources/app/tyrano/libs.js"
|
|
ln -fs "$npath/resources/app" "$electronfd/resources/"
|
|
usetyranoelectron=true
|
|
}
|
|
|
|
|
|
searchforpackedexe() {
|
|
# echo fffvvvv
|
|
local gfexe=$(ls -p "$1" | grep -v "/$" | grep "\.exe$")
|
|
# echo "$gfexe"
|
|
npath="$1"
|
|
if [ -n "$gfexe" ]; then
|
|
while IFS= read -r line; do
|
|
# check=$()
|
|
allstrings=$(strings "$npath/$line")
|
|
if echo "$allstrings" | grep -m 1 -q "\!CreatePipe(\&pipe\[0\]" && echo "$allstrings" | grep -m 1 -q "Godot Engine"; then
|
|
# echo vvv
|
|
# "$pckextract" "$npath/$line"
|
|
linenoexe=$(echo "$line.pck" | sed "s@\.exe@@g")
|
|
# mv "$npath/$line.pck" "$npath/$linenoexe"
|
|
if ! [ -f "$linenoexe" ]; then
|
|
cp "$line" "$linenoexe"
|
|
fi
|
|
fi
|
|
# !CreatePipe(&pipe[0]
|
|
if ! [ -d "$npath/$line-extracted" ]; then
|
|
# echo hmmm
|
|
if echo "$allstrings" | grep -m 1 -q "\.enigma"; then
|
|
$yadp --image="dialog-question" \
|
|
--title "RPG Maker linux: $line" \
|
|
--text "Detected game files in $line!\nWould you like to unpack it?" \
|
|
--button="Yes:0" \
|
|
--button="No:1"
|
|
ret=$?
|
|
# ret=1;
|
|
# fi
|
|
name=$(echo "$line")
|
|
|
|
|
|
if [[ $ret -eq 1 ]]; then
|
|
mkdir "$npath/$line-extracted";
|
|
elif [[ $ret -eq 0 ]]; then
|
|
unpackexe "$npath/$line"
|
|
fi
|
|
fi
|
|
# echo "$name"
|
|
# echo "$check"
|
|
fi
|
|
done <<< "$gfexe"
|
|
fi
|
|
}
|
|
|
|
|
|
updatenwjs() {
|
|
if [ -f "$nwjsfm/packagefiles/usesdk.txt" ]; then
|
|
export latestlocal=$(echo "$nwjssdkonlylist" | tail -n 1 | sed -e 's@nwjs-sdk-@@g' -e 's@-linux.*@@g' )
|
|
# echo "gggsagsga"
|
|
"$nwjsfm/dwnwjs.sh"
|
|
else
|
|
export latestlocal=$(echo "$latestinstallednwjsfd" | sed -e 's@nwjs-@@g' -e 's@-linux.*@@g')
|
|
"$nwjsfm/dwnwjs.sh"
|
|
fi
|
|
nwjslist=$(ls -p "$defp" | grep -v "www" | grep /)
|
|
|
|
}
|
|
|
|
nwjsversionfunc() {
|
|
export skipdownloadifexist=true
|
|
. "$nwjsfm/dwnwjs.sh" "$1"
|
|
nwjsversion=$1
|
|
# nwjsversion=(echo "$nwjsversion"
|
|
}
|
|
|
|
checkifexist() {
|
|
if ! [ -f "$1" ]; then
|
|
echo "Can't find the file $1"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
mkxpfunc() {
|
|
if [ -z "$mkxpfound" ]; then
|
|
|
|
if ! [ -f $mkxpzp/mkxp-z.$arch ]; then
|
|
mkxpzdialog
|
|
fi
|
|
|
|
sed -e "s@.*.gameFolder.*@ \"gameFolder\": \"$npath\",@g" -i "$mkxpzp/mkxp.json"
|
|
if [ "$mkxpopt" = "wine" ]; then
|
|
wine "$mkxpzp/mkxp-z.exe"
|
|
else
|
|
"$mkxpzp/mkxp-z.$arch"
|
|
fi
|
|
mkxpfound=true
|
|
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pchange() {
|
|
if echo "$1" | grep ".exe"; then
|
|
dirname "$1" | sed -e "s@^'@@g"
|
|
else
|
|
echo "$1"
|
|
fi
|
|
# echo "Use "$arg' "/path/rpggame/"'
|
|
# exit 1
|
|
# fi
|
|
}
|
|
|
|
electronch2() {
|
|
if [ -f "$electronfd/electron" ]; then
|
|
tyranoelectron
|
|
tyranoeng=electron
|
|
else
|
|
tyranocheckelectron
|
|
fi
|
|
}
|
|
|
|
tyranofuncv4() {
|
|
mountpath="$npath"
|
|
# gamepath=true
|
|
# found=true
|
|
engine=tyrano
|
|
tyranover=v4
|
|
tyranoeng=nwjs
|
|
|
|
if [ -d "$npath/data" ] && [ -e "$npath/data/system/Config.tjs" ]; then
|
|
tyranolndatafd
|
|
else
|
|
tyranoextractv4exe
|
|
tyranolndatafd
|
|
fi
|
|
}
|
|
|
|
|
|
tyranofuncv5() {
|
|
engine=tyrano
|
|
tyranover=v5
|
|
if [ -d "$npath/resources/app/data" ] && [ -f "$npath/resources/app/index.html" ] && [ -f "$npath/resources/app/main.js" ] && [ -d "$npath/resources/app/tyrano" ]; then
|
|
electronch2
|
|
elif [ -f "$npath/resources/app.asar" ]; then
|
|
asarpath="$npath/resources/app.asar"
|
|
electronch2
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
|
|
checkgamefilesfd() {
|
|
npath=$(echo "$1" | sed -e 's@rpgmakermp:///@@g')
|
|
# echo "$npath"
|
|
if echo "$npath" | grep ".exe"; then
|
|
exenpath="$npath"
|
|
npath=$(dirname "$npath" | sed -e "s@^'@@g");
|
|
else
|
|
npath="$npath"
|
|
fi
|
|
# kdialog --msgbox "$npath"
|
|
# zenity --title "$gamef" --warning --text="$npath"
|
|
searchforpackedexe "$npath"
|
|
if [ -d "$npath/www" ] && [ -e "$npath/package.json" ] && [ -e "$npath/www/js/plugins.js" ]; then
|
|
mountpath="$npath/www"
|
|
found=true
|
|
gamepath=true
|
|
engine=mv
|
|
elif [ -d "$npath/data" ] && [ -e "$npath/package.json" ] && [ -e "$npath/js/plugins.js" ]; then
|
|
mountpath="$npath"
|
|
gamepath=true
|
|
found=true
|
|
engine=mz
|
|
elif [ -e "$npath/Game.ini" ] && [ -e "$npath/Game.exe" ]; then
|
|
# mkxpfunc
|
|
engine=mkxpz
|
|
elif [ -e "$npath/package.nw" ]; then
|
|
# mkxpfunc
|
|
engine=construct-nwjs
|
|
elif [ -e "$npath/nscript.dat" ]; then
|
|
# mkxpfunc
|
|
engine=nscripter
|
|
elif [ -e "$npath/ffmpegsumo.dll" ] && [ -e "$npath/nw.pak" ] && [ -e "$npath/d3dcompiler_47.dll" ] && [ -e "$npath/nw.pak" ]; then
|
|
tyranofuncv4
|
|
elif [ -d "$npath/resources" ] && [ -d "$npath/locales" ] && [ -e "$npath/chrome_100_percent.pak" ] && [ -e "$npath/natives_blob.bin" ] && [ -e "$npath/chrome_200_percent.pak" ]; then
|
|
tyranofuncv5
|
|
|
|
else
|
|
# kdialog --msgbox "xxzxz"
|
|
checkpck=$(ls "$npath" | grep "\.pck")
|
|
if [ -n "$checkpck" ]; then
|
|
godotdownloadsdk
|
|
else
|
|
echo "Can't find any game in $npath"
|
|
exit 1
|
|
fi
|
|
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
checkgamepath() {
|
|
# path="$1"
|
|
echo "$1"
|
|
|
|
if ! [ -n "$CPATH" ]; then
|
|
path=$(pchange "$1")
|
|
else
|
|
path="$CPATH"
|
|
fi
|
|
# kdialog --msbox "$path"
|
|
checkgamefilesfd "$path"
|
|
}
|
|
searchforpackedexe "$PWD"
|
|
|
|
if [ -z "$gamepath" ]; then
|
|
if [ -d ./www ] && [ -f ./package.json ]; then
|
|
mountpath="$PWD/www"
|
|
found=true
|
|
engine=mv
|
|
npath="$PWD"
|
|
elif [ -d ./js ] && [ -f ./package.json ] && [ -d ./data ]; then
|
|
mountpath="$PWD"
|
|
found=true
|
|
engine=mz
|
|
npath="$PWD"
|
|
elif [ -e "./ffmpegsumo.dll" ] && [ -e "./nw.pak" ] && [ -e "./d3dcompiler_47.dll" ] && [ -e "./nw.pak" ]; then
|
|
npath="$PWD"
|
|
tyranofuncv4
|
|
elif [ -d "./resources" ] && [ -d "./locales" ] && [ -e "./chrome_100_percent.pak" ] && [ -e "./natives_blob.bin" ] && [ -e "./chrome_200_percent.pak" ]; then
|
|
npath="$PWD"
|
|
tyranofuncv5
|
|
elif [ -e "./Game.ini" ] && [ -e "./Game.exe" ]; then
|
|
# mkxpfunc
|
|
engine=mkxpz
|
|
elif [ -e "./package.nw" ]; then
|
|
# mkxpfunc
|
|
engine=construct-nwjs
|
|
elif [ -e "./nscript.dat" ]; then
|
|
# mkxpfunc
|
|
engine=nscripter
|
|
else
|
|
npath="$PWD"
|
|
checkpck=$(ls "$npath" | grep "\.pck")
|
|
if [ -n "$checkpck" ]; then
|
|
godotdownloadsdk
|
|
else
|
|
# echo "Can't find game in $npath"
|
|
notfound=true
|
|
# exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
# fi
|
|
#
|
|
if [ -z "$found" ]; then
|
|
if [ -n "$gamef" ]; then
|
|
# kdialog --msgbox "$gamef"
|
|
checkgamefilesfd "$gamef"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
checknwjspath() {
|
|
path="$1"
|
|
if [ -d "$path/lib" ] && [ -e "$path/nw" ]; then
|
|
NWJSPATH="$path"
|
|
else
|
|
echo "Can't find the NWJS"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
checkcicpoffspath() {
|
|
path="$1"
|
|
if [ -e "$path" ]; then
|
|
cicpoffs="$path"
|
|
cicpoffspath="true"
|
|
else
|
|
echo "Can't find the cicpoff binary"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
packagejsonfunc() {
|
|
if [ -n "$PACKAGEJSONPATH" ]; then
|
|
packagejson="$PACKAGEJSONPATH"
|
|
else
|
|
packagejson="$mainfd/nwjs/nwjs/packagefiles/package.json"
|
|
fi
|
|
packagejsoninfo=$(cat "$packagejson")
|
|
|
|
if [ -n "$PACKAGEJSONPATH" ]; then
|
|
newpackagejson=$(echo "$packagejsoninfo" | sed -e 's@"name": "",@"name": "RPG Maker MV/MZ (cicpoffs mount)",@g' -e 's@"main": ".*@"main": "www/index.html",@' -e 's@"title": "",@"title": "RPG Maker MV/MZ (cicpoffs mount)",@g')
|
|
else
|
|
newpackagejson=$(echo "$packagejsoninfo")
|
|
fi
|
|
|
|
# echo "$packagejson"
|
|
# ln -s "$packagejson" "$nwjstestpath"
|
|
if [ -h "$nwjstestpath/package.json" ]; then
|
|
rm "$nwjstestpath/package.json"
|
|
fi
|
|
echo "$newpackagejson" > "$nwjstestpath/package.json"
|
|
}
|
|
|
|
|
|
while [ $# -ne 0 ]
|
|
do
|
|
arg="$1"
|
|
arg2="$2"
|
|
case "$arg" in
|
|
--help)
|
|
help=true
|
|
info=true
|
|
;;
|
|
--version)
|
|
showversion=true
|
|
info=true
|
|
;;
|
|
--checkreleaseupdates)
|
|
info=true
|
|
incompletefeaturefunc
|
|
;;
|
|
--gui)
|
|
GUIMENU=true
|
|
;;
|
|
--relocate)
|
|
relocaterpgmaker
|
|
;;
|
|
--usestandart)
|
|
# export SDKNWJS=true
|
|
if [ -e "$nwjsfm/packagefiles/usesdk.txt" ]; then
|
|
rm "$nwjsfm/packagefiles/usesdk.txt"
|
|
fi
|
|
;;
|
|
--pixi5install)
|
|
INSTALLPIXI5=true
|
|
;;
|
|
--installtexthookerplugin)
|
|
INSTALLTHPL=true
|
|
;;
|
|
--install500slotsplugin)
|
|
FIVEHUNDREDSAVESLOTSPLUGIN=true
|
|
;;
|
|
--uninstalltexthookerplugin)
|
|
INSTALLTHPL=false
|
|
;;
|
|
--usesdk)
|
|
# export SDKNWJS=true
|
|
touch "$nwjsfm/packagefiles/usesdk.txt"
|
|
if [ -z "$nwjssdkonlylist" ]; then
|
|
updatenwjs
|
|
fi
|
|
;;
|
|
--checkbetaupdates)
|
|
info=true
|
|
incompletefeaturefunc
|
|
;;
|
|
--chooselatestnwjs)
|
|
latestnwjs=true
|
|
;;
|
|
--nwjsversion)
|
|
nwjsversionfunc "$2"
|
|
;;
|
|
--deleteoldnwjs)
|
|
clearoldnwjs=true
|
|
;;
|
|
--updatenwjs)
|
|
updatenwjs
|
|
;;
|
|
--fullupdate)
|
|
fullupdatereinstall
|
|
;;
|
|
--updatescripts)
|
|
updatescriptsgithub=true
|
|
incompletefeaturefunc
|
|
;;
|
|
--makeshortcut)
|
|
case "$arg2" in
|
|
local)
|
|
MAKELOCALSHORTCUT=true
|
|
;;
|
|
desktop)
|
|
MAKEDESKTOPSHORTCUT=true
|
|
;;
|
|
menu)
|
|
ADDTOTHEMENU=true
|
|
;;
|
|
all)
|
|
MAKELOCALSHORTCUT=true
|
|
MAKEDESKTOPSHORTCUT=true
|
|
ADDTOTHEMENU=true
|
|
;;
|
|
|
|
*)
|
|
echo -e "Use --makeshortcut local or desktop or menu all"
|
|
info=true
|
|
;;
|
|
esac
|
|
;;
|
|
--unmount)
|
|
case "$arg2" in
|
|
false)
|
|
unmount=false
|
|
;;
|
|
*)
|
|
echo -e "Use --unmount false
|
|
--unmount true"
|
|
info=true
|
|
;;
|
|
esac
|
|
;;
|
|
--gamepath)
|
|
echo "$@ $2"
|
|
checkgamepath "$2"
|
|
;;
|
|
--useoriginalgamepackagejson)
|
|
if [ -f "$path/package.json" ]; then
|
|
PACKAGEJSONPATH="$path/package.json"
|
|
echo "$path"
|
|
elif [ -f "$mountpath/package.json" ]; then
|
|
PACKAGEJSONPATH="$mountpath/package.json"
|
|
elif [ -f "$PWD/package.json" ]; then
|
|
PACKAGEJSONPATH="$PWD/package.json"
|
|
else
|
|
echo "Can't detect the original package.json"
|
|
fi
|
|
useoriginalgamepackagejson=true
|
|
;;
|
|
--custompackagejsonpath)
|
|
checkifexist "$2"
|
|
PACKAGEJSONPATH="$2"
|
|
custompackagejsonpath=true
|
|
;;
|
|
--nwjspath)
|
|
checknwjspath $2
|
|
;;
|
|
--cicpoffspath)
|
|
checkcicpoffspath "$2"
|
|
;;
|
|
--printrpgmakerlibversions)
|
|
printrpgmakerlibversions=true
|
|
info=true
|
|
;;
|
|
--exportthegame)
|
|
EXPORTTHEGAME=true
|
|
;;
|
|
--bugreport)
|
|
BUGREPORT=true
|
|
;;
|
|
--forceaarch)
|
|
incompletefeaturefunc
|
|
case "$arg2" in
|
|
x86_64)
|
|
forceaarch="x86_64"
|
|
;;
|
|
i386)
|
|
forceaarch="i386"
|
|
;;
|
|
ia32)
|
|
forceaarch="i386"
|
|
;;
|
|
aarch64)
|
|
forceaarch="arm64"
|
|
;;
|
|
arm64)
|
|
forceaarch="arm64"
|
|
;;
|
|
armhf)
|
|
forceaarch="armhf"
|
|
;;
|
|
*)
|
|
# nothing="true"
|
|
echo -e "
|
|
Available architectures are
|
|
x86_64
|
|
i386
|
|
arm64
|
|
armhf"
|
|
info=true
|
|
;;
|
|
|
|
esac
|
|
;;
|
|
--jpnlocale)
|
|
export LANG="ja_JP.utf8"
|
|
;;
|
|
--reinstallmkxpz)
|
|
REINSTALLMKXPZ=true mkxpzdownload
|
|
;;
|
|
--steamskipgui)
|
|
case "$arg2" in
|
|
true)
|
|
echo " " > "$HOME/.config/steamskipgui.txt"
|
|
echo "Gui is disabled now"
|
|
info=true
|
|
;;
|
|
false)
|
|
rm "$HOME/.config/steamskipgui.txt"
|
|
echo "Gui is enabled now"
|
|
info=true
|
|
;;
|
|
*)
|
|
echo -e "Use --steamskipgui true\n--steamskipgui false"
|
|
info=true
|
|
;;
|
|
esac
|
|
;;
|
|
--sourcelinks)
|
|
sourcelinks
|
|
info=true
|
|
;;
|
|
*)
|
|
nothing="true"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "$nwjslist" ]; then
|
|
echo "the nwjs is not installed, please use $ rpgmaker-linux --updatenwjs"
|
|
exit;
|
|
fi
|
|
# --chooselatestnwjs --choosenwjsversion --nwjspath
|
|
#latestnwjs=true $nwjsversion #NWJSPATH
|
|
if [ "$latestnwjs" = "true" ] && [ -n "$nwjsversion" ] || [ "$latestnwjs" = "true" ] && [ -n "$NWJSPATH" ] || [ -n "$nwjsversion" ] && [ -n "$NWJSPATH" ]; then
|
|
echo "You can't use those arguments together --chooselatestnwjs --choosenwjsversion --nwjspath"
|
|
exit 1;
|
|
fi
|
|
|
|
if [ "$useoriginalgamepackagejson" = "true" ] && [ "$custompackagejsonpath" = "true" ] ; then
|
|
echo "You can't use those arguments together --useoriginalgamepackagejson --custompackagejsonpath"
|
|
exit 1;
|
|
fi
|
|
|
|
if [ "$showversion" = true ]; then
|
|
echo -e "$version"
|
|
fi
|
|
|
|
|
|
|
|
if [ "$help" = true ]; then
|
|
echo -e "RPGMaker MV/MZ for Linux [cicpoffs mount] v$version
|
|
|
|
|
|
Usage: rpgmaker-linux [OPTIONS]
|
|
|
|
Options:
|
|
--help Show this help message.
|
|
--version Show version of the program.
|
|
--updatenwjs Update the NW.js to the latest version.
|
|
--chooselatestnwjs Choose the latest version of NW.js available on your PC.
|
|
--nwjsversion <version> Choose the version of NW.js you want to use.
|
|
--deleteoldnwjs Delete old NW.js versions.
|
|
--unmount <true|false> Option to disable mounting of the game folder.
|
|
--gamepath <path> Specify the path to the RPG Maker game.
|
|
--useoriginalgamepackagejson Use the original game package.json file.
|
|
--custompackagejsonpath <path> Specify a custom path for the package.json file.
|
|
--nwjspath <path> Specify the custom path of the NW.js directory.
|
|
--cicpoffspath <path> Specify the cicpoffs binary path.
|
|
--printrpgmakerlibversions Show versions of RPG Maker MV/MZ game libraries.
|
|
--forceaarch <architecture> Force the use of specified architecture (e.g., x86_64, i386, aarch64) (incomplete feature).
|
|
--jpnlocale Use Japanese locale for certain games.
|
|
--checkbetaupdates Check for beta updates (incomplete feature).
|
|
--updatescripts Quickly update only the scripts in this tool from the github (Warning: May be missing files if you updating)
|
|
--fullupdate Perform a full update of the rpgmaker-linux.
|
|
--sourcelinks Print the list of links to the project's source code, documentation, and donation options in the output.
|
|
--usesdk Use the NW.js SDK version.
|
|
--pixi5install Install the Pixi 5 library.
|
|
--install500slotsplugin Install the 500 slots plugin.
|
|
--installtexthookerplugin Install the text hooker plugin.
|
|
--uninstalltexthookerplugin Uninstall the text hooker plugin.
|
|
--reinstallmkxpz Reinstall the mkxpz module.
|
|
--steamskipgui <true|false> Disable gui in steam.
|
|
--makeshortcut <type> Create a shortcut for the game (type: local, desktop, menu, all).
|
|
--bugreport Sends an anonymous report to developer about game data, system information, engine for fixing bugs and errors.
|
|
You can describe in detail the issue or enhancement you would like to see.
|
|
--exportthegame This option allows users to export their RPG Maker game into a distributable format. When this argument is used, the program will package the game
|
|
files, including assets, scripts, and configurations, into a single folder or archive that can be easily shared or deployed.
|
|
You can easily send the exported game to your friends who are using Linux, allowing them to enjoy the game without any additional setup.
|
|
--gui Launch the GUI for easier management.
|
|
|
|
Examples:
|
|
Run the RPG Maker game:
|
|
rpgmaker-linux --gamepath /path/rpg-maker-game/
|
|
|
|
Show version of the program:
|
|
rpgmaker-linux --version
|
|
|
|
Update the NW.js to the latest version:
|
|
rpgmaker-linux --updatenwjs
|
|
|
|
Show versions of RPG Maker game libraries:
|
|
rpgmaker-linux --gamepath /path/rpg-maker-game/ --printrpgmakerlibversions
|
|
|
|
Choose the version of NW.js you want to use:
|
|
rpgmaker-linux --nwjsversion 0.40.0 --gamepath /path/rpg-maker-game/
|
|
|
|
Show donation links:
|
|
rpgmaker-linux --sourcelinks"
|
|
fi
|
|
|
|
updatescript() {
|
|
link="$1"
|
|
path="$2"
|
|
basenfile=$(basename "$2")
|
|
newupdate=$(wget -qO- "$1")
|
|
if [ -n "$newupdate" ]; then
|
|
echo "$newupdate" > "$path" ;
|
|
chmod +x "$path"
|
|
else
|
|
echo "Can't update the steamwrapper"
|
|
fi
|
|
}
|
|
|
|
if [ "$updatescriptsgithub" = "true" ]; then
|
|
|
|
updatescript "https://raw.githubusercontent.com/bakustarver/rpgmakermlinux-cicpoffs/main/nwjs/packagefiles/rpgmaker-linux-steam-wrapper/rpgmaker-linux-cicpoffs-wrapper.sh" "$HOME/.steam/steam/compatibilitytools.d/rpgmaker-linux-steam-wrapper/rpgmaker-linux-cicpoffs-wrapper.sh"
|
|
updatescript "https://raw.githubusercontent.com/bakustarver/rpgmakermlinux-cicpoffs/main/nwjs/packagefiles/nwjsstart-cicpoffs.sh" "$mainfd/nwjs/nwjs/packagefiles/nwjsstart-cicpoffs.sh"
|
|
updatescript "https://raw.githubusercontent.com/bakustarver/rpgmakermlinux-cicpoffs/main/nwjs/dwnwjs.sh" "$mainfd/nwjs/nwjs/dwnwjs.sh"
|
|
|
|
fi
|
|
|
|
yaddata() {
|
|
updatenwjsvar=$(echo "$@" | awk '{print $1}')
|
|
pixiupdatevar=$(echo "$@" | awk '{print $2}')
|
|
localshortcutvar=$(echo "$@" | awk '{print $3}')
|
|
nwjsguivar=$(echo "$@" | awk '{print $4}')
|
|
fivehundredsaveslotspluginvar=$(echo "$@" | awk '{print $5}')
|
|
texthookerset=$(echo "$@" | awk '{print $6}')
|
|
desktopshortcut=$(echo "$@" | awk '{print $7}')
|
|
addtomenuvar=$(echo "$@" | awk '{print $8}')
|
|
sdkvar=$(echo "$@" | awk '{print $9}')
|
|
|
|
# kdialog --msgbox "$updatenwjsvar $pixiupdate $localshortcut $texthookerset dc $desktopshortcut $addtomenuvar $sdkvar $nwjsguivar hh $fivehundredsaveslotspluginvar"
|
|
}
|
|
|
|
guirpgmakermfn() {
|
|
if [ -d "$HOME/.config" ]; then
|
|
configgp="$HOME/.config/rpgmaker-guiconfig.txt"
|
|
else
|
|
configgp="$HOME/rpgmaker-guiconfig.txt"
|
|
fi
|
|
if [ -f "$configgp" ]; then
|
|
configgdata=$(cat "$configgp")
|
|
yaddata "$configgdata"
|
|
newversionlist=$(echo "$allversionsnwjs" | grep -v "^$nwjsguivar$" | sed "1s/^/$nwjsguivar\n/")
|
|
if [ -z "$newversionlist" ]; then
|
|
newversionlist="$allversionsnwjs"
|
|
fi
|
|
# kdialog --msgbox "$nwjsguivar\n--$newversionlist"
|
|
guim=$("$yadp" --title "RPG Maker MV/MZ Options" --text="Please choose your options:" --image="$mainfd/nwjs/nwjs/packagefiles/nwjs128.png" --columns=5 --field "Update NWJS":chk $updatenwjsvar --form --field "Pixi5 Update":chk "$pixiupdatevar" --field="Shorcut Options::LBL" false --field "Local Shortcut":chk "$localshortcutvar" --form --separator=" " --item-separator="\n" --field="Versions::"CBE "$newversionlist" --field "500 Save Slots Plugin":chk "$fivehundredsaveslotspluginvar" --field "Texthooker Plugin":chk "$texthookerset" --field=" :LBL" false --field "Desktop Shortcut":chk "$desktopshortcut" --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field "Show in the Menu":chk "$addtomenuvar" --field "Use SDK version":chk "$sdkvar" --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false)
|
|
else
|
|
guim=$("$yadp" --title "RPG Maker MV/MZ Options" --text="Please choose your options:" --image="$mainfd/nwjs/nwjs/packagefiles/nwjs128.png" --columns=5 --field "Update NWJS":chk true --form --field "Pixi5 Update":chk false --field="Shorcut Options::LBL" false --field "Local Shortcut":chk true --form --separator=" " --item-separator="\n" --field="Versions::"CBE "$allversionsnwjs" --field "500 Save Slots PSlugin":chk false --field "Texthooker Plugin":chk false --field=" :LBL" false --field "Desktop Shortcut":chk false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field "Show in the Menu":chk false --field "Use SDK version":chk false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false --field=" :LBL" false)
|
|
fi
|
|
|
|
if [ -n "$guim" ] ; then
|
|
echo "$guim" > "$configgp"
|
|
else
|
|
exit;
|
|
fi
|
|
yaddata "$guim"
|
|
# echo "$guim"
|
|
|
|
|
|
# exit;
|
|
if [ "$fivehundredsaveslotspluginvar" = "TRUE" ]; then
|
|
# export LANG="ja_JP.utf8"
|
|
export FIVEHUNDREDSAVESLOTSPLUGIN=true
|
|
fi
|
|
|
|
|
|
if [ "$sdkvar" = "TRUE" ]; then
|
|
# echo ccc
|
|
if ! [ -f "$nwjsfm/packagefiles/usesdk.txt" ]; then
|
|
touch "$nwjsfm/packagefiles/usesdk.txt"
|
|
fi
|
|
elif [ "$sdkvar" = "FALSE" ]; then
|
|
if [ -f "$nwjsfm/packagefiles/usesdk.txt" ]; then
|
|
rm "$nwjsfm/packagefiles/usesdk.txt"
|
|
fi
|
|
fi
|
|
|
|
|
|
if [ "$updatenwjsvar" = "TRUE" ]; then
|
|
export skipdownloadifexist=true
|
|
export checkversionnwjs=false
|
|
updatenwjs
|
|
fi
|
|
|
|
if [ "$texthookerset" = "TRUE" ]; then
|
|
INSTALLTHPL=true
|
|
elif [ "$texthookerset" = "FALSE" ]; then
|
|
INSTALLTHPL=false
|
|
fi
|
|
|
|
if [ "$pixiupdatevar" = "TRUE" ]; then
|
|
INSTALLPIXI5=true
|
|
fi
|
|
|
|
|
|
if [ "$localshortcutvar" = "TRUE" ]; then
|
|
MAKELOCALSHORTCUT=true
|
|
fi
|
|
if [ "$desktopshortcut" = "TRUE" ]; then
|
|
MAKEDESKTOPSHORTCUT=true
|
|
fi
|
|
if [ "$addtomenuvar" = "TRUE" ]; then
|
|
ADDTOTHEMENU=true
|
|
fi
|
|
|
|
if [ -n "$nwjsguivar" ]; then
|
|
nwjsversion="$nwjsguivar"
|
|
export skipdownloadifexist=true
|
|
export checkversionnwjs=false
|
|
. "$nwjsfm/dwnwjs.sh" "$nwjsguivar"
|
|
fi
|
|
|
|
}
|
|
|
|
if [ "$clearoldnwjs" = "true" ]; then
|
|
latestversion=$(echo "$allversionsnwjs" | head -n 1)
|
|
while IFS= read -r version; do
|
|
|
|
if ! [[ "${version}" =~ "${latestversion}" ]]; then
|
|
# if ! echo "$version" | grep -q "$latestversion"; then
|
|
echo Deleting "$nwjsfm/nwjs/$version"
|
|
rm -rf "$nwjsfm/nwjs/$version"
|
|
# else
|
|
# echo fff
|
|
# echo "$version"
|
|
fi
|
|
done <<< "$nwjslist"
|
|
|
|
# echo "cc $item - $base"
|
|
|
|
exit
|
|
fi
|
|
|
|
|
|
if [ "$GUIMENU" = "true" ]; then
|
|
if [ "$engine" = "tyrano" ]; then
|
|
echo tyrano;
|
|
# tyranover=v5
|
|
if [ "$tyranover" = "v5" ]; then
|
|
tyranocheckelectron
|
|
fi
|
|
elif [ "$engine" = "mkxpz" ]; then
|
|
echo mkxpz;
|
|
mkxpzdialogoptions
|
|
else
|
|
if [ -n "$SteamEnv" ] && [ -f "$HOME/.config/steamskipgui.txt" ] ; then
|
|
echo skipping gui
|
|
else
|
|
guirpgmakermfn
|
|
fi
|
|
fi
|
|
fi
|
|
# exit;
|
|
|
|
|
|
debuggamelibs() {
|
|
if [ "$found" = "true" ]; then
|
|
|
|
if [ "$gamepath" = "true" ]; then
|
|
nwdllpath="$path/nw.dll"
|
|
nodedllpath="$path/node.dll"
|
|
else
|
|
nwdllpath="nw.dll"
|
|
nodedllpath="node.dll"
|
|
fi
|
|
# echo "$mountpath"
|
|
rpgmvcorefilepath="$mountpath/js/rpg_core.js"
|
|
rpgmzcorefilepath="$mountpath/js/rmmz_core.js"
|
|
|
|
if [ -f "$rpgmvcorefilepath" ]; then
|
|
rpgcorefilepath="$rpgmvcorefilepath"
|
|
elif [ -f "$rpgmzcorefilepath" ]; then
|
|
rpgcorefilepath="$rpgmzcorefilepath"
|
|
fi
|
|
|
|
if [ -f "$nwdllpath" ]; then
|
|
nwdlltext=$(strings "$nwdllpath")
|
|
nwjsversiondll=$(echo "$nwdlltext" | sed -n "s/process.versions\['nw'\] = '//p" | sed -e "s@'.*@@g")
|
|
chromiumversion=$(echo "$nwdlltext" | grep -B 4 '::SHGetSpecialFolderPathW' | grep '\.[0-9]\.[0-9]' | sed -e 's@.*\.\$@@g')
|
|
fi
|
|
rpgcoretext=$(cat "$rpgcorefilepath")
|
|
if [ -f "$nodedllpath" ]; then
|
|
nodeversion=$(strings "$nodedllpath" | grep '/win-.*/node.lib' | sed -e 's@https://nodejs.org/download/release/@@g' -e 's@/win-.*/node.lib@@g')
|
|
fi
|
|
|
|
rpgmakername=$(echo -e "$rpgcoretext" | sed -n "s/Utils.RPGMAKER_NAME = .//p" | sed -e 's@.;@@g')
|
|
rpgmakerversion=$(echo -e "$rpgcoretext" | sed -n 's/Utils.RPGMAKER_VERSION = .//p' | sed -e 's@.;@@g')
|
|
if [ -n "$nwjsversiondll" ]; then
|
|
echo NWJS version - $nwjsversiondll
|
|
fi
|
|
if [ -n "$chromiumversion" ]; then
|
|
echo Chromium version - $chromiumversion
|
|
fi
|
|
|
|
if [ -n "$nodeversion" ]; then
|
|
echo Node version - $nodeversion
|
|
fi
|
|
|
|
if [ -n "$nodeversion" ]; then
|
|
echo Node version - $nodeversion
|
|
fi
|
|
|
|
if [ -n "$rpgmakername" ]; then
|
|
echo RPG Maker Name - $rpgmakername
|
|
fi
|
|
|
|
|
|
if [ -n "$rpgmakerversion" ]; then
|
|
echo RPG Maker version - $rpgmakerversion
|
|
fi
|
|
|
|
if [ -n "$nwjsversiondll" ] && [ -z "$skipffmpeginfo" ] ; then
|
|
echo "
|
|
ffmpeg prebuild link
|
|
https://github.com/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/tag/$nwjsversiondll"
|
|
fi
|
|
|
|
else
|
|
echo "Can't find the game path"
|
|
fi
|
|
}
|
|
|
|
|
|
if [ "$printrpgmakerlibversions" = "true" ]; then
|
|
debuggamelibs
|
|
fi
|
|
|
|
|
|
if [ "$info" = true ]; then
|
|
exit;
|
|
fi
|
|
# echo "$forceaarch"
|
|
|
|
|
|
|
|
if [ -z "$cicpoffspath" ]; then
|
|
cicpoffs="$mainfd/nwjs/nwjs/cicpoffs"
|
|
fi
|
|
|
|
nwjslist=$(ls -p "$nwjsfm/nwjs/" | grep /)
|
|
|
|
if [ -f "$nwjsfm/packagefiles/usesdk.txt" ]; then
|
|
nwjslistd=$(echo "$nwjslist" | grep "sdk")
|
|
# export latestlocal=$(echo "$nwjssdkonlylist" | tail -n 1 | sed -e 's@nwjs-sdk-@@g' -e 's@-linux.*@@g' )
|
|
|
|
else
|
|
nwjslistd=$(echo "$nwjslist" | grep -v "sdk")
|
|
fi
|
|
|
|
if [ "$latestnwjs" = "true" ]; then
|
|
nwjsf="$latestinstallednwjsfd"
|
|
else
|
|
nwjsf=$(ls -tp "$defp" | grep / | head -n 1 | sed -e 's@/$@@g')
|
|
fi
|
|
if [ -n "$NWJSPATH" ]; then
|
|
nwjstestpath="$NWJSPATH"
|
|
echo "$NWJSPATH"
|
|
else
|
|
if [ -n "$nwjsversion" ]; then
|
|
searchpath=$(echo "$nwjslistd" | grep "$nwjsversion" )
|
|
# nwjstestpath="$defp/nwjs/$nwjsversion"
|
|
if [ -n "$searchpath" ]; then
|
|
echo "$searchpath"
|
|
nwjstestpath="$nwjsfm/nwjs/$searchpath"
|
|
# kdialog --msgbox "$nwjstestpath"
|
|
else
|
|
echo no version
|
|
fi
|
|
else
|
|
if [ -z "$nwjsf" ]; then
|
|
nonwjs=true
|
|
fi
|
|
nwjstestpath="$defp/$nwjsf"
|
|
fi
|
|
fi
|
|
|
|
nwjstestpath=$(echo "$nwjstestpath" | sed -e 's@/$@@g')
|
|
# wwwsavesymlink.sh "$@"
|
|
# echo "$nwjstestpath"
|
|
|
|
|
|
if [ "$BUGREPORT" = "true" ]; then
|
|
export gamefdname=$(basename "$npath")
|
|
export lsdatalink=$(ls "$npath" | wget --quiet -O- --post-data "$(cat)" https://paste.c-net.org/)
|
|
if [ -n "$found" ]; then
|
|
export debuggamelibsdata=$(debuggamelibs)
|
|
export pluginsfilepastebin=$(wget --quiet -O- --post-file="$mountpath/js/plugins.js" 'https://paste.c-net.org/')
|
|
export packagejson=$(wget --quiet -O- --post-file="$npath/package.json" 'https://paste.c-net.org/')
|
|
export engine=rpgm
|
|
elif [ "$engine" = "tyrano" ]; then
|
|
export engine=tyrano
|
|
elif [ "$engine" = "mkxpz" ]; then
|
|
export engine=mkxpz
|
|
echo -e "mkxp is a project that seeks to provide a fully open source implementation of the Ruby Game Scripting System (RGSS) interface used in the popular game creation software RPG Maker XP, RPG Maker VX and RPG Maker VX Ace (trademark by Enterbrain, Inc.), with focus on Linux.\nThe goal is to be able to run games created with the above software natively without changing a single file.\n\nIt is licensed under the GNU General Public License v2+.\n\nShould I use mkxp\nmkxp primarily targets technically versed users that are comfortable with Ruby / RGSS, and ideally know how to compile the project themselves.\nThe reason for this is that for most games, due to Win32-API usage, mkxp is simply not a plug-and-play solution, but a building block with which a fully cross-platform version can be created in time.\n\nHow can I fix the problem with the game?\nYou can ask the members of the Discord group and send them the log.\nAlternatively, you can search for game patches on google with the tag mkxp.\nFor example “Your game name + mkxp patches”\n\nGame engine social media links:\nhttps://github.com/mkxp-z/mkxp-z\nhttps://discord.gg/A8xHE8P\nhttps://matrix.to/#/#rpgmaker:mapleshrine.eu" | yad --text-info --width=600 --height=480 --title "Information about the engine"
|
|
elif [ "$engine" = "construct-nwjs" ]; then
|
|
export engine=construct-nwjs
|
|
fi
|
|
if [ -n "$found" ] || [ -n "$engine" ]; then
|
|
# python "/home/pasha/Desktop/Паша/Scripts/python/hardware-info/Script2.py"
|
|
"$nwjsfm/packagefiles/bugreporter"
|
|
else
|
|
echo "Cannot find any game"
|
|
fi
|
|
exit;
|
|
fi
|
|
|
|
if [ "$EXPORTTHEGAME" = "true" ] && [ "$found" = "true" ]; then
|
|
defexportpath="$HOME/Your_exported_games"
|
|
thegamebasename=$(basename "$npath" | sed -e "s@\$@-linux-$arch@g")
|
|
theexpgamep="$defexportpath/$thegamebasename"
|
|
if ! [ -d "$theexpgamep" ]; then
|
|
mkdir -p "$theexpgamep/www"
|
|
fi;
|
|
if ! [ -d "$theexpgamep" ]; then
|
|
mkdir -p "$theexpgamep/www-case"
|
|
fi;
|
|
cp -r "$nwjstestpath"/* "$theexpgamep/"
|
|
if ! [ -d "$theexpgamep" ]; then
|
|
mkdir -p "$theexpgamep/lib"
|
|
fi;
|
|
cp "$cicpoffs" "$theexpgamep/lib"
|
|
cp "$nwjsfm/packagefiles/libulockmgr.so.1" "$theexpgamep/lib"
|
|
cp "$mainfd/nwjs/nwjs/packagefiles/package.json" "$theexpgamep"
|
|
cp "$nwjsfm/packagefiles/filestoexport/start_your_game.sh" "$theexpgamep"
|
|
cp -r "$mountpath" "$theexpgamep/www-case"
|
|
exclude_list=(
|
|
"credits.html"
|
|
"www"
|
|
"icudtl.dat"
|
|
"notification_helper.exe"
|
|
"package.json"
|
|
"d3dcompiler_47.dll"
|
|
"libegl.dll"
|
|
"nw_100_percent.pak"
|
|
"resources.pak"
|
|
"debug.log"
|
|
"libglesv2.dll"
|
|
"nw_200_percent.pak"
|
|
"ffmpeg.dll"
|
|
"locales"
|
|
"nw.dll"
|
|
"swiftshader"
|
|
"game.exe"
|
|
"game_en.exe"
|
|
"node.dll"
|
|
"nw_elf.dll"
|
|
"v8_context_snapshot.bin"
|
|
"update-patch.bat"
|
|
"patch-config.txt"
|
|
"dazed"
|
|
)
|
|
# Loop through files and folders in the game directory
|
|
for item in "$mountpath"/*; do
|
|
# Get the basename of the item and convert it to lowercase
|
|
base0=$(basename "$item" )
|
|
base=$(echo "$base0" | tr '[:upper:]' '[:lower:]')
|
|
echo "$item - $base"
|
|
# Check if the lowercase basename is in the lowercase exclude list
|
|
if [[ " ${exclude_list[@]} " =~ " ${base} " ]]; then
|
|
# echo "cc $item - $base"
|
|
rm -rf "$theexpgamep/www-case/$base0"
|
|
fi
|
|
done
|
|
|
|
# "$mountpath"
|
|
exit;
|
|
fi
|
|
|
|
|
|
|
|
|
|
startnw() {
|
|
if [ -n "$armsys" ]; then
|
|
"$nwjstestpath/nw" --ozone-platform=x11
|
|
else
|
|
if [[ "$XDG_SESSION_TYPE" == "wayland" ]]; then
|
|
echo "wayland detected"
|
|
"$nwjstestpath/nw" --ozone-platform=wayland
|
|
else
|
|
echo "wayland not detected, starting in x11"
|
|
"$nwjstestpath/nw" --ozone-platform=x11
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
#Unmount folder
|
|
|
|
checkandunmount() {
|
|
|
|
|
|
if ! [ -d "$nwjstestpath/www" ]; then
|
|
mkdir -p "$nwjstestpath/www"
|
|
fi;
|
|
if [ -z "$unmount" ]; then
|
|
testf=$(findmnt "$nwjstestpath/www");
|
|
if [ -n "$testf" ]; then
|
|
fusermount -u "$nwjstestpath/www"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
rmsymlinks () {
|
|
# rm "$nwjstestpath/package.json";
|
|
rm "$nwjstestpath/www"
|
|
}
|
|
|
|
mountwww() {
|
|
packagejsonfunc
|
|
if ! [ -h "$nwjstestpath/data" ] && [ -h "$nwjsfm/packagefiles/data" ]; then
|
|
# echo hello;
|
|
cp -a "$nwjsfm/packagefiles/data" "$nwjstestpath/data"
|
|
fi
|
|
|
|
if [ -h "$nwjstestpath/www" ]; then
|
|
rm "$nwjstestpath/www"
|
|
fi
|
|
if ! [ -d "$nwjstestpath/www" ] && [ -z "$nonwjs" ]; then
|
|
mkdir -p "$nwjstestpath/www"
|
|
fi;
|
|
|
|
echo "$cicpoffs" "$mountpath" "$nwjstestpath/www"
|
|
"$cicpoffs" "$mountpath" "$nwjstestpath/www"
|
|
|
|
SECONDS=0;
|
|
while ! [ -d "$nwjstestpath/www/js" ]; do
|
|
|
|
sleep 1
|
|
echo Mounting the folder: Time passed $SECONDS seconds;
|
|
done
|
|
echo -e "Mounting done.
|
|
Total time: $SECONDS seconds"
|
|
|
|
}
|
|
|
|
|
|
plugins-autoinstall() {
|
|
cpfd="$nwjsfm/plugins-autoinstall"
|
|
pluginslistfile="$mountpath/js/plugins.js"
|
|
# echo ggvv
|
|
if [ -n "$(ls -A "$cpfd/js/plugins" )" ] && [ -s "$cpfd/pluginsconf.txt" ] && ! [ -f "$mountpath/pluginsconf.txt" ] ; then
|
|
# echo "hellovvvv"
|
|
pluginset=$(cat "$cpfd/pluginsconf.txt")
|
|
cp -r "$cpfd"/* "$mountpath/"
|
|
cp "$pluginslistfile" "$pluginslistfile.bk"
|
|
sed -e "s@^\[@[\n$pluginset@g" -i "$pluginslistfile"
|
|
# rm "$mountpath/pluginsconf.txt"
|
|
fi
|
|
}
|
|
|
|
if [ "$INSTALLPIXI5" = "true" ]; then
|
|
pixi5install;
|
|
fi
|
|
|
|
|
|
if [ "$FIVEHUNDREDSAVESLOTSPLUGIN" = "true" ]; then
|
|
fivehundredslotsplugininstall;
|
|
fi
|
|
|
|
if [ "$INSTALLTHPL" = "true" ]; then
|
|
texthookerplugininstall;
|
|
elif [ "$INSTALLTHPL" = "false" ]; then
|
|
texthookerpluginuninstall
|
|
fi
|
|
# kdialog --msgbox "ggg $nwjstestpath"
|
|
|
|
|
|
checkandunmount
|
|
|
|
checkthebinaryarch "$cicpoffs"
|
|
|
|
checkthebinaryarch "$nwjstestpath/nw"
|
|
|
|
|
|
|
|
|
|
if [ "$engine" = "tyrano" ]; then
|
|
if [ "$usetyranoelectron" = "true" ]; then
|
|
"$electronfd/electron"
|
|
else
|
|
ln -s "$ndmodulesfd" "$nwjstestpath"
|
|
ln -s "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/tyranoeng" "$nwjstestpath"
|
|
cat "$mainfd/nwjs/nwjs/packagefiles/tyranobuilder/package.json" > "$nwjstestpath/package.json"
|
|
startnw
|
|
fi
|
|
elif [ "$engine" = "mkxpz" ]; then
|
|
|
|
mkxpfunc
|
|
elif [ "$engine" = "nscripter" ]; then
|
|
"$nwjsfm/packagefiles/onsyuri/onsyuri" --root "$npath" --font "$nwjsfm/packagefiles/onsyuri/umeplus-gothic.ttf"
|
|
elif [ "$engine" = "construct-nwjs" ]; then
|
|
|
|
if [ -f "$nwjstestpath/package.nw" ]; then
|
|
rm "$nwjstestpath/package.nw"
|
|
fi
|
|
if [ -f "$nwjstestpath/package.json" ]; then
|
|
rm "$nwjstestpath/package.json"
|
|
fi
|
|
ln -s "$npath/package.nw" "$nwjstestpath"
|
|
startnw
|
|
elif [ "$found" = "true" ]; then
|
|
# rmsymlinks
|
|
mountwww
|
|
plugins-autoinstall
|
|
if [ -n "$MAKELOCALSHORTCUT" ]; then
|
|
makelocalshortcut
|
|
fi
|
|
if [ -n "$MAKEDESKTOPSHORTCUT" ]; then
|
|
makedesktopshortcut
|
|
fi
|
|
if [ -n "$ADDTOTHEMENU" ]; then
|
|
makethemenushortcut
|
|
fi
|
|
startnw
|
|
# sleep 60;
|
|
checkandunmount
|
|
fi
|
|
|
|
|
|
if [ -n "$notfound" ]; then
|
|
echo "Can't find any game in $npath"
|
|
exit 1
|
|
fi
|