Garry's Mod

Garry's Mod

Nicht genug Bewertungen
[DE] TTT Discord
Von marcel
"Tode Spieler können nicht sprechen!" - Das gilt auch für TTT Spieler in Discord.
In diesem Guide zeige ich dir Schritt für Schritt, wie du den TTT Discord Bot auf deinem Server einrichtest.

This guide is also available in English.

Workshop Objekt: http://steamcommunity.com/sharedfiles/filedetails/?id=1350367721
Github Repository: https://github.com/marceltransier/ttt_discord_bot
   
Preis verleihen
Favorisieren
Favorisiert
Entfernen
Einleitung
"Tode Spieler können nicht sprechen!" - Das ist eine grundlegende Regel bei dem Spielmodus TTT.
Manchmal rufen Spieler jedoch noch schnell nach ihrem Tod den Namen des Mörders in die Runde, obwohl sie schon tot sind.
Um das zu verhindern, können tote Spieler im Ingame-Voice-Chat nicht mit den lebenden kommunizieren.
Weil jedoch die Sprachqualität im Ingame-Voice-Chat sehr miserabel ist, und niemand die Push-to-talk Funktion mag, werden überwiegend Programme wie Teamspeak oder Discord für die Kommunikation zwischen den Spielern eingesetzt.
Für Teamspeak wurde von der Community bereits die [TTT] TS3 Bridge entwickelt, die tote Spieler im Teamspak automatisch mutet.
Für Discord gab es bis jetzt noch keine solche Bridge. Deshalb habe ich es mir zur Aufgabe gemacht einen Discord-Bot zu entwickeln, der mit einem integriertem Garry's Mod Addon interagiert und die gestorbenen Spieler aus TTT in Discord mutet. Am Ende der Runde werden alle wieder entmutet und es kann über die Runde geredet werden.
Vorraussetzungen
Um diesem Guide folgen zu können musst du natürlich schon einen Garry's Mod Server mit TTT installiert haben.
In dieser Anleitung zeige ich die Installation am Beispiel des Betriebssystems Debian 8 (Jessie).
Alle Schritte sollten aber auch auf andere Betriebssysteme übertragbar sein.
Installation
Zuallererst musst du dich mit dem Server verbinden.
Ich öffne dazu ein Terminal und verbinde mich via ssh mit meinem Server.
ssh user@domain.example

Node.js installieren
Als nächstes muss node.js installiert werden.
Dazu führe ich diese beiden Befehle aus:
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - sudo apt-get install -y nodejs
Falls du ein anderes Betriebssystem auf deinen Server benutzt, kannst du hier[nodejs.org] nachschauen, wie du node.js installieren kannst.

Bot herunterladen
Um den Bot herunterzuladen kannst du das Github Repository entweder als .zip Datei downloaden[github.com] und entpacken oder einfach mit dem 'git clone' Befehl klonen. Um diesem Befehl nutzen zu können, muss Git installiert werden (falls es noch nicht installiert ist). Danach kann das Repository geklont werden.
Navigiere in das discord_bot Verzeichnis im geklontem Repository
cd ttt_discord_bot/discord_bot

Abhängigkeiten installieren
Wenn du dich im 'discord_bot' Ordner befindest kannst du mit diesem Befehl die benötigten Pakete installieren lassen:
npm install

Config erstellen
Benenne die Datei 'config.json.example' in 'config.json' um. Zu dieser Datei kommen wir später nocheinmal.

Bot erstellen
Jetzt muss ein Discord Bot erstellt werden. Gehe dazu auf diesen Link[discordapp.com] und melde dich gegebenenfalls an. Erstelle eine neue Anwendung indem du auf 'New App' klickst.

Hier kannst du einen Namen für die Anwendung wählen, sowie eine schreiben und ein App Icon hochladen. Als Name habe ich 'TTT Discord Bot' gewählt, die Beschreibung habe ich leer gelassen und als App-Icon habe ich dieses hier[github.com] benutzt.

Nachdem du auf 'Create App' geklickt hast, findest du etwas weiter unten einen 'Create a Bot User' Button. Klicke diesen, um den Bot zu erstellen.

Den Haken bei 'Public Bot' kannst du entfernen, weil der Bot sowieso nur auf einem Server funktioniert.
Klicke bei Token auf 'click to reveal' um den Bot Token anzuzeigen.
Kopiere diesen und füge ihn in der config.json unter 'token' ein.
Dazu verwende ich Vim. Du kannst aber auch einen anderen Editor verwenden.
vim config.json
Unter Linux kann man mit Strg+Shift+V den Inhalt der Zwischenablage in ein Terminal einfügen. Wer Putty benutzt macht dies mit einem Rechtsklick.

