diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs
index 9402fd7..71c8f48 100644
--- a/Source/GrasscutterTools/Forms/FormMain.cs
+++ b/Source/GrasscutterTools/Forms/FormMain.cs
@@ -442,7 +442,7 @@ namespace GrasscutterTools.Forms
/// 是否执行成功
private async Task RunRawCommands(string commands)
{
- if (commands.IndexOf('|') == -1)
+ if (commands.IndexOf('|') == -1 || Common.OC?.CanInvokeMultipleCmd == true)
return await RunCommands(FormatCommand(commands));
return await RunCommands(commands.Split('|').Select(FormatCommand).ToArray());
}
diff --git a/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs b/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs
index 0a406c6..6f373c9 100644
--- a/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs
+++ b/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs
@@ -44,11 +44,28 @@ namespace GrasscutterTools.OpenCommand
public bool CanInvoke { get; private set; }
+ private Version version = new Version(1, 6, 1);
+
+ public Version Version
+ {
+ get => version;
+ private set
+ {
+ version = value;
+ CanInvokeMultipleCmd = version >= new Version(1, 7);
+ }
+ }
+
+ public bool CanInvokeMultipleCmd { get; private set; }
+
public async Task Ping()
{
//try
//{
var response = await DoRequest("ping");
+ if (response.Data is string str && Version.TryParse(str, out var version))
+ Version = version;
+
return response.RetCode == 200;
//}
//catch (Exception)
diff --git a/Source/GrasscutterTools/Program.cs b/Source/GrasscutterTools/Program.cs
index abf8e8b..06a487e 100644
--- a/Source/GrasscutterTools/Program.cs
+++ b/Source/GrasscutterTools/Program.cs
@@ -190,11 +190,21 @@ namespace GrasscutterTools
try
{
- foreach (var cmd in commands.Split('|').Select(FormatCommand))
+ Common.OC.Ping().Wait(1000);
+
+ if (Common.OC.CanInvokeMultipleCmd)
{
- var msg = Common.OC.Invoke(cmd).Result;
+ var msg = Common.OC.Invoke(FormatCommand(commands)).Result;
Console.WriteLine(string.IsNullOrEmpty(msg) ? "OK" : msg);
}
+ else
+ {
+ foreach (var cmd in commands.Split('|').Select(FormatCommand))
+ {
+ var msg = Common.OC.Invoke(cmd).Result;
+ Console.WriteLine(string.IsNullOrEmpty(msg) ? "OK" : msg);
+ }
+ }
return true;
}
catch (Exception ex)