# MSCO – My Summer Car Online Multiplayer-Mod für **My Summer Car** (MSCLoader). Spiel mit bis zu 3 Spielern zusammen – per Steam-Einladung (P2P) oder auf einem dedizierten Server aus dem Server-Browser. - Mod: dieses Repository - Dedizierter Server: [MSCO-Dedicated-Server](https://git.mbm.wtf/MrMaho/MSCO-Dedicated-Server) - Keymaster & Serverliste: [MSCO-Keymaster](https://git.mbm.wtf/MrMaho/MSCO-Keymaster) – live unter https://msco.mbm.wtf ## Features **Verbinden** - Launcher im Hauptmenü: P2P-Seite und Server-Browser - **P2P über Steam:** HOST GAME, Freunde einladen, Beitritt über die Steam-Freundesliste (max. 3 Spieler) - **Server-Browser:** Suche, Filter (Steam / Non-Steam / volle ausblenden), Ping, Server-Profil (Besitzer, Version, Laufzeit, Spieler), lokale Server auf diesem PC werden automatisch gefunden - **Direct Connect** per Adresse, JOIN-Links von der Website (`msco://`) starten das Spiel und verbinden direkt - Server ohne Steam („Non-Steam“) werden unterstützt, andere Mod-Version = Warnung statt Sperre - Der Host-Spielstand wird beim Start automatisch an alle übertragen; der eigene Spielstand wird vorher gesichert und nach dem Spielen wiederhergestellt **Synchronisiert** - Spieler als eigene Figur im MSC-Stil (Karohemd, Jeans, Schnurrbart, Kappe – je Spieler etwas anders) mit Blickrichtung, Laufen, Ducken/Lehnen, Sitzen, gehaltenem Item und Namensschild - Items, lose Teile, Schrauben und Fahrzeuge (auch mit G geschoben) mit Besitzer-System – inkl. was jemand in der Hand hält - Fahrzeuge: Position, Lichter, Motorgeräusch; als **Beifahrer** mitfahren (Taste P) - **Fahrzeugzustand:** Tank, Öl, Kühlwasser, Bremsflüssigkeit, Batterie, Schrauben-Festigkeit, Schäden, Verschleiß, Kilometerstand, Lack, Vergaser-/Zündungseinstellungen - Anbauen/Abbauen von Teilen und Schrauben (PlayMaker-Events) - Türen, Tore, Hauben (z.B. Garagentor), Geld, Uhrzeit und Wetter **Im Spiel** - **T** – Chat - **F7** – MSCO-Konsole mit allen Befehlen - **/admin** – Admin-Menü für Server-Admins bzw. den P2P-Host: Spieler kicken/bannen, GOTO/BRING (teleportieren), Cheats (+1.000 / +10.000 MK, Bedürfnisse auffüllen, Satsuma zu sich holen) – Cheats werden im Chat angezeigt - **P** – als Beifahrer ein-/aussteigen - Alle Tasten sind in den MSCLoader-Einstellungen der Mod änderbar - Rich Presence: zeigt Freunden deinen Status („In the Menus“, Server, Spielerzahl) ## Installation 1. [MSCLoader](https://github.com/piotrulos/MSCModLoader) installieren. 2. `MSCO.dll` von den [Releases](https://git.mbm.wtf/MrMaho/MSCO/releases/latest) herunterladen und in den Mods-Ordner kopieren (Standard: `Documents\MySummerCar\Mods`). 3. Spiel **über Steam** starten – ohne Steam gehen nur Non-Steam-Server. ### Einen eigenen Server betreiben Siehe [MSCO-Dedicated-Server](https://git.mbm.wtf/MrMaho/MSCO-Dedicated-Server) – Lizenzschlüssel gibt es kostenlos unter https://msco.mbm.wtf/keys. ## Probleme? | Problem | Lösung | |---|---| | Server fehlt im Browser | REFRESH drücken; Filter (STEAM / NON-STEAM) prüfen; der Server muss von außen erreichbar sein | | „This server requires Steam“ | Spiel über Steam starten | | Warnung „Version mismatch“ | Mod und Server auf dieselbe Version bringen (Releases) | | Eigener Spielstand weg | Wird nach dem Verlassen automatisch wiederhergestellt; Sicherung liegt in `AppData\LocalLow\Amistech\My Summer Car\MSCO_Backup` | | Absturz / Hänger beim Beitreten | `output_log.txt` im Spielordner an den Server-Betreiber bzw. als Issue schicken | ## Befehle In der F7-Konsole direkt, in der MSCLoader-Konsole mit `mp` davor (z.B. `mp connect ...`): | Befehl | Beschreibung | |---|---| | `connect ` | mit einem dedizierten Server verbinden | | `disconnect` | Server / Spiel verlassen | | `host [port]` / `join [port]` | LAN-Testsitzung ohne Steam | | `save` | Spiel speichern (Host / Einzelspieler) | | `ping [on\|off]` | Ping zum Server oben rechts anzeigen (grün < 80 ms, gelb < 150 ms, rot darüber) | | `admin` bzw. `/admin` im Chat | Admin-Menü | | `vehicles`, `rig` | Diagnose: Fahrzeuge / Spielermodelle | | `debug` | Sync-Debugausgaben an/aus | | `clear` | Konsole leeren | ## Selbst bauen - Eine C#-Entwicklungsumgebung, .NET Framework 3.5 (Unity 5.0 / Mono) - Die Verweise in `MSCO.csproj` zeigen auf `F:\SteamLibrary\steamapps\common\My Summer Car\mysummercar_Data\Managed\` (UnityEngine, PlayMaker, Assembly-CSharp, Assembly-CSharp-firstpass, MSCLoader, 0Harmony, Newtonsoft.Json, cInput) – bei anderem Installationsort anpassen. - Nach dem Build wird die DLL automatisch nach `Documents\MySummerCar\Mods` kopiert (`MSCMODSFOLDER` in der csproj). ``` msbuild MSCO.csproj -p:Configuration=Release ``` ### Updates veröffentlichen (MSC Launcher / MSCLoader) - **Kleines Update** (Fehlerbehebungen, neue Funktionen, Netzwerk unverändert): in `MSCO.cs` nur die dritte Stelle von `ModVersion` erhöhen (`2.8.1` → `2.8.2`), Release bauen und `bin/Release/MSCO.dll` hochladen. Spieler mit 2.8.x spielen weiter zusammen, Server 2.8 müssen nicht aktualisiert werden. - **Großes Update** (Protokoll inkompatibel geändert): `ProtocolVersion` in `MSCO.cs` **und** `GameServer.ModVersion` im Server erhöhen (z.B. `2.9`), `ModVersion` auf `2.9.0`. Dann brauchen alle die neue Mod und den neuen Server. - Verglichen werden immer nur die ersten zwei Stellen; übers Netz geht nur die Netzwerk-Version. ## Aufbau | Datei | Aufgabe | |---|---| | `MSCO.cs` | Mod-Einstieg, Tastenbelegung | | `MultiplayerManager.cs` | Sitzung, Nachrichten, Spielerliste, Spielstart, HUD | | `NetSession.cs` | Netzwerk (TCP und Steam P2P), Protokoll | | `LobbyUI.cs`, `Overlays.cs`, `UiTheme.cs` | Launcher, Konsole/Chat/Admin-Menü, gemeinsamer Stil | | `ServerBrowser.cs`, `WinHttp.cs` | Serverliste (TLS 1.2 über WinHTTP), Server-Abfrage | | `ObjectSync.cs` | Items/Teile/Fahrzeuge mit Besitzer-System | | `VehicleStateSync.cs`, `VehicleFx.cs`, `Passenger.cs` | Fahrzeugzustand, Lichter/Sound, Beifahrer | | `FsmSync.cs`, `DoorSync.cs`, `WorldSync.cs`, `MoneySync.cs` | Montage-Events, Türen, Zeit/Wetter, Geld | | `RemotePlayer.cs` | Spielfiguren der Mitspieler | | `SaveSync.cs`, `MenuHelper.cs` | Spielstand übertragen/sichern, Laden aus dem Menü | | `SteamLobby.cs`, `JoinLinks.cs`, `DiscordPresence.cs` | Steam-Lobbys, `msco://`-Links, Rich Presence | | `SafetyPatches.cs`, `InputLock.cs`, `SceneCache.cs` | Absturzschutz, Eingabesperre, geteilte FSM-Suche | ## Bekannte Einschränkungen - Teile, die nach dem Server-Spielstand montiert wurden, werden für neue Spieler nachgespielt – das klappt nicht immer perfekt. `reset-world` auf dem Server setzt den Stand zurück. - Maximal 3 Spieler. ## Lizenz GNU AGPL-3.0 – siehe [LICENSE.txt](LICENSE.txt). Made by **MBM** – [mbm.wtf](https://mbm.wtf)