Example #1
0
 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;
     }
 }
Example #2
0
        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;
            }
        }