From 28674c0aedb6a16d40e32751634482b1f2f8caaa Mon Sep 17 00:00:00 2001 From: Xannix246 <62834423+Xannix246@users.noreply.github.com> Date: Sun, 16 Mar 2025 01:26:00 +0300 Subject: [PATCH] ingame cmd update Now commands are transfering via base64, and teleport command can increase/decreae position (+ before cords value to increase and -- to decrease) --- .../Commands/Handlers/CommandNickname.cs | 5 ---- .../Commands/Handlers/CommandTeleport.cs | 25 +++++++++++++------ Campofinale/Data/PlayerConsole/index.html | 2 +- Campofinale/Http/PCDispatch.cs | 3 ++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Campofinale/Commands/Handlers/CommandNickname.cs b/Campofinale/Commands/Handlers/CommandNickname.cs index c8a0f47..990f077 100644 --- a/Campofinale/Commands/Handlers/CommandNickname.cs +++ b/Campofinale/Commands/Handlers/CommandNickname.cs @@ -19,11 +19,6 @@ namespace Campofinale.Commands.Handlers return; } - for (int i=0; i < args.Length; i++) - { - args[i] = Uri.UnescapeDataString(args[i]); - } - target.nickname = string.Join(" ", args); target.Save(); target.Send(new PacketScSetName(target, target.nickname)); diff --git a/Campofinale/Commands/Handlers/CommandTeleport.cs b/Campofinale/Commands/Handlers/CommandTeleport.cs index 93abc67..13eeea4 100644 --- a/Campofinale/Commands/Handlers/CommandTeleport.cs +++ b/Campofinale/Commands/Handlers/CommandTeleport.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using static Campofinale.Resource.ResourceManager; using Campofinale.Packets.Sc; using MongoDB.Bson; +using System.Globalization; namespace Campofinale.Commands.Handlers { @@ -21,17 +22,27 @@ namespace Campofinale.Commands.Handlers return; } - float x, y, z; + for (int i=0; i < args.Length; i++) + { + args[i] = args[i].Replace(",", "."); + } - x = args[0] == "~" ? target.position.x : float.Parse(args[0]); - y = args[1] == "~" ? target.position.y : float.Parse(args[1]); - z = args[2] == "~" ? target.position.z : float.Parse(args[2]); + float[] pos = [target.position.x, target.position.y, target.position.z]; + + for (int i=0; i < args.Length; i++) { + if(args[i] == "~") continue; + + float curPos = pos[i]; + pos[i] = float.Parse(args[i].StartsWith("--") ? args[i].Trim('-') : args[i], CultureInfo.InvariantCulture); + if (args[i].StartsWith('+')) pos[i] += curPos; + if (args[i].StartsWith("--")) pos[i] = curPos - pos[i]; + } Vector3f position = new Vector3f(new Vector() { - X = x, - Y = y, - Z = z + X = pos[0], + Y = pos[1], + Z = pos[2] }); target.position = position; diff --git a/Campofinale/Data/PlayerConsole/index.html b/Campofinale/Data/PlayerConsole/index.html index c79e32d..8021473 100644 --- a/Campofinale/Data/PlayerConsole/index.html +++ b/Campofinale/Data/PlayerConsole/index.html @@ -154,7 +154,7 @@ try { const url = new URL('%dispatchip%/pcSdk/console'); - url.searchParams.append('command', command); + url.searchParams.append('command', btoa(unescape(encodeURIComponent(command)))); url.searchParams.append('token', token); const response = await fetch(url.toString(), { diff --git a/Campofinale/Http/PCDispatch.cs b/Campofinale/Http/PCDispatch.cs index 37d1275..30a2907 100644 --- a/Campofinale/Http/PCDispatch.cs +++ b/Campofinale/Http/PCDispatch.cs @@ -30,7 +30,8 @@ namespace Campofinale.Http [StaticRoute(HttpServerLite.HttpMethod.GET, "/pcSdk/console")] public static async Task ConsoleResponce(HttpContext ctx) { - string cmd = ctx.Request.Query.Elements["command"].Replace("+"," "); + string encodedCmd = Uri.UnescapeDataString(ctx.Request.Query.Elements["command"]); + string cmd = Encoding.UTF8.GetString(Convert.FromBase64String(encodedCmd)); string token = ctx.Request.Query.Elements["token"]; string message = ""; string[] split = cmd.Split(" ");