Exemplo n.º 1
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Params.Count != 2)
            {
                SendOutput("Invalid arguments");
                SendOutput(GetHelp());

                return;
            }

            var count = ConsoleHelper.ParseParamPartialNameOrId(Params[0], out string _, out var clientInfo);

            if (count == 1)
            {
                if (clientInfo == null)
                {
                    SendOutput("Unable to locate player.");

                    return;
                }

                if (MultiBuffClass.s_classes.ContainsKey(Params[1]))
                {
                    clientInfo.SendPackage(new NetPackageConsoleCmdClient("buff " + Params[1], true));
                    SendOutput($"Buff {Params[1]} given to player {clientInfo.playerName}");
                }
                else
                {
                    SendOutput($"Unable to find buff {Params[1]}");
                }
            }
            else if (count > 1)
            {
                SendOutput($"{count} matches found, please refine your search text.");
            }
            else
            {
                SendOutput("Player not found.");
            }
        }
Exemplo n.º 2
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            var editMode = GameManager.Instance.GetType().GetField(_editModeField, BindingFlags.NonPublic | BindingFlags.Instance);

            if (editMode == null)
            {
                SendOutput("Error getting editmode field");

                return;
            }

            if (!(editMode.GetValue(GameManager.Instance) is bool mode))
            {
                SendOutput("Error getting current value of editmode");

                return;
            }

            if (Params.Count == 1)
            {
                switch (Params[0])
                {
                case "toggle":
                    editMode.SetValue(GameManager.Instance, !mode);
                    break;

                default:
                    if (!bool.TryParse(Params[0], out var flag))
                    {
                        SendOutput("Unable to parse param as a boolean");

                        return;
                    }
                    editMode.SetValue(GameManager.Instance, flag);
                    break;
                }
            }

            SendOutput($"Edit Mode set to {GameManager.Instance.IsEditMode()}");
        }
Exemplo n.º 3
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Params.Count != 2)
            {
                SendOutput(GetHelp());

                return;
            }

            var count = ConsoleHelper.ParseParamPartialNameOrId(Params[0], out string _, out var clientInfo);

            if (count == 1)
            {
                if (clientInfo == null)
                {
                    return;
                }

                if (QuestClass.s_Quests.ContainsKey(Params[1].ToLower()))
                {
                    clientInfo.SendPackage(new NetPackageConsoleCmdClient($"removequest {Params[1]}", true));
                    SendOutput($"Quest {Params[1]} removed from player {clientInfo.playerName}");
                }
                else
                {
                    SendOutput($"Unable to find quest {Params[1]}");
                }
            }
            else if (count > 1)
            {
                SendOutput($"{count} matches found, please refine your search text.");
            }
            else
            {
                SendOutput("Unable to find player.");
            }
        }
Exemplo n.º 4
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Options.ContainsKey("filters"))
            {
                Filters();

                return;
            }

            if (Options.ContainsKey("index"))
            {
                Indexed();

                return;
            }

            if (Params.Count > 1)
            {
                SendOutput("Wrong number of arguments");
                SendOutput(Config.GetHelp(GetType().Name));

                return;
            }

            if (Params.Count == 1)
            {
                //SPECIFIC PLAYER
                if (!PlayerStore.GetId(Params[0], out var steamId, "CON"))
                {
                    return;
                }

                var player = new BCMPlayer(PlayerData.PlayerInfo(steamId), Options, GetFilters(BCMGameObject.GOTypes.Players));
                if (Options.ContainsKey("min"))
                {
                    SendJson(new List <List <object> >
                    {
                        player.Data().Select(d => d.Value).ToList()
                    });
                }
                else
                {
                    SendJson(player.Data());
                }
            }
            else
            {
                //ALL PLAYERS
                var data = new List <object>();
                foreach (var player in PlayerStore.GetAll(Options).Select(s => new BCMPlayer(PlayerData.PlayerInfo(s), Options, GetFilters(BCMGameObject.GOTypes.Players))))
                {
                    if (Options.ContainsKey("min"))
                    {
                        data.Add(player.Data().Select(d => d.Value).ToList());
                    }
                    else
                    {
                        data.Add(player.Data());
                    }
                }

                SendJson(data);
            }
        }
