示例#1
0
        public void OnCommandTyped(string cmd, string[] args)
        {
            Human hl = GetLocalHuman();

            if (hl == null)
            {
                loader.LogLine("[cp] Could not get Human object");
                return;
            }
            else if (!hl.player.host.isLocal)
            {
                loader.LogLine("[cp] Not the server host, may not run cp commands");
                return;
            }

            switch (cmd)
            {
            case "cp-toggle":
                if (args.Length == 0)
                {
                    cpTriggers = !cpTriggers;
                }
                else if (!bool.TryParse(args[0].ToLower(), out cpTriggers))
                {
                    loader.LogLine("[cp-toggle] Invalid boolean");
                    return;
                }
                ToggleCheckpointTriggers(cpTriggers);
                loader.Log(string.Format("[cp-toggle] {0} checkpoint triggers", cpTriggers ? "Enabled" : "Disabled"));
                break;

            case "cp-state":
                if (args.Length == 0 || !bool.TryParse(args[0], out bool state))
                {
                    loader.LogLine("[cp-set] Invalid boolean input");
                    return;
                }
                Human[] toSet = SelectHumans((args.Length < 2) ? "all" : args[1]).ToArray();
                if (toSet.Length == 0)
                {
                    loader.LogLine("[cp-set] Cannot find player given");
                    return;
                }
                foreach (var h in toSet)
                {
                    var spndata = h.GetComponent <SpawnpointData>();
                    if (spndata == null)
                    {
                        h.gameObject.AddComponent <SpawnpointData>();
                        spndata = h.GetComponent <SpawnpointData>();
                    }
                    spndata.enabled = state;
                }

                loader.LogLine(string.Format("[cp-reset] {0} custom checkpoints for target", state? "Enabled" : "Disabled"));
                break;

            case "cp-set":
                toSet = SelectHumans((args.Length == 0) ? "" : args[0]).ToArray();
                if (toSet.Length == 0)
                {
                    loader.LogLine("[cp-set] Cannot find player given");
                    return;
                }

                foreach (var h in toSet)
                {
                    var spndata = h.GetComponent <SpawnpointData>();
                    if (spndata == null)
                    {
                        h.gameObject.AddComponent <SpawnpointData>();
                        spndata = h.GetComponent <SpawnpointData>();
                    }
                    spndata.customSpawn = true;
                    spndata.spawnpoint  = hl.transform.position;
                }

                loader.LogLine("[cp-set] Set spawnpoint to " + hl.transform.position.ToString());
                break;

            case "cp-reset":
                toSet = SelectHumans((args.Length == 0) ? "" : args[0]).ToArray();
                if (toSet.Length == 0)
                {
                    loader.LogLine("[cp-reset] Cannot find player given");
                    return;
                }

                foreach (var h in toSet)
                {
                    var spndata = h.GetComponent <SpawnpointData>();
                    if (spndata == null)
                    {
                        h.gameObject.AddComponent <SpawnpointData>();
                        spndata = h.GetComponent <SpawnpointData>();
                    }
                    spndata.customSpawn = false;
                }

                loader.LogLine("[cp-reset] Removed custom spawn ");
                break;
            }
        }
示例#2
0
        public void OnCommandTyped(string cmd, string[] args)
        {
            Human hl = GetLocalHuman();

            if (hl == null)
            {
                loader.LogLine("[ht] Could not get local Human object");
                return;
            }
            else if (!hl.player.host.isLocal)
            {
                loader.LogLine("[ht] Not the server host, may not run ht commands");
                return;
            }

            switch (cmd)
            {
            case "ht-grav":
                Vector3 tgtGrav = new Vector3(0, -9.8f, 0);
                if (args.Length == 1 && float.TryParse(args[0].ToLower(), out float yVal))
                {
                    tgtGrav = new Vector3(0, yVal, 0);
                }
                else if (args.Length == 3)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        if (!float.TryParse(args[i].ToLower(), out float component))
                        {
                            loader.LogLine("[ht-grav] Invalid input");
                            return;
                        }
                        tgtGrav[i] = component;
                    }
                }
                else if (args.Length != 0)
                {
                    loader.LogLine("[ht-grav] Invalid input");
                    return;
                }
                Physics.gravity = tgtGrav;
                loader.LogLine(string.Format("[ht-grav] Set gravity to ({0}, {1}, {2})", tgtGrav.x, tgtGrav.y, tgtGrav.z));
                break;

            case "ht-fly":
                if (args.Length == 0)
                {
                    fly = !fly;
                }
                else if (!bool.TryParse(args[0].ToLower(), out fly))
                {
                    loader.LogLine("[ht-fly] Invalid boolean");
                    return;
                }
                foreach (Rigidbody r in hl.rigidbodies)
                {
                    r.useGravity = !fly;
                }
                loader.LogLine("[ht-fly] Set fly mode to " + fly.ToString());
                break;

            case "ht-flyspd":
                if (args.Length > 0)
                {
                    if (!float.TryParse(args[0].ToLower(), out flySpeed))
                    {
                        loader.LogLine("[ht-flyspd] Invalid float");
                        return;
                    }
                }
                else
                {
                    flySpeed = 10f;
                }
                loader.LogLine("[ht-flyspd] Set fly speed to " + flySpeed.ToString());
                break;

            case "ht-flyacc":
                if (args.Length > 0)
                {
                    if (!float.TryParse(args[0].ToLower(), out flyMaxAcc))
                    {
                        loader.LogLine("[ht-flyacc] Invalid float");
                        return;
                    }
                }
                else
                {
                    flyMaxAcc = 15f;
                }
                loader.LogLine("[ht-flyacc] Set fly acc. to " + flyMaxAcc.ToString());
                break;
            }
        }