Huhu zusammen,
auf Wunsch aus diesem Forumsbeitrag habe ich einen Standalone Free SCUM Bot entwickelt.
Das Tool ist weiterhin ein Community-/Bastelprojekt und noch nicht perfekt durchgetestet, aber inzwischen deutlich weiter als die erste Version.
Der Bot reagiert auf Chatbefehle von Spielern und kann daraufhin frei definierbare SCUM-Adminbefehle ausführen. Ursprünglich war nur !welcomepack geplant, inzwischen gibt es aber eine kleine Steuerungszentrale im Frontend.
Aktueller Stand:
- Spielerbefehle über das Frontend anlegen, z. B. !welcomepack, !vote, !kit
- Ablaufskripte im .sfb-Format
- Variablen wie {player}, {steamId}, {args}, {arg1}, {arg2}
- Spielerposition per {playerlocation} aus #ListPlayers
- Z-Offset für Spawnpositionen, z. B. {playerlocation+50}
- Wartezeiten im Skript, z. B. wait 500ms, wait 30s
- Ausführungsregeln pro Befehl:
- Einzigartig pro Spieler
- 1x täglich pro Spieler
- Zeitbasiert / alle X Stunden
- Immer
- Übersicht der ausgeführten Spielerbefehle
- Timer / Sperren können im Bot zurückgesetzt werden
- Zufallsblöcke in Skripten mit randomblock, case, endrandomblock
- Versionsprüfung über meine Homepage
- Patchnotes-Anzeige
- Admin-Warnung, falls der Bot nicht als Administrator gestartet wurde
Wichtig:
Man benötigt wie bekannt einen zweiten PC oder eine zweite Windows-Session mit extra Steamaccount und SCUM.
Zusätzlich benötigt ihr:
- AutoHotkey v2
- .NET Desktop Runtime
AutoHotkey:
https://www.autohotkey.com/
.NET prüft das Programm beim Start und leitet euch bei Bedarf zur Microsoft-Downloadseite weiter.
Damit der Bot zuverlässig Tasteneingaben in SCUM senden kann, sollte der Bot als Administrator gestartet werden. Wenn SCUM als Admin läuft und der Bot nicht, kommen die Tastendrücke meist nicht im Spiel an. Das Programm zeigt inzwischen eine Warnung an, wenn es nicht als Administrator läuft.
Chatlog / Verbindung:
Möglich ist FTP, SFTP oder lokal. Zuletzt wurde hauptsächlich FTP getestet.
Der Server-Chatlog-Ordner ist nur bei lokaler Nutzung relevant. Wenn das Tool bei FTP/SFTP wegen diesem Feld meckert, könnt ihr dort irgendeinen vorhandenen Ordner auswählen.
Start-Reihenfolge:
1. SCUM starten
2. In den Videoeinstellungen auf Window Mode stellen
3. Auf den Server connecten
4. Chat auf Global stellen
5. Bot als Administrator starten
6. Einstellungen prüfen
7. Bot starten
Per RDP wird es vermutlich nicht zuverlässig funktionieren, sobald die RDP-Sitzung geschlossen wird. Das liegt daran, dass Windows/SCUM dann keine normalen Tastatureingaben mehr sauber annimmt.
---
Beispiel: einfacher Spielerbefehl
Im Frontend könnt ihr einen Befehl anlegen:
Spielerbefehl:
!welcomepack
Ablaufskript:
welcomepack.sfb
Regel:
Einzigartig pro Spieler
Dann wird das Skript nur einmal pro Spieler ausgeführt.
---
Beispiel für ein .sfb-Skript:
{player} dein Welcomepack ist auf dem Weg, bitte bleib stehen!
wait 1s
#teleportto {player}
wait 30s
#spawnitem Water_05l 1 Location {playerlocation+50}
wait 500ms
#spawnitem BP_Weapon_98k_Kar98 1 Location {playerlocation+50}
wait 500ms
#spawnitem BP_Weapon_Magazine_Kar98 2 Location {playerlocation+50}
{player} dein Welcomepack wurde zugestellt.
{playerlocation+50} bedeutet:
Der Bot fragt vorher über #ListPlayers die Position des Spielers ab und erhöht die Z-Koordinate um 50, damit Items nicht im Boden stecken.
Das Ergebnis wird im SCUM-Format gesendet, z. B.:
"[-554320 -846077.312 13288.3]"
---
Verfügbare Variablen im Skript:
{player} Spielername
{steamId} Steam-ID des Spielers
{command} Ausgelöster Spielerbefehl
{args} Alle Argumente nach dem Spielerbefehl
{arg1} Erstes Argument
{arg2} Zweites Argument
{arg3} Drittes Argument
{now} Aktuelles Datum mit Uhrzeit
{date} Aktuelles Datum
{time} Aktuelle Uhrzeit
{playerlocation} Spielerposition
{playerlocation+50} Spielerposition mit Z-Offset +50
---
Beispiel für Argumente:
Spieler schreibt:
!vote settime 1
Skript:
#vote {args}
Ergebnis:
#vote settime 1
Oder mit einzelnen Argumenten:
#vote {arg1} {arg2}
Ergebnis:
#vote settime 1
---
Wartezeiten:
wait 500ms
wait 1s
wait 30s
wait 2m
wait 1h
Damit kann der Admin selbst bestimmen, wie viel Abstand zwischen Befehlen liegt.
---
Randomizer / Zufallsblöcke:
randomblock
case 70
#spawnitem Water_05l 1 Location {playerlocation+50}
wait 500ms
#spawnitem Bread 1 Location {playerlocation+50}
case 20
#spawnitem Antibiotic_Pill_Single 2 Location {playerlocation+50}
case 10
#spawnitem BP_Cash 1000 Location {playerlocation+50}
endrandomblock
Pro Ausführung wird genau ein case-Block gewählt.
Die Werte hinter case sind Gewichtungen. Sie müssen nicht zusammen 100 ergeben.
Beispiel:
case 70
case 20
case 10
entspricht ungefähr 70 %, 20 %, 10 %.
case 20
case 60
entspricht 25 % und 75 %.
Ohne Zahl zählt ein case automatisch als Gewicht 1.
---
Gespeichert werden die Daten im Programmordner unter Data.
Dort liegen z. B.:
- Befehlskonfiguration
- .sfb-Skripte
- Spielerstatus / ausgeführte Befehle
Die Spieler-Ausführungen können inzwischen direkt im Bot eingesehen und zurückgesetzt werden. Man muss also nicht mehr zwingend manuell in JSON-Dateien herumeditieren.
---
Hinweis:
Das Tool sendet SCUM-Befehle über AutoHotkey ins aktive SCUM-Fenster. Es ist also kein Serverplugin und keine direkte RCON-Lösung. Der Bot braucht ein laufendes SCUM-Spiel, einen eingeloggten Adminaccount und ein aktives Chatfenster.
Für Bastler hängen Rohdaten / Sourcecode mit dran.
Aktuellster Sourcecode:
Feedback, Tests und Verbesserungsvorschläge sind gerne willkommen.