Scripts

From Team Fortress Wiki
< Scripting
Revision as of 20:09, 4 November 2012 by Robin0van0der0vliet (talk | contribs) (Updated link.)
Jump to: navigation, search

Scripts sind Konfigurationsdateien die mit Tastenbelegungen und Aliasen komplexe Handlungen oder längere Konsolenbefehle automatisieren.

'Tastenbelegungen (keybinds) legen einen Konsolenbefehl auf eine bestimmte Taste fest. Damit lassen sich zum Beispiel Waffen wechseln oder vordefinierte Mitteilungen in den Chat schreiben.

  • Aliase schaffen "neue" Befehle indem sie eine Folge von Konsolenbefehlen ausführen. Ein Alias kann beispielsweise Springen und Ducken gleichzeitig als geduckten Sprung ausführen. Dies kann einer Taste zugewiesen werden.

Diese Scripts variieren in ihrer Komplexität und können einfache Listen von Befehlen, selbstreferentielle Schleifen oder Aliase sein, die sich gegenseitig neu definieren. Mit genug Zeit und Aufwand lassen sich Werkzeuge programmieren, die eine komplexe Handlung mit nur einer Taste ausführt.

Grundlegendes

Team Fortress 2 liest viele Spieldateien automatisch und führt deren Befehle aus. Diese Dateien sind:

  • config.cfg - Dies ist die Standard-Konfigurationsdatei, die das Spiel verändert sobald mittels Optionsmenü Tastenbelegungen oder Einstellungen verändert werden. Es ist zwar möglich diese Datei problemlos zu ändern, allerdings ist es einfacher, diese unverändert zu lassen.
  • autoexec.cfg - Dies ist die Standard-Datei für persönliche Tastenbelegungen und Aliase. Oft ist es aber einfacher, für verschiedene Scripts eigene .cfg Dateien anzulegen und diese von der autoexec.cfg automatisch ausführen zu lassen.
  • <Klasse>.cfg - Jede Klasse besitzt eine eigene Konfigurationsdatei die automatisch ausgeführt wird, wenn auf die entsprechende Klasse gewechselt wird. Hier lassen sich spezifische Tastenbelegungen für einzelne Klassen festlegen aber auch in diesem Fall kann es hilfreich sein, für Scripts eigene Dateien anzulegen und diese von der Klassenkonfiguration ausführen zu lassen.

Syntax

Hier ist eine Liste der syntaktischen Regeln:

  • Für jede Tastenbelegung/Alias muss folgendes Format verwendet werden:
Befehl <Aussage1> <Aussage2>
  • Befehl ist dabei die Art von Script, die erstellt werden soll. Es gibt drei Möglichkeiten:
  • bind (Tastenbelegung) - Weist einer Taste einen Befehl zu
  • alias - Wird verwendet, um Befehle auszuführen, wenn das Alias ausgeführt wird.
  • exec - wird verwendet, um Befehle automatisch auszuführen, wenn eine Konfigurationsdatei geladen wird.
  • <Aussage1> ist entweder die Taste, die belegt werden soll oder der Name des Alias, das erstellt werden soll.
  • <Aussage2> ist entweder der Befehl, der zugewiesen wird oder die Befehle, die das Alias ausführen soll.

'Um mehrere Befehle auszuführen, muss die gesamte Aussage in Anführungszeichen gesetzt und die einzelnen Befehle mit Strichpunkten getrennt werden. Beispiel

alias "FeuerFrei" "+attack; wait 500; -attack"
bind "mouse3" "FeuerFrei"
  • Wird dieses Alias ausgeführt, wird die Waffe des Spielers 500 Frames lang abgefeuert (entspricht etwa 5 Sekunden) und stellt danach selbständig das Feuer ein. Das Alias wird ausgeführt, wenn die mittlere Maustaste gedrückt wird.

Grundlegende Befehle

Die meisten Befehle akzeptieren nur eine Aussage, die meist den Wert darstellt, der ausgeführt werden soll.

bind "q" "sv_alltalk 1"

