예제 #1
0
        public override void Use(Player p, string message, CommandData data)
        {
            if (message.Length == 0)
            {
                Help(p); return;
            }
            if (!LevelInfo.Check(p, data.Rank, p.level, "summon that bot"))
            {
                return;
            }

            string[]  args = message.SplitSpaces(2);
            PlayerBot bot  = Matcher.FindBots(p, args[0]);

            if (bot == null)
            {
                return;
            }
            if (!bot.EditableBy(p, "summon"))
            {
                return;
            }

            Position pos; byte yaw, pitch;

            if (args.Length == 1)
            {
                pos = p.Pos; yaw = p.Rot.RotY; pitch = p.Rot.HeadX;
            }
            else
            {
                args = args[1].SplitSpaces();

                if (args.Length < 3)
                {
                    Help(p); return;
                }
                if (!CmdTp.GetTeleportCoords(p, bot, args, false, out pos, out yaw, out pitch))
                {
                    return;
                }
            }

            bot.Pos = pos; bot.SetYawPitch(yaw, pitch);
            BotsFile.Save(p.level);
        }
예제 #2
0
        public override void Use(Player p, string message, CommandData data)
        {
            if (p.PreTeleportMap == null)
            {
                p.Message("You have not teleported anywhere yet");
                return;
            }

            var preTeleportMap = p.PreTeleportMap;
            var preTeleportPos = p.PreTeleportPos;
            var preTeleportRot = p.PreTeleportRot;

            CmdTp.SavePreTeleportState(p);

            if (!p.level.name.CaselessEq(preTeleportMap))
            {
                PlayerActions.ChangeMap(p, preTeleportMap);
            }

            p.SendPos(Entities.SelfID, preTeleportPos, preTeleportRot);
        }