private void Server_SendingRemoteAdminCommand(Exiled.Events.EventArgs.SendingRemoteAdminCommandEventArgs ev) { switch (ev.Name.ToUpper()) { case "SCRIPTLOADER": case "SL": ev.IsAllowed = false; if (!ev.Sender.CheckPermission("scriptloader") && !ev.CommandSender.FullPermissions) { ev.Sender.RemoteAdminMessage("No Permission", false, "ScriptLoader"); return; } if (ev.Arguments.Count == 0) { ev.Sender.RemoteAdminMessage(string.Concat("Commands: ", Environment.NewLine, " - scriptloader run <scriptname> "), false, "ScriptLoader"); return; } switch (ev.Arguments[0].ToUpper()) { case "RUN": string path = Path.Combine(pluginDir, "scripts", ev.Arguments[1] + ".cscs"); if (File.Exists(path)) { scripts.Add(Timing.RunCoroutine(LoadScript(path))); return; } ev.Sender.RemoteAdminMessage("File not found", true, "ScriptLoader"); break; } break; } }
private void Server_SendingRemoteAdminCommand(Exiled.Events.EventArgs.SendingRemoteAdminCommandEventArgs ev) { switch (ev.Name.ToUpper()) { case "REPLAY": ev.IsAllowed = false; /*if (!ev.Sender.CheckPermission("playerrecorder.replay")) * { * ev.Sender.RemoteAdminMessage("No permission...", true, "PlayerRecorder"); * break; * }*/ if (ev.Arguments.Count == 0) { ev.Sender.RemoteAdminMessage(string.Concat("Commands:", Environment.NewLine, "- replay prepare <port> <recordId>", Environment.NewLine, "- replay start", Environment.NewLine, "- replay pause", Environment.NewLine, "- replay setspeed <value> ( default is: 0.1 )"), true, "PlayerRecorder"); return; } switch (ev.Arguments[0].ToUpper()) { case "PREPARE": if (ev.Arguments.Count == 3) { if (File.Exists(Path.Combine(MainClass.pluginDir, "RecorderData", ev.Arguments[1], "Record_" + ev.Arguments[2] + ".rd"))) { Log.Info("Start prepare"); replayHandler = Timing.RunCoroutine(core.Replay(Path.Combine(MainClass.pluginDir, "RecorderData", ev.Arguments[1], "Record_" + ev.Arguments[2] + ".rd"))); } else { ev.Sender.RemoteAdminMessage("File not found.", true, "PlayerRecorder"); } } else { ev.Sender.RemoteAdminMessage("Syntax: PREPARE <port> <recordId>", true, "PlayerRecorder"); } break; case "START": if (RecorderCore.isReplayReady && !RecorderCore.isReplaying) { RecorderCore.isReplaying = true; ev.Sender.RemoteAdminMessage("Replay started.", true, "PlayerRecorder"); } else { ev.Sender.RemoteAdminMessage("Replay not prepared.", true, "PlayerRecorder"); } break; case "PAUSE": if (RecorderCore.isReplaying) { RecorderCore.isReplayPaused = !RecorderCore.isReplayPaused; ev.Sender.RemoteAdminMessage($"Replay {(RecorderCore.isReplayPaused ? "paused" : "started")}.", true, "PlayerRecorder"); } else { ev.Sender.RemoteAdminMessage("Replay not prepared.", true, "PlayerRecorder"); } break; case "SETSPEED": if (ev.Arguments.Count != 2) { ev.Sender.RemoteAdminMessage("Syntax: PAUSE <value>", true, "PlayerRecorder"); return; } if (RecorderCore.isReplaying) { if (float.TryParse(ev.Arguments[1], out float speed)) { MainClass.singleton.Config.replayDelay = speed; ev.Sender.RemoteAdminMessage($"Replay speed set to {speed}.", true, "PlayerRecorder"); } else { ev.Sender.RemoteAdminMessage("Syntax: PAUSE <value>", true, "PlayerRecorder"); } } else { ev.Sender.RemoteAdminMessage("Replay not prepared.", true, "PlayerRecorder"); } break; case "END": if (RecorderCore.isReplaying) { RecorderCore.isReplaying = false; RecorderCore.isReplayReady = false; core.SeedID = -1; foreach (var item in RecorderCore.replayPickups) { NetworkServer.Destroy(item.Value.gameObject); } RecorderCore.replayPickups.Clear(); foreach (var player in RecorderCore.replayPlayers) { NetworkServer.Destroy(player.Value.gameObject); } RecorderCore.replayPlayers.Clear(); ev.Sender.RemoteAdminMessage("Replay ended.", true, "PlayerRecorder"); } else { ev.Sender.RemoteAdminMessage("Replay not prepared.", true, "PlayerRecorder"); } break; } break; } }