Ich hab gleich mehre Lösungen gefunden.
Ein vorweg, du kannst die Map mit Modus nur wechseln, wenn kurz vorher die Runde neugestartet wurde.
Ich kicke die Spieler dann zuvor noch. Das sieht dann so aus:
|
Quellcode
|
1
|
"sm_kick @all Mapchange to #1 Mode: #2;restart;map #1 #2"
|
#1 ist die Map, #2 ist der Modus
Mit einem anderen Trick lässt sich die Cvar mp_gamemode ändern. Das sähe dann so aus:
|
Quellcode
|
1
|
"sm_cvar mp_gamemode #2;changelevel #1"
|
Zusammengefasst (liegt als Anhang bei):
"Commands"
{
"Game Commands"
{
"Change Map with kick"
{
"cmd" "sm_kick @all Mapchange to #1 Mode: #2;restart;map #1 #2"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "mapcycle"
"title" "Set Map"
}
"2"
{
"type" "list"
"title" "Set Mode"
"1" "coop"
"1." "Coop"
"2" "versus"
"2." "Versus"
"3" "survival"
"3." "Survival"
"4" "scavenge"
"4." "Scavenge"
"5" "realism"
"5." "Realism"
}
}
"Change Map without kick"
{
"cmd" "sm_cvar mp_gamemode #2;changelevel #1"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "mapcycle"
"title" "Set Map"
}
"2"
{
"type" "list"
"title" "Set Mode"
"1" "coop"
"1." "Coop"
"2" "versus"
"2." "Versus"
"3" "survival"
"3." "Survival"
"4" "scavenge"
"4." "Scavenge"
"5" "realism"
"5." "Realism"
}
}
}
}
Für mein Beispiel brauchst du noch die Datei mapcycle.txt (kann auch durch "path" "xyz.txt" anders definiert werden):
c1m1_hotel
c1m2_streets
c1m3_mall
c1m4_atrium
c2m1_highway
c2m2_fairgrounds
c2m3_coaster
c2m4_barns
c2m5_concert
c3m1_plankcountry
c3m2_swamp
c3m3_shantytown
c3m4_plantation
c4m1_milltown_a
c4m2_sugarmill_a
c4m3_sugarmill_b
c4m4_milltown_b
c4m5_milltown_escape
c5m1_waterfront
c5m1_waterfront_sndscape
c5m2_park
c5m3_cemetery
c5m4_quarter
c5m5_bridge
Ich weiß nicht genau, aber kann es sein, dass jede Map jeden Modus unterstützt? Ich hab mich bei L4D2 noch nicht mit auseinandergesetzt.
Wenn du lieber dein Beispiel nehmen wills würde das dann mit kick so aussehen:
"Commands"
{
"Game Commands"
{
"Coop Modus"
{
"cmd" "sm_kick @all Mapchange to #1 Mode: Coop;restart;map #1"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "list"
"title" "Set Map"
"1" "c1m1_hotel coop"
"1." "1. Kampagne"
"2" "c2m1_highway coop"
"2." "2. Kampagne Coop Modus"
"3" "c3m1_plankcountry coop"
"3." "3. Kampagne"
"4" "c4m1_milltown_a coop"
"4." "4. Kampagne"
"5" "c5m1_waterfront coop"
"5." "5. Kampagne"
}
}
"Survival Modus"
{
"cmd" "sm_kick @all Mapchange to #1 Mode: Survival;restart;map #1"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "list"
"title" "Set Map"
"1" "c1m3_mall survival"
"1." "1. Kampagne Survival"
"2" "c2m1_highway survival"
"2." "2. Kampagne Survival"
"3" "c3m1_plankcountry coop"
"3." "3. Kampagne Survival"
"4" "c4m1_milltown_a survival"
"4." "4. Kampagne Survival"
"5" "c5m1_waterfront survival"
"5." "5. Kampagne Survival"
}
}
}
Dein Beispiel ohne Kick:
"Commands"
{
"Game Commands"
{
"Coop Modus"
{
"cmd" "sm_cvar mp_gamemode coop;changelevel #1"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "list"
"title" "Set Map"
"1" "c1m1_hotel"
"1." "1. Kampagne"
"2" "c2m1_highway"
"2." "2. Kampagne Coop Modus"
"3" "c3m1_plankcountry"
"3." "3. Kampagne"
"4" "c4m1_milltown_a"
"4." "4. Kampagne"
"5" "c5m1_waterfront"
"5." "5. Kampagne"
}
}
"Survival Modus"
{
"cmd" "sm_cvar mp_gamemode survival;changelevel #1"
"admin" "sm_ban"
"execute" "server"
"1"
{
"type" "list"
"title" "Set Map"
"1" "c1m3_mall"
"1." "1. Kampagne Survival"
"2" "c2m1_highway"
"2." "2. Kampagne Survival"
"3" "c3m1_plankcountry"
"3." "3. Kampagne Survival"
"4" "c4m1_milltown_a"
"4." "4. Kampagne Survival"
"5" "c5m1_waterfront"
"5." "5. Kampagne Survival"
}
}
}
Mit meinem genannten Beispiel hab ich es mal getestet. Das sollte eigentlich soweit gehen.
Deine hab ich jetzt im Nachinein nicht getestet. Kann sein, dass durch das wilde Hin- und Herkopieren ein Fehler aufgetreten ist.
PS: Leider sind wegen dem Config-Block die Tabstops weg. Ich kann dir Notepad++ empfehlen. Du makierst dann einfach einen bestimmten Block und drückst die Tabulator-Taste. Dadurch wird der gesammte makierte Block mit Tabstops eingerückt. Mehrmaliges drücken rückt den Block noch weiter ein.
Umgekehrt lassen sich die Tabstops von einem makiertem Block mit Shift+Tab wieder ausrücken. Leerzeichen vor dem ersten Zeichen werden dabei auch entfernt.
Ich hab mein Beispiel der Datei mal mit angehangen.