MSCO 2.10.0: mod support, ESC no longer quits from the main menu
- MscoMod API (ModApi.cs) and ModLoader: own mods from MSCO\Mods, hooks for menu/game/update/GUI, session and player events, Send/OnMessage between players (MsgType.ModMessage) - Server mods: ModList before Welcome, consent prompt (INSTALL & JOIN), download with SHA-256 check into MSCO\Mods\Servers, active only on that server; game start waits for the download - Mods page in the MSCO menu, console command "mods" - Server browser: MODS pill, VANILLA/MODDED filters, mod list in the server profile - PlayMaker ApplicationQuit is ignored in the main menu (ESC used to close the game) - MODDING.md and examples/HelloMod Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,8 @@ namespace MSCO
|
||||
public string Owner; // Besitzer des Lizenzschlüssels
|
||||
public bool Featured; // vom Keymaster-Admin hervorgehoben (steht in der Liste oben)
|
||||
public List<string> Tags = new List<string>(); // Admin-Tags (z.B. "official") und eigene Tags des Servers (Web-Panel)
|
||||
public List<string> Mods = new List<string>(); // Mods des Servers ("Name Version") - bekommt man beim Beitreten
|
||||
public bool Modded { get { return Mods.Count > 0 || Tags.Contains("modded"); } }
|
||||
|
||||
public int UptimeSeconds = -1;
|
||||
public List<string> PlayerNames = new List<string>();
|
||||
@@ -137,11 +139,28 @@ namespace MSCO
|
||||
Owner = MiniJson.Str(o, "owner"),
|
||||
Featured = MiniJson.Bool(o, "featured"),
|
||||
Tags = MiniJson.Strings(o, "tags"),
|
||||
Mods = ModNames(o),
|
||||
});
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
static List<string> ModNames(Dictionary<string, object> o)
|
||||
{
|
||||
var names = new List<string>();
|
||||
object v;
|
||||
var list = o.TryGetValue("mods", out v) ? v as List<object> : null;
|
||||
if (list == null) return names;
|
||||
foreach (object item in list)
|
||||
{
|
||||
var m = item as Dictionary<string, object>;
|
||||
if (m == null) continue;
|
||||
string name = MiniJson.Str(m, "name", MiniJson.Str(m, "id", "?")), version = MiniJson.Str(m, "version", "");
|
||||
names.Add(string.IsNullOrEmpty(version) ? name : name + " " + version);
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
/// <summary>Server auf diesem PC suchen (127.0.0.1, übliche Ports); nur antwortende werden gezeigt.</summary>
|
||||
void ProbeLocalServers()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user