Exemplo n.º 5
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Options.ContainsKey("stop"))
            {
                if (_mapVisitor == null)
                {
                    SendOutput("VisitRegion not running.");

                    return;
                }

                if (bcmTask != null)
                {
                    bcmTask.Output  = new { Message = "Visitor was stopped before it completed" };
                    bcmTask.Command = new BCCmd {
                        Command = commandStr
                    };
                    bcmTask.Status     = BCMTaskStatus.Aborted;
                    bcmTask.Completion = DateTime.UtcNow;
                    bcmTask.Duration   = bcmTask.Completion - bcmTask.Timestamp;
                }

                _mapVisitor.Stop();
                _mapVisitor = null;
                SendOutput("VisitRegion stopped.");

                return;
            }

            if (_mapVisitor != null && _mapVisitor.IsRunning())
            {
                SendOutput($"VisitRegion already running ({completePercent}%). You can stop it with \"bc-visitregion /stop\".");

                return;
            }

            if (Params.Count < 2)
            {
                SendOutput("VisitRegion isn't running. Provide some co-ords to explore some regions");

                return;
            }

            if (!int.TryParse(Params[0], out var x))
            {
                SendOutput("The given x1 coordinate is not a valid integer");

                return;
            }
            if (!int.TryParse(Params[1], out var z))
            {
                SendOutput("The given z1 coordinate is not a valid integer");

                return;
            }

            if (x > 19 || x < -20)
            {
                SendOutput("Note: The given x1 coordinate is beyond the recommended range (-20 to 19)");
            }

            if (z > 19 || z < -20)
            {
                SendOutput("Note: The given z1 coordinate is beyond the recommended range (-20 to 19)");
            }

            completePercent = 0;
            var x2 = x;
            var z2 = z;

            switch (Params.Count)
            {
            case 2:
                SendOutput($"Sending a visitor to region {x},{z}");
                break;

            case 3:
                if (!int.TryParse(Params[2], out var r))
                {
                    SendOutput("The given radius is not a valid integer");
                }

                if (r < 0)
                {
                    SendOutput("The given radius can't be less than 0, the recommended range is 0 to 20");

                    return;
                }

                if (r > 20)
                {
                    SendOutput("Note: The given radius is beyond the recommended range (0 to 20)");
                }

                x  -= r;
                z  -= r;
                x2 += r;
                z2 += r;
                SendOutput($"Sending a visitor to regions between {x},{z} and {x2},{z2}");
                break;

            case 4:
                if (!int.TryParse(Params[2], out x2))
                {
                    SendOutput("The given x2 coordinate is not a valid integer");
                }
                else if (!int.TryParse(Params[3], out z2))
                {
                    SendOutput("The given z2 coordinate is not a valid integer");
                }

                if (x2 > 19 || x2 < -20)
                {
                    SendOutput("Note: The given x2 coordinate is beyond the recommended range (-20 to 19)");
                }

                if (z2 > 19 || z2 < -20)
                {
                    SendOutput("Note: The given z2 coordinate is beyond the recommended range (-20 to 19)");
                }

                SendOutput($"Sending a visitor to regions between {x},{z} and {x2},{z2}");
                break;

            default:
                SendOutput("Invalid param count");
                SendOutput(GetHelp());
                break;
            }

            _lastSender = SenderInfo.RemoteClientInfo;

            commandStr = "";
            if (Params.Count > 0 || Options.Count > 0)
            {
                commandStr += string.Join(" ", new[] { GetCommands()[0] }.Concat(
                                              Options.Count > 0
            ? Params.Concat(Options.Select(o => "/" + o.Key + (o.Value != null ? "=" + o.Value : "")))
            : Params
                                              ).ToArray());
            }

            _mapVisitor = new MapVisitor(new Vector3i(x * 512, 0, z * 512), new Vector3i(x2 * 512 + 511, 0, z2 * 512 + 511));

            _hash = _mapVisitor.GetHashCode();
            BCTask.AddTask("MapVisitor", _mapVisitor.GetHashCode(), null);
            bcmTask = BCTask.GetTask("MapVisitor", _hash);
            if (bcmTask != null)
            {
                bcmTask.Command = new BCCmd {
                    Command = commandStr
                };
                bcmTask.Output = new { Count = 0, Total = 0, Perc = 0.00, Time = 0.00 };
            }

            _mapVisitor.OnVisitChunk   += ReportStatus;
            _mapVisitor.OnVisitChunk   += GetMapColors;
            _mapVisitor.OnVisitMapDone += ReportCompletion;
            _mapVisitor.Start();
        }
Exemplo n.º 6
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Params.Count < 2 && (Params.Count == 0 || Params[0] != "list"))
            {
                SendOutput(GetHelp());

                return;
            }

            switch (Params[0])
            {
            case "list":
                ListPrefabs();
                break;

            case "create":
                CreatePrefab();
                break;

            case "clone":
                ClonePrefab();
                break;

            case "backup":
                BackupPrefab();
                break;

            case "restore":
                RestorePrefab();
                break;

            case "delete":
                DeletePrefab();
                break;

            case "setprop":
                SetProperty();
                break;

            case "insert"://todo
                InsertLayers();
                break;

            case "cut"://todo
                CutLayers();
                break;

            case "add":
                AddLayers();
                break;

            case "trim":
                TrimLayers();
                break;

            case "setsize":
                SetSize();
                break;

            case "swap":
                SwapBlocks();
                break;

            case "swapmap"://todo
                SwapMap();
                break;

            case "copylayer"://todo
                CopyLayer();
                break;

            case "swaplayer"://todo
                SwapLayer();
                break;

            case "setblock"://todo
                SetBlock();
                break;

            case "repair"://todo
                RepairBlocks();
                break;

            case "lock"://todo
                LockSecureBlocks();
                break;

            case "dim":
                GetDimensions();
                break;

            case "blockcount":
                GetBlockCounts();
                break;

            case "blocks":
                GetBlocks();
                break;

            case "paint":
                GetPaint();
                break;

            case "type":
                GetBlocks("type");
                break;

            case "density":
                GetBlocks("density");
                break;

            case "rotation":
                GetBlocks("rotation");
                break;

            case "damage":
                GetBlocks("damage");
                break;

            case "meta":
                GetBlocks("meta");
                break;

            case "meta2":
                GetBlocks("meta2");
                break;

            case "meta3":
                GetBlocks("meta3");
                break;

            case "stats":
                GetStats();
                break;

            case "xml":
                GetXml();
                break;

            default:
                SendOutput($"Unknown sub command {Params[0]}");
                break;
            }
        }
