Benutzerdefinierte Skripte hinzufügen

SpielzeitManager bietet die Möglichkeit, benutzerdefinierte Skripte nach oder vor dem Spielen eines Spieles, auszuführen. Du kannst beispielsweise ein eigenes Skript schreiben, welches Screenshots aus dem Spiel umbenennt, verschiebt oder sogar Backups deiner Speicherstände erstellt.

Damit die Funktion der Skripte aktiviert wird, müssen zunächst in den Einstellungen die erweiterten Funktionen aktiviert werden. Das geht unter „Extras“ → „Einstellungen“ → „Allgemein“:

Skripte werden mit den erweiterten Funktionen freigeschaltet.

Anschließend taucht im Hauptfenster unter dem Menüpunkt Spiel der neue Punkt „Skript“ auf:

Der Dialog für Skripte lässt sich über das Menü aufrufen.

Es öffnet sich schließlich der entsprechende Dialog:

Jedem Spiel lassen sich zwei verschiedene Skripte zuordnen.

Es gibt zwei Arten von Skripten, die hier eingestellt werden können: „Vor dem Spielen“ und „Nach dem Spielen“. Das Skript „Vor dem Spielen“ wird ausgeführt, wenn ein Spiel über den SpielzeitManager gestartet wird. Optional kann SpielzeitManager das eigentliche Starten des Spiels hinauszögern, bis das Skript fertig ausgeführt ist. Das Skript „Nach dem Spielen“ wird ausgeführt, wenn das Spiel beendet wurde.

Ein Skript ist immer an ein Spiel gebunden. Sollen für ein Spiel mehrere Skripte ausgeführt werden, muss ein Skript hinzugefügt werden, welches wiederum die anderen gewünschten Skripte ausführt.
Darüber hinaus bietet SpielzeitManager auch die Möglichkeit, ein Skript beim Beenden von SpielzeitManager auszuführen. Du kannst es in den Einstellungen hinterlegen.
Die Skripte lassen sich in jeder beliebigen Skriptsprache schreiben.
Um ein Skript wieder zu entfernen, genügt es mit der rechten Maustaste auf den Pfad zu klicken und Zurücksetzen auszuwählen. Das Skript wird dadurch nicht von der Festplatte gelöscht und lässt sich bei Bedarf später wieder dem Spiel zuordnen.

Beispielskript: Fraps-Screenshots umbenennen

Während ich Computerspiele spiele, nehme ich gerne Screenshots auf. Diese Screenshots nehme ich in der Regel mit dem Tool Fraps auf. Fraps benennt die Screenshots standardmäßig nach folgendem Schema:

Spieltitel Zeitstempel.Extension

Da der Spieltitel nicht immer meinen Wünschen entspricht, habe ich ein Skript geschrieben, welches den Spieltitel nach meiner Spielsitzung automatisch nach meinen Wünschen anpasst. Im folgendem Beispiel wird der Spieltitel Oblivion durch den Spieltitel Nehrim ersetzt. In meinem Beispiel wird also „oblivion 2016-03-09 19-34-10-81.png“ in „nehrim 2016-03-09 19-34-10-81.png“ umbenannt. Der Zeitstempel bleibt natürlich unangetastet.

@echo off

REM Copyright by Nocksoft
REM http://www.nocksoft.de
REM - - - - - - - - - - - - - - - - - -
REM Erstellt von:	Rafael Nockmann
REM Aktualisiert:	10.03.2016

REM Beschreibung:
REM Benennt Dateien nach bestimmten Kriterien um.

REM ##############################################################################################

setlocal EnableDelayedExpansion


rem START Optionen

rem Anfangspunkt der Suche.
set path=D:\Bilder\Screenshots\Fraps

rem Alter und neuer Teilstring des Dateinamens.
set oldSubstring=oblivion
set newSubString=nehrim

rem Es werden nur Dateien berücksichtigt, die mindestens n Tage alt sind. Beispiel: -5
rem Es werden nur Dateien ab dem dd.mm.yyyy berücksichtigt. Beispiel: 09.03.2016
set days=%date%

rem Gibt an, ob auch in Unterordnern gesucht werden soll.
set recursive=false

rem Logdatei.
set logFile=D:\Software\Games\spielzeitmanagerscripts\nehrim_renameScreenshots.cmd.log

rem ENDE Optionen



if /i %recursive%==true (
	set recursive=-s
) else (
	set recursive=
)


for /f "delims=" %%i in ('C:\Windows\System32\forfiles -p %path% %recursive% -m *%oldSubstring%*.* -d %days% -c "cmd /c echo @path"') do (
	set file=%%i
	set newFileName="!file:%oldSubstring%=%newSubString%!"


	rem Dateinamen aus Dateipfad ermitteln
	for /f "delims=" %%f in (!newFileName!) do (
		set newFileName=%%~nxf
	)


	ren !file! "!newFileName!"
	
	set timestamp=%date% %time:~0,8%
	set output=!timestamp!: !file! wurde in "!newFileName!" umbenannt.
	echo !output!
	echo !output! >> %logFile%
)