Jetzt muss in der Config noch 'guild' und 'channel' eingetragen werden.
Bei 'guild' musst du die ID von deiner Guild (deinem Discord Server) eintragen.
Um diese einzusehen, musst du in den Discord Einstellungen unter Erscheinungsbild den Entwicklermodus (ganz unten) aktivieren.

Wenn du das gemacht hast, kannst du einfach mit einem Rechtsklick auf deine Guild klicken und 'ID kopieren' auswählen, um diese dann in der Config über 'guild' einzutragen.
Trage bei 'channel' die ID von dem TTT Channel ein. Diese bekommt du genauso wie die Guild ID, indem du Rechtsklick auf den Channel klickst. Wenn noch kein spezieller TTT Channel existiert, empfehle ich dir einen solchen anzulegen.

Deine Config Datei sollte jetzt so ähnlich wie diese hier aussehen:


Bot zu dem Discord Server hinzufügen
Jetzt muss der Bot natürlich noch zu deinem Discord Server hinzugefügt werden.
Kopiere dazu folgenden Link und ersetzt YOUR_CLIENT_ID_HERE mit der Client ID des Bots. Diese findest du bei deinem Bot ganz oben unter 'App Details'
https://discordapp.com/oauth2/authorize?&client_id=YOUR_CLIENT_ID_HERE&scope=bot&permissions=4194304
Öffne den abgeänderten Link in deinem Browser, wähle den Server aus, dessen ID du in die Config eingetragen hast, lasse den Haken bei 'Mitglieder stumm schalten' gesetzt und klicke auf Autorisieren.

Bot starten
Um den Bot zu starten, starte einfach node mit dem discord_bot Verzeichnis als Argument. Weil wir schon in diesem Verzeichnis sind, gebe ich '.' als Argument an, um auf das aktuelle Verzeichnis zu verweisen.
node .
Wenn der Bot erfolgreich gestartet ist, sieht es so aus:

Damit ich die SSH Verbindung trennen kann, ohne den Bot zu stoppen, und dass ich bei erneuten Verbinden dort weiter machen kann, wo ich aufgehört habe benutze ich tmux[wiki.ubuntuusers.de].

Addon hinzufügen
Jetzt muss noch das Gmod Addon hinzugefügt werden.
Füge es entweder einfach in die Workshop Collection vom Server:
http://steamcommunity.com/sharedfiles/filedetails/?id=1350367721

Oder verschiebe den 'gmod_addon' Ordner in das 'garrysmod/addons' Verzeichnis und benenne ihn sinnvoll. (z.B. ttt_discord_bot)

Zurzeit musst du den zweiten Weg nehmen (über den Addons Ordner), weil das Addon im Steam Workshop nicht mit der neusten Version auf Github kompatibel ist.

Server (re)starten
Und zu guter Letzt: Starte den Server! (Oder restarte ihn, falls er noch läuft)
Benutzung
Sobald du dem Server joinst, bekommst du eine Nachricht, dass du noch nicht mit Discord verbunden bist.
Du kannst dich ganz einfach verbinden, indem du '!discord DeinDiscordTag' in den Chat schreibst.
Also z.B.
!discord marceljs#4402
Es reicht aber auch meistens nur der Code hinter dem Hashtag (Diskriminator), solang niemand anderes mit dem gleichen Diskriminator auf dem Discord Server ist.
Sobald du dich einmal verbunden hast wird deine Discord ID deiner Steam ID zugeordnet.
Du musst dich nach einem reconnect also nicht erneut verbinden.