Exemplo n.º 7
0
        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            if (Params.Count == 0)
            {
                SendOutput(GetHelp());

                return;
            }

            switch (Params[0])
            {
            case "save":
                //todo: save current settings to system.xml file
                break;

            case "on":
                if (Heartbeat.IsAlive)
                {
                    SendOutput("Heart is already beating");

                    return;
                }
                Heartbeat.IsAlive = true;
                Heartbeat.Start();
                SendOutput("Heatbeat started");
                break;

            case "off":
                Heartbeat.IsAlive = false;
                SendOutput("Heatbeat stopped");
                break;

            case "bpm":
                if (Params.Count < 2)
                {
                    SendOutput($"Current beats per minute is {Heartbeat.Bpm}");

                    return;
                }

                if (!int.TryParse(Params[1], out var bpm))
                {
                    SendOutput($"Unable to parse bpm from: {Params[1]}");

                    return;
                }

                if (bpm > 300)
                {
                    SendOutput($"Woah, {bpm} is a bit high, are you trying to give the server a heartattack!? Max is 300");

                    return;
                }

                if (bpm <= 0)
                {
                    SendOutput("Check your pulse, you might be dead! Bpm must be greater than 0");

                    return;
                }

                Heartbeat.Bpm = bpm;
                SendOutput($"Bpm now set to {bpm}");

                break;

            case "state":
            case "toggle":
            case "disable":
            case "enable":
            {
                if (Params.Count != 2)
                {
                    SendOutput("Select an event neuron to view/alter the state, * for all");
                    SendOutput(string.Join(",", Brain.Synapses.Select(s => s.Name).ToArray()));

                    return;
                }

                if (Params[1] == "*")
                {
                    foreach (var s in Brain.Synapses)
                    {
                        ProcessSynapseState(s);
                    }

                    return;
                }

                var synapse = Brain.GetSynapse(Params[1]);
                ProcessSynapseState(synapse);

                return;
            }

            case "deadisdead":
                ConfigDeadIsDead();
                return;

            case "pingkicker":
                ConfigPingKicker();
                return;

            case "tracker":
                ConfigTracker();
                return;

            case "spawnmutator":
                ConfigSpawnMutator();
                return;

            case "spawnmanager":
                ConfigSpawnManager();
                return;

            case "logcache":
                ConfigLogCache();
                return;

            default:
                SendOutput($"Unknown neuron name {Params[0]}");
                return;
            }
        }
Exemplo n.º 8
0
        //todo: count sub command that returns a count of each object type

        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            string type;

            switch (Params.Count)
            {
            case 0:
                //LIST OBJECT TYPES
                var o = typeof(BCMGameObject.GOTypes);
                SendJson(
                    o.GetFields()
                    .AsQueryable()
                    .Where(f => f.Name != "Players" && f.Name != "Entities")
                    .ToDictionary(field => field.Name, field => field.GetValue(o).ToString()));
                return;

            case 1:
                //ALL OBJECTS OF A TYPE
                type = Params[0].ToLower();

                if (Options.ContainsKey("filters"))
                {
                    DisplayFilters(type);

                    return;
                }

                if (Options.ContainsKey("index"))
                {
                    DisplayIndex(type);

                    return;
                }

                //if (type == "count")
                //{
                //  CountObjects();
                //  return;
                //}
                GetObjects(type, out var objects);
                ProcessObjects(type, objects, out var data, GetFilters(type));
                SendJson(type == BCMGameObject.GOTypes.Rwg ? data[0] : data);
                return;

            case 2:
                //SPECIFIC OBJECT
                type = Params[0].ToLower();
                if (!GetObject(type, out var obj))
                {
                    return;
                }
                var gameObject = new BCMGameObject(obj, type, Options, GetFilters(type));
                SendObject(gameObject);
                return;

            default:
                SendOutput("Wrong number of arguments");
                SendOutput(Config.GetHelp(GetType().Name));
                return;
            }
        }