コード例 #1
0
        public static void roll(Server server, ISender sender, ArgumentList args)
        {
            Random random = new Random();
            int result = 0;
            int times = 1;
            int die = 6;

            if (args.Count > 0)
            {
                string[] arg = args[0].Split('d');
                times = Int32.Parse(arg[0]);
                die = Int32.Parse(arg[1]);
            }

            for (int i = 0; i < times; i++)
            {
                result += random.Next(1, die);
            }

            Player player = server.GetPlayerByName(sender.Name);

            if (! player.PluginData.ContainsKey("roll"))
            {
                player.PluginData.Add("roll", result);
            }
            else
            {
                player.PluginData["roll"] = result;
            }

            server.notifyAll(player.Name + " rolled a " + player.PluginData["roll"] + " on " + times.ToString() + "d" + die.ToString(), true);
        }
コード例 #2
0
        /// <summary>
        /// Sets the time in the game.
        /// </summary>
        /// <param name="server">Current Server instance</param>
        /// <param name="sender">Sending player</param>
        /// <param name="args">Arguments sent with command</param>
        public static void Time(Server server, ISender sender, ArgumentList args)
        {
            Double Time;
            if (args.TryParseOne<Double>("-set", out Time))
            {
                server.World.setTime(Time, true);
            }
            else
            {
                String caseType = args.GetString(0);
                switch (caseType)
                {
                    case "day":
                        {
                            server.World.setTime(13500.0);
                            break;
                        }
                    case "dawn":
                        {
                            server.World.setTime(0);
                            break;
                        }
                    case "dusk":
                        {
                            server.World.setTime(0, false, false);
                            break;
                        }
                    case "noon":
                        {
                            server.World.setTime(27000.0);
                            break;
                        }
                    case "night":
                        {
                            server.World.setTime(16200.0, false, false);
                            break;
                        }
                    case "-now":
                        {
                            String AP = "AM";
                            double time = Main.time;
                            if (!Main.dayTime)
                            {
                                time += 54000.0;
                            }
                            time = (time / 86400.0 * 24.0) - 19.5;
                            if (time < 0.0)
                            {
                                time += 24.0;
                            }
                            if (time >= 12.0)
                            {
                                AP = "PM";
                            }

                            int Hours = (int)time;
                            double Minutes = time - (double)Hours;
                            String MinuteString = (Minutes * 60.0).ToString();
                            if (Minutes < 10.0)
                            {
                                MinuteString = "0" + MinuteString;
                            }
                            if (Hours > 12)
                            {
                                Hours -= 12;
                            }
                            if (Hours == 0)
                            {
                                Hours = 12;
                            }
                            if (MinuteString.Length > 2)
                            {
                                MinuteString = MinuteString.Substring(0, 2);
                            }

                            sender.sendMessage("Current Time: " + Hours + ":" + MinuteString + " " + AP);
                            return;
                        }
                    default:
                        {
                            sender.sendMessage("Please review that command.");
                            return;
                        }
                }
            }
            NetMessage.SendData((int)Packet.WORLD_DATA); //Update Data
            server.notifyAll("Time set to " + Server.time.ToString() + " by " + sender.Name);
        }
コード例 #3
0
        /// <summary>
        /// Summon a Boss
        /// </summary>
        /// <param name="server">Current Server instance</param>
        /// <param name="sender">Sending player</param>
        /// <param name="args">Arguments sent with command</param>
        public static void SummonBoss(Server server, ISender sender, ArgumentList args)
        {
            //Come to think of it now, It may be 1 boss at a time -_-
            Boolean EoW = args.TryPop("eater");
            Boolean EyeOC = args.TryPop("eye");
            Boolean Skeletron = args.TryPop("skeletron");
            Boolean KingSlime = args.TryPop("kingslime");
            Boolean NightOverride = args.TryPop("-night");

            Player player = null;
            if (sender is Player)
            {
                player = sender as Player;
            }
            else
            {
                if (Netplay.anyClients)
                {
                    String PlayerName;
                    if (args.TryParseOne<String>("-player", out PlayerName))
                    {
                        player = server.GetPlayerByName(PlayerName);
                    }
                    else
                    {
                        //Find Random
                        int plr = Main.rand.Next(0, Networking.ClientConnection.All.Count - 1); //Get Random PLayer
                        player = Main.players[plr];
                    }
                    if (player == null)
                    {
                        throw new CommandError("There was an issue finding a/the player.");
                    }
                }
                else
                {
                    throw new CommandError("There is no Online Players to spawn near.");
                }
            }

            List<Int32> Bosses = new List<Int32>();
            if (EoW)
            {
                Bosses.Add((int)NPCType.N13_EATER_OF_WORLDS_HEAD);
            }
            if (EyeOC)
            {
                if (Main.dayTime && !NightOverride)
                    throw new CommandError("This boss needs to be summoned in night time, Please override with -night");

                Bosses.Add((int)NPCType.N04_EYE_OF_CTHULU);
            }
            if (Skeletron)
            {
                Bosses.Add((int)NPCType.N35_SKELETRON_HEAD);
            }
            if (KingSlime)
            {
                Bosses.Add((int)NPCType.N50_KING_SLIME);
            }

            if (Bosses.Count > 0)
            {
                if (NightOverride) //Mainly for eye
                {
                    server.World.setTime(16200.0, false, false);
                    NetMessage.SendData((int)Packet.WORLD_DATA); //Update Data
                }

                foreach (Int32 BossId in Bosses)
                {
                    Vector2 location = World.GetRandomClearTile(((int)player.Position.X / 16), ((int)player.Position.Y / 16), 100, true, 100, 50);
                    int BossSlot = NPC.NewNPC(((int)location.X * 16), ((int)location.Y * 16), BossId);
                    server.notifyAll(Main.npcs[BossSlot].Name + " has been been summoned by " + sender.Name, ChatColour.Purple, true);
                    if (!(sender is ConsoleSender))
                        ProgramLog.Log("{0} summoned boss {1} at slot {2}.", sender.Name, Main.npcs[BossSlot].Name, BossSlot);
                }
            }
            else
            {
                throw new CommandError("You have not specified a Boss.");
            }
        }