Einige wichtige Befehle nehmen mehrere Aussagen an. Beispiele:

  • disguise X Y - Dies verkleidet den Spy. X ist die Klasse von 1 bis 9, Y ist das Team mit dem Wert 1 oder 2.
  • voicemenu X Y - Dies führt einen Sprachbefehl aus. X ist die Nummer des Sprachmenus, Y die Position des Befehls in diesem Menu.

Beispiel: "voicemenu 1 1" ist der Befehl für "Spy!":

bind "t" "voicemenu 1 1"

Mit diesem Befehl sagt der Spieler "Spy!" wenn die Taste "t" gedrückt wird.

Incrementvar

Dieser Befehl durchläuft ein Spektrum vordefinierter Werte wenn er ausgeführt wird und wendet diese Werte auf einen anderen Befehl an. Format:

Befehl "<Aussage1>" "incrementvar <Aussage2> X Y Z"
  • X und Y repräsentieren das Spektrum, das mit <Aussage2> verwendet werden soll.
  • Z ist die Größe der Schritte die gemacht werden, während das Spektrum ausgeführt wird.

Möchten Sie ein Wertespektrum von 1 bis 10 durchlaufen und dabei in Zweierschritten den Wert erhöhen, wären die Werte für X Y Z = 1 10 2. Jedes Mal, wenn der Befehl ausgeführt wird, wird <Aussage2> mit den Werten 2, 4, 6, 8, 10; 2, 4, 6, 8 10 usw. ausgeführt.

Hier ein Beispiel:

bind "n" "incrementvar net_graphpos 1 3 1"

Damit durchläuft die Taste "n" jedes Mal wenn diese gedrückt wird, die drei verfügbaren Positionen für die net_graph Anzeige

Die Befehle + und -

Diese Befehle haben zwei Zustände. Wird die zugewiesene Taste gedrückt, wird der +Befehl ausgeführt. Wird die Taste losgelassen, wird der -Befehl ausgeführt und weiterhin ausgeführt, bis die Taste erneut gedrückt wird.

Example:

bind "c" "+duck"

Der +Befehl ist der Taste "c" zugewiesen. Wird "c" gedrückt, duckt sich der Spieler. Wird die Taste losgelassen, wird -duck ausgeführt und der Spieler steht wieder auf.

Allgemein gesagt wird ein +Befehl so lange ausgeführt, wie die Taste gedrückt ist. Wird die Taste losgelassen, wird der -Befehl ausgeführt.

Ist ein Alias mit einem + definiert, wird das Alias so lange laufen wie die Taste gedrückt ist und danach -Alias ausführen.

Wait-Befehl

Möchten Sie eine Handlung im Spiel verzögern oder verhindern, dass sehr langen Befehls-Listen zu schnell ausgeführt werden (was zu Abstürzen führen kann), kann der wait-Befehl verwendet werden.

Wait sagt dem Spiel den nächsten Befehl in einem Script um einen "Physic Frame" zu verzögern. Aussagen wie "wait 50" verzögert die Ausführung des nächsten Befehls um 50 Frames. Auf einem 100 FPS Server sind 100 Frames ungefähr eine Sekunde.

Einige Server haben den wait-Befehl deaktiviert. Scripts, die den wait-Befehl verwenden werden auf diesem Server ignoriert, was zu Problemen mit diesen Scripts führen kann. Ein Script, das eine unbegrenzte Schleife, die mittels wait verzögert wird, verwendet funktioniert nie auf solchen Servern.

Aliase

Ein Alias ist eine Art Variable, die eine Folge von Befehlen als Gruppe ausführt. Ein einfaches Alias wäre folgendes:

alias "Aliasname" "Befehl1; Befehl2; Befehl3"

Dieses Alias kann einer Taste zugewiesen und durch Drücken dieser ausgeführt werden.

bind "Taste" "Aliasname"

Wird die Taste gedrückt, werden Befehl1, Befehl2 und Befehl3 nacheinander ausgeführt.

Komplexe Aliase

