示例#1
0
        public void Start()
        {
            Instance = this;
            loader   = gameObject.GetComponent <ModLoader.ModLoader>();

            try
            {
                var harmony = HarmonyInstance.Create("human.cptools");
                harmony.PatchAll(Assembly.GetExecutingAssembly());
            }
            catch (TypeLoadException e)
            {
                Debug.Log(e.Message);
                Debug.Log(e.StackTrace);
                loader.Log("\"" + e.Source + "\"");
            }
        }
示例#2
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;
            }
        }