Wenn du mit Discord verbunden und im richtigen Voice-Channel bist, die Runde grade läuft (also kein Preparing oder Round End) und du dann stirbst, wirst du automatisch in Discord gemutet.
Feedback
Wenn du Fragen hast, zögere nicht diese in den Kommentaren zu stellen.
Über Feedback und Verbesserungsvorschläge würde ich mich sehr freuen!
Bitte dafür diese Diskussion benutzen.
Wenn du ein Tutorial auf Youtube über die Installation und Verwendung des Bots machst, kann ich es gerne in diesem Guide und auf der Workshop Seite verlinken.
Andere TTT must-haves ;)
Ein Traitoritem mit dem man sich auf andere werfen kann:
http://steamcommunity.com/sharedfiles/filedetails/?id=1326870555
Ein passives Traitoritem nachdem alle von dir gedroppten Waffen unanschaubar sind.
(Wenn Spieler, die nicht in deinem Team sind die Waffen anschauen, sterben sie):
http://steamcommunity.com/sharedfiles/filedetails/?id=1330555436
23 Kommentare
MauriceGS 17. Juli 2023 um 13:13 
Nen Video tutorial wäre nice, ich kriegs einfach ned hin :/
Noxa 15. Feb. 2020 um 4:20 
Yuki 21. Sep. 2019 um 15:40 
fortnite
crmpl 29. Juni 2019 um 2:15 
Hallo marcel.js.
Ich habe den selben Fehler wie SnowStorm habe aber noch keine Antwort finden können:
Was heißt es wenn nach der Eingabe des Node Befehls diese Meldungen erscheinen?
(node:7982) DeprecationWarning: Collection#find: pass a function instead
(node:7982) DeprecationWarning: Collection#find: pass a function instead

Schonmal danke im Vorraus für Rückmeldungen ( ;

Edit:

Jetzt kommt auch noch diese Meldung:
(node:8807) DeprecationWarning: Collection#filterArray: use Collection#filter instead

Der Bot muted auch nicht mehr obwohl die Meldung "You are connected with discord" kommt.
Und er bleibt auch nur online wenn ich den Node Befehl ausführe und dann nichts mehr mache.
Wenn ich den Server wie beschrieben danach neustarte geht der Bot auch down.
Enterino 24. Mai 2019 um 13:52 
Hallöchen, wir haben jetzt wieder einen TTT Server :) Leider ohne V-Server, nur ein Gameserver. Kann ich trotzdem den Bot über meinen PC zeitgleich laufen lassen? Ich müsste ihn dann ja mit einer IP verbinden oder? Geht das?
Leon 20. Dez. 2018 um 10:36 
juhu melde mich mal wieder da wir jetzte ofters ne runde machen habe ich mich wieder hingesetzt und es versucht hin zu bekommen diesemal habe ich es auf anhieb geschaft aber leider muss ich sagen das discor so doof ist und ein gemutet icon da hin macht und wehr ein 2ten monitor hat kann es leider sehen wehr gemutet ist also tot das muste man irgent wie umgehen können das es nicht sichtbar ist dann wehre es echt perfect zu 100 % so ist es leider nur zu 70% da muste man irgent was noch machen können versuche mal das icon irgentwie raus zu bekomen ^^
Leon 18. Dez. 2018 um 17:38 
gibt es davon ein video oder kannste mal eins machen oder wie schaut es aus mit der version die du machen wolltest ohne nodejs wiwe ich es in der englischen version gesehen habe und geht das eigentlisch das wen einer im discord oder teamspeak gemutet wird das die anderen es nicht sehen können weil sonst wissen die ja gleisch wer tot ist und das soll ja nicht sein ?!
lokofe 9. Nov. 2018 um 7:08 
Gibt es irgendeine möglichkeit dieses Addon auf einem Nitrado server zum laufen zu bekommen?
SnowStorm 2. Nov. 2018 um 3:13 
Was heißt es wenn nach der Eingabe des Node Befehls diese Meldungen erscheinen?
(node:7982) DeprecationWarning: Collection#find: pass a function instead
(node:7982) DeprecationWarning: Collection#find: pass a function instead

Schonmal danke im Vorraus für Rückmeldungen ( ;

Edit:

Jetzt kommt auch noch diese Meldung:
(node:8807) DeprecationWarning: Collection#filterArray: use Collection#filter instead

Der Bot muted auch nicht mehr obwohl die Meldung "You are connected with discord" kommt.
Und er bleibt auch nur online wenn ich den Node Befehl ausführe und dann nichts mehr mache. Wenn ich den Server wie beschrieben danach neustarte geht der Bot auch down.
Leon 1. Mai 2018 um 17:14 
ja leider kann ich das nicht sagen weil sie wieder mal alle weg sind und keiner mehr Gmod zockt arbeit wieder umsonst naja danke dir werde mich wieder an die arbeit machen irgent ein anderern server wieder mal auf zu bauen mal schauen was das nexte game ist oder wan wir wieder gmod spielen vielen danke für die hilfe hoffe bis dahin gibt es ne neue version oder keine anung naja man hört sich kann ja sein am wochenende oder so das ich sie wieder dazu bekomme mit zu machen wehr weis wehr weis