Aliase können jeden Befehl und andere Aliase ausführen. Außerdem kann ein Alias ein anderes Alias ausführen um die Befehle des ersten Alias neu zu definieren. Dadurch lassen sich Schleifen erstellen. Hier ein einfaches Beispiel.

bind "Taste" NameWechseln
alias NameWechseln "ErsterName"
alias ErsterName "setinfo name "Erster_Name"; alias NameWechseln ZweiterName"
alias ZweiterName "setinfo name "Zweiter_Name"; alias NameWechseln DritterName"
alias DritterName "setinfo name "Third_Name"; alias NameWechseln ErsterName"

Dies kann schwer zu lesen sein, hier also eine Erläuterung:

  • Die erste Zeile weist der "Taste" das Alias "NameWechseln" zu. Dieses Alias wird noch definiert.
  • Die zweite Zeile erstellt ein Alias "NameWechseln", welches den Befehl "ErsterName" ausführt.
  • Die dritte Zeile definiert den "ErsterName"-Alias als zwei Befehle:
  • Der erste Befehl ändert den Spielernamen auf "Erster_Name"
  • Der zweite Befehl definiert das Alias "NameWechseln" neu und lässt dieses das Alias "ZweiterName" ausführen.
  • Die vierte Zeile definiert "ZweiterName" auf die selbe Art. Ein neuer Spielername wird festgelegt und "NameWechseln" wird neu definiert und führt nun das Alias "DritterName" aus.
  • Die fünfte Zeile definiert "DritterName" wie die vorherigen Zeilen aber mit einem Unterschied. "NameWechseln" führt nun das Alias "ErsterName" aus.

Daraus ergibt sich eine Schleife. Mit jedem Tastendruck wird ein Befehl ausgeführt und das Alias neu definiert. Damit wird jedes Mal ein neuer Befehl ausgeführt. Wäre dies keine Schleife, würde das Alias "NameWechseln" nicht bei jedem Tastendruck einen neuen Befehl ausführen.

Nützliche Script-Befehle

Es gibt buchstäblich hunderte Aussagen, die für Scripts verwendet werden können. Hier sind einige Beispiele.

Sprachbefehle

Sprachbefehle lassen die Klasse vordefinierte Sätze sagen. Dies kann im Spiel hilfreich sein, um zum Beispiel Teamkameraden zu warnen.

Sprachbefehle werden mit folgendem Syntax verwendet:

voicemenu <Menu_Nummer> <Phrasen_Nummber>

<Menu_Nummer> gibt dabei an, welches der 3 Sprachbefehl-Menus der Befehl betrifft, <Phrasen_Nummer> gibt dabei an, welcher der 7 Sätze des Menus gesprochen wird.

Aussagen für Sprachbefehle

  • 0 <Phrasen_Nummer>
    0: Medic!
    1: Danke!
    2: Los! Los! Los!
    3: Vorwärts!
    4: Nach links
    5: Nach rechts
    6: Ja
    7: Nein
  • 1 <Phrasen_Nummer>
    0: Gesellschaft!
    1: Spy!
    2: Sentry voraus!
    3: Teleporter Hier
    4: Dispenser Hier
    5: Sentry Hier
    6: Aktiviere die Ladung!
    7: (Nur Medic) Überladung bereit
  • 2 <Phrasen_Nummer>
    0: Hilfe!
    1: Schlachtfuf
    2: Danke (positiver Kommentar)
    3: Danke (negativer Kommentar)
    4: Positiv
    5: Negativ
    6: Guter Schuss
    7: Gute Arbeit

Nennenswerte Scripts

Einige nennenswerte Scripts haben das gameplay grundlegend verändert. Einige davon wurden von Updates deaktiviert, andere funktionieren weiterhin.

Gepatchte Scripts

Diese Scripts sind nicht länger funktionsfähig.

Pistolen-Script

