CS:GO-Spielmodi/Wingman

From Valve Developer Community
Jump to navigation Jump to search
English (en)Deutsch (de)Русский (ru)Translate (Translate)
Counter-Strike: Global Offensive Level Creation:de
Csgo icon wingman.png

Wingman (intern: scrimcomp2v2) ist ein Spielmodus(en) in Counter-Strike: Global Offensive Counter-Strike: Global Offensive.

Hier erfahren Sie, wie Sie eine Wettkampf-Karte dafür modifizieren und wie es funktioniert.

Eine Karte wird im Wingman-Spielmodus mit den Befehlen game_type 0; game_mode 2; [[Map (ConCommand):de|map <mapname> gestartet, oder kürzer: map <mapname> scrimcomp2v2.

Beschreibung des Spielmodus

Entscheidende Unterschiede in der CFG(en)
Eigenschaft CS:GO/CS2 Wettkampf Wettkampf CS:GO/CS2 Wingman Wingman
Spieler pro Mannschaft 5 2
Best Of 30 16
Rundenzeit in Minuten 1:55 1:30
Freezetime in Sekunden 15 10
Maximales Geld $16000 $8000

Technisch gesehen entspricht dieser Spielmodus fast dem Spielmodus CS:GO/CS2 Wettkampf Wettkampf. Die Ereignisse, die eine Runde beenden, sind identisch, was bedeutet, dass dieser Spielmodus sowohl mit Bombenorten(en) als auch Geiseln(en) gespielt werden kann. Die entscheidenden Unterschiede sind die CFG(en)-Datei des Spielmodus (siehe Tabelle rechts) und maxplayers(en).

Offiziell wird der Spielmodus wie folgt gespielt:

  • Zwei Teams von zwei Spielern(en) spielen ein Match in einer Wettkampf-Umgebung.
  • Es gibt einen zugänglichen Bombenort(en).

Wingman-Unterstützung auf Wettkampf-Karten

Jede CS:GO/CS2 Wettkampf Wettkampf-Karte kann modifiziert werden, sodass sie CS:GO/CS2 Wingman Wingman auf die gleiche Weise wie Cobblestone, Inferno, Nuke, Overpass, Vertigo und Train unterstützt. Diese Karten sind eigentlich zu groß für Wingman, doch wenn sie in Wingman gestartet werden, werden die Spawnpunkte und Kaufzonen bei Bedarf "verschoben" und es gibt Blockaden, die den bespielbaren Bereich der Karte auf nur einen Bombenort beschränken. Die folgenden Abschnitte behandeln, wie Kartenersteller dies reproduzieren können.

File:Important template.gif Wichtig: Für Karten, auf denen für Wingman keine Spawnpunkte verschoben oder Blockaden aktiviert werden müssen, ist diese Anleitung irrelevant.
Note.pngHinweis:de_nuke unterstützt Wingman eigentlich nicht, stattdessen verwendet Valve eine andere Karte, de_shortnuke, die nur die Hälfte von de_nuke enthält, nämlich nur die Innenbereiche für Bombenort B.

Skripterstellung

csgo/scripts/vscripts/2v2/2v2_enable.nut
// Diese Funktion wird von der Karte OnMapSpawn aufgerufen

function EnableWingman()
{
       // überprüft den Spielmodus und -typ des aktuellen Spiels
       local nMode = ScriptGetGameMode();
       local nType = ScriptGetGameType();

       // type 0, mode 0 = Gelegenheitsspiel
       // type 0, mode 1 = Wettkampf
       // type 1, mode 0 = Wettrüsten
       // type 1, mode 1 = Zerstörung
       // type 1, mode 2 = Deathmatch
       // usw. 


	if (nMode == 2 && nType == 0)								// Wenn 2v2 läuft, tu Dinge
	{
	  EntFire("spawnpoints.standard", "SetDisabled", 0, 0);
	  EntFire("spawnpoints.2v2", "SetEnabled", 0, 0);
	  EntFire("brush.blocker", "Enable", 0, 0);
	  EntFire("buyzone.2v2", "SetEnabled", 0, 0);
	  EntFire("navblocker.2v2", "BlockNav", 0, 0);
	}
	else
	{
	  EntFire("buyzone.2v2", "Disable", 0, 0);				// 2v2-Kaufzonen deaktivieren
	  EntFire("navblocker.2v2", "UnblockNav", 0, 0);
	}
  
 }
Icon-Bug.pngFehler:Die hervorgehobene Zeile hat nicht den beabsichtigten Effekt, da SetEnabled kein gültiger Input für func_buyzone ist.  [todo tested in?]

Um nur in Wingman Spawnpunkte zu verschieben oder Bereiche zu blockieren, muss unsere Karte den aktuellen Spielmodus erkennen(en), was VScript(en) erfordert. Glücklicherweise hat Valve bereits ein VScript erstellt, das dies tut (rechts zu sehen) und da es für jeden verfügbar ist, muss kein Code geschrieben werden.

Note.pngHinweis:Es kann auch ein eigenes Skript erstellt werden, aber vergessen Sie nicht, diese vor der Veröffentlichung(en) zur Karte zu packen!

Erstellen Sie zum Ausführen dieses Skripts ein logic_script in der Karte mit dem targetname(en) script.2v2 (frei wählbar). Setzen Sie die Eigenschaft Entity Scripts auf 2v2/2v2_enable.nut.

Erstellen Sie dann ein logic_auto(en) mit folgendem output(en):

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn script.2v2 RunScriptCode EnableWingman() 0 No

In jeder Runde führt dies die Funktion EnableWingman aus, die E/A(en)-Ereignisse an bestimmte, benannte Entitäten in unserem Level auslöst, je nachdem, welcher Spielmodus läuft. Aus diesem Grund müssen alle folgenden Entitätsnamen genau wie im obigen VScript sein, sonst funktioniert es nicht.

Spawnpunkte und Kaufzonen

Wählen Sie zuerst alle Spawnpunkte beider Teams an, die im normalen klassischen Modus verwendet werden sollen, und ändern Sie ihre Namen in spawnpoints.standard. Das Skript wird diese in Wingman deaktivieren.

Erstellen Sie nun mindestens zwei Spawnpunkte für jedes Team, die in Wingman verwendet werden sollen. In den offiziellen Valve-Karten gibt es 4 pro Team. Wählen Sie alle an, nennen Sie sie spawnpoints.2v2 und setzen Sie Enable by default? auf No.

Wenn sich diese Spawns nicht bereits in einer func_buyzone befinden, erstellen Sie eine für sie, wählen Sie das Team aus und nennen Sie es buyzone.2v2. Tun Sie dasselbe für das andere Team.

Icon-Bug.pngFehler:

Alle Kaufzonen müssen standardmäßig aktiviert sein! In Valves Skript wird durch EnableWingman() niemals eine Kaufzone aktiviert, unabhängig vom Spielmodus. Grund ist, dass "SetEnabled" kein gültiger Input für func_buyzone ist. Das Skript ist dennoch nützlich, da es die Wingman-Kaufzone bei Bedarf deaktiviert. Außerdem deaktiviert das Skript nicht die Standard-Kaufzonen in Wingman, da möglicherweise gar keine Verschiebungen stattfinden sollen. Wenn dies ein Problem ist, muss ein eigenes Skript geschrieben oder eine andere Lösung gefunden werden.

  [todo tested in?]

Blockieren des spielbaren Bereichs

Die tools/wrongway Tool-Textur(en) ist nur für Spieler in der Nähe des Ursprungs derjenigen Entität sichtbar, auf der diese Textur ist.

Das Spiel läuft im aktuellen Zustand, aber wahrscheinlich soll nur ein Bombenort(en) erreichbar sein. Erstellen Sie dazu einige Clip-Brushes(en) mit der Textur tools/toolsclip an den Stellen, an denen die Spieler(en) blockiert werden sollen. Wandeln Sie diese in func_brush(en)es um und nennen Sie sie brush.blocker. Setzen Sie Start disabled auf Yes und das Skript aktiviert sie nur in Wingman.

Sie können sogar mehr daraus machen und die coole Textur tools/wrongway verwenden, um den Spielern zu signalisieren, dass es eine unsichtbare Wand gibt. Es verblasst sogar mit zunehmender Entfernung! Für diese Brushes ist es eine gute Angewohnheit, deren Solidity auf Never Solid zu setzen, wenn sie sich bereits innerhalb eines größeren brush.blockers befinden, da überlappende Kollisionen unnötig sind.

Navigationsnetze blockieren

Jetzt werden die brush.blockers wunderbar Spieler blockieren, aber möglicherweise werden Bots(en) weiterhin an diesen Blockaden verzweifeln.

Erstellen Sie func_nav_blocker Entitäten innerhalb der brush.blocker mit der Textur tools/toolstrigger und nennen Sie sie navblocker.2v2. Das VScript feuert in Wingman schließlich BlockNav an diese Entitäten oder UnblockNav in allen anderen Spielmodi und informiert dadurch die Bots, ob ein Bereich blockiert ist oder nicht.

Tip.pngTipp:Wenn Bots weiterhin versuchen, durch die Blocker zu gehen, ist der func_nav_blocker möglicherweise zu schmal und blockiert keine Nav Mesh(en)-Bereiche. Verwenden Sie zur Visualisierung den Cheat nav_edit 1. Von Navigationsblockern blockierte Bereiche sind markiert(en) mit einem cyanfarbenen Rechteck entlang der Umrandung.

Testen und Hochladen

Um eine Karte im Wingman-Modus zu spielen, geben Sie die Befehle game_type 0; game_mode 2 in die Konsole ein und geben Sie dann den map(en)-Befehl ein, um die Karte zu laden.

Wenn Sie die Karte in den Workshop hochladen, stellen Sie sicher, dass Sie Wingman in der Liste der Spielmodi ausgewählt haben, damit andere Nutzer den Modus beim Start der Karte über das Hauptmenü auswählen können. Fertig!