echo Der Vorgang wurde erfolgreich abgeschlossen.
echo. >> %logFile%

pause

Dieses Skript benennt nur Screenshots vom aktuellen Tag um. Um das Skript zu verwenden, müssen mindestens folgende Dinge an die eigene Umgebung angepasst werden:

  • path: Hier ist der Pfad anzugeben, in dem die Screenshots liegen. Enthält der Pfad Leerzeichen, ist er dringend in Anführungszeichen zu setzen. Der Pfad darf keinen abschließenden Backslash enthalten.
  • oldSubstring: Alter Spieltitel.
  • newSubstring: Neuer Spieltitel.
  • logFile: Pfad zur Logdatei. Enthält der Pfad Leerzeichen, ist er dringend in Anführungszeichen zu setzen.

Anschließend kann das Skript in einem beliebigen Texteditor als Batchdatei (*.cmd) gespeichert und in SpielzeitManager dem entsprechenden Spiel hinzugefügt werden.

Beispielskript: Spielstände automatisch sichern

(Fast) jeder Spieler kennt es: Ein Spielstand ist kaputt und lässt sich nicht mehr laden oder man hat im Spiel eine falsche Entscheidung getroffen und den entsprechenden Spielstand überschrieben. Um für diesen Fall gewappnet zu sein, zeige ich ein Skript, welches nach jedem Spielen ein neues Backup der Spielstände anlegt. Damit die Festplatte nicht explodiert, werden Backups, die älter als n Tage alt sind, gelöscht. Das Skript setzt ein installiertes 7-Zip im folgenden Pfad voraus: C:\Program Files\7-Zip\
7z.exe.

@echo off

REM Copyright by Nocksoft
REM http://www.nocksoft.de
REM - - - - - - - - - - - - - - - - - -
REM Erstellt von:	Rafael Nockmann
REM Aktualisiert:	12.03.2016

REM Beschreibung:
REM Legt Backups der Spielstände an.

REM ##############################################################################################

setlocal EnableDelayedExpansion


rem START Optionen

rem Speicherort zu dem Spielstand.
set sourcePath="C:\Users\rafae\Documents\Stronghold Crusader 2\"

rem Zielspeicherort für Backup
set targetPath=D:\Backups\Savegames\Stronghold Crusader 2\
set targetPathToClean="D:\Backups\Savegames\Stronghold Crusader 2"

rem Logdatei.
set logFile=D:\Software\Games\spielzeitmanagerscripts\strongholdcrusader2_backupSavegame.cmd.log

rem Es werden nur Dateien berücksichtigt, die mindestens n Tage alt sind. Beispiel: 10
set days=10

rem ENDE Optionen


set timestamp=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%%time:~3,2%
set backupFile=backup_%timestamp%.zip
set fullBackupPath="%targetPath%%backupFile%"


"C:\Program Files\7-Zip\7z.exe" a %fullBackupPath% %sourcePath%

set timestamp=%date% %time:~0,8%
set output=%timestamp%: Backup wurde erfolgreich erstellt: %fullBackupPath%
echo %output%
echo %output% >> %logFile%

echo Backup erfolgreich erstellt.


for /f "delims=" %%i in ('C:\Windows\System32\forfiles -p %targetPathToClean% -m *.zip -d -%days% -c "cmd /c echo @path"') do (
	set file=%%i

	del !file!

	set timestamp=%date% %time:~0,8%

	set output=!timestamp!: Die Datei !file! wurde erfolgreich gelöscht.
	echo !output!
	echo !output! >> %logFile%
)

echo Alte Backups erfolgreich gelöscht.

pause

Dieses Skript legt nach jeder Spielsitzung ein Backup der Spielstände an. Um das Skript zu verwenden, müssen folgende Dinge an die eigene Umgebung angepasst werden:

  • sourcePath: Hier ist der Pfad anzugeben, in dem die Spielstände liegen. Enthält der Pfad Leerzeichen, ist er dringend in Anführungszeichen zu setzen. Der Pfad muss einen abschließenden Backslash enthalten.
  • targetPath: Enthält den Pfad zu den Backups. Der Pfad muss einen abschließenden Backslash enthalten.
  • targetPathToClean: Enthält den Pfad zu den Backups. Der Pfad darf keinen abschließenden Backslash enthalten.
  • logFile: Pfad zur Logdatei. Enthält der Pfad Leerzeichen, ist er dringend in Anführungszeichen zu setzen.
  • days: Bestimmt die Anzahl an Tage. Backups die älter als dieser Wert sind, werden gelöscht.
Wer 7-Zip nicht installieren kann oder will, kann auch die Standalone-Konsolenversion von 7-Zip verwenden. Im Skript ist dann der Verweis auf die 7za.exe des heruntergeladenen Archivs zu setzen.

Anschließend kann das Skript in einem beliebigen Texteditor als Batchdatei (*.cmd) gespeichert und in SpielzeitManager dem entsprechenden Spiel hinzugefügt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.