Ursprünglich konnte die Pistole fast so schnell abgefeuert werden, wie der Spieler die Taste drücken konnte. Natürlich entwarfen einige Spieler Scripts, die die Pistole automatisch und mit sehr hoher Feuergeschwindigkeit abfeuerten konnten. Dadurch konnten sowohl der Scout als auch der Engineer ihre Waffen sehr schnell abfeuern und dabei noch leichter zielen, da nicht ständig die Taste gedrückt werden musste.

Valve hat nach einiger Zeit die Voraussetzungen angeglichen. Die höchste Feuerrate der Pistole wurde verringert, konnte aber nun von allen durch einfaches Gedrückthalten der Feuertaste automatisch abgefeuert werden. Das Pistolen-Script wurde überflüssig.

Sturmschild-Script

Anfänglich wurden die Tastaturbefehle zum Drehen der Ansicht nicht wie Mausbefehle zum Umsehen behandelt. Das Sturmschild grenzte als erste Waffe ein, wie schnell man bei der Benutzung der Waffe das Blickfeld bewegen konnte. Daher wurde eingeschränkt, wie weit man den Blickwinkel mit der Maus verändern konnte - Valve hatte allerdings vergessen, die selben Beschränkungen für das Verändern des Blickwinkels mit der Tastatur einzubauen.

Scripts erlaubten es den Spielern die Taste anderen Befehlen zuzuweisen, wenn das Schild benutzt wurde, wodurch sich der Demo mit voller Geschwindigkeit drehen konnte. Sehr komplexe Scripts wiesen die Mausbewegung temporär der Tastatur zu und änderten die Zuweisung automatisch, wenn der Spieler nach ende des Sturmangriffs seine Waffe verwendete.

Nach einiger Zeit beschränkte Valve auch die Funktionalität der Tastaturbefehle.

Duck-Sprung-Script

Ursprünglich konnte man sich während eines Sprunges so oft ducken wie man wollte. Durch Scripts konnte man sich sehr schnell im Sprung ducken. Da die Engine gelegentlich Probleme hat, Treffer gegen springende Ziele zu registrieren, stellte dies einen Vorteil dar.

Valve legte mit einem Patch fest, dass sich Spieler pro Sprung nur ein mal ducken können.

Aktuelle Scripts

Waffe-Verstecken-Scripts

Einige Scripts können Waffen an- und ausschalten, abhängig vom Slot und der Klasse die gespielt wird. Viele Spieler blenden die Waffen-Modelle aus um ein freieres Blickfeld zu haben, lassen sich aber andere Items wie Melee-Waffen, PDAs, Uhren, usw. darstellen, da diese Items oft wichtige Informationen anzeigen. Der Spy zum Beispiel muss sich auf die Darstellung der Modelle verlassen umd zu wissen, wann er vollständig unsichtbar ist, ob seine Tarnung "flackert" oder wann die Scheintoduhr ausgelöst wird. Andere Klassen benutzen Melee-Animationen um abzuschätzen, wann ein Melee-Angriff das Ziel trifft.

Sentry-Sprung-Scripts

Seit dem Engineer-Update können Engineers ihre Sentry Gun verlagern. Darüber hinaus erlaubt es der Sentry-Flüsterer einem Engineer, mit den Raketen der eigenen Sentry einen Sentry-Sprung auszuführen. Wird sehr schnell gehandelt, ist es möglich, noch im Sprung die eigene Sentry mitzunehmen.

Obwohl dies für Menschen nicht unmöglich ist, ist es dennoch sehr schwer durchzuführen. Scripts, die Befehle in der richtigen Reihenfolge und in der richtigen Geschwindigkeit ausführen, erleichtern dieses Manöver.

Mausempfindlichkeit- und Tastatur-Scripts

Einige Spieler bevorzugen unterschiedliche Mausemplichkeiten und Tastenbelegungen für unterschiedliche Klassen. Scripts erlauben es, Einstellungen auf Klassen und sogar einzelne Waffen anzupassen.

Zoom-Scripts

Durch das kurzzeitige Ändern der Field-of-View-Variable lässt sich ein geringer Zoom-Effekt erzielen, der geringfügige Präzisions- und Sichtbarkeitsvorteile bietet.

Externe Links